discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

vnf_bend()

JW
Joe Weinpert
Thu, May 12, 2022 12:05 AM

You both have been a tremendous help.

What you are suggesting, however, is way way way out-of-my-league.  I do
not have enough experience in the world of openSCAD to even know which
BOSL2 functions and/or modules to use,

On Wed, May 11, 2022 at 7:53 PM Revar Desmera revarbat@gmail.com wrote:

I meant without splitting faces, of course.

  • Revar

On May 11, 2022, at 4:51 PM, Revar Desmera revarbat@gmail.com wrote:

Actually yes, the triangulation is small enough that you can just re-map
the vertices into a curve without splitting vertices.  That should be much
faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano avm4@cornell.edu wrote:

You could definitely shrink the VNF from something like that, which would
probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.  The
VNF you have there from the image I think is already in strips!  The hard
part has been done.  So you could just remap the points yourself without
going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

No doubt.  But it is always interesting to try! Here is what it was
freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a
few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file
that was created using your python script, heightfield(), and
vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera revarbat@gmail.com wrote:

420k vertices and 823k faces, bending with $fs=0.01… That is an
excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert joe.weinpert@gmail.com
wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano avm4@cornell.edu wrote:

I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as

what was echoed above, am I whistling past the graveyard to try and get
this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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

You both have been a tremendous help. What you are suggesting, however, is way way way out-of-my-league. I do not have enough experience in the world of openSCAD to even know which BOSL2 functions and/or modules to use, On Wed, May 11, 2022 at 7:53 PM Revar Desmera <revarbat@gmail.com> wrote: > I meant without splitting faces, of course. > > - Revar > > > On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com> wrote: > > Actually yes, the triangulation is small enough that you can just re-map > the vertices into a curve without splitting vertices. That should be much > faster. > > - Revar > > > On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu> wrote: > > You could definitely shrink the VNF from something like that, which would > probably help. You could decrease the number of points in your image. > > But also, the slow part of vnf_bend() is slicing the VNF into strips. The > VNF you have there from the image I think is already in strips! The hard > part has been done. So you could just remap the points yourself without > going through vnf_bend(). That would be fast. > > On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com> > wrote: > >> No doubt. But it is always interesting to try! Here is what it was >> freezing on. >> >> <result2.png> >> >> It is something like this that would be nice to bend ... in this case a >> few degrees in the Y axis. >> >> But, anyway, just so you know, Revar, This was created from a data file >> that was created using your python script, heightfield(), and >> vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >> >> >> >> >> >> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com> wrote: >> >>> 420k vertices and 823k faces, bending with $fs=0.01… That is an >>> excessive degree of detail for OpenSCAD, I’m afraid. >>> >>> - Revar >>> >>> >>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com> >>> wrote: >>> >>> >>> $fs=.01 >>> >>> After running for a couple of hours it came up with: >>> >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 >>> >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 >>> >>> and then did not finish. >>> >>> Choked to death, I guess. >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu> wrote: >>> >>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>> into strips (so that means line-plane intersections with every edge in >>>> your data) and then once that's done, it maps it to the cylinder, >>>> which is fairly fast in comparison. I have not done rigorous timing >>>> tests. I think time will mainly depend on the number of edges, so you >>>> could try using 1% of your faces and see how long it takes. The >>>> result will be garbage (a non-manifold partial result ) but it will >>>> give you some idea of time. Then you can try 2% and see what happens, >>>> 5%, etc. That will give you a way to predict how long your real >>>> problem will take. >>>> >>>> I think that you probably will need to find a way to simplify the >>>> problem, but the above exercise will tell you how much it needs to be >>>> simplified. >>>> >>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com> >>>> wrote: >>>> > >>>> > >>>> > len( vnf[0] ) = 420204 >>>> > >>>> > len( vnf[1] ) = 823326 >>>> > >>>> > >>>> > If the length of the vnf array I am trying to bend is as large as >>>> what was echoed above, am I whistling past the graveyard to try and get >>>> this: >>>> > >>>> > >>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>> > >>>> > >>>> > to work? Machine just stops forever until I force openSCAD to close. >>>> > >>>> > >>>> > _______________________________________________ >>>> > 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 >>>> >>> _______________________________________________ >>> 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 >>> >> _______________________________________________ >> 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 > > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
JW
Joe Weinpert
Thu, May 12, 2022 12:11 AM

Is that done in the Edit choices?

On Wed, May 11, 2022 at 7:56 PM Father Horton fatherhorton@gmail.com
wrote:

Simplifying/reducing the face count would be my advice too. I think
Meshmixer does that.

On Wed, May 11, 2022 at 6:53 PM Revar Desmera revarbat@gmail.com wrote:

I meant without splitting faces, of course.

  • Revar

On May 11, 2022, at 4:51 PM, Revar Desmera revarbat@gmail.com wrote:

Actually yes, the triangulation is small enough that you can just re-map
the vertices into a curve without splitting vertices.  That should be much
faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano avm4@cornell.edu wrote:

You could definitely shrink the VNF from something like that, which would
probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.
The VNF you have there from the image I think is already in strips!  The
hard part has been done.  So you could just remap the points yourself
without going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

No doubt.  But it is always interesting to try! Here is what it was
freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a
few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file
that was created using your python script, heightfield(), and
vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera revarbat@gmail.com
wrote:

420k vertices and 823k faces, bending with $fs=0.01… That is an
excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert joe.weinpert@gmail.com
wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano avm4@cornell.edu
wrote:

I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as

what was echoed above, am I whistling past the graveyard to try and get
this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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

Is that done in the Edit choices? On Wed, May 11, 2022 at 7:56 PM Father Horton <fatherhorton@gmail.com> wrote: > Simplifying/reducing the face count would be my advice too. I think > Meshmixer does that. > > On Wed, May 11, 2022 at 6:53 PM Revar Desmera <revarbat@gmail.com> wrote: > >> I meant without splitting faces, of course. >> >> - Revar >> >> >> On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com> wrote: >> >> Actually yes, the triangulation is small enough that you can just re-map >> the vertices into a curve without splitting vertices. That should be much >> faster. >> >> - Revar >> >> >> On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu> wrote: >> >> You could definitely shrink the VNF from something like that, which would >> probably help. You could decrease the number of points in your image. >> >> But also, the slow part of vnf_bend() is slicing the VNF into strips. >> The VNF you have there from the image I think is already in strips! The >> hard part has been done. So you could just remap the points yourself >> without going through vnf_bend(). That would be fast. >> >> On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com> >> wrote: >> >>> No doubt. But it is always interesting to try! Here is what it was >>> freezing on. >>> >>> <result2.png> >>> >>> It is something like this that would be nice to bend ... in this case a >>> few degrees in the Y axis. >>> >>> But, anyway, just so you know, Revar, This was created from a data file >>> that was created using your python script, heightfield(), and >>> vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >>> >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com> >>> wrote: >>> >>>> 420k vertices and 823k faces, bending with $fs=0.01… That is an >>>> excessive degree of detail for OpenSCAD, I’m afraid. >>>> >>>> - Revar >>>> >>>> >>>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com> >>>> wrote: >>>> >>>> >>>> $fs=.01 >>>> >>>> After running for a couple of hours it came up with: >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 >>>> >>>> >>>> and then did not finish. >>>> >>>> Choked to death, I guess. >>>> >>>> >>>> >>>> >>>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu> >>>> wrote: >>>> >>>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>>> into strips (so that means line-plane intersections with every edge in >>>>> your data) and then once that's done, it maps it to the cylinder, >>>>> which is fairly fast in comparison. I have not done rigorous timing >>>>> tests. I think time will mainly depend on the number of edges, so you >>>>> could try using 1% of your faces and see how long it takes. The >>>>> result will be garbage (a non-manifold partial result ) but it will >>>>> give you some idea of time. Then you can try 2% and see what happens, >>>>> 5%, etc. That will give you a way to predict how long your real >>>>> problem will take. >>>>> >>>>> I think that you probably will need to find a way to simplify the >>>>> problem, but the above exercise will tell you how much it needs to be >>>>> simplified. >>>>> >>>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com> >>>>> wrote: >>>>> > >>>>> > >>>>> > len( vnf[0] ) = 420204 >>>>> > >>>>> > len( vnf[1] ) = 823326 >>>>> > >>>>> > >>>>> > If the length of the vnf array I am trying to bend is as large as >>>>> what was echoed above, am I whistling past the graveyard to try and get >>>>> this: >>>>> > >>>>> > >>>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>>> > >>>>> > >>>>> > to work? Machine just stops forever until I force openSCAD to close. >>>>> > >>>>> > >>>>> > _______________________________________________ >>>>> > 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 >>>>> >>>> _______________________________________________ >>>> 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 >>>> >>> _______________________________________________ >>> 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 >> >> >> >> _______________________________________________ >> 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 >
RD
Revar Desmera
Thu, May 12, 2022 12:12 AM

function remap_vnf_vertices_around_axis(vnf, axis=“X”) =
let(
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr))
axis=="X"? [p.x, p.z
sin(a), p.zcos(a)] :
axis=="Y"? [p.z
sin(a), p.y, p.zcos(a)] :
[p.y
sin(a), p.y*cos(a), p.z]
]
) [new_verts, vnf[1]];

-Revar

On May 11, 2022, at 4:51 PM, Revar Desmera revarbat@gmail.com wrote:

Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices.  That should be much faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:

You could definitely shrink the VNF from something like that, which would probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.  The VNF you have there from the image I think is already in strips!  The hard part has been done.  So you could just remap the points yourself without going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:
No doubt.  But it is always interesting to try! Here is what it was freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:
420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file  <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <>

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:
I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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


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


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

function remap_vnf_vertices_around_axis(vnf, axis=“X”) = let( new_verts = [ for(p=vnf[0]) let(a=coord*p*180/(PI*r)) axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : [p.y*sin(a), p.y*cos(a), p.z] ] ) [new_verts, vnf[1]]; -Revar > On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com> wrote: > > Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices. That should be much faster. > > - Revar > > >> On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >> >> You could definitely shrink the VNF from something like that, which would probably help. You could decrease the number of points in your image. >> >> But also, the slow part of vnf_bend() is slicing the VNF into strips. The VNF you have there from the image I think is already in strips! The hard part has been done. So you could just remap the points yourself without going through vnf_bend(). That would be fast. >> >> On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >> No doubt. But it is always interesting to try! Here is what it was freezing on. >> >> <result2.png> >> >> It is something like this that would be nice to bend ... in this case a few degrees in the Y axis. >> >> But, anyway, just so you know, Revar, This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >> >> >> >> >> >> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: >> 420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid. >> >> - Revar >> >> >>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>> >>> >>> $fs=.01 >>> >>> After running for a couple of hours it came up with: >>> >>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <> >>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <> >>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <> >>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <> >>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <> >>> >>> and then did not finish. >>> >>> Choked to death, I guess. >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >>> I think vnf_bend is pretty slow. It has to first cut up your input >>> into strips (so that means line-plane intersections with every edge in >>> your data) and then once that's done, it maps it to the cylinder, >>> which is fairly fast in comparison. I have not done rigorous timing >>> tests. I think time will mainly depend on the number of edges, so you >>> could try using 1% of your faces and see how long it takes. The >>> result will be garbage (a non-manifold partial result ) but it will >>> give you some idea of time. Then you can try 2% and see what happens, >>> 5%, etc. That will give you a way to predict how long your real >>> problem will take. >>> >>> I think that you probably will need to find a way to simplify the >>> problem, but the above exercise will tell you how much it needs to be >>> simplified. >>> >>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>> > >>> > >>> > len( vnf[0] ) = 420204 >>> > >>> > len( vnf[1] ) = 823326 >>> > >>> > >>> > If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this: >>> > >>> > >>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>> > >>> > >>> > to work? Machine just stops forever until I force openSCAD to close. >>> > >>> > >>> > _______________________________________________ >>> > OpenSCAD mailing list >>> > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >> >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >
JW
Joe Weinpert
Thu, May 12, 2022 12:19 AM

Well, I just saw that $fs=.01 in the example in the openSCAD docs, so I
tried it.  Doesn't mean I have any clue about.  Eventually I'll understand
the mesh world .. but I still have a ways to go yet.

On Wed, May 11, 2022 at 8:08 PM Jordan Brown openscad@jordan.maileater.net
wrote:

On 5/11/2022 4:18 PM, Revar Desmera wrote:

420k vertices and 823k faces, bending with $fs=0.01… That is an excessive
degree of detail for OpenSCAD, I’m afraid.

$fs = 0.01 is really really small (assuming that BOSL2's use of it is
consistent with OpenSCAD's).

That's saying that you want each feature, each straight line in the
result, to be at least a hundredth of a millimeter, ten micrometers, long.

To put that in context:
Standard 20lb bond paper is about 100 micrometers thick.
A human hair is between 17 and 181 micrometers in diameter.
Typical 3D printer extrusion widths are around 400 micrometers.
Typical X-Y resolution is 100 micrometers.
Typical high resolution printing is 100 micrometers per layer.

I'd be shocked if you couldn't increase that to 0.1 without any visible
impact, and I wouldn't be surprised if you could increase it to 1.0 without
visible impact.


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

Well, I just saw that $fs=.01 in the example in the openSCAD docs, so I tried it. Doesn't mean I have any clue about. Eventually I'll understand the mesh world .. but I still have a ways to go yet. On Wed, May 11, 2022 at 8:08 PM Jordan Brown <openscad@jordan.maileater.net> wrote: > On 5/11/2022 4:18 PM, Revar Desmera wrote: > > 420k vertices and 823k faces, bending with $fs=0.01… That is an excessive > degree of detail for OpenSCAD, I’m afraid. > > > $fs = 0.01 is really really small (assuming that BOSL2's use of it is > consistent with OpenSCAD's). > > That's saying that you want each feature, each straight line in the > result, to be at least a hundredth of a millimeter, ten micrometers, long. > > To put that in context: > Standard 20lb bond paper is about 100 micrometers thick. > A human hair is between 17 and 181 micrometers in diameter. > Typical 3D printer extrusion widths are around 400 micrometers. > Typical X-Y resolution is 100 micrometers. > Typical high resolution printing is 100 micrometers per layer. > > I'd be shocked if you couldn't increase that to 0.1 without any visible > impact, and I wouldn't be surprised if you could increase it to 1.0 without > visible impact. > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
JW
Joe Weinpert
Thu, May 12, 2022 12:48 AM

ERROR: Parser error: syntax error in file flourishTest.scad, line 64

Happens when I place that funcion code into the program

[image: 2022-05-11_20-37-42.png]

Also ... where is the variable "r" in (PI*r) originating? How do I call it?

x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ?

On Wed, May 11, 2022 at 8:12 PM Revar Desmera revarbat@gmail.com wrote:

function remap_vnf_vertices_around_axis(vnf, axis=“X”) =

 let(

     new_verts = [

         for(p=vnf[0])

         let(a=coord*p*180/(PI*r))

         axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] :

         axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] :

                    [p.y*sin(a), p.y*cos(a), p.z]

     ]

 ) [new_verts, vnf[1]];

-Revar

On May 11, 2022, at 4:51 PM, Revar Desmera revarbat@gmail.com wrote:

Actually yes, the triangulation is small enough that you can just re-map
the vertices into a curve without splitting vertices.  That should be much
faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano avm4@cornell.edu wrote:

You could definitely shrink the VNF from something like that, which would
probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.  The
VNF you have there from the image I think is already in strips!  The hard
part has been done.  So you could just remap the points yourself without
going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

No doubt.  But it is always interesting to try! Here is what it was
freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a
few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file
that was created using your python script, heightfield(), and
vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera revarbat@gmail.com wrote:

420k vertices and 823k faces, bending with $fs=0.01… That is an
excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert joe.weinpert@gmail.com
wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648
WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano avm4@cornell.edu wrote:

I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as

what was echoed above, am I whistling past the graveyard to try and get
this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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

ERROR: Parser error: syntax error in file flourishTest.scad, line 64 Happens when I place that funcion code into the program [image: 2022-05-11_20-37-42.png] Also ... where is the variable "r" in (PI*r) originating? How do I call it? x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ? On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com> wrote: > function remap_vnf_vertices_around_axis(vnf, axis=“X”) = > > let( > > new_verts = [ > > for(p=vnf[0]) > > let(a=coord*p*180/(PI*r)) > > axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : > > axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : > > [p.y*sin(a), p.y*cos(a), p.z] > > ] > > ) [new_verts, vnf[1]]; > > > -Revar > > > On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com> wrote: > > Actually yes, the triangulation is small enough that you can just re-map > the vertices into a curve without splitting vertices. That should be much > faster. > > - Revar > > > On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu> wrote: > > You could definitely shrink the VNF from something like that, which would > probably help. You could decrease the number of points in your image. > > But also, the slow part of vnf_bend() is slicing the VNF into strips. The > VNF you have there from the image I think is already in strips! The hard > part has been done. So you could just remap the points yourself without > going through vnf_bend(). That would be fast. > > On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com> > wrote: > >> No doubt. But it is always interesting to try! Here is what it was >> freezing on. >> >> <result2.png> >> >> It is something like this that would be nice to bend ... in this case a >> few degrees in the Y axis. >> >> But, anyway, just so you know, Revar, This was created from a data file >> that was created using your python script, heightfield(), and >> vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >> >> >> >> >> >> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com> wrote: >> >>> 420k vertices and 823k faces, bending with $fs=0.01… That is an >>> excessive degree of detail for OpenSCAD, I’m afraid. >>> >>> - Revar >>> >>> >>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com> >>> wrote: >>> >>> >>> $fs=.01 >>> >>> After running for a couple of hours it came up with: >>> >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 >>> >>> WARNING: Bad range parameter in for statement: too many elements >>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 >>> >>> and then did not finish. >>> >>> Choked to death, I guess. >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu> wrote: >>> >>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>> into strips (so that means line-plane intersections with every edge in >>>> your data) and then once that's done, it maps it to the cylinder, >>>> which is fairly fast in comparison. I have not done rigorous timing >>>> tests. I think time will mainly depend on the number of edges, so you >>>> could try using 1% of your faces and see how long it takes. The >>>> result will be garbage (a non-manifold partial result ) but it will >>>> give you some idea of time. Then you can try 2% and see what happens, >>>> 5%, etc. That will give you a way to predict how long your real >>>> problem will take. >>>> >>>> I think that you probably will need to find a way to simplify the >>>> problem, but the above exercise will tell you how much it needs to be >>>> simplified. >>>> >>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com> >>>> wrote: >>>> > >>>> > >>>> > len( vnf[0] ) = 420204 >>>> > >>>> > len( vnf[1] ) = 823326 >>>> > >>>> > >>>> > If the length of the vnf array I am trying to bend is as large as >>>> what was echoed above, am I whistling past the graveyard to try and get >>>> this: >>>> > >>>> > >>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>> > >>>> > >>>> > to work? Machine just stops forever until I force openSCAD to close. >>>> > >>>> > >>>> > _______________________________________________ >>>> > 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 >>>> >>> _______________________________________________ >>> 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 >>> >> _______________________________________________ >> 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 > > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
RD
Revar Desmera
Thu, May 12, 2022 6:33 AM

Partly my bad for cut-and-paste coding on the fly, partly Apple replacing my quotes with “smart” curly quotes.  Right.  Forgot this replacement laptop hasn't ever had me turn all that off. Lets try this again with actual testing:

include <BOSL2/std.scad>
include <foof.scad>

function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") =
let(
coord = axis=="X" ? BACK : RIGHT,
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr)bend_scale)
axis=="X"? [p.x, p.z
sin(a), p.z
cos(a)] :
axis=="Y"? [p.zsin(a), p.y, p.zcos(a)] :
[p.ysin(a), p.ycos(a), p.z]
]
) [new_verts, vnf[1]];

vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT));
vnf2 = remap_vnf_vertices_around_axis(vnf, 50, 2);
vnf_polyhedron(vnf2);

-Revar

On May 11, 2022, at 5:48 PM, Joe Weinpert joe.weinpert@gmail.com wrote:

ERROR: Parser error: syntax error in file flourishTest.scad, line 64 <>

Happens when I place that funcion code into the program

<2022-05-11_20-37-42.png>

Also ... where is the variable "r" in (PI*r) originating?  How do I call it?
x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ?

On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:
function remap_vnf_vertices_around_axis(vnf, axis=“X”) =
let(
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr))
axis=="X"? [p.x, p.z
sin(a), p.zcos(a)] :
axis=="Y"? [p.z
sin(a), p.y, p.zcos(a)] :
[p.y
sin(a), p.y*cos(a), p.z]
]
) [new_verts, vnf[1]];

-Revar

On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:

Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices.  That should be much faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:

You could definitely shrink the VNF from something like that, which would probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.  The VNF you have there from the image I think is already in strips!  The hard part has been done.  So you could just remap the points yourself without going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:
No doubt.  But it is always interesting to try! Here is what it was freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:
420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file  <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <>

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:
I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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


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


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


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


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

Partly my bad for cut-and-paste coding on the fly, partly Apple replacing my quotes with “smart” curly quotes. Right. Forgot this replacement laptop hasn't ever had me turn all that off. Lets try this again with actual testing: include <BOSL2/std.scad> include <foof.scad> function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") = let( coord = axis=="X" ? BACK : RIGHT, new_verts = [ for(p=vnf[0]) let(a=coord*p*180/(PI*r)*bend_scale) axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : [p.y*sin(a), p.y*cos(a), p.z] ] ) [new_verts, vnf[1]]; vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT)); vnf2 = remap_vnf_vertices_around_axis(vnf, 50, 2); vnf_polyhedron(vnf2); -Revar > On May 11, 2022, at 5:48 PM, Joe Weinpert <joe.weinpert@gmail.com> wrote: > > > ERROR: Parser error: syntax error in file flourishTest.scad, line 64 <> > > Happens when I place that funcion code into the program > > <2022-05-11_20-37-42.png> > > Also ... where is the variable "r" in (PI*r) originating? How do I call it? > x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ? > > > > > On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: > function remap_vnf_vertices_around_axis(vnf, axis=“X”) = > let( > new_verts = [ > for(p=vnf[0]) > let(a=coord*p*180/(PI*r)) > axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : > axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : > [p.y*sin(a), p.y*cos(a), p.z] > ] > ) [new_verts, vnf[1]]; > > -Revar > > >> On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: >> >> Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices. That should be much faster. >> >> - Revar >> >> >>> On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >>> >>> You could definitely shrink the VNF from something like that, which would probably help. You could decrease the number of points in your image. >>> >>> But also, the slow part of vnf_bend() is slicing the VNF into strips. The VNF you have there from the image I think is already in strips! The hard part has been done. So you could just remap the points yourself without going through vnf_bend(). That would be fast. >>> >>> On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>> No doubt. But it is always interesting to try! Here is what it was freezing on. >>> >>> <result2.png> >>> >>> It is something like this that would be nice to bend ... in this case a few degrees in the Y axis. >>> >>> But, anyway, just so you know, Revar, This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >>> >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: >>> 420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid. >>> >>> - Revar >>> >>> >>>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>>> >>>> >>>> $fs=.01 >>>> >>>> After running for a couple of hours it came up with: >>>> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <> >>>> >>>> and then did not finish. >>>> >>>> Choked to death, I guess. >>>> >>>> >>>> >>>> >>>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>> into strips (so that means line-plane intersections with every edge in >>>> your data) and then once that's done, it maps it to the cylinder, >>>> which is fairly fast in comparison. I have not done rigorous timing >>>> tests. I think time will mainly depend on the number of edges, so you >>>> could try using 1% of your faces and see how long it takes. The >>>> result will be garbage (a non-manifold partial result ) but it will >>>> give you some idea of time. Then you can try 2% and see what happens, >>>> 5%, etc. That will give you a way to predict how long your real >>>> problem will take. >>>> >>>> I think that you probably will need to find a way to simplify the >>>> problem, but the above exercise will tell you how much it needs to be >>>> simplified. >>>> >>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>>> > >>>> > >>>> > len( vnf[0] ) = 420204 >>>> > >>>> > len( vnf[1] ) = 823326 >>>> > >>>> > >>>> > If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this: >>>> > >>>> > >>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>> > >>>> > >>>> > to work? Machine just stops forever until I force openSCAD to close. >>>> > >>>> > >>>> > _______________________________________________ >>>> > OpenSCAD mailing list >>>> > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>>> _______________________________________________ >>>> OpenSCAD mailing list >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>>> _______________________________________________ >>>> OpenSCAD mailing list >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >> > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
RD
Revar Desmera
Thu, May 12, 2022 7:57 AM

I should note that the r argument basically means that something that is that far above the XY plane will be the same size wrapped around the cylinder.  ie: If you raise something 20mm above the XY plane, then wrap it with r=20, then the part of the un-bent shape that was originally at the XY plane should be 1:1 sized at the surface of the 20mm radius cylinder.

The backside isn't bent quite right with the vertex-only warp, but after differencing a cylinder away, I get this:

  • Revar

include <BOSL2/std.scad>
include <foof.scad>

function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") =
let(
coord = axis=="X" ? BACK : RIGHT,
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr)bend_scale)
axis=="X"? [p.x, p.z
sin(a), p.z
cos(a)] :
axis=="Y"? [p.zsin(a), p.y, p.zcos(a)] :
[p.ysin(a), p.ycos(a), p.z]
]
) [new_verts, vnf[1]];

vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT));
vnf2 = remap_vnf_vertices_around_axis(vnf, 20);
difference() {
vnf_polyhedron(vnf2);
xcyl(h=200,r=20.1,$fn=144);
}

On May 11, 2022, at 5:48 PM, Joe Weinpert joe.weinpert@gmail.com wrote:

ERROR: Parser error: syntax error in file flourishTest.scad, line 64 <>

Happens when I place that funcion code into the program

<2022-05-11_20-37-42.png>

Also ... where is the variable "r" in (PI*r) originating?  How do I call it?
x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ?

On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:
function remap_vnf_vertices_around_axis(vnf, axis=“X”) =
let(
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr))
axis=="X"? [p.x, p.z
sin(a), p.zcos(a)] :
axis=="Y"? [p.z
sin(a), p.y, p.zcos(a)] :
[p.y
sin(a), p.y*cos(a), p.z]
]
) [new_verts, vnf[1]];

-Revar

On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:

Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices.  That should be much faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:

You could definitely shrink the VNF from something like that, which would probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.  The VNF you have there from the image I think is already in strips!  The hard part has been done.  So you could just remap the points yourself without going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:
No doubt.  But it is always interesting to try! Here is what it was freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com mailto:revarbat@gmail.com> wrote:
420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <>
WARNING: Bad range parameter in for statement: too many elements (2551818) in file  <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <>

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu mailto:avm4@cornell.edu> wrote:
I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com> wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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


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


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


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


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

I should note that the `r` argument basically means that something that is that far above the XY plane will be the same size wrapped around the cylinder. ie: If you raise something 20mm above the XY plane, then wrap it with r=20, then the part of the un-bent shape that was originally at the XY plane should be 1:1 sized at the surface of the 20mm radius cylinder. The backside isn't bent quite right with the vertex-only warp, but after differencing a cylinder away, I get this: - Revar include <BOSL2/std.scad> include <foof.scad> function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") = let( coord = axis=="X" ? BACK : RIGHT, new_verts = [ for(p=vnf[0]) let(a=coord*p*180/(PI*r)*bend_scale) axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : [p.y*sin(a), p.y*cos(a), p.z] ] ) [new_verts, vnf[1]]; vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT)); vnf2 = remap_vnf_vertices_around_axis(vnf, 20); difference() { vnf_polyhedron(vnf2); xcyl(h=200,r=20.1,$fn=144); } > On May 11, 2022, at 5:48 PM, Joe Weinpert <joe.weinpert@gmail.com> wrote: > > > ERROR: Parser error: syntax error in file flourishTest.scad, line 64 <> > > Happens when I place that funcion code into the program > > <2022-05-11_20-37-42.png> > > Also ... where is the variable "r" in (PI*r) originating? How do I call it? > x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ? > > > > > On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: > function remap_vnf_vertices_around_axis(vnf, axis=“X”) = > let( > new_verts = [ > for(p=vnf[0]) > let(a=coord*p*180/(PI*r)) > axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : > axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : > [p.y*sin(a), p.y*cos(a), p.z] > ] > ) [new_verts, vnf[1]]; > > -Revar > > >> On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: >> >> Actually yes, the triangulation is small enough that you can just re-map the vertices into a curve without splitting vertices. That should be much faster. >> >> - Revar >> >> >>> On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >>> >>> You could definitely shrink the VNF from something like that, which would probably help. You could decrease the number of points in your image. >>> >>> But also, the slow part of vnf_bend() is slicing the VNF into strips. The VNF you have there from the image I think is already in strips! The hard part has been done. So you could just remap the points yourself without going through vnf_bend(). That would be fast. >>> >>> On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>> No doubt. But it is always interesting to try! Here is what it was freezing on. >>> >>> <result2.png> >>> >>> It is something like this that would be nice to bend ... in this case a few degrees in the Y axis. >>> >>> But, anyway, just so you know, Revar, This was created from a data file that was created using your python script, heightfield(), and vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >>> >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com <mailto:revarbat@gmail.com>> wrote: >>> 420k vertices and 823k faces, bending with $fs=0.01… That is an excessive degree of detail for OpenSCAD, I’m afraid. >>> >>> - Revar >>> >>> >>>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>>> >>>> >>>> $fs=.01 >>>> >>>> After running for a couple of hours it came up with: >>>> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 <> >>>> WARNING: Bad range parameter in for statement: too many elements (2551818) in file <>Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 <> >>>> >>>> and then did not finish. >>>> >>>> Choked to death, I guess. >>>> >>>> >>>> >>>> >>>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu <mailto:avm4@cornell.edu>> wrote: >>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>> into strips (so that means line-plane intersections with every edge in >>>> your data) and then once that's done, it maps it to the cylinder, >>>> which is fairly fast in comparison. I have not done rigorous timing >>>> tests. I think time will mainly depend on the number of edges, so you >>>> could try using 1% of your faces and see how long it takes. The >>>> result will be garbage (a non-manifold partial result ) but it will >>>> give you some idea of time. Then you can try 2% and see what happens, >>>> 5%, etc. That will give you a way to predict how long your real >>>> problem will take. >>>> >>>> I think that you probably will need to find a way to simplify the >>>> problem, but the above exercise will tell you how much it needs to be >>>> simplified. >>>> >>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com>> wrote: >>>> > >>>> > >>>> > len( vnf[0] ) = 420204 >>>> > >>>> > len( vnf[1] ) = 823326 >>>> > >>>> > >>>> > If the length of the vnf array I am trying to bend is as large as what was echoed above, am I whistling past the graveyard to try and get this: >>>> > >>>> > >>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>> > >>>> > >>>> > to work? Machine just stops forever until I force openSCAD to close. >>>> > >>>> > >>>> > _______________________________________________ >>>> > OpenSCAD mailing list >>>> > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>>> _______________________________________________ >>>> OpenSCAD mailing list >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>>> _______________________________________________ >>>> OpenSCAD mailing list >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> >> > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
JW
Joe Weinpert
Thu, May 12, 2022 3:37 PM

Been playing with the remap_vnf_vertices_around_axis()

It is remarkable.  This is what I found so far after reading your comments
as well as testing the function:

  • The up() can be considered as the cylindrical wrapping radius i.e
    the radius to wrap it to.
  • The "r" parameter can be set to the value that is opposite of the
    axis used for wrapping.  In other words, if the object is 402 X and 1024 Y
    and you are wrapping around the Y axis then "r" should be set to 402.
  • The "bend_scale" parameter is tied to the up() function parameter
    in that it keeps the surface of the wrapped object matching the surface of
    the object before wrapping it.  Literally "bend_scale" should be the *"r"
    *parameter divided by the up() parameter.  What this does is to
    maintain the size and surface of the object being bent no matter how much
    it is being bent. For example:

up() = 402 and r = 402 then bend_scale = 1

up() = 201 and r = 402 then bend_scale = 2

up() = 804 and r = 402 then bend_scale = .5

[image: wrapping.png]

The* picArray.scad* from your* mg2scad.py* script on this was for a
402x1024 picture.

picX = len( picArray[0] );
picY = len( picArray );
picZ = 24;
wrap = picX;
bend = picX/wrap;

vnfArray = heightfield(
picArray/255*picZ,
size = [ picX, picY ],
bottom = 0,
anchor = BOTTOM
);

vnf1 = up( wrap, p = vnfArray );
vnf2 = remap_vnf_vertices_around_axis( vnf1, r = picX, bend_scale = bend,
axis = "Y" );
difference(){
vnf_polyhedron(vnf2);
cyl( l=picY, r=wrap+1, anchor=CENTER, orient=FRONT, $fn=128 );
}

function remap_vnf_vertices_around_axis( vnf, r, bend_scale=1, axis="X" ) =
let(
coord = axis=="X" ? BACK : RIGHT,
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr)bend_scale)
axis=="X"? [p.x, p.z
sin(a), p.z
cos(a)] :
axis=="Y"? [p.zsin(a), p.y, p.zcos(a)] :
[p.ysin(a), p.ycos(a), p.z]
]
) [new_verts, vnf[1]];

Took less than a minute to preview it.
Rendering took almost 9 minutes.

I did have a rendering error when the wrapping was more intense.

Rendering Polygon Mesh using CGAL...

ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL ERROR:
assertion violation! Expr: itl != it->second.end() File:
/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h
Line: 1152

I had a full-cylinder shape style wrap I was testing: "r" was 402, up()
was 68.9803 and bend_scale was 6.2382 Took a long time, however, for it
to throw the error.

On Thu, May 12, 2022 at 3:57 AM Revar Desmera revarbat@gmail.com wrote:

I should note that the r argument basically means that something that is
that far above the XY plane will be the same size wrapped around the
cylinder.  ie: If you raise something 20mm above the XY plane, then wrap it
with r=20, then the part of the un-bent shape that was originally at the XY
plane should be 1:1 sized at the surface of the 20mm radius cylinder.

The backside isn't bent quite right with the vertex-only warp, but after
differencing a cylinder away, I get this:

  • Revar

include <BOSL2/std.scad>
include <foof.scad>

function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") =
let(
coord = axis=="X" ? BACK : RIGHT,
new_verts = [
for(p=vnf[0])
let(a=coordp180/(PIr)bend_scale)
axis=="X"? [p.x, p.z
sin(a), p.z
cos(a)] :
axis=="Y"? [p.zsin(a), p.y, p.zcos(a)] :
[p.ysin(a), p.ycos(a), p.z]
]
) [new_verts, vnf[1]];

vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT));
vnf2 = remap_vnf_vertices_around_axis(vnf, 20);
difference() {
vnf_polyhedron(vnf2);
xcyl(h=200,r=20.1,$fn=144);
}

On May 11, 2022, at 5:48 PM, Joe Weinpert joe.weinpert@gmail.com wrote:

ERROR: Parser error: syntax error in file flourishTest.scad, line 64

Happens when I place that funcion code into the program

<2022-05-11_20-37-42.png>

Also ... where is the variable "r" in (PI*r) originating? How do I call it?

x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ?

On Wed, May 11, 2022 at 8:12 PM Revar Desmera revarbat@gmail.com wrote:

function remap_vnf_vertices_around_axis(vnf, axis=“X”) =

 let(

     new_verts = [

         for(p=vnf[0])

         let(a=coord*p*180/(PI*r))

         axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] :

         axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] :

                    [p.y*sin(a), p.y*cos(a), p.z]

     ]

 ) [new_verts, vnf[1]];

-Revar

On May 11, 2022, at 4:51 PM, Revar Desmera revarbat@gmail.com wrote:

Actually yes, the triangulation is small enough that you can just re-map
the vertices into a curve without splitting vertices.  That should be much
faster.

  • Revar

On May 11, 2022, at 4:48 PM, Adrian Mariano avm4@cornell.edu wrote:

You could definitely shrink the VNF from something like that, which would
probably help.  You could decrease the number of points in your image.

But also, the slow part of vnf_bend() is slicing the VNF into strips.
The VNF you have there from the image I think is already in strips!  The
hard part has been done.  So you could just remap the points yourself
without going through vnf_bend().  That would be fast.

On Wed, May 11, 2022 at 7:41 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

No doubt.  But it is always interesting to try! Here is what it was
freezing on.

<result2.png>

It is something like this that would be nice to bend ... in this case a
few degrees in the Y axis.

But, anyway, just so you know, Revar,  This was created from a data file
that was created using your python script, heightfield(), and
vnf_polyhedron().  Took less than a minute runtime.  Beautiful, indeed.

On Wed, May 11, 2022 at 7:18 PM Revar Desmera revarbat@gmail.com
wrote:

420k vertices and 823k faces, bending with $fs=0.01… That is an
excessive degree of detail for OpenSCAD, I’m afraid.

  • Revar

On May 11, 2022, at 4:09 PM, Joe Weinpert joe.weinpert@gmail.com
wrote:

$fs=.01

After running for a couple of hours it came up with:

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428

WARNING: Bad range parameter in for statement: too many elements
(2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650

and then did not finish.

Choked to death, I guess.

On Wed, May 11, 2022 at 4:27 PM Adrian Mariano avm4@cornell.edu
wrote:

I think vnf_bend is pretty slow.  It has to first cut up your input
into strips (so that means line-plane intersections with every edge in
your data) and then once that's done, it maps it to the cylinder,
which is fairly fast in comparison.  I have not done rigorous timing
tests.  I think time will mainly depend on the number of edges, so you
could try using 1% of your faces and see how long it takes.  The
result will be garbage (a non-manifold partial result ) but it will
give you some idea of time.  Then you can try 2% and see what happens,
5%, etc.  That will give you a way to predict how long your real
problem will take.

I think that you probably will need to find a way to simplify the
problem, but the above exercise will tell you how much it needs to be
simplified.

On Wed, May 11, 2022 at 2:24 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

len( vnf[0] ) = 420204

len( vnf[1] ) = 823326

If the length of the vnf array I am trying to bend is as large as

what was echoed above, am I whistling past the graveyard to try and get
this:

bent1 = vnf_bend( vnf, axis = "Y" );

to work? Machine just stops forever until I force openSCAD to close.


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


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


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


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


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

Been playing with the remap_vnf_vertices_around_axis() It is remarkable. This is what I found so far after reading your comments as well as testing the function: - The *up()* can be considered as the cylindrical wrapping radius i.e the radius to wrap it to. - The *"r"* parameter can be set to the value that is opposite of the axis used for wrapping. In other words, if the object is 402 X and 1024 Y and you are wrapping around the Y axis then *"r"* should be set to 402. - The *"bend_scale"* parameter is tied to the *up()* function parameter in that it keeps the surface of the wrapped object matching the surface of the object before wrapping it. Literally *"bend_scale"* should be the *"r" *parameter divided by the *up()* parameter. What this does is to maintain the size and surface of the object being bent no matter how much it is being bent. For example: up() = 402 and r = 402 then bend_scale = 1 up() = 201 and r = 402 then bend_scale = 2 up() = 804 and r = 402 then bend_scale = .5 [image: wrapping.png] The* picArray.scad* from your* mg2scad.py* script on this was for a 402x1024 picture. picX = len( picArray[0] ); picY = len( picArray ); picZ = 24; wrap = picX; bend = picX/wrap; vnfArray = heightfield( picArray/255*picZ, size = [ picX, picY ], bottom = 0, anchor = BOTTOM ); vnf1 = up( wrap, p = vnfArray ); vnf2 = remap_vnf_vertices_around_axis( vnf1, r = picX, bend_scale = bend, axis = "Y" ); difference(){ vnf_polyhedron(vnf2); cyl( l=picY, r=wrap+1, anchor=CENTER, orient=FRONT, $fn=128 ); } function remap_vnf_vertices_around_axis( vnf, r, bend_scale=1, axis="X" ) = let( coord = axis=="X" ? BACK : RIGHT, new_verts = [ for(p=vnf[0]) let(a=coord*p*180/(PI*r)*bend_scale) axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : [p.y*sin(a), p.y*cos(a), p.z] ] ) [new_verts, vnf[1]]; Took less than a minute to preview it. Rendering took almost 9 minutes. I did have a rendering error when the wrapping was more intense. Rendering Polygon Mesh using CGAL... ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL ERROR: assertion violation! Expr: itl != it->second.end() File: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h Line: 1152 I had a full-cylinder shape style wrap I was testing: *"r"* was 402, *up()* was 68.9803 and *bend_scale* was 6.2382 Took a long time, however, for it to throw the error. On Thu, May 12, 2022 at 3:57 AM Revar Desmera <revarbat@gmail.com> wrote: > I should note that the `r` argument basically means that something that is > that far above the XY plane will be the same size wrapped around the > cylinder. ie: If you raise something 20mm above the XY plane, then wrap it > with r=20, then the part of the un-bent shape that was originally at the XY > plane should be 1:1 sized at the surface of the 20mm radius cylinder. > > The backside isn't bent quite right with the vertex-only warp, but after > differencing a cylinder away, I get this: > > - Revar > > > > > include <BOSL2/std.scad> > include <foof.scad> > > function remap_vnf_vertices_around_axis(vnf, r, bend_scale=1, axis="X") = > let( > coord = axis=="X" ? BACK : RIGHT, > new_verts = [ > for(p=vnf[0]) > let(a=coord*p*180/(PI*r)*bend_scale) > axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : > axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : > [p.y*sin(a), p.y*cos(a), p.z] > ] > ) [new_verts, vnf[1]]; > > vnf = up(20, p=heightfield(foof/255.0*2, bottom=0, anchor=BOT)); > vnf2 = remap_vnf_vertices_around_axis(vnf, 20); > difference() { > vnf_polyhedron(vnf2); > xcyl(h=200,r=20.1,$fn=144); > } > > > > On May 11, 2022, at 5:48 PM, Joe Weinpert <joe.weinpert@gmail.com> wrote: > > > ERROR: Parser error: syntax error in file flourishTest.scad, line 64 > > Happens when I place that funcion code into the program > > <2022-05-11_20-37-42.png> > > Also ... where is the variable "r" in (PI*r) originating? How do I call it? > > x = remap_vnf_vertices-around_axis( vnfArray, axis="Y" ) ? > > > > > On Wed, May 11, 2022 at 8:12 PM Revar Desmera <revarbat@gmail.com> wrote: > >> function remap_vnf_vertices_around_axis(vnf, axis=“X”) = >> >> let( >> >> new_verts = [ >> >> for(p=vnf[0]) >> >> let(a=coord*p*180/(PI*r)) >> >> axis=="X"? [p.x, p.z*sin(a), p.z*cos(a)] : >> >> axis=="Y"? [p.z*sin(a), p.y, p.z*cos(a)] : >> >> [p.y*sin(a), p.y*cos(a), p.z] >> >> ] >> >> ) [new_verts, vnf[1]]; >> >> >> -Revar >> >> >> On May 11, 2022, at 4:51 PM, Revar Desmera <revarbat@gmail.com> wrote: >> >> Actually yes, the triangulation is small enough that you can just re-map >> the vertices into a curve without splitting vertices. That should be much >> faster. >> >> - Revar >> >> >> On May 11, 2022, at 4:48 PM, Adrian Mariano <avm4@cornell.edu> wrote: >> >> You could definitely shrink the VNF from something like that, which would >> probably help. You could decrease the number of points in your image. >> >> But also, the slow part of vnf_bend() is slicing the VNF into strips. >> The VNF you have there from the image I think is already in strips! The >> hard part has been done. So you could just remap the points yourself >> without going through vnf_bend(). That would be fast. >> >> On Wed, May 11, 2022 at 7:41 PM Joe Weinpert <joe.weinpert@gmail.com> >> wrote: >> >>> No doubt. But it is always interesting to try! Here is what it was >>> freezing on. >>> >>> <result2.png> >>> >>> It is something like this that would be nice to bend ... in this case a >>> few degrees in the Y axis. >>> >>> But, anyway, just so you know, Revar, This was created from a data file >>> that was created using your python script, heightfield(), and >>> vnf_polyhedron(). Took less than a minute runtime. Beautiful, indeed. >>> >>> >>> >>> >>> >>> On Wed, May 11, 2022 at 7:18 PM Revar Desmera <revarbat@gmail.com> >>> wrote: >>> >>>> 420k vertices and 823k faces, bending with $fs=0.01… That is an >>>> excessive degree of detail for OpenSCAD, I’m afraid. >>>> >>>> - Revar >>>> >>>> >>>> On May 11, 2022, at 4:09 PM, Joe Weinpert <joe.weinpert@gmail.com> >>>> wrote: >>>> >>>> >>>> $fs=.01 >>>> >>>> After running for a couple of hours it came up with: >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/math.scad, line 57 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 647 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 648 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/lists.scad, line 428 >>>> >>>> WARNING: Bad range parameter in for statement: too many elements >>>> (2551818) in file Documents/OpenSCAD/libraries/BOSL2/vnf.scad, line 650 >>>> >>>> >>>> and then did not finish. >>>> >>>> Choked to death, I guess. >>>> >>>> >>>> >>>> >>>> On Wed, May 11, 2022 at 4:27 PM Adrian Mariano <avm4@cornell.edu> >>>> wrote: >>>> >>>>> I think vnf_bend is pretty slow. It has to first cut up your input >>>>> into strips (so that means line-plane intersections with every edge in >>>>> your data) and then once that's done, it maps it to the cylinder, >>>>> which is fairly fast in comparison. I have not done rigorous timing >>>>> tests. I think time will mainly depend on the number of edges, so you >>>>> could try using 1% of your faces and see how long it takes. The >>>>> result will be garbage (a non-manifold partial result ) but it will >>>>> give you some idea of time. Then you can try 2% and see what happens, >>>>> 5%, etc. That will give you a way to predict how long your real >>>>> problem will take. >>>>> >>>>> I think that you probably will need to find a way to simplify the >>>>> problem, but the above exercise will tell you how much it needs to be >>>>> simplified. >>>>> >>>>> On Wed, May 11, 2022 at 2:24 PM Joe Weinpert <joe.weinpert@gmail.com> >>>>> wrote: >>>>> > >>>>> > >>>>> > len( vnf[0] ) = 420204 >>>>> > >>>>> > len( vnf[1] ) = 823326 >>>>> > >>>>> > >>>>> > If the length of the vnf array I am trying to bend is as large as >>>>> what was echoed above, am I whistling past the graveyard to try and get >>>>> this: >>>>> > >>>>> > >>>>> > bent1 = vnf_bend( vnf, axis = "Y" ); >>>>> > >>>>> > >>>>> > to work? Machine just stops forever until I force openSCAD to close. >>>>> > >>>>> > >>>>> > _______________________________________________ >>>>> > 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 >>>>> >>>> _______________________________________________ >>>> 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 >>>> >>> _______________________________________________ >>> 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 >> >> >> >> _______________________________________________ >> 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 > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
RD
Revar Desmera
Thu, May 12, 2022 3:55 PM

On May 12, 2022, at 8:37 AM, Joe Weinpert joe.weinpert@gmail.com wrote:

I did have a rendering error when the wrapping was more intense.

Rendering Polygon Mesh using CGAL...
ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL ERROR: assertion violation! Expr: itl != it->second.end() File: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h Line: 1152

I had a full-cylinder shape style wrap I was testing: "r" was 402, up() was 68.9803 and bend_scale was 6.2382 Took a long time, however, for it to throw the error.

Yeah, wrapping around the cylinder fully will induce self intersections in the VNF that will cause it to fail in render. You can only wrap slightly less than fully around the cylinder.

-Revar

> On May 12, 2022, at 8:37 AM, Joe Weinpert <joe.weinpert@gmail.com> wrote: > > I did have a rendering error when the wrapping was more intense. > > Rendering Polygon Mesh using CGAL... > ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL ERROR: assertion violation! Expr: itl != it->second.end() File: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h Line: 1152 > > I had a full-cylinder shape style wrap I was testing: "r" was 402, up() was 68.9803 and bend_scale was 6.2382 Took a long time, however, for it to throw the error. Yeah, wrapping around the cylinder fully will induce self intersections in the VNF that will cause it to fail in render. You can only wrap slightly less than fully around the cylinder. -Revar
JW
Joe Weinpert
Thu, May 12, 2022 8:40 PM

Been running a lot of different pics for testing.  It is all working great.

This really opens a huge door for using *openSCAD *and *BOSL2 *to easily
render intricately wrapped designs that are needed in woodworking.  Hope
that you place this new feature into the BOSL2.library.  Until then, I will
continue using the python script and bending function you designed and
developed.  And will post any other question I run across.

[image: octoBent.png]

On Thu, May 12, 2022 at 11:56 AM Revar Desmera revarbat@gmail.com wrote:

On May 12, 2022, at 8:37 AM, Joe Weinpert joe.weinpert@gmail.com wrote:

I did have a rendering error when the wrapping was more intense.

Rendering Polygon Mesh using CGAL...

ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL
ERROR: assertion violation! Expr: itl != it->second.end() File:
/mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h
Line: 1152

I had a full-cylinder shape style wrap I was testing: "r" was 402,
up() was 68.9803 and bend_scale was 6.2382 Took a long time, however,
for it to throw the error.

Yeah, wrapping around the cylinder fully will induce self intersections in
the VNF that will cause it to fail in render. You can only wrap slightly
less than fully around the cylinder.

-Revar


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

Been running a lot of different pics for testing. It is all working great. This really opens a huge door for using *openSCAD *and *BOSL2 *to easily render intricately wrapped designs that are needed in woodworking. Hope that you place this new feature into the BOSL2.library. Until then, I will continue using the python script and bending function you designed and developed. And will post any other question I run across. [image: octoBent.png] On Thu, May 12, 2022 at 11:56 AM Revar Desmera <revarbat@gmail.com> wrote: > > On May 12, 2022, at 8:37 AM, Joe Weinpert <joe.weinpert@gmail.com> wrote: > > I did have a rendering error when the wrapping was more intense. > > Rendering Polygon Mesh using CGAL... > > ERROR: CGAL error in CGALUtils::applyBinaryOperator difference: CGAL > ERROR: assertion violation! Expr: itl != it->second.end() File: > /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_external_structure.h > Line: 1152 > > > I had a full-cylinder shape style wrap I was testing: *"r"* was 402, > *up()* was 68.9803 and *bend_scale* was 6.2382 Took a long time, however, > for it to throw the error. > > > Yeah, wrapping around the cylinder fully will induce self intersections in > the VNF that will cause it to fail in render. You can only wrap slightly > less than fully around the cylinder. > > -Revar > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >