Slicing a 3D object to SVG: verschil tussen versies
(→Example with an STL) |
(→Example with an STL) |
||
Regel 42: | Regel 42: | ||
// 30x150x20 bbx | // 30x150x20 bbx | ||
import("dino.stl", convexity=3); | import("dino.stl", convexity=3); | ||
− | + | ||
z_min = 0; | z_min = 0; | ||
z_max = 30; | z_max = 30; | ||
Regel 48: | Regel 48: | ||
y_max = 150; | y_max = 150; | ||
slice = 0.5; | slice = 0.5; | ||
− | + | ||
n = floor(sqrt((z_max - z_min)/slice)+1); | n = floor(sqrt((z_max - z_min)/slice)+1); | ||
for(z = [-z_max:slice:z_min]) { | for(z = [-z_max:slice:z_min]) { |
Versie van 3 mrt 2018 om 20:10
One can use OpenSCAD to slice a 3D STL or an object made in OpenSCAD into SVG usable with the Lasersaur.
Example of a CSG object
Example of a sphere on top of a cube (thing() in below code) which is sliced; and each slice is then laid out flat.
module thing() { difference() { union() { translate([-5,-5,0]) cube([10,10,10]); translate([0,0,12]) sphere(r=10); }; union() { translate([-5,-5,0]) translate([1,1,1]) cube([8,8,8]); translate([0,0,12]) sphere(r=9); }; }; } z_min = 0; z_max = 23; slice = 1; n = 5; // floor(sqrt((z_max - z_min)/slice+10)); for(z = [-z_max:slice:z_min]) { i = (z + z_max) / slice; x = 40 * (i % n); y = 40 * floor(i / n); translate([x,y,0]) { projection(cut=true) translate([0,0,z]) thing(); }; };
Example with an STL
An example of an STL that is loaded from a file and then sliced. You will have to manually adjust the Z range & slice distance.
// 30x150x20 bbx import("dino.stl", convexity=3); z_min = 0; z_max = 30; x_max = 20 y_max = 150; slice = 0.5; n = floor(sqrt((z_max - z_min)/slice)+1); for(z = [-z_max:slice:z_min]) { i = (z + z_max) / slice; x = x_max * (i % n); y = Y_max * floor(i / n); translate([x,y,0]) { projection(cut=true) translate([0,0,z]) thing(); }; };