frames

This page preserves legacy source from the former wiki.

{{OpenJSCAD|title=CAD|code=


// Here we define the user editable parameters:


function getParameterDefinitions() {


  return [


    { type: 'float', name: 'beam_width', caption: 'Beam width', default: 40 },


    { type: 'float', name: 'hole_radius', caption: 'Radius of holes', default: 6 },


    { type: 'choice', name: 'length', caption: 'Frame length (holes)', values: [2,3,4,5,10,15,20,25,30,40,50], captions: ["2","3","4","5","10","15","20","25","30","40","50"], default: 10 }


  ];


}


// zBeam(length) - create a vertical bitbeam strut 'length' long


// xBeam(length) - create a horizontal bitbeam strug along the X axis


// yBeam(length) - create a horizontal bitbeam strut along the Y axis


// translateBeam(beam, [x, y, z]) - translate bitbeam struts in X, Y, or Z axes in units 'beam_width'


var cylresolution=16;


var beam_width=38;


var hole_radius=8;


function main(params) {


    cylresolution=(params.quality == "1")? 64:16;


    beam_width=params.beam_width;


    hole_radius=params.hole_radius;


    return zBeam(params.length);


}


function xHole(i) {


    return CSG.cylinder( {


        start: [-1, beam_width/2, i*beam_width + beam_width/2],


        end: [beam_width+1, beam_width/2, i*beam_width + beam_width/2],


        radius: hole_radius,


        resolution: cylresolution


    } );


}


function yHole(i) {


    return CSG.cylinder( {


        start: [beam_width/2, -1, i*beam_width + beam_width/2],


        end: [beam_width/2, beam_width+1, i*beam_width + beam_width/2],


        radius: hole_radius,


        resolution: cylresolution


    } );


}


function zBeam(length) {


    var cube = CSG.cube({


        center: [beam_width/2, beam_width/2, (length*beam_width)/2],


        radius: [beam_width/2, beam_width/2, (length*beam_width)/2]


        });


    var holes = [];


    for (var i = 0; i < length; i++)


    {


        holes.push(xHole(i));


        holes.push(yHole(i));


    }


    var beam = cube.subtract(holes);


    beam.properties.myConnector = new CSG.Connector([10, 0, 0], [1, 0, 0], [0, 0, 1]);


    return beam;


}


function yBeam(length) {


    return translateBeam(zBeam(length).rotateX(-90), [0,0,1]);


}


function xBeam(length) {


    return translateBeam(zBeam(length).rotateY(90), [0,0,1]);


}


function translateBeam(beam, t_vector) {


    return beam.translate(t_vector.map(function(n) { return beam_width*n; }));


}


}}

Original archived page — revision 7174, 2021-09-02T17:38:17+00:00, by Tim.