discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

is color an actual operator module ?

JB
Jordan Brown
Thu, Aug 14, 2025 2:53 PM

On 8/13/2025 11:25 PM, larry via Discuss wrote:

Well, if I just hit "Reply" when reading a mailing list, it asks me if
I want to reply to list or to the sender.

Hmm.  Are you sure that replying to the sender actually works for this
mailing list?  OpenSCAD's mailing list configuration means that the
message simply doesn't have the sender's address in any standard
header.  The only places that your address was preserved were
X-Authenticated-User (non-standard, not present for all messages),
X-MailFrom (non-standard), and Cc (not a sender address).

Anyhow, I'm talking privately with Torsten about it, to ensure that the
mail service actually has the option, and then will work on the primary
admin (Michael).

So far, without a formal poll, I'm hearing several "oh yeah, it's very
wrong" opinions on the one side, and one or two "I think the current way
is mildly preferable" opinions on the other.

On 8/13/2025 11:25 PM, larry via Discuss wrote: > Well, if I just hit "Reply" when reading a mailing list, it asks me if > I want to reply to list or to the sender. Hmm.  Are you sure that replying to the sender actually works for this mailing list?  OpenSCAD's mailing list configuration means that the message simply doesn't have the sender's address in any standard header.  The only places that your address was preserved were X-Authenticated-User (non-standard, not present for all messages), X-MailFrom (non-standard), and Cc (not a sender address). Anyhow, I'm talking privately with Torsten about it, to ensure that the mail service actually has the option, and then will work on the primary admin (Michael). So far, without a formal poll, I'm hearing several "oh yeah, it's very wrong" opinions on the one side, and one or two "I think the current way is mildly preferable" opinions on the other.
L
larry
Thu, Aug 14, 2025 4:13 PM

On Thu, 2025-08-14 at 15:53 +0100, Jordan Brown wrote:

On 8/13/2025 11:25 PM, larry via Discuss wrote:
 

Well, if I just hit "Reply" when reading a mailing list, it asks me
if
I want to reply to list or to the sender.

Hmm.  Are you sure that replying to the sender actually works for
this mailing list?

Well, it depends on what's in the 'From:' header. Normally, if I
respond privately rather than to group, it will be addressed to
whatever is in that field.

For example, if I respond privately to Jon Bondy, it will go to his
actual (I presume) email address.

If I respond  to you privately, it will NORMALLY go to
Jordan Brown openscad@jordan.maileater.net,

I don't know what you did in the post I am replying to now, but  if I
reply privately to it, it goes to
'Jordan Brown via Discuss discuss@lists.openscad.org, '
and yes, that comma and space are there, for some reason.

If I do a 'Group' respond to this post, it goes to

'Jordan Brown openscad@jordan.maileater.net, OpenSCAD general
discussion Mailing-list discuss@lists.openscad.org, Rogier Wolff
R.E.Wolff@BitWizard.nl, '

OpenSCAD's mailing list configuration means that the message simply
doesn't have the sender's address in any standard header.

As I mentioned, it does, in at least one case.

The only places that your address was preserved were X-Authenticated-
User (non-standard, not present for all messages), X-MailFrom (non-
standard), and Cc (not a sender address).
Anyhow, I'm talking privately with Torsten about it, to ensure that
the mail service actually has the option, and then will work on the
primary admin (Michael).

So far, without a formal poll, I'm hearing several "oh yeah, it's
very wrong" opinions on the one side, and one or two "I think the
current way is mildly preferable" opinions on the other.

You can add my position to the "doesn't matter to me" category.

On Thu, 2025-08-14 at 15:53 +0100, Jordan Brown wrote: > On 8/13/2025 11:25 PM, larry via Discuss wrote: >   > > Well, if I just hit "Reply" when reading a mailing list, it asks me > > if > > I want to reply to list or to the sender. > Hmm.  Are you sure that replying to the sender actually works for > this mailing list? Well, it depends on what's in the 'From:' header. Normally, if I respond privately rather than to group, it will be addressed to whatever is in that field. For example, if I respond privately to Jon Bondy, it will go to his actual (I presume) email address. If I respond to you privately, it will NORMALLY go to Jordan Brown <openscad@jordan.maileater.net>, I don't know what you did in the post I am replying to now, but if I reply privately to it, it goes to 'Jordan Brown via Discuss <discuss@lists.openscad.org>, ' and yes, that comma and space are there, for some reason. If I do a 'Group' respond to this post, it goes to 'Jordan Brown <openscad@jordan.maileater.net>, OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org>, Rogier Wolff <R.E.Wolff@BitWizard.nl>, ' > OpenSCAD's mailing list configuration means that the message simply > doesn't have the sender's address in any standard header. As I mentioned, it does, in at least one case. > The only places that your address was preserved were X-Authenticated- > User (non-standard, not present for all messages), X-MailFrom (non- > standard), and Cc (not a sender address). > Anyhow, I'm talking privately with Torsten about it, to ensure that > the mail service actually has the option, and then will work on the > primary admin (Michael). > So far, without a formal poll, I'm hearing several "oh yeah, it's > very wrong" opinions on the one side, and one or two "I think the > current way is mildly preferable" opinions on the other. You can add my position to the "doesn't matter to me" category.
JB
Jordan Brown
Thu, Aug 14, 2025 4:40 PM

On 8/14/2025 5:13 PM, larry via Discuss wrote:

Well, it depends on what's in the 'From:' header. Normally, if I
respond privately rather than to group, it will be addressed to
whatever is in that field.

Right.  (Or, probably, 'Reply-To' if it is present.)  That's standard
behavior.

If I respond  to you privately, it will NORMALLY go to
Jordan Brownopenscad@jordan.maileater.net,

It certainly should.

I don't know what you did in the post I am replying to now, but  if I
reply privately to it, it goes to
'Jordan Brown via Discussdiscuss@lists.openscad.org, '
and yes, that comma and space are there, for some reason.

I can't speak to the comma and space, but yes, that's exactly the
problem.  As that message left me, it had 'From: Jordan Brown
openscad@jordan.maileater.net'.  As it arrived back from the mailing
list, it had 'From: Jordan Brown via Discuss
discuss@lists.openscad.org' and 'Reply-To: OpenSCAD general discussion
Mailing-list discuss@lists.openscad.org'.

That's the "reply goes to list" behavior. The "reply goes to poster"
behavior, with DMARC mitigation, is 'From: Jordan Brown via Discuss
discuss@lists.openscad.org' and 'Reply-To: Jordan Brown
openscad@jordan.maileater.net'.With that configuration,
reply-to-sender replies to the sender, and reply-to-all replies to
everybody who got the original message. (Bcc excepted.)

OpenSCAD's mailing list configuration means that the message simply
doesn't have the sender's address in any standard header.

As I mentioned, it does, in at least one case.

You mentioned Jon Bondy's messages.  As I receive them here, they have
From and Reply-to both set to the mailing list.  Could you point at a
specific message (by date and time sent) so I can be sure that we are
looking at the same thing?  Could you send me (privately) the entire
message including all headers?

It's possible that you are looking at a message that was sent to both to
you directly and via the mailing list, and that you are looking at the
copy that went directly to you.  I'm taking you off the "Cc" list for
this message so that you will only receive the copy that's via the
mailing list.

On 8/14/2025 5:13 PM, larry via Discuss wrote: > Well, it depends on what's in the 'From:' header. Normally, if I > respond privately rather than to group, it will be addressed to > whatever is in that field. Right.  (Or, probably, 'Reply-To' if it is present.)  That's standard behavior. > If I respond to you privately, it will NORMALLY go to > Jordan Brown<openscad@jordan.maileater.net>, It certainly should. > I don't know what you did in the post I am replying to now, but if I > reply privately to it, it goes to > 'Jordan Brown via Discuss<discuss@lists.openscad.org>, ' > and yes, that comma and space are there, for some reason. I can't speak to the comma and space, but yes, that's exactly the problem.  As that message left me, it had 'From: Jordan Brown <openscad@jordan.maileater.net>'.  As it arrived back from the mailing list, it had 'From: Jordan Brown via Discuss <discuss@lists.openscad.org>' and 'Reply-To: OpenSCAD general discussion Mailing-list <discuss@lists.openscad.org>'. That's the "reply goes to list" behavior. The "reply goes to poster" behavior, with DMARC mitigation, is 'From: Jordan Brown via Discuss <discuss@lists.openscad.org>' and 'Reply-To: Jordan Brown <openscad@jordan.maileater.net>'.With that configuration, reply-to-sender replies to the sender, and reply-to-all replies to everybody who got the original message. (Bcc excepted.) >> OpenSCAD's mailing list configuration means that the message simply >> doesn't have the sender's address in any standard header. > As I mentioned, it does, in at least one case. You mentioned Jon Bondy's messages.  As I receive them here, they have From and Reply-to both set to the mailing list.  Could you point at a specific message (by date and time sent) so I can be sure that we are looking at the same thing?  Could you send me (privately) the entire message including all headers? It's possible that you are looking at a message that was sent to both to you directly *and* via the mailing list, and that you are looking at the copy that went directly to you.  I'm taking you off the "Cc" list for this message so that you will only receive the copy that's via the mailing list.
V
vulcan_@mac.com
Thu, Aug 14, 2025 5:29 PM

Steve Lelievre wrote:

On 2025-08-12 2:45 p.m., vulcan_--- via Discuss wrote:

The section on user-defined functions did not make clear that there is
only /one/ type of module .. the docs on the children() function do
not say it can be used to give /any/ module access to its children

Maybe the comment is meant to relate only to the narrow context of
user-defined modules or maybe I've misunderstood where the discussion
has got to, but in the general sense is there really only one type of
module? In my simplistic world view, there are two: primitive modules
that create shapes, and modifier modules that do things to shapes. My
distinction arises because some (native) modules accept children, some
do not. For example OpenSCAD, sensibly, rejects:  cube(1) sphere(1);

Hi Steve

if you take a look at some of the other recent thread on this mailing list you will see answers from Jordan Brown, Kintel, and others saying explicitly that there is only one type of module. Indeed the built-in modules appear to be segregated, but that is only how they were implemented.

The key to a module affecting children is that it must call the children() module in its defining code. It is not even clear to me that the call has to be last in the last statement of the definition or not.  I need to write some modules that do both things : create shapes AND operate on children

Apparently there are modules in the BOSL2 library that do this .. but i have not played with it to know which ones can.

One of my motivations for updating the docs on modules to better explain how they worked, and what their limitations where in practice, was the apparent distinction :

the primitives modules ONLY create shapes .. i was calling them Object Modules until objects got added to the dev snapshot releases
AND
Operator modules ONLY do operations on their children, and can never generate shapes.

The operation of the built-ins matched their descriptions in the docs, for the most part, but only because they are only a subset of what can be done with modules in scad.

i refer you to the threads in this forum and the history of the IRC chat for all the tips and explanations that Kintel and Jordan lavished on my education since April as to just how central the concept and implementation of modules is to the operation of an OpenSCAD script

Steve Lelievre wrote: > On 2025-08-12 2:45 p.m., vulcan_--- via Discuss wrote: > > > The section on user-defined functions did not make clear that there is > > only /one/ type of module .. the docs on the children() function do > > not say it can be used to give /any/ module access to its children > > Maybe the comment is meant to relate only to the narrow context of > user-defined modules or maybe I've misunderstood where the discussion > has got to, but in the general sense is there really only one type of > module? In my simplistic world view, there are two: primitive modules > that create shapes, and modifier modules that do things to shapes. My > distinction arises because some (native) modules accept children, some > do not. For example OpenSCAD, sensibly, rejects:  cube(1) sphere(1); Hi Steve if you take a look at some of the other recent thread on this mailing list you will see answers from Jordan Brown, Kintel, and others saying explicitly that there is only one type of module. Indeed the built-in modules appear to be segregated, but that is only how they were implemented. The key to a module affecting children is that it must call the children() module in its defining code. It is not even clear to me that the call has to be last in the last statement of the definition or not. I need to write some modules that do both things : create shapes AND operate on children Apparently there are modules in the BOSL2 library that do this .. but i have not played with it to know which ones can. One of my motivations for updating the docs on modules to better explain how they worked, and what their limitations where in practice, was the apparent distinction : the primitives modules ONLY create shapes .. i was calling them Object Modules until objects got added to the dev snapshot releases\ AND\ Operator modules ONLY do operations on their children, and can never generate shapes. The operation of the built-ins matched their descriptions in the docs, for the most part, but only because they are only a subset of what can be done with modules in scad. i refer you to the threads in this forum and the history of the IRC chat for all the tips and explanations that Kintel and Jordan lavished on my education since April as to just how central the concept and implementation of modules is to the operation of an OpenSCAD script
TA
Todd Allen
Thu, Aug 14, 2025 5:44 PM

I was using manifold and am thankful for it.

I exaggerated, the price to retain a visually optimal resolution was
payable but it was a case of a functional print with little need to do so.
I'm used to and ok with prints taking many hours but I have little patience
for renders, slicing or gcode file transfers exceeding a few minutes.  I
often limit curve resolution due to its costs with BOSL2 features such as
pathsweep and calculated anchors.  Less often due to costs with OpenSCAD
features such as booleans or minkowski.  This was a rare case where the
costs with slicing and the gcode file also became prime considerations.  I
might have redone the model in FreeCAD for faster rendering but expect
slicing would still have been an issue.  It would have been worse if I
wanted a ribbed belt of stacked cylinders running the length of the
spiral.  It's an example I've had of a printable geometry that could fill a
lot of print volume with curves becoming annoying at an otherwise desirably
high resolution.  It may be an uncommon example but I'm sure it isn't
unique or the worst case.

I somewhat miss constraint based sketching in FreeCAD even though there
were cases where it was a struggle to find missing, redundant or
conflicting constraints or the challenge of dragging points without causing
unwanted flips because there weren't constraints on the direction or slopes
of lines.  I imagine a well thought out constraint solver in OpenSCAD could
be helpful for currently difficult tasks such as creating configurable
fillets of complex geometries.

On Wed, Aug 13, 2025 at 6:27 PM pca006132 john.lck40@gmail.com wrote:

  1. Did you try the manifold backend?
  2. For NURBS-based boolean, I think one can just use opencascade, and
    things like build123d or cadquery should support it already. That said, one
    major benefit of NURBS-based modeling is constraint solving, so it feels
    like missing the point if we do not consider that.
  3. It is unlikely that we can have things like stl import or minkowski.
    Theoretically it should be possible, but it will probably be too slow.

On Thu, Aug 14, 2025, 04:30 Todd Allen via Discuss <
discuss@lists.openscad.org> wrote:

Since all that I do with the 3D models that I create with OpenSCAD is
print them on a 3D printer, so long as the output looks smooth at the level
of 0.1 mm, I don't care about the other details.

I have 3D printed models that can not be generated with curves at even 1
mm without being insanely slow and burdensome.  For example printing a long
thin belt in TPU modeled with the belt width in Z and starting from a
diameter the width of the print bed spiraling inward.  If the belt is 1 mm
thick and it spirals in at 1.5 mm per loop one can easily go 50+ loops on a
moderate sized printer.

On Wed, Aug 13, 2025 at 12:37 PM Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

Since all that I do with the 3D models that I create with OpenSCAD is
print them on a 3D printer, so long as the output looks smooth at the level
of 0.1 mm, I don't care about the other details.
On 8/13/2025 11:41 AM, John David via Discuss wrote:

I just got a half dozen private and small group replies (that do not
overlap each other), so I am just going to post a reply to the group...

I assure those of you who do not know the mathematics behind NURBS, that
they can indeed represent an exact circle (see:
https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline#Example:_a_circle
for at least some details, and Gerald Farin's book on NURBS
https://www.farinhansford.com/books/nurbs/ for the math and
practicalities behind it).  Now, a couple of people have used the term
"true circle".  I am assuming that you mean "a perfectly round shape
defined by a single, continuous mathematical curve, not a series of short
lines".  Depending on the degree of the NURBS, you get something called C*
and G* continuity (where * is the degree of the object/NURBS).  So yes, a
NURB will exactly define a "true circle".  That said, there are practical
implementation details that come into play.  Since you have
evoked CNC/G-code, as well as NURB curves and surfaces, they have to be
evaluated as some epsilon.  Even a G02 (clockwise arc in g-code), has to
evaluate the mathematical expression of an arc/circle at the precision of a
machine's step size.  This is often well below 0.001" (I have machines
whose step size are 0.00002").  Both a mathematical circle, as well as a
NURBS with appropriate knots sequences and weights of sqrt(2)/2, will
mathematically give you a fully mathematically continuous and exact circle.

Since you also mentioned wanting these in 3D printing, and CNC, even
LinuxCNC has an experimental implementation, and I know commercial CNC
machines often have NURBS implemented directly in the G-Code
implementation.  I am not familiar with any 3D printing software the
supports NURBS, but I have not needed to check.  I will say that the way
NURBS are defined is so well-defined, that it is typically easy to write a
translator to go from one representation to another.  In addition, there
are enough prototype implementations that a motivated programmer should be
able to port any one of a dozen implementations/libraries to open-source 3D
printing software.  If you go for that, hit me up, and I will dig through
my archived class projects -- back in 2001 I took Gerald Farin's PhD level
class on CAGD, as well as others.  One of the other students and I made a
game of challenging each other with different implementations of evaluating
the N-Dimentional Bernstein Polynomials (and you can implement NURBS based
on them).  Anyway, we ended up with something that is wicked fast, and if I
recall correctly I set mine up to cache the intermediate results for
various efficiency reasons (like further subdivisions, etc.).

Anyway, this was all very long-winded, BUT I think that NURBS will give
you want and need (it will look very weird at first), but  you will have to
either see if there is downstream implementations of NURBS in your 3D
printing and CNC software.

EBo --

On Wed, Aug 13, 2025 at 10:59 AM Rogier Wolff via Discuss <
discuss@lists.openscad.org> wrote:

On Aug 13, 2025, at 7:20 AM, William F. Adams via Discuss <

It is an interesting mathematical exercise to prove how a Bézier
curve cannot exactly represent a circle --- but I think it would be
even more interesting to show a real-world example where the want of
that ability has resulted in a difficulty making a part --- it's a
close enough approximation for most (or even the vast majority of)
usages.

We'd like to do 3D printing and CNCing with the results from the CAD
process, right?

Well... if I design a round hole for an object and the object that
goes inside, then I expect that object to be able to rotate. Any
deviation from a true circle will cause it to "not be able to rotate".

If you create sufficient tolerances that it does rotate, you'll get
it to fit tighter and less tight along the full rotation.

This design and wanting to CNC that with a low tolerance on a good CNC
isn't all that farfetched. So maybe my "visually a spline is close
enough to a circle" is not quite good enough.

I got educated on "computer graphics" mid 1980s. So back then: "looks
good" was important and "exact fit" maybe not so much. The wikipedia
article mentions late 1980s as the first implementation of NURBs.

     Roger.

--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
+31-15-2049110 **
** Verl. Spiegelmakerstraat 37 2645 LZ  Delfgauw, The Netherlands.
** KVK: 27239233    **
f equals m times a. When your f is steady, and your m is going down
your a** is going up.  -- Chris Hadfield about flying up the space
shuttle.
**  'a' for accelleration.


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

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_4371189911950346870_m_1452791907063285202_m_-4516900968302012369_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

I was using manifold and am thankful for it. I exaggerated, the price to retain a visually optimal resolution was payable but it was a case of a functional print with little need to do so. I'm used to and ok with prints taking many hours but I have little patience for renders, slicing or gcode file transfers exceeding a few minutes. I often limit curve resolution due to its costs with BOSL2 features such as pathsweep and calculated anchors. Less often due to costs with OpenSCAD features such as booleans or minkowski. This was a rare case where the costs with slicing and the gcode file also became prime considerations. I might have redone the model in FreeCAD for faster rendering but expect slicing would still have been an issue. It would have been worse if I wanted a ribbed belt of stacked cylinders running the length of the spiral. It's an example I've had of a printable geometry that could fill a lot of print volume with curves becoming annoying at an otherwise desirably high resolution. It may be an uncommon example but I'm sure it isn't unique or the worst case. I somewhat miss constraint based sketching in FreeCAD even though there were cases where it was a struggle to find missing, redundant or conflicting constraints or the challenge of dragging points without causing unwanted flips because there weren't constraints on the direction or slopes of lines. I imagine a well thought out constraint solver in OpenSCAD could be helpful for currently difficult tasks such as creating configurable fillets of complex geometries. On Wed, Aug 13, 2025 at 6:27 PM pca006132 <john.lck40@gmail.com> wrote: > 1. Did you try the manifold backend? > 2. For NURBS-based boolean, I think one can just use opencascade, and > things like build123d or cadquery should support it already. That said, one > major benefit of NURBS-based modeling is constraint solving, so it feels > like missing the point if we do not consider that. > 3. It is unlikely that we can have things like stl import or minkowski. > Theoretically it should be possible, but it will probably be too slow. > > On Thu, Aug 14, 2025, 04:30 Todd Allen via Discuss < > discuss@lists.openscad.org> wrote: > >> Since all that I do with the 3D models that I create with OpenSCAD is >> print them on a 3D printer, so long as the output looks smooth at the level >> of 0.1 mm, I don't care about the other details. >> >> >> I have 3D printed models that can not be generated with curves at even 1 >> mm without being insanely slow and burdensome. For example printing a long >> thin belt in TPU modeled with the belt width in Z and starting from a >> diameter the width of the print bed spiraling inward. If the belt is 1 mm >> thick and it spirals in at 1.5 mm per loop one can easily go 50+ loops on a >> moderate sized printer. >> >> On Wed, Aug 13, 2025 at 12:37 PM Jon Bondy via Discuss < >> discuss@lists.openscad.org> wrote: >> >>> Since all that I do with the 3D models that I create with OpenSCAD is >>> print them on a 3D printer, so long as the output looks smooth at the level >>> of 0.1 mm, I don't care about the other details. >>> On 8/13/2025 11:41 AM, John David via Discuss wrote: >>> >>> I just got a half dozen private and small group replies (that do not >>> overlap each other), so I am just going to post a reply to the group... >>> >>> I assure those of you who do not know the mathematics behind NURBS, that >>> they can indeed represent an exact circle (see: >>> https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline#Example:_a_circle >>> for at least some details, and Gerald Farin's book on NURBS >>> https://www.farinhansford.com/books/nurbs/ for the math and >>> practicalities behind it). Now, a couple of people have used the term >>> "true circle". I am assuming that you mean "a perfectly round shape >>> defined by a single, continuous mathematical curve, not a series of short >>> lines". Depending on the degree of the NURBS, you get something called C* >>> and G* continuity (where * is the degree of the object/NURBS). So yes, a >>> NURB will exactly define a "true circle". That said, there are practical >>> implementation details that come into play. Since you have >>> evoked CNC/G-code, as well as NURB curves and surfaces, they have to be >>> evaluated as some epsilon. Even a G02 (clockwise arc in g-code), has to >>> evaluate the mathematical expression of an arc/circle at the precision of a >>> machine's step size. This is often well below 0.001" (I have machines >>> whose step size are 0.00002"). Both a mathematical circle, as well as a >>> NURBS with appropriate knots sequences and weights of sqrt(2)/2, will >>> mathematically give you a fully mathematically continuous and exact circle. >>> >>> Since you also mentioned wanting these in 3D printing, and CNC, even >>> LinuxCNC has an experimental implementation, and I know commercial CNC >>> machines often have NURBS implemented directly in the G-Code >>> implementation. I am not familiar with any 3D printing software the >>> supports NURBS, but I have not needed to check. I will say that the way >>> NURBS are defined is so well-defined, that it is typically easy to write a >>> translator to go from one representation to another. In addition, there >>> are enough prototype implementations that a motivated programmer should be >>> able to port any one of a dozen implementations/libraries to open-source 3D >>> printing software. If you go for that, hit me up, and I will dig through >>> my archived class projects -- back in 2001 I took Gerald Farin's PhD level >>> class on CAGD, as well as others. One of the other students and I made a >>> game of challenging each other with different implementations of evaluating >>> the N-Dimentional Bernstein Polynomials (and you can implement NURBS based >>> on them). Anyway, we ended up with something that is wicked fast, and if I >>> recall correctly I set mine up to cache the intermediate results for >>> various efficiency reasons (like further subdivisions, etc.). >>> >>> Anyway, this was all very long-winded, BUT I think that NURBS will give >>> you want and need (it will look very weird at first), but you will have to >>> either see if there is downstream implementations of NURBS in your 3D >>> printing and CNC software. >>> >>> EBo -- >>> >>> On Wed, Aug 13, 2025 at 10:59 AM Rogier Wolff via Discuss < >>> discuss@lists.openscad.org> wrote: >>> >>>> >>>> > On Aug 13, 2025, at 7:20 AM, William F. Adams via Discuss < >>>> discuss@lists.openscad.org> wrote: >>>> >>>> > It is an interesting mathematical exercise to prove how a Bézier >>>> > curve cannot exactly represent a circle --- but I think it would be >>>> > even more interesting to show a real-world example where the want of >>>> > that ability has resulted in a difficulty making a part --- it's a >>>> > close enough approximation for most (or even the vast majority of) >>>> > usages. >>>> >>>> We'd like to do 3D printing and CNCing with the results from the CAD >>>> process, right? >>>> >>>> Well... if I design a round hole for an object and the object that >>>> goes inside, then I expect that object to be able to rotate. Any >>>> deviation from a true circle will cause it to "not be able to rotate". >>>> >>>> If you create sufficient tolerances that it does rotate, you'll get >>>> it to fit tighter and less tight along the full rotation. >>>> >>>> This design and wanting to CNC that with a low tolerance on a good CNC >>>> isn't all that farfetched. So maybe my "visually a spline is close >>>> enough to a circle" is not quite good enough. >>>> >>>> I got educated on "computer graphics" mid 1980s. So back then: "looks >>>> good" was important and "exact fit" maybe not so much. The wikipedia >>>> article mentions late 1980s as the first implementation of NURBs. >>>> >>>> Roger. >>>> >>>> -- >>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** >>>> +31-15-2049110 ** >>>> ** Verl. Spiegelmakerstraat 37 2645 LZ Delfgauw, The Netherlands. >>>> ** KVK: 27239233 ** >>>> f equals m times a. When your f is steady, and your m is going down >>>> your a** is going up. -- Chris Hadfield about flying up the space >>>> shuttle. >>>> ** 'a' for accelleration. >>>> _______________________________________________ >>>> 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 >>> >>> >>> >>> <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_4371189911950346870_m_1452791907063285202_m_-4516900968302012369_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 >> >
JB
Jordan Brown
Thu, Aug 14, 2025 5:53 PM

On 8/14/2025 6:29 PM, vulcan_--- via Discuss wrote:

if you take a look at some of the other recent thread on this mailing
list you will see answers from Jordan Brown, Kintel, and others saying
explicitly that there is only one type of module. Indeed the built-in
modules appear to be segregated, but that is only how they were
implemented.

I would say that it's how they are described, and based on what they do.

cube() and sphere() only create shapes; they do not modify children. 
translate() and rotate() only modify children; they do not create new
shapes.  It's not like a different implementation of rotate() would
start generating a shape, or would stop modifying children.

The key to a module affecting children is that it must call the
children() module in its defining code.

Yes.

It is not even clear to me that the call has to be last in the last
statement of the definition or not.

It does not.  It can call children() on all of its children, or none, or
only some, and it can do it as many times as it likes.

for() has some magic around defining variables, but at its core it does
children() multiple times.

if() has magic around accepting an "else", but at its core it either
calls children(), or doesn't.

Apparently there are modules in the BOSL2 library that do this .. but
i have not played with it to know which ones can.

Most of them. It's how attachments work.

the primitives modules ONLY create shapes .. i was calling them Object
Modules until objects got added to the dev snapshot releases
AND
Operator modules ONLY do operations on their children, and can never
generate shapes.

A useful mental distinction.  Just not a complete description.

The operation of the built-ins matched their descriptions in the docs,
for the most part, but only because they are only a subset of what can
be done with modules in scad.

Yes.

On 8/14/2025 6:29 PM, vulcan_--- via Discuss wrote: > > if you take a look at some of the other recent thread on this mailing > list you will see answers from Jordan Brown, Kintel, and others saying > explicitly that there is only one type of module. Indeed the built-in > modules appear to be segregated, but that is only how they were > implemented. > I would say that it's how they are described, and based on what they do. cube() and sphere() only create shapes; they do not modify children.  translate() and rotate() only modify children; they do not create new shapes.  It's not like a different implementation of rotate() would start generating a shape, or would stop modifying children. > The key to a module affecting children is that it must call the > children() module in its defining code. > Yes. > It is not even clear to me that the call has to be last in the last > statement of the definition or not. > It does not.  It can call children() on all of its children, or none, or only some, and it can do it as many times as it likes. for() has some magic around defining variables, but at its core it does children() multiple times. if() has magic around accepting an "else", but at its core it either calls children(), or doesn't. > Apparently there are modules in the BOSL2 library that do this .. but > i have not played with it to know which ones can. > Most of them. It's how attachments work. > the primitives modules ONLY create shapes .. i was calling them Object > Modules until objects got added to the dev snapshot releases > AND > Operator modules ONLY do operations on their children, and can never > generate shapes. > A useful mental distinction.  Just not a complete description. > The operation of the built-ins matched their descriptions in the docs, > for the most part, but only because they are only a subset of what can > be done with modules in scad. > Yes.
TA
Todd Allen
Thu, Aug 14, 2025 6:58 PM

I find modules which neither generate shapes nor do operations on shapes of
their children very useful.  I increasingly like to use modules which only
set or update special $ variables based on parameters to the module and
then call children() which use those variables.

I find modules which neither generate shapes nor do operations on shapes of their children very useful. I increasingly like to use modules which only set or update special $ variables based on parameters to the module and then call children() which use those variables.
L
larry
Thu, Aug 14, 2025 7:15 PM

On Thu, 2025-08-14 at 18:40 +0200, Jordan Brown via Discuss wrote:

OpenSCAD's mailing list configuration means that the message
simply
doesn't have the sender's address in any standard header.

As I mentioned, it does, in at least one case.

You mentioned Jon Bondy's messages.  As I receive them here, they
have From and Reply-to both set to the mailing list.  Could you point
at a specific message (by date and time sent) so I can be sure that  
Could you send me (privately) the entire message including all
headers?

Done. You might well have hit the nail between the eyes with your
comment about cc.

On Thu, 2025-08-14 at 18:40 +0200, Jordan Brown via Discuss wrote: > > > OpenSCAD's mailing list configuration means that the message > > > simply > > > doesn't have the sender's address in any standard header. > > As I mentioned, it does, in at least one case. > You mentioned Jon Bondy's messages.  As I receive them here, they > have From and Reply-to both set to the mailing list.  Could you point > at a specific message (by date and time sent) so I can be sure that   > Could you send me (privately) the entire message including all > headers? Done. You might well have hit the nail between the eyes with your comment about cc.
JB
Jordan Brown
Fri, Aug 15, 2025 5:23 AM

On 8/14/2025 8:58 PM, Todd Allen via Discuss wrote:

I find modules which neither generate shapes nor do operations on
shapes of their children very useful.  I increasingly like to use
modules which only set or update special $ variables based on
parameters to the module and then call children() which use those
variables.

I'd say that in a sense that's doing something to the children. But yet,
that's an interesting case that isn't clearly addressed by the
object/operator split.  Like I said, it's a useful categorization but
not a complete description.

On 8/14/2025 8:58 PM, Todd Allen via Discuss wrote: > I find modules which neither generate shapes nor do operations on > shapes of their children very useful.  I increasingly like to use > modules which only set or update special $ variables based on > parameters to the module and then call children() which use those > variables. I'd say that in a sense that's doing something to the children. But yet, that's an interesting case that isn't clearly addressed by the object/operator split.  Like I said, it's a useful categorization but not a complete description.
JB
Jordan Brown
Fri, Aug 15, 2025 5:52 AM

Done. You might well have hit the nail between the eyes with your
comment about cc.

Yes, the message that you sent privately was a copy that went directly
to you, not via the mailing list.  (I haven't checked, but quite
possibly the mailing list suppresses the copy that it would send to you
when it sees that you're on the To/CC list and so would have gotten a
copy directly.  That's one of the Mailman 2 options.)

So your mail client is not doing something magic... you're just looking
at a message that the mailing list didn't have a chance to muck with.

> Done. You might well have hit the nail between the eyes with your > comment about cc. Yes, the message that you sent privately was a copy that went directly to you, not via the mailing list.  (I haven't checked, but quite possibly the mailing list suppresses the copy that it would send to you when it sees that you're on the To/CC list and so would have gotten a copy directly.  That's one of the Mailman 2 options.) So your mail client is not doing something magic... you're just looking at a message that the mailing list didn't have a chance to muck with.