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/