discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Re: rounding of standard objects

RW
Raymond West
Tue, Oct 3, 2023 4:48 PM

yes,, but Karl was asking about standard objects, and Minkowski seems
fast enough.

I think a disadvantage  is that it can not be applied after the object
is created, but the cylinder/whatever has to be created allowing for the
rounding to be added, so to speak.

Where I need to fillet more 'awkward' shapes, after construction, I
sometimes  use the attached code, which is generally good enough for fdm
printing, if selecting the correct number of steps.

Dear all,

what is the preferred way to round edges of standard objects e.g an
cylinder(h=3,r=5) ?

Many thanks
Karl



On 03/10/2023 10:50, nop head wrote:

Only that it is glacialy slow if the shape is not convex.

On Tue, 3 Oct 2023, 10:48 Raymond West, raywest@raywest.com wrote:

 Is there some law about not using Minkowsk?




 _______________________________________________
 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

yes,, but Karl was asking about standard objects, and Minkowski seems fast enough. I think a disadvantage  is that it can not be applied after the object is created, but the cylinder/whatever has to be created allowing for the rounding to be added, so to speak. Where I need to fillet more 'awkward' shapes, after construction, I sometimes  use the attached code, which is generally good enough for fdm printing, if selecting the correct number of steps. > Dear all, > > what is the preferred way to round edges of standard objects e.g an > cylinder(h=3,r=5) ? > > Many thanks > Karl > _______________________________________________ _______________________________________________ On 03/10/2023 10:50, nop head wrote: > Only that it is glacialy slow if the shape is not convex. > > On Tue, 3 Oct 2023, 10:48 Raymond West, <raywest@raywest.com> wrote: > > Is there some law about not using Minkowsk? > > > > > _______________________________________________ > 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
BC
Bob Carlson
Tue, Oct 3, 2023 4:59 PM

I don’t understand the code yet but it really needs replace all /Peice/Piece/

-Bob
Tucson AZ

On Oct 3, 2023, at 09:48, Raymond West raywest@raywest.com wrote:

<fillets3d.scad>

I don’t understand the code yet but it really needs replace all /Peice/Piece/ -Bob Tucson AZ On Oct 3, 2023, at 09:48, Raymond West <raywest@raywest.com> wrote: <fillets3d.scad>
RW
Raymond West
Tue, Oct 3, 2023 5:37 PM

yes, but I guess the author was not English. There was also an
error(typo, iirc) in the original code, which I fixed.

here's an example of its use

module shape (){
  difference(){
    union(){
     cube(50);
     cylinder(h=50,d=30);
   }
    cylinder (h=100,d=20);
  }
}

$fn=80;

use<C:\Program Files\OpenSCAD\libraries\rw\fillets3d.scad>

topBottomFillet(b = 0, t = 50, r = 2, s = 8, e = 1) shape();

It is slow, but seems to work, but only does top and/or bottom faces.

On 03/10/2023 17:59, Bob Carlson wrote:

I don’t understand the code yet but it really needs replace all
/Peice/Piece/

-Bob
Tucson AZ

On Oct 3, 2023, at 09:48, Raymond West raywest@raywest.com wrote:

<fillets3d.scad>


OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org

yes, but I guess the author was not English. There was also an error(typo, iirc) in the original code, which I fixed. here's an example of its use module shape (){   difference(){     union(){      cube(50);      cylinder(h=50,d=30);    }     cylinder (h=100,d=20);   } } $fn=80; use<C:\Program Files\OpenSCAD\libraries\rw\fillets3d.scad> topBottomFillet(b = 0, t = 50, r = 2, s = 8, e = 1) shape(); It is slow, but seems to work, but only does top and/or bottom faces. On 03/10/2023 17:59, Bob Carlson wrote: > I don’t understand the code yet but it really needs replace all > /Peice/Piece/ > > -Bob > Tucson AZ > > > > On Oct 3, 2023, at 09:48, Raymond West <raywest@raywest.com> wrote: > > <fillets3d.scad> > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email todiscuss-leave@lists.openscad.org
JB
Jordan Brown
Tue, Oct 3, 2023 5:40 PM

On 10/3/2023 9:48 AM, Raymond West wrote:

yes,, but Karl was asking about standard objects, and Minkowski seems
fast enough.

I think a disadvantage  is that it can not be applied after the object
is created, but the cylinder/whatever has to be created allowing for
the rounding to be added, so to speak.

You can do more general rounding with Minkowski by subtracting the
object from a large cube, doing a Minkowski on that, subtracting from
a slightly smaller cube, then Minkowski again.

Basically, this turns your model into empty space in the middle of a
solid, shrinks that empty space using Minkowski, turns it back into
positive space, and grows it again with another Minkowski.  The two
Minkowskis cancel each other out, except that they round in the process.

module round(r) {
    big = 100;
    minkowski() {
        difference() {
            cube(big-1, center=true);
            minkowski() {
                difference() {
                    cube(big, center=true);
                    children();
                }
                sphere(r=r);
            }
        }
        sphere(r=r);
    }
}

round(10) {
    cylinder(h=50, r=30, center=true);
    cylinder(h=70, r=20, center=true);
}

But rendering that took 12 minutes.

There's probably another Minkowski trick for rounding those inside
corners but I don't know what it is.

On 10/3/2023 9:48 AM, Raymond West wrote: > > yes,, but Karl was asking about standard objects, and Minkowski seems > fast enough. > > I think a disadvantage  is that it can not be applied after the object > is created, but the cylinder/whatever has to be created allowing for > the rounding to be added, so to speak. > You can do more general rounding with Minkowski by subtracting the object from a large cube, doing a Minkowski on *that*, subtracting from a slightly smaller cube, then Minkowski again. Basically, this turns your model into empty space in the middle of a solid, shrinks that empty space using Minkowski, turns it back into positive space, and grows it again with another Minkowski.  The two Minkowskis cancel each other out, except that they round in the process. module round(r) { big = 100; minkowski() { difference() { cube(big-1, center=true); minkowski() { difference() { cube(big, center=true); children(); } sphere(r=r); } } sphere(r=r); } } round(10) { cylinder(h=50, r=30, center=true); cylinder(h=70, r=20, center=true); } But rendering that took 12 minutes. There's probably another Minkowski trick for rounding those inside corners but I don't know what it is.
P
pca006132
Tue, Oct 3, 2023 5:51 PM

And the nice thing with this approach is that it will always be slow with
convex decomposition, because subtracting a convex shape gives you a
(partially) concave shape, which will be decomposed into many parts. We
should really try to come up with a specialized algorithm for 3D offsetting
that does not require convex decomposition.

On Wed, Oct 4, 2023, 1:40 AM Jordan Brown openscad@jordan.maileater.net
wrote:

On 10/3/2023 9:48 AM, Raymond West wrote:

yes,, but Karl was asking about standard objects, and Minkowski seems fast
enough.

I think a disadvantage  is that it can not be applied after the object is
created, but the cylinder/whatever has to be created allowing for the
rounding to be added, so to speak.

You can do more general rounding with Minkowski by subtracting the object
from a large cube, doing a Minkowski on that, subtracting from a slightly
smaller cube, then Minkowski again.

Basically, this turns your model into empty space in the middle of a
solid, shrinks that empty space using Minkowski, turns it back into
positive space, and grows it again with another Minkowski.  The two
Minkowskis cancel each other out, except that they round in the process.

module round(r) {
big = 100;
minkowski() {
difference() {
cube(big-1, center=true);
minkowski() {
difference() {
cube(big, center=true);
children();
}
sphere(r=r);
}
}
sphere(r=r);
}
}

round(10) {
cylinder(h=50, r=30, center=true);
cylinder(h=70, r=20, center=true);
}

But rendering that took 12 minutes.

There's probably another Minkowski trick for rounding those inside corners
but I don't know what it is.


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

And the nice thing with this approach is that it will always be slow with convex decomposition, because subtracting a convex shape gives you a (partially) concave shape, which will be decomposed into many parts. We should really try to come up with a specialized algorithm for 3D offsetting that does not require convex decomposition. On Wed, Oct 4, 2023, 1:40 AM Jordan Brown <openscad@jordan.maileater.net> wrote: > On 10/3/2023 9:48 AM, Raymond West wrote: > > > yes,, but Karl was asking about standard objects, and Minkowski seems fast > enough. > > I think a disadvantage is that it can not be applied after the object is > created, but the cylinder/whatever has to be created allowing for the > rounding to be added, so to speak. > > > You can do more general rounding with Minkowski by subtracting the object > from a large cube, doing a Minkowski on *that*, subtracting from a slightly > smaller cube, then Minkowski again. > > Basically, this turns your model into empty space in the middle of a > solid, shrinks that empty space using Minkowski, turns it back into > positive space, and grows it again with another Minkowski. The two > Minkowskis cancel each other out, except that they round in the process. > > module round(r) { > big = 100; > minkowski() { > difference() { > cube(big-1, center=true); > minkowski() { > difference() { > cube(big, center=true); > children(); > } > sphere(r=r); > } > } > sphere(r=r); > } > } > > round(10) { > cylinder(h=50, r=30, center=true); > cylinder(h=70, r=20, center=true); > } > > > But rendering that took 12 minutes. > > There's probably another Minkowski trick for rounding those inside corners > but I don't know what it is. > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >