RV
Roel Vanhout
Mon, Jan 20, 2025 2:45 PM
Hello all,
Another day, another filleting question! I know there have been many of
these lately (well, I guess there have always been), but I can't figure out
how to apply any of the solutions in those to my current problem, so I'm
hoping someone can point me in the right direction. I'm open to using
Python as well if that makes it easier.
Essentially I want to create a handle with no sharp corners. I have
attached a crude example that I made in Blender. What I did there was start
out with a 2d version of the cross section of the handle, which is an
ellipse that is more squished (at least I think that's the professional
mathematician's term for it) at the top than it is at bottom. That shape is
then extruded along a Bezier curve. Then the bottom few rings of edges are
scaled in the X and Y axes, each subsequent one a bit less, the amounts of
the scaling factors forming an exponential decay curve or some such.
I don't think this sort of direct edge manipulation is possible in
OpenSCAD, but I also can't think of a CSG equivalent of these operations. I
mentioned Python OpenSCAD above because I know it has an extrude along path
function, which would get me partly there, but can I also then select and
manipulate vertices on the result mesh? Or can I go the other way around -
scale the cross section 2d shape on each segment of the bezier and then do
a hull() of all the result 2d shapes in plain OpenSCAD? Thanks!
[image: image.png]
Hello all,
Another day, another filleting question! I know there have been many of
these lately (well, I guess there have always been), but I can't figure out
how to apply any of the solutions in those to my current problem, so I'm
hoping someone can point me in the right direction. I'm open to using
Python as well if that makes it easier.
Essentially I want to create a handle with no sharp corners. I have
attached a crude example that I made in Blender. What I did there was start
out with a 2d version of the cross section of the handle, which is an
ellipse that is more squished (at least I think that's the professional
mathematician's term for it) at the top than it is at bottom. That shape is
then extruded along a Bezier curve. Then the bottom few rings of edges are
scaled in the X and Y axes, each subsequent one a bit less, the amounts of
the scaling factors forming an exponential decay curve or some such.
I don't think this sort of direct edge manipulation is possible in
OpenSCAD, but I also can't think of a CSG equivalent of these operations. I
mentioned Python OpenSCAD above because I know it has an extrude along path
function, which would get me partly there, but can I also then select and
manipulate vertices on the result mesh? Or can I go the other way around -
scale the cross section 2d shape on each segment of the bezier and then do
a hull() of all the result 2d shapes in plain OpenSCAD? Thanks!
[image: image.png]
SP
Sanjeev Prabhakar
Mon, Jan 20, 2025 3:49 PM
If you are trying something like this,
I can explain the process I use.
[image: Screenshot 2025-01-20 at 9.jpg]
Although the code is written, but it might be very intimidating initially
On Mon, 20 Jan 2025 at 20:15, Roel Vanhout via Discuss <
discuss@lists.openscad.org> wrote:
Hello all,
Another day, another filleting question! I know there have been many of
these lately (well, I guess there have always been), but I can't figure out
how to apply any of the solutions in those to my current problem, so I'm
hoping someone can point me in the right direction. I'm open to using
Python as well if that makes it easier.
Essentially I want to create a handle with no sharp corners. I have
attached a crude example that I made in Blender. What I did there was start
out with a 2d version of the cross section of the handle, which is an
ellipse that is more squished (at least I think that's the professional
mathematician's term for it) at the top than it is at bottom. That shape is
then extruded along a Bezier curve. Then the bottom few rings of edges are
scaled in the X and Y axes, each subsequent one a bit less, the amounts of
the scaling factors forming an exponential decay curve or some such.
I don't think this sort of direct edge manipulation is possible in
OpenSCAD, but I also can't think of a CSG equivalent of these operations. I
mentioned Python OpenSCAD above because I know it has an extrude along path
function, which would get me partly there, but can I also then select and
manipulate vertices on the result mesh? Or can I go the other way around -
scale the cross section 2d shape on each segment of the bezier and then do
a hull() of all the result 2d shapes in plain OpenSCAD? Thanks!
[image: image.png]
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
If you are trying something like this,
I can explain the process I use.
[image: Screenshot 2025-01-20 at 9.jpg]
Although the code is written, but it might be very intimidating initially
On Mon, 20 Jan 2025 at 20:15, Roel Vanhout via Discuss <
discuss@lists.openscad.org> wrote:
> Hello all,
>
> Another day, another filleting question! I know there have been many of
> these lately (well, I guess there have always been), but I can't figure out
> how to apply any of the solutions in those to my current problem, so I'm
> hoping someone can point me in the right direction. I'm open to using
> Python as well if that makes it easier.
>
> Essentially I want to create a handle with no sharp corners. I have
> attached a crude example that I made in Blender. What I did there was start
> out with a 2d version of the cross section of the handle, which is an
> ellipse that is more squished (at least I think that's the professional
> mathematician's term for it) at the top than it is at bottom. That shape is
> then extruded along a Bezier curve. Then the bottom few rings of edges are
> scaled in the X and Y axes, each subsequent one a bit less, the amounts of
> the scaling factors forming an exponential decay curve or some such.
>
> I don't think this sort of direct edge manipulation is possible in
> OpenSCAD, but I also can't think of a CSG equivalent of these operations. I
> mentioned Python OpenSCAD above because I know it has an extrude along path
> function, which would get me partly there, but can I also then select and
> manipulate vertices on the result mesh? Or can I go the other way around -
> scale the cross section 2d shape on each segment of the bezier and then do
> a hull() of all the result 2d shapes in plain OpenSCAD? Thanks!
>
>
> [image: image.png]
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
SP
Sanjeev Prabhakar
Mon, Jan 20, 2025 4:22 PM
This seems a little better
[image: Screenshot 2025-01-20 at 9 (1).jpg]
This seems a little better
[image: Screenshot 2025-01-20 at 9 (1).jpg]
SP
Sanjeev Prabhakar
Tue, Jan 21, 2025 2:32 AM
this video will explain it better:
https://youtu.be/gtiWLeg0l_c
this video will explain it better:
https://youtu.be/gtiWLeg0l_c
RV
Roel Vanhout
Tue, Jan 21, 2025 12:16 PM
This is mighty impressive, thank you. I only partly understand what's going
on but I've only watched the video twice now. Where do I find documentation
on functions like ip_fillet_surf_closed(), which seems to do the heavy
lifting of the part I was most unsure about? Is it a matter of downloading
the package and looking at the source or is there documentation somewhere?
Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar sprabhakar2006@gmail.com
wrote:
This is mighty impressive, thank you. I only partly understand what's going
on but I've only watched the video twice now. Where do I find documentation
on functions like ip_fillet_surf_closed(), which seems to do the heavy
lifting of the part I was most unsure about? Is it a matter of downloading
the package and looking at the source or is there documentation somewhere?
Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <sprabhakar2006@gmail.com>
wrote:
> this video will explain it better:
> https://youtu.be/gtiWLeg0l_c
>
SP
Sanjeev Prabhakar
Tue, Jan 21, 2025 12:48 PM
You can download the files
openscad2.py
dependencies2.scad
From here:
https://github.com/sprabhakar2006/openSCAD
All the explanation of the functions can be found in the file openscad2.py
I am using Jupyter notebook to write codes, but you can use anything you
like for writing python code.
You can keep the above 2 files in the same folder where you intended to
create models.
Thanks
On Tue, 21 Jan, 2025, 5:47 pm Roel Vanhout, roel.vanhout@gmail.com wrote:
This is mighty impressive, thank you. I only partly understand what's
going on but I've only watched the video twice now. Where do I find
documentation on functions like ip_fillet_surf_closed(), which seems to do
the heavy lifting of the part I was most unsure about? Is it a matter of
downloading the package and looking at the source or is there documentation
somewhere? Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
sprabhakar2006@gmail.com> wrote:
You can download the files
openscad2.py
dependencies2.scad
From here:
https://github.com/sprabhakar2006/openSCAD
All the explanation of the functions can be found in the file openscad2.py
I am using Jupyter notebook to write codes, but you can use anything you
like for writing python code.
You can keep the above 2 files in the same folder where you intended to
create models.
Thanks
On Tue, 21 Jan, 2025, 5:47 pm Roel Vanhout, <roel.vanhout@gmail.com> wrote:
> This is mighty impressive, thank you. I only partly understand what's
> going on but I've only watched the video twice now. Where do I find
> documentation on functions like ip_fillet_surf_closed(), which seems to do
> the heavy lifting of the part I was most unsure about? Is it a matter of
> downloading the package and looking at the source or is there documentation
> somewhere? Thanks.
>
> regards,
>
> Roel
>
>
> On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
> sprabhakar2006@gmail.com> wrote:
>
>> this video will explain it better:
>> https://youtu.be/gtiWLeg0l_c
>>
>
RW
Raymond West
Wed, Jan 22, 2025 2:29 PM
I posted some code wrt filleting tube joints about two weeks ago - the
concept will do what you want to do wrt the smooth transition (fillet)
for your handle. You can then produce your object in plain openscad,
although python has advantages. I'm not producing the code to solve your
specific problem, but the image below is similar enough to show that a
solution is quite feasible in openscad. (the square tube represents the
flat surface and the tube the handle.)
To generate the fillet, you intersect the two pieces , increased by the
size of the fillet. The 'hulled' result is a fillet, but with straight
sides, maybe you would call it a chamfer. In the example I've pictured
above, then imagine a line around the branched small pipe, at a distance
of the fillet from the flat face of the square tube, and a line on the
flat surface of the tube created by a pipe of diameter plus 2fillet at
the same angle as the pipe. Let h be the distance that the square pipe
is increased, and v the amount that the small pipe radius is increased
(in this first instance both h and v are equal to the size of the
fillet). Now you decide how smooth you want the radius to be. Let's say
you want ten steps. If you then do intersections from 0.1h to 0.9v,
and from 0.2h to 0.8v and so on, until 0.9h to 0.1*v, you get various
diameter intersections. These intersections give an outside smooth edge
(with the ten steps).
On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
This is mighty impressive, thank you. I only partly understand what's
going on but I've only watched the video twice now. Where do I find
documentation on functions like ip_fillet_surf_closed(), which seems
to do the heavy lifting of the part I was most unsure about? Is it a
matter of downloading the package and looking at the source or is
there documentation somewhere? Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar
sprabhakar2006@gmail.com wrote:
this video will explain it better:
https://youtu.be/gtiWLeg0l_c
OpenSCAD mailing list
To unsubscribe send an email todiscuss-leave@lists.openscad.org
I posted some code wrt filleting tube joints about two weeks ago - the
concept will do what you want to do wrt the smooth transition (fillet)
for your handle. You can then produce your object in plain openscad,
although python has advantages. I'm not producing the code to solve your
specific problem, but the image below is similar enough to show that a
solution is quite feasible in openscad. (the square tube represents the
flat surface and the tube the handle.)
To generate the fillet, you intersect the two pieces , increased by the
size of the fillet. The 'hulled' result is a fillet, but with straight
sides, maybe you would call it a chamfer. In the example I've pictured
above, then imagine a line around the branched small pipe, at a distance
of the fillet from the flat face of the square tube, and a line on the
flat surface of the tube created by a pipe of diameter plus 2*fillet at
the same angle as the pipe. Let h be the distance that the square pipe
is increased, and v the amount that the small pipe radius is increased
(in this first instance both h and v are equal to the size of the
fillet). Now you decide how smooth you want the radius to be. Let's say
you want ten steps. If you then do intersections from 0.1*h to 0.9*v,
and from 0.2*h to 0.8*v and so on, until 0.9*h to 0.1*v, you get various
diameter intersections. These intersections give an outside smooth edge
(with the ten steps).
On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
> This is mighty impressive, thank you. I only partly understand what's
> going on but I've only watched the video twice now. Where do I find
> documentation on functions like ip_fillet_surf_closed(), which seems
> to do the heavy lifting of the part I was most unsure about? Is it a
> matter of downloading the package and looking at the source or is
> there documentation somewhere? Thanks.
>
> regards,
>
> Roel
>
>
> On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar
> <sprabhakar2006@gmail.com> wrote:
>
> this video will explain it better:
> https://youtu.be/gtiWLeg0l_c
>
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email todiscuss-leave@lists.openscad.org
SP
Sanjeev Prabhakar
Wed, Jan 22, 2025 3:38 PM
Hi Ray,
This looks very nice
I would suggest you to develop some generic function or module to do such
fillets. Even if it is for some specific application.
Regards
On Wed, 22 Jan, 2025, 7:59 pm Raymond West via Discuss, <
discuss@lists.openscad.org> wrote:
I posted some code wrt filleting tube joints about two weeks ago - the
concept will do what you want to do wrt the smooth transition (fillet) for
your handle. You can then produce your object in plain openscad, although
python has advantages. I'm not producing the code to solve your specific
problem, but the image below is similar enough to show that a solution is
quite feasible in openscad. (the square tube represents the flat surface
and the tube the handle.)
To generate the fillet, you intersect the two pieces , increased by the
size of the fillet. The 'hulled' result is a fillet, but with straight
sides, maybe you would call it a chamfer. In the example I've pictured
above, then imagine a line around the branched small pipe, at a distance of
the fillet from the flat face of the square tube, and a line on the flat
surface of the tube created by a pipe of diameter plus 2fillet at the
same angle as the pipe. Let h be the distance that the square pipe is
increased, and v the amount that the small pipe radius is increased (in
this first instance both h and v are equal to the size of the fillet). Now
you decide how smooth you want the radius to be. Let's say you want ten
steps. If you then do intersections from 0.1h to 0.9v, and from 0.2h to
0.8v and so on, until 0.9h to 0.1*v, you get various diameter
intersections. These intersections give an outside smooth edge (with the
ten steps).
On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
This is mighty impressive, thank you. I only partly understand what's
going on but I've only watched the video twice now. Where do I find
documentation on functions like ip_fillet_surf_closed(), which seems to do
the heavy lifting of the part I was most unsure about? Is it a matter of
downloading the package and looking at the source or is there documentation
somewhere? Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
sprabhakar2006@gmail.com> wrote:
Hi Ray,
This looks very nice
I would suggest you to develop some generic function or module to do such
fillets. Even if it is for some specific application.
Regards
On Wed, 22 Jan, 2025, 7:59 pm Raymond West via Discuss, <
discuss@lists.openscad.org> wrote:
> I posted some code wrt filleting tube joints about two weeks ago - the
> concept will do what you want to do wrt the smooth transition (fillet) for
> your handle. You can then produce your object in plain openscad, although
> python has advantages. I'm not producing the code to solve your specific
> problem, but the image below is similar enough to show that a solution is
> quite feasible in openscad. (the square tube represents the flat surface
> and the tube the handle.)
>
>
> To generate the fillet, you intersect the two pieces , increased by the
> size of the fillet. The 'hulled' result is a fillet, but with straight
> sides, maybe you would call it a chamfer. In the example I've pictured
> above, then imagine a line around the branched small pipe, at a distance of
> the fillet from the flat face of the square tube, and a line on the flat
> surface of the tube created by a pipe of diameter plus 2*fillet at the
> same angle as the pipe. Let h be the distance that the square pipe is
> increased, and v the amount that the small pipe radius is increased (in
> this first instance both h and v are equal to the size of the fillet). Now
> you decide how smooth you want the radius to be. Let's say you want ten
> steps. If you then do intersections from 0.1*h to 0.9*v, and from 0.2*h to
> 0.8*v and so on, until 0.9*h to 0.1*v, you get various diameter
> intersections. These intersections give an outside smooth edge (with the
> ten steps).
>
> On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
>
> This is mighty impressive, thank you. I only partly understand what's
> going on but I've only watched the video twice now. Where do I find
> documentation on functions like ip_fillet_surf_closed(), which seems to do
> the heavy lifting of the part I was most unsure about? Is it a matter of
> downloading the package and looking at the source or is there documentation
> somewhere? Thanks.
>
> regards,
>
> Roel
>
>
> On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
> sprabhakar2006@gmail.com> wrote:
>
>> this video will explain it better:
>> https://youtu.be/gtiWLeg0l_c
>>
>
> _______________________________________________
> 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
>
SP
Sanjeev Prabhakar
Wed, Jan 22, 2025 4:11 PM
posted a video on the concept of drawing a fillet with 3 lines.
I initially started with this and later created a little more complex
examples.
https://youtu.be/yXDSiOUsHTE
posted a video on the concept of drawing a fillet with 3 lines.
I initially started with this and later created a little more complex
examples.
https://youtu.be/yXDSiOUsHTE
RV
Roel Vanhout
Wed, Jan 22, 2025 4:23 PM
Thank you for this, and I think I did see and studied your earlier example,
but it wasn't clear to me how to do this on a non-cilinder shape. Your
example is already covered in BOSL2's join_prism, which natively supports
your example, but not when trying to join an irregular shape like I was.
But maybe I'm misunderstanding something. I'm studying Sanjeev's solution,
in parallel with a solution I wrote in plain Python, until I understand the
various approaches well enough to come up with a plain OpenSCAD solution;
although my approach for now is to just generate faces following the
algorithm I described as the Blender workflow in my original email. Overall
at this point it has turned into a study project for me, to better
understand the process of generating faces for filleting, so thanks for
your help.
Cheers
On Wed, Jan 22, 2025, 15:29 Raymond West via Discuss <
discuss@lists.openscad.org> wrote:
I posted some code wrt filleting tube joints about two weeks ago - the
concept will do what you want to do wrt the smooth transition (fillet) for
your handle. You can then produce your object in plain openscad, although
python has advantages. I'm not producing the code to solve your specific
problem, but the image below is similar enough to show that a solution is
quite feasible in openscad. (the square tube represents the flat surface
and the tube the handle.)
To generate the fillet, you intersect the two pieces , increased by the
size of the fillet. The 'hulled' result is a fillet, but with straight
sides, maybe you would call it a chamfer. In the example I've pictured
above, then imagine a line around the branched small pipe, at a distance of
the fillet from the flat face of the square tube, and a line on the flat
surface of the tube created by a pipe of diameter plus 2fillet at the
same angle as the pipe. Let h be the distance that the square pipe is
increased, and v the amount that the small pipe radius is increased (in
this first instance both h and v are equal to the size of the fillet). Now
you decide how smooth you want the radius to be. Let's say you want ten
steps. If you then do intersections from 0.1h to 0.9v, and from 0.2h to
0.8v and so on, until 0.9h to 0.1*v, you get various diameter
intersections. These intersections give an outside smooth edge (with the
ten steps).
On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
This is mighty impressive, thank you. I only partly understand what's
going on but I've only watched the video twice now. Where do I find
documentation on functions like ip_fillet_surf_closed(), which seems to do
the heavy lifting of the part I was most unsure about? Is it a matter of
downloading the package and looking at the source or is there documentation
somewhere? Thanks.
regards,
Roel
On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
sprabhakar2006@gmail.com> wrote:
Thank you for this, and I think I did see and studied your earlier example,
but it wasn't clear to me how to do this on a non-cilinder shape. Your
example is already covered in BOSL2's join_prism, which natively supports
your example, but not when trying to join an irregular shape like I was.
But maybe I'm misunderstanding something. I'm studying Sanjeev's solution,
in parallel with a solution I wrote in plain Python, until I understand the
various approaches well enough to come up with a plain OpenSCAD solution;
although my approach for now is to just generate faces following the
algorithm I described as the Blender workflow in my original email. Overall
at this point it has turned into a study project for me, to better
understand the process of generating faces for filleting, so thanks for
your help.
Cheers
On Wed, Jan 22, 2025, 15:29 Raymond West via Discuss <
discuss@lists.openscad.org> wrote:
> I posted some code wrt filleting tube joints about two weeks ago - the
> concept will do what you want to do wrt the smooth transition (fillet) for
> your handle. You can then produce your object in plain openscad, although
> python has advantages. I'm not producing the code to solve your specific
> problem, but the image below is similar enough to show that a solution is
> quite feasible in openscad. (the square tube represents the flat surface
> and the tube the handle.)
>
>
> To generate the fillet, you intersect the two pieces , increased by the
> size of the fillet. The 'hulled' result is a fillet, but with straight
> sides, maybe you would call it a chamfer. In the example I've pictured
> above, then imagine a line around the branched small pipe, at a distance of
> the fillet from the flat face of the square tube, and a line on the flat
> surface of the tube created by a pipe of diameter plus 2*fillet at the
> same angle as the pipe. Let h be the distance that the square pipe is
> increased, and v the amount that the small pipe radius is increased (in
> this first instance both h and v are equal to the size of the fillet). Now
> you decide how smooth you want the radius to be. Let's say you want ten
> steps. If you then do intersections from 0.1*h to 0.9*v, and from 0.2*h to
> 0.8*v and so on, until 0.9*h to 0.1*v, you get various diameter
> intersections. These intersections give an outside smooth edge (with the
> ten steps).
>
> On 21/01/2025 12:16, Roel Vanhout via Discuss wrote:
>
> This is mighty impressive, thank you. I only partly understand what's
> going on but I've only watched the video twice now. Where do I find
> documentation on functions like ip_fillet_surf_closed(), which seems to do
> the heavy lifting of the part I was most unsure about? Is it a matter of
> downloading the package and looking at the source or is there documentation
> somewhere? Thanks.
>
> regards,
>
> Roel
>
>
> On Tue, Jan 21, 2025 at 3:32 AM Sanjeev Prabhakar <
> sprabhakar2006@gmail.com> wrote:
>
>> this video will explain it better:
>> https://youtu.be/gtiWLeg0l_c
>>
>
> _______________________________________________
> 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
>