discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

seat

SP
Sanjeev Prabhakar
Sun, Jun 2, 2024 3:28 AM

another improved attempt on designing a seat:

my point here is that python can improve the capability of openscad which
probably is extremely difficult with pure openscad language alone.

So it would make sense in investing some time to add python as another
language. Maybe there could be 2 separate versions

openscad file can be downloaded from here:
https://github.com/sprabhakar2006/openSCAD/blob/main/seat.scad

[image: Screenshot 2024-06-02 at 8.48.58 AM.png]

another improved attempt on designing a seat: my point here is that python can improve the capability of openscad which probably is extremely difficult with pure openscad language alone. So it would make sense in investing some time to add python as another language. Maybe there could be 2 separate versions openscad file can be downloaded from here: https://github.com/sprabhakar2006/openSCAD/blob/main/seat.scad [image: Screenshot 2024-06-02 at 8.48.58 AM.png]
JB
Jon Bondy
Sun, Jun 2, 2024 11:25 AM

The OpenSCAD file is incomprehensible, to the point of being useless. 
You are writing in Python, not in OpenSCAD. You are just using OpenSCAD
as  rendering engine.

On 6/1/2024 11:28 PM, Sanjeev Prabhakar via Discuss wrote:

another improved attempt on designing a seat:

my point here is that python can improve the capability of openscad
which probably is extremely difficult with pure openscad language alone.

So it would make sense in investing some time to add python as another
language. Maybe there could be 2 separate versions

openscad file can be downloaded from here:
https://github.com/sprabhakar2006/openSCAD/blob/main/seat.scad

Screenshot 2024-06-02 at 8.48.58 AM.png


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

The OpenSCAD file is incomprehensible, to the point of being useless.  You are writing in Python, not in OpenSCAD. You are just using OpenSCAD as  rendering engine. On 6/1/2024 11:28 PM, Sanjeev Prabhakar via Discuss wrote: > another improved attempt on designing a seat: > > my point here is that python can improve the capability of openscad > which probably is extremely difficult with pure openscad language alone. > > So it would make sense in investing some time to add python as another > language. Maybe there could be 2 separate versions > > openscad file can be downloaded from here: > https://github.com/sprabhakar2006/openSCAD/blob/main/seat.scad > > Screenshot 2024-06-02 at 8.48.58 AM.png > > _______________________________________________ > 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
WF
William F. Adams
Sun, Jun 2, 2024 4:16 PM

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss discuss@lists.openscad.org wrote:

The OpenSCAD file is incomprehensible, to the point of being useless.  You are writing in Python, not in OpenSCAD. You are just using OpenSCAD as  rendering engine.
Let's turn this around --- if there was an OpenSCAD module for representing such a design what would the interface look like?
I've asked before about representing curved surfaces in a fashion which was elegant and expressible, and which folks who do not have an understanding of higher maths could not merely grasp, but also write/use --- while a couple of techniques have been put forward, I wasn't able to wrap my mind around them, and I will readily admit to this being my deficient education.
I've actually just finished adding support for arcs in my current project:
https://github.com/WillAdams/gcodepreview 

(though I need to improve it to have Z-axis movement/cutting as well, and yes, for some reason the arc generated come in as 25.1mm x 25mm curves which don't meet up so as to make a circle, and they generate an error when importing the DXF into some programs...)
Once that is done, I eventually hope to start working on adding some sort of support for curves in 3 dimensions, or representing a curved surface --- what is a way to do this which is:
 - reasonably concise - expressive and powerful - suitable to be calculated out within OpenSCAD 
My current plan is to just do curves of tool movement in 3 dimensions --- an overhead view of a Bézier curve for X and Y coordinates, and a representation of a side view as a curve which shows Y and Z coordinates --- to make a curved surface it would be necessary to arrange a sufficient number of toolpaths so as to represent that tool movement when cutting out that surface and ultimately this would need to be captured as G-code for making that cut.
At one point in time I had a number of links which I had researched:

and I would be glad of reading recommendations, or example code which is carefully and thoroughly explained.
William

-- https://designinto3d.com/
Sphinx of black quartz, judge my vow.

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss <discuss@lists.openscad.org> wrote: The OpenSCAD file is incomprehensible, to the point of being useless.  You are writing in Python, not in OpenSCAD. You are just using OpenSCAD as  rendering engine. Let's turn this around --- if there was an OpenSCAD module for representing such a design what would the interface look like? I've asked before about representing curved surfaces in a fashion which was elegant and expressible, and which folks who do not have an understanding of higher maths could not merely grasp, but also write/use --- while a couple of techniques have been put forward, I wasn't able to wrap my mind around them, and I will readily admit to this being my deficient education. I've actually just finished adding support for arcs in my current project: https://github.com/WillAdams/gcodepreview  (though I need to improve it to have Z-axis movement/cutting as well, and yes, for some reason the arc generated come in as 25.1mm x 25mm curves which don't meet up so as to make a circle, and they generate an error when importing the DXF into some programs...) Once that is done, I eventually hope to start working on adding some sort of support for curves in 3 dimensions, or representing a curved surface --- what is a way to do this which is:  - reasonably concise - expressive and powerful - suitable to be calculated out within OpenSCAD  My current plan is to just do curves of tool movement in 3 dimensions --- an overhead view of a Bézier curve for X and Y coordinates, and a representation of a side view as a curve which shows Y and Z coordinates --- to make a curved surface it would be necessary to arrange a sufficient number of toolpaths so as to represent that tool movement when cutting out that surface and ultimately this would need to be captured as G-code for making that cut. At one point in time I had a number of links which I had researched: - https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Surface - Thingiverse: Bezier Heart in OpenScad - https://www.thingiverse.com/thing:8931 - http://climberg.de/page/openscad-implementation-of-bezier-curves-of-any-degrees/ https://climberg.de/post/openscad_bezier_curves - https://github.com/JustinSDK/dotSCAD [19] https://openhome.cc/eGossip/OpenSCAD/BezierCurve.html https://openhome.cc/eGossip/OpenSCAD/lib-bezier_surface.html - http://forum.openscad.org/smooth-3-D-curves-tc7766.html - https://github.com/RLuckom/bezier-scad https://www.raphaelluckom.com/posts/bezier_curves.html - http://forum.openscad.org/Rectangle-with-one-curved-edge-td21097.html - http://kitwallace.tumblr.com/post/76273401911/loxodrome-in-openscad - http://www.thingiverse.com/thing:1208001 [20] - https://www.blockscad3d.com/community/projects/68284 and I would be glad of reading recommendations, or example code which is carefully and thoroughly explained. William -- https://designinto3d.com/ Sphinx of black quartz, judge my vow.
AM
Adrian Mariano
Sun, Jun 2, 2024 9:18 PM

It seems that a lot of those links are dead and the ones that are alive are
about Beziers. I'm not sure what you're looking for.  A simple
implementation of Beziers is not hard.  BOSL2 has a sophisticated, highly
optimized implementation of Beziers if you're looking for something like
that.  But to my mind, that really doesn't answer the question at all of
how to design curved objects, because you still need to produce the bezier
control points somehow. So how do you do that?  It seems like what's needed
is some other mechanism where you can define what you want in a more human
comprehensible fashion and some intermediate process produces the requisite
control points.

On Sun, Jun 2, 2024 at 12:19 PM William F. Adams via Discuss <
discuss@lists.openscad.org> wrote:

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

The OpenSCAD file is incomprehensible, to the point of being useless.  You
are writing in Python, not in OpenSCAD. You are just using OpenSCAD as
rendering engine.

Let's turn this around --- if there was an OpenSCAD module for
representing such a design what would the interface look like?

I've asked before about representing curved surfaces in a fashion which
was elegant and expressible, and which folks who do not have an
understanding of higher maths could not merely grasp, but also write/use
--- while a couple of techniques have been put forward, I wasn't able to
wrap my mind around them, and I will readily admit to this being my
deficient education.

I've actually just finished adding support for arcs in my current project:

https://github.com/WillAdams/gcodepreview

[image: Inline image]

(though I need to improve it to have Z-axis movement/cutting as well, and
yes, for some reason the arc generated come in as 25.1mm x 25mm curves
which don't meet up so as to make a circle, and they generate an error when
importing the DXF into some programs...)

Once that is done, I eventually hope to start working on adding some sort
of support for curves in 3 dimensions, or representing a curved surface ---
what is a way to do this which is:

  • reasonably concise
  • expressive and powerful
  • suitable to be calculated out within OpenSCAD

My current plan is to just do curves of tool movement in 3 dimensions ---
an overhead view of a Bézier curve for X and Y coordinates, and a
representation of a side view as a curve which shows Y and Z coordinates
--- to make a curved surface it would be necessary to arrange a sufficient
number of toolpaths so as to represent that tool movement when cutting out
that surface and ultimately this would need to be captured as G-code for
making that cut.

At one point in time I had a number of links which I had researched:

-
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Surface
- Thingiverse: Bezier Heart in OpenScad
<https://www.thingiverse.com/thing:8483>
   - https://www.thingiverse.com/thing:8931
-
http://climberg.de/page/openscad-implementation-of-bezier-curves-of-any-degrees/
 https://climberg.de/post/openscad_bezier_curves
- https://github.com/JustinSDK/dotSCAD [19]
<http://forum.openscad.org/larger-number-of-control-points-for-Bezier-td22435.html>
 https://openhome.cc/eGossip/OpenSCAD/BezierCurve.html
https://openhome.cc/eGossip/OpenSCAD/lib-bezier_surface.html
- http://forum.openscad.org/smooth-3-D-curves-tc7766.html
- https://github.com/RLuckom/bezier-scad
https://www.raphaelluckom.com/posts/bezier_curves.html
- http://forum.openscad.org/Rectangle-with-one-curved-edge-td21097.html
- http://kitwallace.tumblr.com/post/76273401911/loxodrome-in-openscad
- http://www.thingiverse.com/thing:1208001 [20]
<http://forum.openscad.org/Spline-interpolation-nSpline-td15207.html>
- https://www.blockscad3d.com/community/projects/68284

and I would be glad of reading recommendations, or example code which is
carefully and thoroughly explained.

William

--
https://designinto3d.com/
Sphinx of black quartz, judge my vow.


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

It seems that a lot of those links are dead and the ones that are alive are about Beziers. I'm not sure what you're looking for. A simple implementation of Beziers is not hard. BOSL2 has a sophisticated, highly optimized implementation of Beziers if you're looking for something like that. But to my mind, that really doesn't answer the question at all of how to design curved objects, because you still need to produce the bezier control points somehow. So how do you do that? It seems like what's needed is some other mechanism where you can define what you want in a more human comprehensible fashion and some intermediate process produces the requisite control points. On Sun, Jun 2, 2024 at 12:19 PM William F. Adams via Discuss < discuss@lists.openscad.org> wrote: > On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss < > discuss@lists.openscad.org> wrote: > > The OpenSCAD file is incomprehensible, to the point of being useless. You > are writing in Python, not in OpenSCAD. You are just using OpenSCAD as > rendering engine. > > Let's turn this around --- if there was an OpenSCAD module for > representing such a design what would the interface look like? > > I've asked before about representing curved surfaces in a fashion which > was elegant and expressible, and which folks who do not have an > understanding of higher maths could not merely grasp, but also write/use > --- while a couple of techniques have been put forward, I wasn't able to > wrap my mind around them, and I will readily admit to this being my > deficient education. > > I've actually just finished adding support for arcs in my current project: > > https://github.com/WillAdams/gcodepreview > > [image: Inline image] > > > (though I need to improve it to have Z-axis movement/cutting as well, and > yes, for some reason the arc generated come in as 25.1mm x 25mm curves > which don't meet up so as to make a circle, and they generate an error when > importing the DXF into some programs...) > > Once that is done, I eventually hope to start working on adding some sort > of support for curves in 3 dimensions, or representing a curved surface --- > what is a way to do this which is: > > - reasonably concise > - expressive and powerful > - suitable to be calculated out within OpenSCAD > > My current plan is to just do curves of tool movement in 3 dimensions --- > an overhead view of a Bézier curve for X and Y coordinates, and a > representation of a side view as a curve which shows Y and Z coordinates > --- to make a curved surface it would be necessary to arrange a sufficient > number of toolpaths so as to represent that tool movement when cutting out > that surface and ultimately this would need to be captured as G-code for > making that cut. > > At one point in time I had a number of links which I had researched: > > > - > https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Surface > - Thingiverse: Bezier Heart in OpenScad > <https://www.thingiverse.com/thing:8483> > - https://www.thingiverse.com/thing:8931 > - > http://climberg.de/page/openscad-implementation-of-bezier-curves-of-any-degrees/ > https://climberg.de/post/openscad_bezier_curves > - https://github.com/JustinSDK/dotSCAD [19] > <http://forum.openscad.org/larger-number-of-control-points-for-Bezier-td22435.html> > https://openhome.cc/eGossip/OpenSCAD/BezierCurve.html > https://openhome.cc/eGossip/OpenSCAD/lib-bezier_surface.html > - http://forum.openscad.org/smooth-3-D-curves-tc7766.html > - https://github.com/RLuckom/bezier-scad > https://www.raphaelluckom.com/posts/bezier_curves.html > - http://forum.openscad.org/Rectangle-with-one-curved-edge-td21097.html > - http://kitwallace.tumblr.com/post/76273401911/loxodrome-in-openscad > - http://www.thingiverse.com/thing:1208001 [20] > <http://forum.openscad.org/Spline-interpolation-nSpline-td15207.html> > - https://www.blockscad3d.com/community/projects/68284 > > > > > and I would be glad of reading recommendations, or example code which is > carefully and thoroughly explained. > > William > > -- > https://designinto3d.com/ > Sphinx of black quartz, judge my vow. > > > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
JB
Jon Bondy
Mon, Jun 3, 2024 12:46 AM

I agree that what is missing is the API to do this kind of complex
curved design.  As to whether that is implemented directly in OpenSCAD
or in a pre-processor or a library may be moot.  That said, once I skip
over to another language, I may not return to OpenSCAD.

A different question would be "could we enhance OpenSCAD to the point
where relying on other languages is unnecessary?"  I'm sure this has
been pondered in the past.

Jon

On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote:

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss
discuss@lists.openscad.org wrote:

The OpenSCAD file is incomprehensible, to the point of being useless. 
You are writing in Python, not in OpenSCAD. You are just using
OpenSCAD as  rendering engine.

Let's turn this around --- if there was an OpenSCAD module for
representing such a design what would the interface look like?

<snip>

--
This email has been checked for viruses by AVG antivirus software.
www.avg.com

I agree that what is missing is the API to do this kind of complex curved design.  As to whether that is implemented directly in OpenSCAD or in a pre-processor or a library may be moot.  That said, once I skip over to another language, I may not return to OpenSCAD. A different question would be "could we enhance OpenSCAD to the point where relying on other languages is unnecessary?"  I'm sure this has been pondered in the past. Jon On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote: > On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss > <discuss@lists.openscad.org> wrote: > > The OpenSCAD file is incomprehensible, to the point of being useless.  > You are writing in Python, not in OpenSCAD. You are just using > OpenSCAD as  rendering engine. > > Let's turn this around --- if there was an OpenSCAD module for > representing such a design what would the interface look like? > <snip> -- This email has been checked for viruses by AVG antivirus software. www.avg.com
SP
Sanjeev Prabhakar
Mon, Jun 3, 2024 1:28 AM

I am not good at explaining things. When I start explaining with diagrams,
it takes too long and I don't have that much time.
You can read the code in my github file openscad1.py and I can answer some
specific questions.
There are some 18 types of arc functions defined.
Key idea in these functions is to define the arcs in 2d which are not very
tough to define in openscad language as well and thereafter the same
functions can be used in 3d arcs. What you need is a method to transform 3d
points to 2d and then back to 3d at its original location.
Also there is no complex mathematics involved here

On Sun, 2 Jun 2024 at 21:47, William F. Adams via Discuss <
discuss@lists.openscad.org> wrote:

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

The OpenSCAD file is incomprehensible, to the point of being useless.  You
are writing in Python, not in OpenSCAD. You are just using OpenSCAD as
rendering engine.

Let's turn this around --- if there was an OpenSCAD module for
representing such a design what would the interface look like?

I've asked before about representing curved surfaces in a fashion which
was elegant and expressible, and which folks who do not have an
understanding of higher maths could not merely grasp, but also write/use
--- while a couple of techniques have been put forward, I wasn't able to
wrap my mind around them, and I will readily admit to this being my
deficient education.

I've actually just finished adding support for arcs in my current project:

https://github.com/WillAdams/gcodepreview

[image: Inline image]

(though I need to improve it to have Z-axis movement/cutting as well, and
yes, for some reason the arc generated come in as 25.1mm x 25mm curves
which don't meet up so as to make a circle, and they generate an error when
importing the DXF into some programs...)

Once that is done, I eventually hope to start working on adding some sort
of support for curves in 3 dimensions, or representing a curved surface ---
what is a way to do this which is:

  • reasonably concise
  • expressive and powerful
  • suitable to be calculated out within OpenSCAD

My current plan is to just do curves of tool movement in 3 dimensions ---
an overhead view of a Bézier curve for X and Y coordinates, and a
representation of a side view as a curve which shows Y and Z coordinates
--- to make a curved surface it would be necessary to arrange a sufficient
number of toolpaths so as to represent that tool movement when cutting out
that surface and ultimately this would need to be captured as G-code for
making that cut.

At one point in time I had a number of links which I had researched:

-
https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Surface
- Thingiverse: Bezier Heart in OpenScad
<https://www.thingiverse.com/thing:8483>
   - https://www.thingiverse.com/thing:8931
-
http://climberg.de/page/openscad-implementation-of-bezier-curves-of-any-degrees/
 https://climberg.de/post/openscad_bezier_curves
- https://github.com/JustinSDK/dotSCAD [19]
<http://forum.openscad.org/larger-number-of-control-points-for-Bezier-td22435.html>
 https://openhome.cc/eGossip/OpenSCAD/BezierCurve.html
https://openhome.cc/eGossip/OpenSCAD/lib-bezier_surface.html
- http://forum.openscad.org/smooth-3-D-curves-tc7766.html
- https://github.com/RLuckom/bezier-scad
https://www.raphaelluckom.com/posts/bezier_curves.html
- http://forum.openscad.org/Rectangle-with-one-curved-edge-td21097.html
- http://kitwallace.tumblr.com/post/76273401911/loxodrome-in-openscad
- http://www.thingiverse.com/thing:1208001 [20]
<http://forum.openscad.org/Spline-interpolation-nSpline-td15207.html>
- https://www.blockscad3d.com/community/projects/68284

and I would be glad of reading recommendations, or example code which is
carefully and thoroughly explained.

William

--
https://designinto3d.com/
Sphinx of black quartz, judge my vow.


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

I am not good at explaining things. When I start explaining with diagrams, it takes too long and I don't have that much time. You can read the code in my github file openscad1.py and I can answer some specific questions. There are some 18 types of arc functions defined. Key idea in these functions is to define the arcs in 2d which are not very tough to define in openscad language as well and thereafter the same functions can be used in 3d arcs. What you need is a method to transform 3d points to 2d and then back to 3d at its original location. Also there is no complex mathematics involved here On Sun, 2 Jun 2024 at 21:47, William F. Adams via Discuss < discuss@lists.openscad.org> wrote: > On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss < > discuss@lists.openscad.org> wrote: > > The OpenSCAD file is incomprehensible, to the point of being useless. You > are writing in Python, not in OpenSCAD. You are just using OpenSCAD as > rendering engine. > > Let's turn this around --- if there was an OpenSCAD module for > representing such a design what would the interface look like? > > I've asked before about representing curved surfaces in a fashion which > was elegant and expressible, and which folks who do not have an > understanding of higher maths could not merely grasp, but also write/use > --- while a couple of techniques have been put forward, I wasn't able to > wrap my mind around them, and I will readily admit to this being my > deficient education. > > I've actually just finished adding support for arcs in my current project: > > https://github.com/WillAdams/gcodepreview > > [image: Inline image] > > > (though I need to improve it to have Z-axis movement/cutting as well, and > yes, for some reason the arc generated come in as 25.1mm x 25mm curves > which don't meet up so as to make a circle, and they generate an error when > importing the DXF into some programs...) > > Once that is done, I eventually hope to start working on adding some sort > of support for curves in 3 dimensions, or representing a curved surface --- > what is a way to do this which is: > > - reasonably concise > - expressive and powerful > - suitable to be calculated out within OpenSCAD > > My current plan is to just do curves of tool movement in 3 dimensions --- > an overhead view of a Bézier curve for X and Y coordinates, and a > representation of a side view as a curve which shows Y and Z coordinates > --- to make a curved surface it would be necessary to arrange a sufficient > number of toolpaths so as to represent that tool movement when cutting out > that surface and ultimately this would need to be captured as G-code for > making that cut. > > At one point in time I had a number of links which I had researched: > > > - > https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#Surface > - Thingiverse: Bezier Heart in OpenScad > <https://www.thingiverse.com/thing:8483> > - https://www.thingiverse.com/thing:8931 > - > http://climberg.de/page/openscad-implementation-of-bezier-curves-of-any-degrees/ > https://climberg.de/post/openscad_bezier_curves > - https://github.com/JustinSDK/dotSCAD [19] > <http://forum.openscad.org/larger-number-of-control-points-for-Bezier-td22435.html> > https://openhome.cc/eGossip/OpenSCAD/BezierCurve.html > https://openhome.cc/eGossip/OpenSCAD/lib-bezier_surface.html > - http://forum.openscad.org/smooth-3-D-curves-tc7766.html > - https://github.com/RLuckom/bezier-scad > https://www.raphaelluckom.com/posts/bezier_curves.html > - http://forum.openscad.org/Rectangle-with-one-curved-edge-td21097.html > - http://kitwallace.tumblr.com/post/76273401911/loxodrome-in-openscad > - http://www.thingiverse.com/thing:1208001 [20] > <http://forum.openscad.org/Spline-interpolation-nSpline-td15207.html> > - https://www.blockscad3d.com/community/projects/68284 > > > > > and I would be glad of reading recommendations, or example code which is > carefully and thoroughly explained. > > William > > -- > https://designinto3d.com/ > Sphinx of black quartz, judge my vow. > > > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
AM
Adrian Mariano
Mon, Jun 3, 2024 4:37 AM

Jon, I think you're underestimating the severity of the concern here.  We
don't merely need an API to do this kind of design.  At least to me that
suggests that a design approach exists and you just need to write its
interface.  There is a perfectly satisfactory API to beziers in BOSL2, for
example.  In actual fact it seems like what's needed is a design philosophy
or strategy.  And indeed, if anybody has any ideas I'd be interested in
hearing them.  I've implemented various things in BOSL2 that do curves
using beziers, but none are particularly general.  I started with
round_corners to round the corners of a polygon, which can apply beziers to
the corners in 2d.  Later I wrote rounded_prism which does a sort of
analogous thing of rounding edges of an arbitrary prism in 3d by placing
beziers at the various corners.  I also implemented smooth_path which takes
a polygon and converts each edge to a bezier curve so that they meet
smoothly (C1) at the corners with a specified amount of bulge.    And I
implemented join_prism() which joins various kinds of prisms or prism to
sphere or plane with a fillet.  But none of this provides a general
framework for designing some arbitrarily curved 3d object.

One approach to that sort of design is to start with a polyhedron and then
smooth it.  There are ways to do this such as Catmull smoothing and other
more sophisticated ones.  They depend on how the starting shape is
triangulated and are hard to control, though.  In particular, what if you
only want to smooth part of a polyhedron?  About a year ago Martin
Herdieckerhoff posted an intriguing message about a library called Yari
that used some subdivision methods to design rounded shapes, but I don't
think I ever saw any details about how it worked, or a link to the actual
algorithm.

On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

I agree that what is missing is the API to do this kind of complex curved
design.  As to whether that is implemented directly in OpenSCAD or in a
pre-processor or a library may be moot.  That said, once I skip over to
another language, I may not return to OpenSCAD.

A different question would be "could we enhance OpenSCAD to the point
where relying on other languages is unnecessary?"  I'm sure this has been
pondered in the past.

Jon

On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote:

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss
discuss@lists.openscad.org discuss@lists.openscad.org wrote:

The OpenSCAD file is incomprehensible, to the point of being useless.  You
are writing in Python, not in OpenSCAD. You are just using OpenSCAD as
rendering engine.

Let's turn this around --- if there was an OpenSCAD module for
representing such a design what would the interface look like?

<snip>

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_3168717318659623628_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


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

Jon, I think you're underestimating the severity of the concern here. We don't merely need an API to do this kind of design. At least to me that suggests that a design approach exists and you just need to write its interface. There is a perfectly satisfactory API to beziers in BOSL2, for example. In actual fact it seems like what's needed is a design philosophy or strategy. And indeed, if anybody has any ideas I'd be interested in hearing them. I've implemented various things in BOSL2 that do curves using beziers, but none are particularly general. I started with round_corners to round the corners of a polygon, which can apply beziers to the corners in 2d. Later I wrote rounded_prism which does a sort of analogous thing of rounding edges of an arbitrary prism in 3d by placing beziers at the various corners. I also implemented smooth_path which takes a polygon and converts each edge to a bezier curve so that they meet smoothly (C1) at the corners with a specified amount of bulge. And I implemented join_prism() which joins various kinds of prisms or prism to sphere or plane with a fillet. But none of this provides a general framework for designing some arbitrarily curved 3d object. One approach to that sort of design is to start with a polyhedron and then smooth it. There are ways to do this such as Catmull smoothing and other more sophisticated ones. They depend on how the starting shape is triangulated and are hard to control, though. In particular, what if you only want to smooth part of a polyhedron? About a year ago Martin Herdieckerhoff posted an intriguing message about a library called Yari that used some subdivision methods to design rounded shapes, but I don't think I ever saw any details about how it worked, or a link to the actual algorithm. On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss < discuss@lists.openscad.org> wrote: > I agree that what is missing is the API to do this kind of complex curved > design. As to whether that is implemented directly in OpenSCAD or in a > pre-processor or a library may be moot. That said, once I skip over to > another language, I may not return to OpenSCAD. > > A different question would be "could we enhance OpenSCAD to the point > where relying on other languages is unnecessary?" I'm sure this has been > pondered in the past. > > Jon > > > On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote: > > On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss > <discuss@lists.openscad.org> <discuss@lists.openscad.org> wrote: > > The OpenSCAD file is incomprehensible, to the point of being useless. You > are writing in Python, not in OpenSCAD. You are just using OpenSCAD as > rendering engine. > > Let's turn this around --- if there was an OpenSCAD module for > representing such a design what would the interface look like? > > <snip> > > > > <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_3168717318659623628_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
JB
Jon Bondy
Mon, Jun 3, 2024 10:06 AM

Adrian:

My use of the term API was a poor one.  I think William said it better. 
We need a way of thinking about such complex shapes as procedures and
functions and data, as in a C .H file, and then find a way to implement
those functions in OpenSCAD, if that is even possible.  Up until now, I
thought the problem lay in OpenSCAD's quirky feature set (no variables,
minimal data structures), but now I can see that the problem is more in
finding a design approach that is practical.  It seems that Sanjeev has
conceived of how to create such complex shapes.  Perhaps we can learn
from what he has done, and explore how and whether these functions can
be implemented in OpenSCAD directly.

Jon

On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote:

Jon, I think you're underestimating the severity of the concern here. 
We don't merely need an API to do this kind of design.  At least to me
that suggests that a design approach exists and you just need to write
its interface.  There is a perfectly satisfactory API to beziers in
BOSL2, for example. In actual fact it seems like what's needed is a
design philosophy or strategy.  And indeed, if anybody has any ideas
I'd be interested in hearing them.  I've implemented various things in
BOSL2 that do curves using beziers, but none are particularly
general.  I started with round_corners to round the corners of a
polygon, which can apply beziers to the corners in 2d.  Later I wrote
rounded_prism which does a sort of analogous thing of rounding edges
of an arbitrary prism in 3d by placing beziers at the various
corners.  I also implemented smooth_path which takes a polygon and
converts each edge to a bezier curve so that they meet smoothly (C1)
at the corners with a specified amount of bulge.    And I implemented
join_prism() which joins various kinds of prisms or prism to sphere or
plane with a fillet.  But none of this provides a general framework
for designing some arbitrarily curved 3d object.

One approach to that sort of design is to start with a polyhedron and
then smooth it.  There are ways to do this such as Catmull smoothing
and other more sophisticated ones.  They depend on how the starting
shape is triangulated and are hard to control, though.  In particular,
what if you only want to smooth part of a polyhedron?  About a year
ago Martin Herdieckerhoff posted an intriguing message about a library
called Yari that used some subdivision methods to design rounded
shapes, but I don't think I ever saw any details about how it worked,
or a link to the actual algorithm.

On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss
discuss@lists.openscad.org wrote:

 I agree that what is missing is the API to do this kind of complex
 curved design.  As to whether that is implemented directly in
 OpenSCAD or in a pre-processor or a library may be moot.  That
 said, once I skip over to another language, I may not return to
 OpenSCAD.

 A different question would be "could we enhance OpenSCAD to the
 point where relying on other languages is unnecessary?"  I'm sure
 this has been pondered in the past.

 Jon


 On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote:
 On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss
 <discuss@lists.openscad.org> <mailto:discuss@lists.openscad.org>
 wrote:

 The OpenSCAD file is incomprehensible, to the point of being
 useless.  You are writing in Python, not in OpenSCAD. You are
 just using OpenSCAD as rendering engine.

 Let's turn this around --- if there was an OpenSCAD module for
 representing such a design what would the interface look like?
 <snip>

 <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_3168717318659623628_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

Adrian: My use of the term API was a poor one.  I think William said it better.  We need a way of thinking about such complex shapes as procedures and functions and data, as in a C .H file, and then find a way to implement those functions in OpenSCAD, if that is even possible.  Up until now, I thought the problem lay in OpenSCAD's quirky feature set (no variables, minimal data structures), but now I can see that the problem is more in finding a design approach that is practical.  It seems that Sanjeev has conceived of how to create such complex shapes.  Perhaps we can learn from what he has done, and explore how and whether these functions can be implemented in OpenSCAD directly. Jon On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote: > Jon, I think you're underestimating the severity of the concern here.  > We don't merely need an API to do this kind of design.  At least to me > that suggests that a design approach exists and you just need to write > its interface.  There is a perfectly satisfactory API to beziers in > BOSL2, for example. In actual fact it seems like what's needed is a > design philosophy or strategy.  And indeed, if anybody has any ideas > I'd be interested in hearing them.  I've implemented various things in > BOSL2 that do curves using beziers, but none are particularly > general.  I started with round_corners to round the corners of a > polygon, which can apply beziers to the corners in 2d.  Later I wrote > rounded_prism which does a sort of analogous thing of rounding edges > of an arbitrary prism in 3d by placing beziers at the various > corners.  I also implemented smooth_path which takes a polygon and > converts each edge to a bezier curve so that they meet smoothly (C1) > at the corners with a specified amount of bulge.    And I implemented > join_prism() which joins various kinds of prisms or prism to sphere or > plane with a fillet.  But none of this provides a general framework > for designing some arbitrarily curved 3d object. > > One approach to that sort of design is to start with a polyhedron and > then smooth it.  There are ways to do this such as Catmull smoothing > and other more sophisticated ones.  They depend on how the starting > shape is triangulated and are hard to control, though.  In particular, > what if you only want to smooth part of a polyhedron?  About a year > ago Martin Herdieckerhoff posted an intriguing message about a library > called Yari that used some subdivision methods to design rounded > shapes, but I don't think I ever saw any details about how it worked, > or a link to the actual algorithm. > > > On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss > <discuss@lists.openscad.org> wrote: > > I agree that what is missing is the API to do this kind of complex > curved design.  As to whether that is implemented directly in > OpenSCAD or in a pre-processor or a library may be moot.  That > said, once I skip over to another language, I may not return to > OpenSCAD. > > A different question would be "could we enhance OpenSCAD to the > point where relying on other languages is unnecessary?"  I'm sure > this has been pondered in the past. > > Jon > > > On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote: >> On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss >> <discuss@lists.openscad.org> <mailto:discuss@lists.openscad.org> >> wrote: >> >> The OpenSCAD file is incomprehensible, to the point of being >> useless.  You are writing in Python, not in OpenSCAD. You are >> just using OpenSCAD as rendering engine. >> >> Let's turn this around --- if there was an OpenSCAD module for >> representing such a design what would the interface look like? >> > <snip> > > <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_3168717318659623628_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
AM
Adrian Mariano
Mon, Jun 3, 2024 10:34 AM

Well, a C language .h file basically describes an API.  Here's an example
of a solution that does a lot of interesting things.  I can't find it at
the moment, but it has the ability to make joints with different levels of
continuity, so G0 or G2, but the interface is all about pointing and
clicking.  https://www.xnurbs.com/

On Mon, Jun 3, 2024 at 6:06 AM Jon Bondy jon@jonbondy.com wrote:

Adrian:

My use of the term API was a poor one.  I think William said it better.
We need a way of thinking about such complex shapes as procedures and
functions and data, as in a C .H file, and then find a way to implement
those functions in OpenSCAD, if that is even possible.  Up until now, I
thought the problem lay in OpenSCAD's quirky feature set (no variables,
minimal data structures), but now I can see that the problem is more in
finding a design approach that is practical.  It seems that Sanjeev has
conceived of how to create such complex shapes.  Perhaps we can learn from
what he has done, and explore how and whether these functions can be
implemented in OpenSCAD directly.

Jon
On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote:

Jon, I think you're underestimating the severity of the concern here.  We
don't merely need an API to do this kind of design.  At least to me that
suggests that a design approach exists and you just need to write its
interface.  There is a perfectly satisfactory API to beziers in BOSL2, for
example.  In actual fact it seems like what's needed is a design philosophy
or strategy.  And indeed, if anybody has any ideas I'd be interested in
hearing them.  I've implemented various things in BOSL2 that do curves
using beziers, but none are particularly general.  I started with
round_corners to round the corners of a polygon, which can apply beziers to
the corners in 2d.  Later I wrote rounded_prism which does a sort of
analogous thing of rounding edges of an arbitrary prism in 3d by placing
beziers at the various corners.  I also implemented smooth_path which takes
a polygon and converts each edge to a bezier curve so that they meet
smoothly (C1) at the corners with a specified amount of bulge.    And I
implemented join_prism() which joins various kinds of prisms or prism to
sphere or plane with a fillet.  But none of this provides a general
framework for designing some arbitrarily curved 3d object.

One approach to that sort of design is to start with a polyhedron and then
smooth it.  There are ways to do this such as Catmull smoothing and other
more sophisticated ones.  They depend on how the starting shape is
triangulated and are hard to control, though.  In particular, what if you
only want to smooth part of a polyhedron?  About a year ago Martin
Herdieckerhoff posted an intriguing message about a library called Yari
that used some subdivision methods to design rounded shapes, but I don't
think I ever saw any details about how it worked, or a link to the actual
algorithm.

On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

I agree that what is missing is the API to do this kind of complex curved
design.  As to whether that is implemented directly in OpenSCAD or in a
pre-processor or a library may be moot.  That said, once I skip over to
another language, I may not return to OpenSCAD.

A different question would be "could we enhance OpenSCAD to the point
where relying on other languages is unnecessary?"  I'm sure this has been
pondered in the past.

Jon

On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote:

On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss
discuss@lists.openscad.org discuss@lists.openscad.org wrote:

The OpenSCAD file is incomprehensible, to the point of being useless.
You are writing in Python, not in OpenSCAD. You are just using OpenSCAD as
rendering engine.

Let's turn this around --- if there was an OpenSCAD module for
representing such a design what would the interface look like?

<snip>

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_7325925207113937027_m_3168717318659623628_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

Well, a C language .h file basically describes an API. Here's an example of a solution that does a lot of interesting things. I can't find it at the moment, but it has the ability to make joints with different levels of continuity, so G0 or G2, but the interface is all about pointing and clicking. https://www.xnurbs.com/ On Mon, Jun 3, 2024 at 6:06 AM Jon Bondy <jon@jonbondy.com> wrote: > Adrian: > > My use of the term API was a poor one. I think William said it better. > We need a way of thinking about such complex shapes as procedures and > functions and data, as in a C .H file, and then find a way to implement > those functions in OpenSCAD, if that is even possible. Up until now, I > thought the problem lay in OpenSCAD's quirky feature set (no variables, > minimal data structures), but now I can see that the problem is more in > finding a design approach that is practical. It seems that Sanjeev has > conceived of how to create such complex shapes. Perhaps we can learn from > what he has done, and explore how and whether these functions can be > implemented in OpenSCAD directly. > > Jon > On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote: > > Jon, I think you're underestimating the severity of the concern here. We > don't merely need an API to do this kind of design. At least to me that > suggests that a design approach exists and you just need to write its > interface. There is a perfectly satisfactory API to beziers in BOSL2, for > example. In actual fact it seems like what's needed is a design philosophy > or strategy. And indeed, if anybody has any ideas I'd be interested in > hearing them. I've implemented various things in BOSL2 that do curves > using beziers, but none are particularly general. I started with > round_corners to round the corners of a polygon, which can apply beziers to > the corners in 2d. Later I wrote rounded_prism which does a sort of > analogous thing of rounding edges of an arbitrary prism in 3d by placing > beziers at the various corners. I also implemented smooth_path which takes > a polygon and converts each edge to a bezier curve so that they meet > smoothly (C1) at the corners with a specified amount of bulge. And I > implemented join_prism() which joins various kinds of prisms or prism to > sphere or plane with a fillet. But none of this provides a general > framework for designing some arbitrarily curved 3d object. > > One approach to that sort of design is to start with a polyhedron and then > smooth it. There are ways to do this such as Catmull smoothing and other > more sophisticated ones. They depend on how the starting shape is > triangulated and are hard to control, though. In particular, what if you > only want to smooth part of a polyhedron? About a year ago Martin > Herdieckerhoff posted an intriguing message about a library called Yari > that used some subdivision methods to design rounded shapes, but I don't > think I ever saw any details about how it worked, or a link to the actual > algorithm. > > > On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss < > discuss@lists.openscad.org> wrote: > >> I agree that what is missing is the API to do this kind of complex curved >> design. As to whether that is implemented directly in OpenSCAD or in a >> pre-processor or a library may be moot. That said, once I skip over to >> another language, I may not return to OpenSCAD. >> >> A different question would be "could we enhance OpenSCAD to the point >> where relying on other languages is unnecessary?" I'm sure this has been >> pondered in the past. >> >> Jon >> >> >> On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote: >> >> On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via Discuss >> <discuss@lists.openscad.org> <discuss@lists.openscad.org> wrote: >> >> The OpenSCAD file is incomprehensible, to the point of being useless. >> You are writing in Python, not in OpenSCAD. You are just using OpenSCAD as >> rendering engine. >> >> Let's turn this around --- if there was an OpenSCAD module for >> representing such a design what would the interface look like? >> >> <snip> >> >> >> >> <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_7325925207113937027_m_3168717318659623628_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 > >
CK
Chun Kit LAM
Mon, Jun 3, 2024 11:19 AM

Just FYI, the manifold backend has subdivision for smoothing shapes.
Here are some recent PRs that may be of interest:

https://github.com/elalish/manifold/pull/793
https://github.com/elalish/manifold/pull/821

It doesn't seem too hard to expose the API to openscad, but not sure if
people are happy with having this manifold specific feature. Perhaps we
should try to find more people to try this.

On 3/6/2024 18:34, Adrian Mariano via Discuss wrote:

Well, a C language .h file basically describes an API.  Here's an
example of a solution that does a lot of interesting things.  I can't
find it at the moment, but it has the ability to make joints with
different levels of continuity, so G0 or G2, but the interface is all
about pointing and clicking. https://www.xnurbs.com/

On Mon, Jun 3, 2024 at 6:06 AM Jon Bondy jon@jonbondy.com wrote:

 Adrian:

 My use of the term API was a poor one.  I think William said it
 better.  We need a way of thinking about such complex shapes as
 procedures and functions and data, as in a C .H file, and then
 find a way to implement those functions in OpenSCAD, if that is
 even possible.  Up until now, I thought the problem lay in
 OpenSCAD's quirky feature set (no variables, minimal data
 structures), but now I can see that the problem is more in finding
 a design approach that is practical.  It seems that Sanjeev has
 conceived of how to create such complex shapes.  Perhaps we can
 learn from what he has done, and explore how and whether these
 functions can be implemented in OpenSCAD directly.

 Jon

 On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote:
 Jon, I think you're underestimating the severity of the concern
 here.  We don't merely need an API to do this kind of design.  At
 least to me that suggests that a design approach exists and you
 just need to write its interface.  There is a perfectly
 satisfactory API to beziers in BOSL2, for example.  In actual
 fact it seems like what's needed is a design philosophy or
 strategy.  And indeed, if anybody has any ideas I'd be interested
 in hearing them.  I've implemented various things in BOSL2 that
 do curves using beziers, but none are particularly general.  I
 started with round_corners to round the corners of a polygon,
 which can apply beziers to the corners in 2d.  Later I wrote
 rounded_prism which does a sort of analogous thing of rounding
 edges of an arbitrary prism in 3d by placing beziers at the
 various corners.  I also implemented smooth_path which takes a
 polygon and converts each edge to a bezier curve so that they
 meet smoothly (C1) at the corners with a specified amount of
 bulge.    And I implemented join_prism() which joins various
 kinds of prisms or prism to sphere or plane with a fillet.  But
 none of this provides a general framework for designing some
 arbitrarily curved 3d object.

 One approach to that sort of design is to start with a polyhedron
 and then smooth it.  There are ways to do this such as Catmull
 smoothing and other more sophisticated ones.  They depend on how
 the starting shape is triangulated and are hard to control,
 though.  In particular, what if you only want to smooth part of a
 polyhedron?  About a year ago Martin Herdieckerhoff posted an
 intriguing message about a library called Yari that used some
 subdivision methods to design rounded shapes, but I don't think I
 ever saw any details about how it worked, or a link to the actual
 algorithm.


 On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss
 <discuss@lists.openscad.org> wrote:

     I agree that what is missing is the API to do this kind of
     complex curved design.  As to whether that is implemented
     directly in OpenSCAD or in a pre-processor or a library may
     be moot.  That said, once I skip over to another language, I
     may not return to OpenSCAD.

     A different question would be "could we enhance OpenSCAD to
     the point where relying on other languages is unnecessary?" 
     I'm sure this has been pondered in the past.

     Jon


     On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote:
     On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via
     Discuss <discuss@lists.openscad.org>
     <mailto:discuss@lists.openscad.org> wrote:

     The OpenSCAD file is incomprehensible, to the point of being
     useless.  You are writing in Python, not in OpenSCAD. You
     are just using OpenSCAD as  rendering engine.

     Let's turn this around --- if there was an OpenSCAD module
     for representing such a design what would the interface look
     like?
     <snip>

     <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_7325925207113937027_m_3168717318659623628_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

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

Just FYI, the manifold backend has subdivision for smoothing shapes. Here are some recent PRs that may be of interest: https://github.com/elalish/manifold/pull/793 https://github.com/elalish/manifold/pull/821 It doesn't seem too hard to expose the API to openscad, but not sure if people are happy with having this manifold specific feature. Perhaps we should try to find more people to try this. On 3/6/2024 18:34, Adrian Mariano via Discuss wrote: > Well, a C language .h file basically describes an API.  Here's an > example of a solution that does a lot of interesting things.  I can't > find it at the moment, but it has the ability to make joints with > different levels of continuity, so G0 or G2, but the interface is all > about pointing and clicking. https://www.xnurbs.com/ > > On Mon, Jun 3, 2024 at 6:06 AM Jon Bondy <jon@jonbondy.com> wrote: > > Adrian: > > My use of the term API was a poor one.  I think William said it > better.  We need a way of thinking about such complex shapes as > procedures and functions and data, as in a C .H file, and then > find a way to implement those functions in OpenSCAD, if that is > even possible.  Up until now, I thought the problem lay in > OpenSCAD's quirky feature set (no variables, minimal data > structures), but now I can see that the problem is more in finding > a design approach that is practical.  It seems that Sanjeev has > conceived of how to create such complex shapes.  Perhaps we can > learn from what he has done, and explore how and whether these > functions can be implemented in OpenSCAD directly. > > Jon > > On 6/3/2024 12:37 AM, Adrian Mariano via Discuss wrote: >> Jon, I think you're underestimating the severity of the concern >> here.  We don't merely need an API to do this kind of design.  At >> least to me that suggests that a design approach exists and you >> just need to write its interface.  There is a perfectly >> satisfactory API to beziers in BOSL2, for example.  In actual >> fact it seems like what's needed is a design philosophy or >> strategy.  And indeed, if anybody has any ideas I'd be interested >> in hearing them.  I've implemented various things in BOSL2 that >> do curves using beziers, but none are particularly general.  I >> started with round_corners to round the corners of a polygon, >> which can apply beziers to the corners in 2d.  Later I wrote >> rounded_prism which does a sort of analogous thing of rounding >> edges of an arbitrary prism in 3d by placing beziers at the >> various corners.  I also implemented smooth_path which takes a >> polygon and converts each edge to a bezier curve so that they >> meet smoothly (C1) at the corners with a specified amount of >> bulge.    And I implemented join_prism() which joins various >> kinds of prisms or prism to sphere or plane with a fillet.  But >> none of this provides a general framework for designing some >> arbitrarily curved 3d object. >> >> One approach to that sort of design is to start with a polyhedron >> and then smooth it.  There are ways to do this such as Catmull >> smoothing and other more sophisticated ones.  They depend on how >> the starting shape is triangulated and are hard to control, >> though.  In particular, what if you only want to smooth part of a >> polyhedron?  About a year ago Martin Herdieckerhoff posted an >> intriguing message about a library called Yari that used some >> subdivision methods to design rounded shapes, but I don't think I >> ever saw any details about how it worked, or a link to the actual >> algorithm. >> >> >> On Sun, Jun 2, 2024 at 8:46 PM Jon Bondy via Discuss >> <discuss@lists.openscad.org> wrote: >> >> I agree that what is missing is the API to do this kind of >> complex curved design.  As to whether that is implemented >> directly in OpenSCAD or in a pre-processor or a library may >> be moot.  That said, once I skip over to another language, I >> may not return to OpenSCAD. >> >> A different question would be "could we enhance OpenSCAD to >> the point where relying on other languages is unnecessary?"  >> I'm sure this has been pondered in the past. >> >> Jon >> >> >> On 6/2/2024 12:16 PM, William F. Adams via Discuss wrote: >>> On Sunday, June 2, 2024 at 07:26:06 AM EDT, Jon Bondy via >>> Discuss <discuss@lists.openscad.org> >>> <mailto:discuss@lists.openscad.org> wrote: >>> >>> The OpenSCAD file is incomprehensible, to the point of being >>> useless.  You are writing in Python, not in OpenSCAD. You >>> are just using OpenSCAD as  rendering engine. >>> >>> Let's turn this around --- if there was an OpenSCAD module >>> for representing such a design what would the interface look >>> like? >>> >> <snip> >> >> <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_7325925207113937027_m_3168717318659623628_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 > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email todiscuss-leave@lists.openscad.org