yes I used it in all my projects
How to get boundary path?
include <BOSL2/std.scad>
pts = [
for(x=[30:5:180]) [
for(y=[-6:0.5:6])
[7*y,x, sin(x)*y^2]
]
];
vnf=vnf_vertex_array(pts, reverse=true);
//vnf_polyhedron(vnf);
intersection(){
vnf_polyhedron(vnf_sheet(vnf, [-3,0],merge=false));
left(15)back(100)down(20)linear_extrude(50)square([50,75]);
}
Your shape has a constant thickness of 3, but when you do the intersection,
you make vertical edges of varying thickness depending on the angle to the
XY plane, so much more difficult. Working directly with the vnf_polyhedron
output, you can get there with a bit of work:
This code follows exactly the top right edge of your non-intersected
vnf_polyhedron.
pathr=[for(x=[30:5:180]) [42, x, sin(x)*36]];
color("blue") path_sweep(circle(d=3, $fn=12), pathr);
[image: image.png]
You need to use sweep() instead of path_sweep() because mask2d_roundover()
has to twist as you go along. See the documentation for sweep() and
another example here:https://github.com/BelfrySCAD/BOSL2/issues/2025. The
bottom edges are more difficult but do-able. Something like:
pathr2 = [for(x=[30:5:180]) [42 + 3cos(90-x), x, 36sin(x) - 3*sin(90-x)]]
<-- almost certainly wrong, but the general idea.
Dan
On Thu, Aug 27, 2026 at 9:15 PM Yuri Volodin via Discuss <
discuss@lists.openscad.org> wrote:
yes I used it in all my projects
How to get boundary path?
include <BOSL2/std.scad>
pts = [
for(x=[30:5:180]) [
for(y=[-6:0.5:6])
[7*y,x, sin(x)*y^2]
]
];
vnf=vnf_vertex_array(pts, reverse=true);
//vnf_polyhedron(vnf);
intersection(){
vnf_polyhedron(vnf_sheet(vnf, [-3,0],merge=false));
left(15)back(100)down(20)linear_extrude(50)square([50,75]);
}
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
I expect you could use the function
region = projection(vnf, [cut], [z]);
to generate 2d profiles for each side where your sheet intersects your
cube. Somewhat awkward as you will have to rotate the vertices of the
sheet to align a side with the XY plane to make the projection cut. Then
you can intersect the 2d region to a rectangle matching your cube at the
same rotation projected to the XY plane. And then perhaps use path_sweep
on the clipped region to make a chamfered or rounded cap for the side of
the cropped sheet.
Another possibility would be to use OpenSCAD's roof() and projection() to
make caps for each side of your intersected polyhedron. Corners might be
formed from a hull() of projections of the roofed projections. Perhaps as
ugly as it sounds.
PythonSCAD might be a better tool for this sort of modelling although it is
a work in progress lacking the maturity and polish of OpenSCAD. It has
some powerful features such as a radius parameter to union() and
difference() which can chamfer, fillet or round the resulting seams of
those operations and a 3d object fillet() routine which takes a selection
parameter of another 3d object to restrict by intersection which edges get
filleted. When you can't find a built in operation to do what you need you
can directly work with the mesh, faces, edges and points using the full
power of the python language.
On Thu, Aug 27, 2026 at 3:16 PM Yuri Volodin via Discuss <
discuss@lists.openscad.org> wrote:
yes I used it in all my projects
How to get boundary path?
include <BOSL2/std.scad>
pts = [
for(x=[30:5:180]) [
for(y=[-6:0.5:6])
[7*y,x, sin(x)*y^2]
]
];
vnf=vnf_vertex_array(pts, reverse=true);
//vnf_polyhedron(vnf);
intersection(){
vnf_polyhedron(vnf_sheet(vnf, [-3,0],merge=false));
left(15)back(100)down(20)linear_extrude(50)square([50,75]);
}
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org