discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Bezier stretch

AM
Adrian Mariano
Wed, Apr 15, 2026 2:19 PM

I think you want bezier_length not bezier_path_length. The latter is for a
sequence of beziers joined end to end.  The usage should not require an
example. You give it your bezier and it returns the length.

There’s nothing really magical here. You can calculate the length
yourself.  Just evaluate all the points on the curve at some spacing and
then compute the length of all the segments. The library implementation
tries to be smarter about this same basic process.

John, it looks like your nurbs distance never made it. Contact me off list
and we can fix that.

On Wed, Apr 15, 2026 at 09:02 Caddiy via Discuss discuss@lists.openscad.org
wrote:

Rogier Wolff wrote:

I realize you don't just want to calculate the length, but then want to
keep it constant, but to keep it constant the first step would be to be
able to calculate that length.

Exactly.

Then find the difference in length between when the Bezier has maximum
deflection and when it has zero deflection/is straight.

It occurs to me that Beziers are made up of straight segments. There are
not so many segments in my present Bezier. I could set $vpd such that a
scale length of 10 units has a length of say 5 cm (or 10 cm) on the
monitor. Then measure the segments with a ruler and add them together. But
couldn’t my computer do that?

I did look up bezier_path_length() in Library File beziers.scad, but I
didn’t understand it and unfortunately there was no example that would show
how to use it, and above all, what it actually does.

Until I find that difference in lengths, I will not know whether it is
actually significant for my project!

How a relatively long thin strip or rod of elastic material bends when
forces are applied can be rendered very nicely with Bezier curves - better
than the sine and cosine curves I have used previously.


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

I think you want bezier_length not bezier_path_length. The latter is for a sequence of beziers joined end to end. The usage should not require an example. You give it your bezier and it returns the length. There’s nothing really magical here. You can calculate the length yourself. Just evaluate all the points on the curve at some spacing and then compute the length of all the segments. The library implementation tries to be smarter about this same basic process. John, it looks like your nurbs distance never made it. Contact me off list and we can fix that. On Wed, Apr 15, 2026 at 09:02 Caddiy via Discuss <discuss@lists.openscad.org> wrote: > Rogier Wolff wrote: > > I realize you don't just want to calculate the length, but then want to > keep it constant, but to keep it constant the first step would be to be > able to calculate that length. > > Exactly. > > Then find the difference in length between when the Bezier has maximum > deflection and when it has zero deflection/is straight. > > It occurs to me that Beziers are made up of straight segments. There are > not so many segments in my present Bezier. I could set $vpd such that a > scale length of 10 units has a length of say 5 cm (or 10 cm) on the > monitor. Then measure the segments with a ruler and add them together. But > couldn’t my computer do that? > > I did look up bezier_path_length() in Library File beziers.scad, but I > didn’t understand it and unfortunately there was no example that would show > how to use it, and above all, what it actually does. > > Until I find that difference in lengths, I will not know whether it is > actually significant for my project! > > How a relatively long thin strip or rod of elastic material bends when > forces are applied can be rendered very nicely with Bezier curves - better > than the sine and cosine curves I have used previously. > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
M
mikeonenine@web.de
Sat, Apr 18, 2026 1:56 AM

Adrian Mariano wrote:

I think you want bezier_length not bezier_path_length. You give it your bezier and it returns the length.

Not with me!

I can’t find a bezier_length and I don’t want bezier_path_length. That leaves bezier_segment_length(). Is that the right one? It doesn’t work anyway.

module hump()

{

bezpath = flatten([

bez_begin([-15,  0],  60, 20),

bez_end  ([ 15,  0], 120, 20),

]);

path_sweep(circle(d=1, $fn=20), bezpath_curve(bezpath));

//debug_bezier(bezpath);

}

hump();

hump()_segment_length(

[-15, 0],

[-15+25*cos(60), 25*sin(60)],

[15-25*cos(60), 25*sin(60)],

[-15, 0],

[0], [1],

[20]);

Where is the value supposed to appear?

Does it need echo();?

There’s nothing really magical here. You can calculate the length
yourself.  Just evaluate all the points on the curve at some spacing and
then compute the length of all the segments.

With sqrt(pow(x1-x2)+pow(y1-y2)) + sqrt(pow(x2-x3)+pow(y2-y3)) + sqrt(pow(x3-x4)+pow(y3-y4)) . . . ? Looks like a nice job for a rainy day.

Adrian Mariano wrote: > I think you want bezier_length not bezier_path_length. You give it your bezier and it returns the length. Not with me! I can’t find a bezier_length and I don’t want bezier_path_length. That leaves bezier_segment_length(). Is that the right one? It doesn’t work anyway. *module hump()* *{* *bezpath = flatten(\[* *bez_begin(\[-15, 0\], 60, 20),* *bez_end (\[ 15, 0\], 120, 20),* *\]);* *path_sweep(circle(d=1, $fn=20), bezpath_curve(bezpath));* *//debug_bezier(bezpath);* *}* *hump();* *hump()_segment_length(* *\[-15, 0\],* *\[-15+25\*cos(60), 25\*sin(60)\],* *\[15-25\*cos(60), 25\*sin(60)\],* *\[-15, 0\],* *\[0\], \[1\],* *\[20\]);* Where is the value supposed to appear? Does it need echo();? > There’s nothing really magical here. You can calculate the length > yourself. Just evaluate all the points on the curve at some spacing and > then compute the length of all the segments. With sqrt(pow(x1-x2)+pow(y1-y2)) + sqrt(pow(x2-x3)+pow(y2-y3)) + sqrt(pow(x3-x4)+pow(y3-y4)) . . . ? Looks like a nice job for a rainy day.
AM
Adrian Mariano
Sat, Apr 18, 2026 3:59 AM

Ah, your code example shows that bezpath_length() is the correct
option.  One general tip is that if something seems like "a nice job for a
rainy day" that means you're doing work the computer should be doing.

The BOSL2 docs I'm afraid generally assume that you know how to write
OpenSCAD code.  They aren't meant to teach you to program.
bezpath_length() is a function.  As with any function (in pretty much any
programming language) you have to put its return value in a variable or
echo it or pass it as a parameter into some other module or function.
You do with it whatever you want to do.  The value doesn't "appear".

So for example if you want to echo it:

echo(bezpath_length(bezpath));

Or the approach from calculating the length from the curve points itself
without bezpath_length():

echo(path_length(bezpath_curve(bezpath)));

If you want to use the length to trim the curve you wouldn't want to echo
it, you'd need to use it to feed some recursive calculation to find the u
value that has the desired length.

On Fri, Apr 17, 2026 at 9:56 PM Caddiy via Discuss <
discuss@lists.openscad.org> wrote:

Adrian Mariano wrote:

I think you want bezier_length not bezier_path_length. You give it your
bezier and it returns the length.

Not with me!

I can’t find a bezier_length and I don’t want bezier_path_length. That
leaves bezier_segment_length(). Is that the right one? It doesn’t work
anyway.

module hump()

{

bezpath = flatten([

*bez_begin([-15, 0], 60, 20), *

*bez_end ([ 15, 0], 120, 20), *

]);

path_sweep(circle(d=1, $fn=20), bezpath_curve(bezpath));

//debug_bezier(bezpath);

}

hump();

hump()_segment_length(

*[-15, 0], *

[-15+25cos(60), 25*sin(60)], *

[15-25cos(60), 25*sin(60)], *

[-15, 0],

*[0], [1], *

[20]);

Where is the value supposed to appear?

Does it need echo();?

There’s nothing really magical here. You can calculate the length
yourself. Just evaluate all the points on the curve at some spacing and
then compute the length of all the segments.

With sqrt(pow(x1-x2)+pow(y1-y2)) + sqrt(pow(x2-x3)+pow(y2-y3)) +
sqrt(pow(x3-x4)+pow(y3-y4)) . . . ? Looks like a nice job for a rainy day.


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

Ah, your code example shows that bezpath_length() is the correct option. One general tip is that if something seems like "a nice job for a rainy day" that means you're doing work the computer should be doing. The BOSL2 docs I'm afraid generally assume that you know how to write OpenSCAD code. They aren't meant to teach you to program. bezpath_length() is a function. As with any function (in pretty much any programming language) you have to put its return value in a variable or echo it or pass it as a parameter into some other module or function. You do with it whatever you want to do. The value doesn't "appear". So for example if you want to echo it: echo(bezpath_length(bezpath)); Or the approach from calculating the length from the curve points itself without bezpath_length(): echo(path_length(bezpath_curve(bezpath))); If you want to use the length to trim the curve you wouldn't want to echo it, you'd need to use it to feed some recursive calculation to find the u value that has the desired length. On Fri, Apr 17, 2026 at 9:56 PM Caddiy via Discuss < discuss@lists.openscad.org> wrote: > Adrian Mariano wrote: > > I think you want bezier_length not bezier_path_length. You give it your > bezier and it returns the length. > > Not with me! > > I can’t find a bezier_length and I don’t want bezier_path_length. That > leaves bezier_segment_length(). Is that the right one? It doesn’t work > anyway. > > *module hump()* > > *{* > > *bezpath = flatten([* > > *bez_begin([-15, 0], 60, 20), * > > *bez_end ([ 15, 0], 120, 20), * > > *]);* > > *path_sweep(circle(d=1, $fn=20), bezpath_curve(bezpath));* > > *//debug_bezier(bezpath);* > > *}* > > *hump();* > > *hump()_segment_length(* > > *[-15, 0], * > > *[-15+25*cos(60), 25*sin(60)], * > > *[15-25*cos(60), 25*sin(60)], * > > *[-15, 0],* > > *[0], [1], * > > *[20]);* > > Where is the value supposed to appear? > > Does it need echo();? > > There’s nothing really magical here. You can calculate the length > yourself. Just evaluate all the points on the curve at some spacing and > then compute the length of all the segments. > > With sqrt(pow(x1-x2)+pow(y1-y2)) + sqrt(pow(x2-x3)+pow(y2-y3)) + > sqrt(pow(x3-x4)+pow(y3-y4)) . . . ? Looks like a nice job for a rainy day. > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
M
mikeonenine@web.de
Sat, Apr 18, 2026 6:45 AM

Adrian Mariano wrote:

Ah, your code example shows that bezpath_length() is the correct
option.  One general tip is that if something seems like "a nice job for a
rainy day" that means you're doing work the computer should be doing.

The BOSL2 docs I'm afraid generally assume that you know how to write
OpenSCAD code.  They aren't meant to teach you to program.

I started probably 20-30 years later than most people on this mailing list. Is there somewhere I can learn how to write OpenSCAD code, a forum perhaps?

There is precious little on beziers in the OpenSCAD User Manual.

bezpath_length() is a function.  As with any function (in pretty much any programming language) you have to put its return value in a variable or echo it or pass it as a parameter into some other module or function. You do with it whatever you want to do.  The value doesn't "appear".

So for example if you want to echo it:

echo(bezpath_length(bezpath));

Or the approach from calculating the length from the curve points itself
without bezpath_length():

echo(path_length(bezpath_curve(bezpath)));

If you want to use the length to trim the curve you wouldn't want to echo
it, you'd need to use it to feed some recursive calculation to find the u
value that has the desired length.

I get the following error warnings:

WARNING: Ignoring unknown module 'bezpath_length' in file C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62 

WARNING: Ignoring unknown variable 'bezpath' in file C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78 

WARNING: len() parameter could not be converted in file C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547 

WARNING: undefined operation (undefined % number) in file ../BOSL2/beziers.scad, line 547 

ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier path should have a multiple of 3 points in it, plus 1." in file ../BOSL2/beziers.scad, line 547 

TRACE: called by 'bezpath_length' in file Blank.scad, line 78 

TRACE: called by 'echo' in file Blank.scad, line 78 

bezpath_length is an unknown module. What to do?

Adrian Mariano wrote: > Ah, your code example shows that bezpath_length() is the correct > option. One general tip is that if something seems like "a nice job for a > rainy day" that means you're doing work the computer should be doing. > > The BOSL2 docs I'm afraid generally assume that you know how to write > OpenSCAD code. They aren't meant to teach you to program. I started probably 20-30 years later than most people on this mailing list. Is there somewhere I can learn how to write OpenSCAD code, a forum perhaps? There is precious little on beziers in the OpenSCAD User Manual. > bezpath_length() is a function. As with any function (in pretty much any programming language) you have to put its return value in a variable or echo it or pass it as a parameter into some other module or function. You do with it whatever you want to do. The value doesn't "appear". > > So for example if you want to echo it: > > echo(bezpath_length(bezpath)); > > Or the approach from calculating the length from the curve points itself > without bezpath_length(): > > echo(path_length(bezpath_curve(bezpath))); > > If you want to use the length to trim the curve you wouldn't want to echo > it, you'd need to use it to feed some recursive calculation to find the u > value that has the desired length. I get the following error warnings: [WARNING: Ignoring unknown module 'bezpath_length' in file C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62](62,C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad)  [WARNING: Ignoring unknown variable 'bezpath' in file C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78](78,C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad)  [WARNING: len() parameter could not be converted in file C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547](547,C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad)  [WARNING: undefined operation (undefined % number) in file ../BOSL2/beziers.scad, line 547](547,C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad)  [ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier path should have a multiple of 3 points in it, plus 1." in file ../BOSL2/beziers.scad, line 547](547,C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad)  [TRACE: called by 'bezpath_length' in file Blank.scad, line 78](78,C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad)  [TRACE: called by 'echo' in file Blank.scad, line 78](78,C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad)  bezpath_length is an unknown module. What to do?
AM
Adrian Mariano
Sat, Apr 18, 2026 12:15 PM

The two code lines I provided are meant to run in a context where bezpath
is defined but bezpath is identified as an unknown variable.  It appears
you ran some other code that you have not shown.  Another general tip: when
asking for help always show a minimal code example that displays your
issue, which means the smallest piece of ocde you can manage that still has
whatever the problem is.  The error "Ignoring unknown module
'bezpath_length'" means you invoked bezpath length as a module, that is,
without using its return value.  OpenSCAD is unusual among programming
languages because of this distinction.  If you write

bezpath_length(foo);

that's a module invocation.  if you write

len = bezpath_length(foo);

that's a function invocation.  In this case the function exists but not the
module.  The two are completely separate objects in OpenSCAD and they are
defined and exist independently, despite sharing the same name.  In my
example lines I did not have any module invocations, so you did something I
did not show.  Also, I recommend running with the OpenSCAD setting "stop on
first warning" enabled.  This avoids the problem where an error causes a
cascade of related errors and it becomes hard to tell what was the cause of
a problem.

I am not aware of any resources for learning to code in OpenSCAD.  You can
read things like the BOSL2 source code for examples of how to write code.
But it seems like you may want something more tutorial.

On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss <
discuss@lists.openscad.org> wrote:

Adrian Mariano wrote:

Ah, your code example shows that bezpath_length() is the correct option.
One general tip is that if something seems like "a nice job for a rainy
day" that means you're doing work the computer should be doing.

The BOSL2 docs I'm afraid generally assume that you know how to write
OpenSCAD code. They aren't meant to teach you to program.

I started probably 20-30 years later than most people on this mailing
list. Is there somewhere I can learn how to write OpenSCAD code, a forum
perhaps?

There is precious little on beziers in the OpenSCAD User Manual.

bezpath_length() is a function. As with any function (in pretty much any
programming language) you have to put its return value in a variable or
echo it or pass it as a parameter into some other module or function. You
do with it whatever you want to do. The value doesn't "appear".

So for example if you want to echo it:

echo(bezpath_length(bezpath));

Or the approach from calculating the length from the curve points itself
without bezpath_length():

echo(path_length(bezpath_curve(bezpath)));

If you want to use the length to trim the curve you wouldn't want to echo
it, you'd need to use it to feed some recursive calculation to find the u
value that has the desired length.

I get the following error warnings:

WARNING: Ignoring unknown module 'bezpath_length' in file
C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62

WARNING: Ignoring unknown variable 'bezpath' in file
C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78

WARNING: len() parameter could not be converted in file
C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547

WARNING: undefined operation (undefined % number) in file
../BOSL2/beziers.scad, line 547

ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier
path should have a multiple of 3 points in it, plus 1." in file
../BOSL2/beziers.scad, line 547

TRACE: called by 'bezpath_length' in file Blank.scad, line 78

TRACE: called by 'echo' in file Blank.scad, line 78

bezpath_length is an unknown module. What to do?


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

The two code lines I provided are meant to run in a context where bezpath is defined but bezpath is identified as an unknown variable. It appears you ran some other code that you have not shown. Another general tip: when asking for help always show a minimal code example that displays your issue, which means the smallest piece of ocde you can manage that still has whatever the problem is. The error "Ignoring unknown module 'bezpath_length'" means you invoked bezpath length as a module, that is, without using its return value. OpenSCAD is unusual among programming languages because of this distinction. If you write bezpath_length(foo); that's a module invocation. if you write len = bezpath_length(foo); that's a function invocation. In this case the function exists but not the module. The two are completely separate objects in OpenSCAD and they are defined and exist independently, despite sharing the same name. In my example lines I did not have any module invocations, so you did something I did not show. Also, I recommend running with the OpenSCAD setting "stop on first warning" enabled. This avoids the problem where an error causes a cascade of related errors and it becomes hard to tell what was the cause of a problem. I am not aware of any resources for learning to code in OpenSCAD. You can read things like the BOSL2 source code for examples of how to write code. But it seems like you may want something more tutorial. On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss < discuss@lists.openscad.org> wrote: > Adrian Mariano wrote: > > Ah, your code example shows that bezpath_length() is the correct option. > One general tip is that if something seems like "a nice job for a rainy > day" that means you're doing work the computer should be doing. > > The BOSL2 docs I'm afraid generally assume that you know how to write > OpenSCAD code. They aren't meant to teach you to program. > > I started probably 20-30 years later than most people on this mailing > list. Is there somewhere I can learn how to write OpenSCAD code, a forum > perhaps? > > There is precious little on beziers in the OpenSCAD User Manual. > > bezpath_length() is a function. As with any function (in pretty much any > programming language) you have to put its return value in a variable or > echo it or pass it as a parameter into some other module or function. You > do with it whatever you want to do. The value doesn't "appear". > > So for example if you want to echo it: > > echo(bezpath_length(bezpath)); > > Or the approach from calculating the length from the curve points itself > without bezpath_length(): > > echo(path_length(bezpath_curve(bezpath))); > > If you want to use the length to trim the curve you wouldn't want to echo > it, you'd need to use it to feed some recursive calculation to find the u > value that has the desired length. > > I get the following error warnings: > > WARNING: Ignoring unknown module 'bezpath_length' in file > C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62 > > WARNING: Ignoring unknown variable 'bezpath' in file > C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78 > > WARNING: len() parameter could not be converted in file > C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547 > > WARNING: undefined operation (undefined % number) in file > ../BOSL2/beziers.scad, line 547 > > ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier > path should have a multiple of 3 points in it, plus 1." in file > ../BOSL2/beziers.scad, line 547 > > TRACE: called by 'bezpath_length' in file Blank.scad, line 78 > > TRACE: called by 'echo' in file Blank.scad, line 78 > > bezpath_length is an unknown module. What to do? > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
JB
Jon Bondy
Sat, Apr 18, 2026 12:29 PM

When I run OpenSCAD, under the Help menu, there is a Documentation menu
entry.  The first thing on the web page that appears is a Tutorial. 
This is not hidden.

Jon

On 4/18/2026 8:15 AM, Adrian Mariano via Discuss wrote:

The two code lines I provided are meant to run in a context where
bezpath is defined but bezpath is identified as an unknown
variable.  It appears you ran some other code that you have not
shown.  Another general tip: when asking for help always show a
minimal code example that displays your issue, which means the
smallest piece of ocde you can manage that still has whatever the
problem is.   The error "Ignoring unknown module 'bezpath_length'"
means you invoked bezpath length as a module, that is, without using
its return value. OpenSCAD is unusual among programming languages
because of this distinction.  If you write

bezpath_length(foo);

that's a module invocation.  if you write

len = bezpath_length(foo);

that's a function invocation.  In this case the function exists but
not the module.   The two are completely separate objects in OpenSCAD
and they are defined and exist independently, despite sharing the same
name.  In my example lines I did not have any module invocations, so
you did something I did not show.  Also, I recommend running with the
OpenSCAD setting "stop on first warning" enabled.  This avoids the
problem where an error causes a cascade of related errors and it
becomes hard to tell what was the cause of a problem.

I am not aware of any resources for learning to code in OpenSCAD.  You
can read things like the BOSL2 source code for examples of how to
write code.  But it seems like you may want something more tutorial.

On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss
discuss@lists.openscad.org wrote:

 Adrian Mariano wrote:

     Ah, your code example shows that bezpath_length() is the
     correct option. One general tip is that if something seems
     like "a nice job for a rainy day" that means you're doing work
     the computer should be doing.

     The BOSL2 docs I'm afraid generally assume that you know how
     to write OpenSCAD code. They aren't meant to teach you to program.

 I started probably 20-30 years later than most people on this
 mailing list. Is there somewhere I can learn how to write OpenSCAD
 code, a forum perhaps?

 There is precious little on beziers in the OpenSCAD User Manual.

     bezpath_length() is a function. As with any function (in
     pretty much any programming language) you have to put its
     return value in a variable or echo it or pass it as a
     parameter into some other module or function. You do with it
     whatever you want to do. The value doesn't "appear".

     So for example if you want to echo it:

     echo(bezpath_length(bezpath));

     Or the approach from calculating the length from the curve
     points itself without bezpath_length():

     echo(path_length(bezpath_curve(bezpath)));

     If you want to use the length to trim the curve you wouldn't
     want to echo it, you'd need to use it to feed some recursive
     calculation to find the u value that has the desired length.

 I get the following error warnings:

 WARNING: Ignoring unknown module 'bezpath_length' in file
 C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62

 WARNING: Ignoring unknown variable 'bezpath' in file
 C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78

 WARNING: len() parameter could not be converted in file
 C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad,
 line 547

 WARNING: undefined operation (undefined % number) in file
 ../BOSL2/beziers.scad, line 547

 ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3
 bezier path should have a multiple of 3 points in it, plus 1." in
 file ../BOSL2/beziers.scad, line 547

 TRACE: called by 'bezpath_length' in file Blank.scad, line 78

 TRACE: called by 'echo' in file Blank.scad, line 78

 bezpath_length is an unknown module. What to do?

 _______________________________________________
 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

When I run OpenSCAD, under the Help menu, there is a Documentation menu entry.  The first thing on the web page that appears is a Tutorial.  This is not hidden. Jon On 4/18/2026 8:15 AM, Adrian Mariano via Discuss wrote: > The two code lines I provided are meant to run in a context where > bezpath is defined but bezpath is identified as an unknown > variable.  It appears you ran some other code that you have not > shown.  Another general tip: when asking for help always show a > minimal code example that displays your issue, which means the > smallest piece of ocde you can manage that still has whatever the > problem is.   The error "Ignoring unknown module 'bezpath_length'" > means you invoked bezpath length as a module, that is, without using > its return value. OpenSCAD is unusual among programming languages > because of this distinction.  If you write > > bezpath_length(foo); > > that's a module invocation.  if you write > > len = bezpath_length(foo); > > that's a function invocation.  In this case the function exists but > not the module.   The two are completely separate objects in OpenSCAD > and they are defined and exist independently, despite sharing the same > name.  In my example lines I did not have any module invocations, so > you did something I did not show.  Also, I recommend running with the > OpenSCAD setting "stop on first warning" enabled.  This avoids the > problem where an error causes a cascade of related errors and it > becomes hard to tell what was the cause of a problem. > > I am not aware of any resources for learning to code in OpenSCAD.  You > can read things like the BOSL2 source code for examples of how to > write code.  But it seems like you may want something more tutorial. > > On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss > <discuss@lists.openscad.org> wrote: > > Adrian Mariano wrote: > > Ah, your code example shows that bezpath_length() is the > correct option. One general tip is that if something seems > like "a nice job for a rainy day" that means you're doing work > the computer should be doing. > > The BOSL2 docs I'm afraid generally assume that you know how > to write OpenSCAD code. They aren't meant to teach you to program. > > I started probably 20-30 years later than most people on this > mailing list. Is there somewhere I can learn how to write OpenSCAD > code, a forum perhaps? > > There is precious little on beziers in the OpenSCAD User Manual. > > bezpath_length() is a function. As with any function (in > pretty much any programming language) you have to put its > return value in a variable or echo it or pass it as a > parameter into some other module or function. You do with it > whatever you want to do. The value doesn't "appear". > > So for example if you want to echo it: > > echo(bezpath_length(bezpath)); > > Or the approach from calculating the length from the curve > points itself without bezpath_length(): > > echo(path_length(bezpath_curve(bezpath))); > > If you want to use the length to trim the curve you wouldn't > want to echo it, you'd need to use it to feed some recursive > calculation to find the u value that has the desired length. > > I get the following error warnings: > > WARNING: Ignoring unknown module 'bezpath_length' in file > C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62 > > WARNING: Ignoring unknown variable 'bezpath' in file > C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78 > > WARNING: len() parameter could not be converted in file > C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, > line 547 > > WARNING: undefined operation (undefined % number) in file > ../BOSL2/beziers.scad, line 547 > > ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 > bezier path should have a multiple of 3 points in it, plus 1." in > file ../BOSL2/beziers.scad, line 547 > > TRACE: called by 'bezpath_length' in file Blank.scad, line 78 > > TRACE: called by 'echo' in file Blank.scad, line 78 > > bezpath_length is an unknown module. What to do? > > _______________________________________________ > 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
NH
nop head
Sat, Apr 18, 2026 12:33 PM

Marius also wrote a book about OpenSCAD.

On Sat, 18 Apr 2026 at 13:29, Jon Bondy via Discuss <
discuss@lists.openscad.org> wrote:

When I run OpenSCAD, under the Help menu, there is a Documentation menu
entry.  The first thing on the web page that appears is a Tutorial.  This
is not hidden.

Jon

On 4/18/2026 8:15 AM, Adrian Mariano via Discuss wrote:

The two code lines I provided are meant to run in a context where bezpath
is defined but bezpath is identified as an unknown variable.  It appears
you ran some other code that you have not shown.  Another general tip: when
asking for help always show a minimal code example that displays your
issue, which means the smallest piece of ocde you can manage that still has
whatever the problem is.  The error "Ignoring unknown module
'bezpath_length'" means you invoked bezpath length as a module, that is,
without using its return value.  OpenSCAD is unusual among programming
languages because of this distinction.  If you write

bezpath_length(foo);

that's a module invocation.  if you write

len = bezpath_length(foo);

that's a function invocation.  In this case the function exists but not
the module.  The two are completely separate objects in OpenSCAD and they
are defined and exist independently, despite sharing the same name.  In my
example lines I did not have any module invocations, so you did something I
did not show.  Also, I recommend running with the OpenSCAD setting "stop on
first warning" enabled.  This avoids the problem where an error causes a
cascade of related errors and it becomes hard to tell what was the cause of
a problem.

I am not aware of any resources for learning to code in OpenSCAD.  You can
read things like the BOSL2 source code for examples of how to write code.
But it seems like you may want something more tutorial.

On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss <
discuss@lists.openscad.org> wrote:

Adrian Mariano wrote:

Ah, your code example shows that bezpath_length() is the correct option.
One general tip is that if something seems like "a nice job for a rainy
day" that means you're doing work the computer should be doing.

The BOSL2 docs I'm afraid generally assume that you know how to write
OpenSCAD code. They aren't meant to teach you to program.

I started probably 20-30 years later than most people on this mailing
list. Is there somewhere I can learn how to write OpenSCAD code, a forum
perhaps?

There is precious little on beziers in the OpenSCAD User Manual.

bezpath_length() is a function. As with any function (in pretty much any
programming language) you have to put its return value in a variable or
echo it or pass it as a parameter into some other module or function. You
do with it whatever you want to do. The value doesn't "appear".

So for example if you want to echo it:

echo(bezpath_length(bezpath));

Or the approach from calculating the length from the curve points itself
without bezpath_length():

echo(path_length(bezpath_curve(bezpath)));

If you want to use the length to trim the curve you wouldn't want to echo
it, you'd need to use it to feed some recursive calculation to find the u
value that has the desired length.

I get the following error warnings:

WARNING: Ignoring unknown module 'bezpath_length' in file
C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62

WARNING: Ignoring unknown variable 'bezpath' in file
C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78

WARNING: len() parameter could not be converted in file
C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547

WARNING: undefined operation (undefined % number) in file
../BOSL2/beziers.scad, line 547

ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier
path should have a multiple of 3 points in it, plus 1." in file
../BOSL2/beziers.scad, line 547

TRACE: called by 'bezpath_length' in file Blank.scad, line 78

TRACE: called by 'echo' in file Blank.scad, line 78

bezpath_length is an unknown module. What to do?


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_-5069860782905211552_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


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

Marius also wrote a book about OpenSCAD. On Sat, 18 Apr 2026 at 13:29, Jon Bondy via Discuss < discuss@lists.openscad.org> wrote: > When I run OpenSCAD, under the Help menu, there is a Documentation menu > entry. The first thing on the web page that appears is a Tutorial. This > is not hidden. > > Jon > > > On 4/18/2026 8:15 AM, Adrian Mariano via Discuss wrote: > > The two code lines I provided are meant to run in a context where bezpath > is defined but bezpath is identified as an unknown variable. It appears > you ran some other code that you have not shown. Another general tip: when > asking for help always show a minimal code example that displays your > issue, which means the smallest piece of ocde you can manage that still has > whatever the problem is. The error "Ignoring unknown module > 'bezpath_length'" means you invoked bezpath length as a module, that is, > without using its return value. OpenSCAD is unusual among programming > languages because of this distinction. If you write > > bezpath_length(foo); > > that's a module invocation. if you write > > len = bezpath_length(foo); > > that's a function invocation. In this case the function exists but not > the module. The two are completely separate objects in OpenSCAD and they > are defined and exist independently, despite sharing the same name. In my > example lines I did not have any module invocations, so you did something I > did not show. Also, I recommend running with the OpenSCAD setting "stop on > first warning" enabled. This avoids the problem where an error causes a > cascade of related errors and it becomes hard to tell what was the cause of > a problem. > > I am not aware of any resources for learning to code in OpenSCAD. You can > read things like the BOSL2 source code for examples of how to write code. > But it seems like you may want something more tutorial. > > On Sat, Apr 18, 2026 at 2:46 AM Caddiy via Discuss < > discuss@lists.openscad.org> wrote: > >> Adrian Mariano wrote: >> >> Ah, your code example shows that bezpath_length() is the correct option. >> One general tip is that if something seems like "a nice job for a rainy >> day" that means you're doing work the computer should be doing. >> >> The BOSL2 docs I'm afraid generally assume that you know how to write >> OpenSCAD code. They aren't meant to teach you to program. >> >> I started probably 20-30 years later than most people on this mailing >> list. Is there somewhere I can learn how to write OpenSCAD code, a forum >> perhaps? >> >> There is precious little on beziers in the OpenSCAD User Manual. >> >> bezpath_length() is a function. As with any function (in pretty much any >> programming language) you have to put its return value in a variable or >> echo it or pass it as a parameter into some other module or function. You >> do with it whatever you want to do. The value doesn't "appear". >> >> So for example if you want to echo it: >> >> echo(bezpath_length(bezpath)); >> >> Or the approach from calculating the length from the curve points itself >> without bezpath_length(): >> >> echo(path_length(bezpath_curve(bezpath))); >> >> If you want to use the length to trim the curve you wouldn't want to echo >> it, you'd need to use it to feed some recursive calculation to find the u >> value that has the desired length. >> >> I get the following error warnings: >> >> WARNING: Ignoring unknown module 'bezpath_length' in file >> C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 62 >> >> WARNING: Ignoring unknown variable 'bezpath' in file >> C:/Users/Admin/Documents/OpenSCAD/libraries/Own/Blank.scad, line 78 >> >> WARNING: len() parameter could not be converted in file >> C:/Users/Admin/Documents/OpenSCAD/libraries/BOSL2/beziers.scad, line 547 >> >> WARNING: undefined operation (undefined % number) in file >> ../BOSL2/beziers.scad, line 547 >> >> ERROR: Assertion '((len(bezpath) % N) == 1)' failed: " A degree 3 bezier >> path should have a multiple of 3 points in it, plus 1." in file >> ../BOSL2/beziers.scad, line 547 >> >> TRACE: called by 'bezpath_length' in file Blank.scad, line 78 >> >> TRACE: called by 'echo' in file Blank.scad, line 78 >> >> bezpath_length is an unknown module. What to do? >> _______________________________________________ >> 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_-5069860782905211552_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
M
mikeonenine@web.de
Sun, Apr 19, 2026 12:29 AM

Bending a cylinder through 120° brings the ends 30% closer together.

Bending a cylinder through 120° brings the ends 30% closer together. ![](data:image/png;base64,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)
MM
Michael Marx (spintel)
Sun, Apr 19, 2026 4:01 AM

Marius also wrote a book about OpenSCAD.

https://openscad.org/documentation-books.html


From: nop head via Discuss [mailto:discuss@lists.openscad.org]
Sent: Saturday, April 18, 2026 10:34 PM
To: OpenSCAD general discussion Mailing-list
Cc: nop head
Subject: [OpenSCAD] Re: Bezier stretch

Marius also wrote a book about OpenSCAD.

> Marius also wrote a book about OpenSCAD. https://openscad.org/documentation-books.html _____ From: nop head via Discuss [mailto:discuss@lists.openscad.org] Sent: Saturday, April 18, 2026 10:34 PM To: OpenSCAD general discussion Mailing-list Cc: nop head Subject: [OpenSCAD] Re: Bezier stretch Marius also wrote a book about OpenSCAD.
M
mikeonenine@web.de
Sun, Apr 19, 2026 11:43 AM

Thanks.

“Marius also wrote a book about OpenSCAD” on its own was a bit meagre.

The problem, though, is that I want to know how to get the length of a bezier here and now, so I can get on with the project.

7 % stretch is significant.

Thanks. “Marius also wrote a book about OpenSCAD” on its own was a bit meagre. The problem, though, is that I want to know how to get the length of a bezier here and now, so I can get on with the project. 7 % stretch is significant. ![](data:image/png;base64,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) ![](data:image/png;base64,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) ![](data:image/png;base64,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jfbz+NJrK7a565Lo+9t1OBcTIECAAAECBAjsEhAiKvjuIeLt/S9vNX+9pv84WAW4SwgQIECAAAECBEIJCBEV5fjip/QV173dPt6EiBo41xAgQIAAAQIECEQSECIKq7HnYz4jfZypkMVwAgQIECBAgACBiQSEiIJi7/nbmfxidQG0oQQIECBAgAABAqEFhIjQ5Tl+c69h5jkYPf+Ox54nLsfv2owECBAgQIAAAQKRBISISNUItBchIlAxbIUAAQIECBAgEExAiAhWENshQIAAAQIECBAgEF1AiIheIfsjQIAAAQIECBAgEExAiAhWENshQIAAAQIECBAgEF1AiIheoZP253ciToK3LAECBAgQIEBgAAEhYoAinbFFIeIMdWsSIECAAAECBMYQECLGqFP3XQoR3cktSIAAAQIECBAYRkCIGKZUNkqAAAECBAgQIEAghoAQEaMOdkGAAAECBAgQIEBgGAEhYphS2SgBAgQIECBAgACBGAJCRIw6hNuF34kIVxIbIkCAAAECBAiEERAiwpQi1kaEiFj1sBsCBAgQIECAQCQBISJSNQLtRYgIVAxbIUCAAAECBAgEExAighWk9XZew8H9nx9ft9tH6+XNT4AAAQIECBAgcAEBIeICRXQEAgQIECBAgAABAj0FhIie2tYiQIAAAQIECBAgcAEBIeICRWxxBL8T0ULVnAQIECBAgACBawgIEdeo4+GnECIOJzUhAQIECBAgQOAyAkLEZUp57EGEiGM9zUaAAAECBAgQuJLAvwFfk3CqBgQwogAAAABJRU5ErkJggg==)