Is there an easy way to round the internal top edge of this shape? I
looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
--
This email has been checked for viruses by AVG antivirus software.
www.avg.com
The short answer is to use path_sweep with mask2d_roundover(). But there's
more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:
Is there an easy way to round the internal top edge of this shape? I
looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
Virus-free.www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
<#m_-3217382146105684572_m_-3516739280469875608_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
I would do this using BOSL2 offset_sweep, which I think is going to be
easier than using path_sweep.
On Fri, Dec 26, 2025 at 5:39 PM Dan Perry via Discuss <
discuss@lists.openscad.org> wrote:
The short answer is to use path_sweep with mask2d_roundover(). But
there's more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:
Is there an easy way to round the internal top edge of this shape? I
looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
Virus-free.www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
<#m_-5390212294840308511_m_-3217382146105684572_m_-3516739280469875608_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
It was easy for me to do this with hull_join() which I have been discussing
in another thread. Here I'm using a new helper module based on minkowski
which eliminates the need to calculate scaling parameters for precise join
size and shape.
[image: dish.png]
include <hull_join.scad>
$fn = 120;
eps = 0.001;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
rounding = 3;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
module DishCore() {
linear_extrude(dh+2*eps, convexity = 20)
offset(ds) offset(-ds) offset(-ds) DishShape2D();
}
module RoundedDishCore() {
// a plate on top of DishCore() with a rounded join
hull_join(iterations=24, children=true) {
translate([-dw,-bd0.5,dh])
hj_minkowski_cube(2rounding)
cube([dw2,bd2,1]); // A plate significantly bigger
than DishCore()
hj_minkowski_cube(2*rounding) DishCore();
}
}
difference() {
linear_extrude(dh, convexity = 20) DishShape2D();
translate([0,0,-eps]) RoundedDishCore();
}
// ****************************** hull_join.scad
/*
Hulled joining of children objects
Hulls child pairs limited to intersections of each child with scaled partner
Each child object needs hj_scale(scale_vector, center_point=[0,0,0])
or hjt_scale() as a parent to control its scaling for the hull_join()
operation.
Scale vector and optional center point of scaling passed to
hj_scale() or hjt_scale() of each child control the size and angle of
joints.
When used with BOSL2:
After an object producing module invocation to which we want to apply
hull_join()
use let(child_t=transform()) to capture transformations produced by
parameters such
as anchor, spin and orient. When reproducing this object as a child of
hull_join()
suppress transformation generating parameters as they will be applied in
hjt_scale()
by passing it the captured transformation matrix as shown in the examples.
pairs = specifies which pairs of children to join
"chain" : [0,1], [1,2], [2,3], ... [n-2, n-1]
"loop" : [0,1], [1,2], [2,3], ... [n-2, n-1], [n-1, 0]
"first" : [0,1], [0,2], [0,3], ... [0, n-1]
"all" : all pairs
*/
$hj_scale=0;
function get_pairs_chain(n) = [for(i=[0:n-2]) [i,i+1]];
function get_pairs_loop(n) = [for(i=[0:n-2]) [i,i+1], [n-1,0]];
function get_pairs_first(n) = [for(i=[1:n-1]) [0,i]];
function get_pairs_all(n) = [for(i=[0:n-2]) for(j=[i+1:n-1]) [i,j]];
module hull_join(iterations=1, pairs="chain", children=false) {
assert($children > 1, "hull_join() requires 2 or more children");
union() {
if(children)
children();
pairlist =
pairs=="chain" ? get_pairs_chain($children) :
pairs=="loop" ? get_pairs_loop($children) :
pairs=="first" ? get_pairs_first($children) :
pairs=="all" ? get_pairs_all($children) :
assert(false,"hulled_join(): invalid pairs parameter.");
for(si=[0:1:iterations-1]) for(pair = pairlist) hull() {
intersection() {
children(pair[0], $hj_scale=0);
children(pair[1], $hj_scale=(si+1)/iterations);
}
intersection() {
children(pair[0], $hj_scale=(iterations-si)/iterations);
children(pair[1], $hj_scale=0);
}
}
}
}
// returns a scale vector to resize something of a given size by an offset
// assumes scaling about a center point, thus 2.0offset to offset in each
direction
function hj_get_scale_for_offset(size, offset) = [
1.0 + 2.0offset.x/size.x,
1.0 + 2.0offset.y/size.y,
1.0 + 2.0offset.z/size.z
];
// controlled scaling about a center point of a child of hulled_join()
module hj_scale(scale_vector, center_point=[0,0,0]) {
if ($hj_scale) {
sv = [
1+$hj_scale*(scale_vector.x-1),
1+$hj_scale*(scale_vector.y-1),
1+$hj_scale*(scale_vector.z-1)
];
if(center_point.x || center_point.y || center_point.z)
// optimizable to a single translation?
translate(center_point) scale(sv) translate(-1*center_point)
children();
else
scale(sv) children();
}
else children();
}
module hj_minkowski_sphere(r) {
if ($hj_scale) {
minkowski() {
sphere($hj_scale*r);
children();
}
}
else children();
}
module hj_minkowski_cube(size) {
if ($hj_scale) {
minkowski() {
cube($hj_scale*size,center=true);
children();
}
}
else children();
}
function transform() = $transform;
// controlled scaling about a center point of a BOSL2 child of hulled_join()
module hjt_scale(transform, scale_vector, center_point=[0,0,0]) {
if ($hj_scale) {
s = [
1+$hj_scale*(scale_vector.x-1),
1+$hj_scale*(scale_vector.y-1),
1+$hj_scale*(scale_vector.z-1)
];
scaled = (center_point.x || center_point.y || center_point.z) ?
transform * move(center_point) * scale(s) * move(-center_point)
:
transform * scale(s);
multmatrix(scaled) children();
}
else multmatrix(transform) children();
}
On Fri, Dec 26, 2025 at 5:25 PM Adrian Mariano via Discuss <
discuss@lists.openscad.org> wrote:
I would do this using BOSL2 offset_sweep, which I think is going to be
easier than using path_sweep.
On Fri, Dec 26, 2025 at 5:39 PM Dan Perry via Discuss <
discuss@lists.openscad.org> wrote:
The short answer is to use path_sweep with mask2d_roundover(). But
there's more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:
Is there an easy way to round the internal top edge of this shape? I
looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
Virus-free.www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
<#m_-4568529398012529332_m_-5390212294840308511_m_-3217382146105684572_m_-3516739280469875608_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
Thank you, Dan. That works quite well.
However, what I wanted was to round the interior, not the exterior. I
looked at the documentation for mask2d_roundover() and did not see a way
to apply it differently to my "hollow" shape.
Jon
On 12/26/2025 5:39 PM, Dan Perry via Discuss wrote:
The short answer is to use path_sweep with mask2d_roundover(). But
there's more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss
discuss@lists.openscad.org wrote:
Is there an easy way to round the internal top edge of this
shape? I looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e=>
Virus-free.www.avg.com
<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e=>
<#m_-3217382146105684572_m_-3516739280469875608_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org
--
This email has been checked for viruses by AVG antivirus software.
www.avg.com
Never mind. Got it. Make another shape for the interior and do the path_sweep() with a spin of 270.
On 12/27/2025 7:57 AM, Jon Bondy via Discuss wrote:
Thank you, Dan. That works quite well.
However, what I wanted was to round the interior, not the exterior. I looked at the documentation for mask2d_roundover() and did not see a way to apply it differently to my "hollow" shape.
Jon
On 12/26/2025 5:39 PM, Dan Perry via Discuss wrote:
The short answer is to use path_sweep with mask2d_roundover(). But there's more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss <discuss@lists.openscad.orgmailto:discuss@lists.openscad.org> wrote:
Is there an easy way to round the internal top edge of this shape? I looked at BOSL2 but gave up. Code is below.
[cid:part1.g7wB0TBw.ieqzOv8z@jonbondy.com]
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
[https://s-install.avcdn.net/ipm/preview/icons/icon-envelope-tick-green-avg-v1.png]https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e= Virus-free.www.avg.comhttps://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e=
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.orgmailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.orgmailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.orgmailto:discuss-leave@lists.openscad.org
Here's how to do it using offset_sweep:
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
function DishShape2D() =
hull_region(concat(
yscale(sc, circle(d = dw)),
rect([dw, dd - sc*dw/2],anchor=FWD)
)
);
inside = offset(offset(DishShape2D(),-ds*2),r=ds);
difference() {
linear_sweep(DishShape2D(),height=dh);
offset_sweep(inside, height=dh, top=os_circle(r=-3),extra=1);
}
On Sat, Dec 27, 2025 at 8:17 AM jon jonbondy.com via Discuss <
discuss@lists.openscad.org> wrote:
Never mind. Got it. Make another shape for the interior and do the
path_sweep() with a spin of 270.
On 12/27/2025 7:57 AM, Jon Bondy via Discuss wrote:
Thank you, Dan. That works quite well.
However, what I wanted was to round the interior, not the exterior. I
looked at the documentation for mask2d_roundover() and did not see a way to
apply it differently to my "hollow" shape.
Jon
On 12/26/2025 5:39 PM, Dan Perry via Discuss wrote:
The short answer is to use path_sweep with mask2d_roundover(). But
there's more to it as you can see below.
Dan
include <BOSL2/std.scad>
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
DishShape2D = union(
scale([1, sc], circle(d = dw)),
translate([-dw/2, 0], square([dw, dd - sc*dw/2]))
);
difference() {
linear_extrude(dh, convexity = 20)
region(difference(
DishShape2D,
offset(
offset(
offset(DishShape2D, delta=-ds, closed=true),
delta=-ds, closed=true),
delta=ds, closed=true)
));
up(dh) path_sweep(
mask2d_roundover(r=1, spin=180), DishShape2D, closed=true);
}
On Fri, Dec 26, 2025 at 1:39 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:
Is there an easy way to round the internal top edge of this shape? I
looked at BOSL2 but gave up. Code is below.
$fn = 120;
bw = 60;
bd = 100;
ds = 5;
dw = bw + 2*ds;
dd = bd + 20;
dh = 25;
sc = 0.5;
module DishShape2D()
hull() {
scale([1, sc])
circle(d = dw);
translate([-dw/2, 0])
square([dw, dd - sc*dw/2]);
}
linear_extrude(dh, convexity = 20)
difference() {
DishShape2D();
offset(ds) offset(-ds) offset(-ds)
DishShape2D();
}
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e=
Virus-free.www.avg.com
https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=GAJ5LInnmHEgVmQRgvm9H2NTOGectG4oO-7uWPjf1jKyrFn9beAAPB6-xLV6sRoV&s=HdfDDHEQxJ2JcW932SFLu81aJtRxXdBIKz3vvgIQCb0&e=
<#m_8367091939175187422_m_-3217382146105684572_m_-3516739280469875608_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org