OpenJSCad

Hvad dette eksempel gør:

- det laver to objecter og tager forskellen. Derved kan man nemt debugge fordi man kan altid bare præsentere begge objecter.

- det opretter et tomt objekt - tog mig lang tid at finde ud af.

- det bruger variabler til at angive parametre så man faktisk får designet noget som er generisk og fleksibel.

- det illustrerer dot notation - ved at der er translate på den indre boks.

- det bruger relativt til corner - det er lidt forskellige hvad der er smartest her - hvis man har en cylinder er det oftests rarere at bruge center based.


var wallThickness = 3;

var width = 40;

var height = 20;

var depth = 40;


function main () {

var combined = new CSG();

var largeObj = cube({

size: [width , depth , height],

center: false

})

var innerHole = cube({

size: [width-wallThickness*2, depth-wallThickness*2, height + wallThickness],

center: false

}).translate([wallThickness, wallThickness, wallThickness]), // inner hole

combined = difference(largeObj,innerHole)

return combined

}


var wallThickness = 3;

var width = 40;

var height = 20;

var depth = 40;

var gridHoleSize = 2;

var gridSpacing = 1;



function main () {

//var combined = new CSG();

var grid = new CSG();

for (var i = 0; i < 11; i++) {

for (var b = 0; b < 11; b++) {


grid = union(grid, cube({

size: [gridHoleSize, gridHoleSize, wallThickness],

center: false

}).translate([i * (gridHoleSize +gridSpacing) + 1, b * (gridHoleSize +gridSpacing) + 1, 0]));


}

}

var largeObj = cube({

size: [width , depth , height],

center: false

})

var innerHole = cube({

size: [width-wallThickness*2, depth-wallThickness*2, height + wallThickness],

center: false

}).translate([wallThickness, wallThickness, wallThickness]); // inner hole

var combined = difference(largeObj,innerHole,grid.translate([wallThickness,wallThickness,0]));

return combined;

}



https://www.opensourceboards.com/CAD/SK8CAD.html

https://www.openscad.org/cheatsheet/