discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Simple optimisation

CS
Colin Smart
Sun, Aug 21, 2016 5:45 PM

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

Which takes an object, rotates around x and y axes and creates the union of all three objects.

I would like to think that there was some way of “storing” the original object and performing a transform on each copy, but things may not work like that.

If there is a way of “storing” and reusing the object, what is it? If there isn’t a way, it would be good to know to stop me wasting time trying to find it.

Thanks,

Colin

I have some code: dome (100,8); rotate ([90,0,0]) dome (100,8); rotate ([0,90,0]) dome (100,8); Which takes an object, rotates around x and y axes and creates the union of all three objects. I would like to think that there was some way of “storing” the original object and performing a transform on each copy, but things may not work like that. If there is a way of “storing” and reusing the object, what is it? If there isn’t a way, it would be good to know to stop me wasting time trying to find it. Thanks, Colin
MK
Marius Kintel
Sun, Aug 21, 2016 5:54 PM

If the purpose of “storing” and “reusing” the object is to save time and memory generating it, you’re already doing the correct thing:
OpenSCAD will implicitly cache all geometry, so there is no penalty by using it multiple times. The cache is based on a normalized source code representation so any code block with equivalent source code will be reused automatically, even if it spans a whole hierarchy of objects.

-Marius

On Aug 21, 2016, at 13:45, Colin Smart colin@tweedside.co.uk wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

Which takes an object, rotates around x and y axes and creates the union of all three objects.

I would like to think that there was some way of “storing” the original object and performing a transform on each copy, but things may not work like that.

If there is a way of “storing” and reusing the object, what is it? If there isn’t a way, it would be good to know to stop me wasting time trying to find it.

Thanks,

Colin


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

If the purpose of “storing” and “reusing” the object is to save time and memory generating it, you’re already doing the correct thing: OpenSCAD will implicitly cache all geometry, so there is no penalty by using it multiple times. The cache is based on a normalized source code representation so any code block with equivalent source code will be reused automatically, even if it spans a whole hierarchy of objects. -Marius > On Aug 21, 2016, at 13:45, Colin Smart <colin@tweedside.co.uk> wrote: > > I have some code: > > dome (100,8); > rotate ([90,0,0]) dome (100,8); > rotate ([0,90,0]) dome (100,8); > > Which takes an object, rotates around x and y axes and creates the union of all three objects. > > I would like to think that there was some way of “storing” the original object and performing a transform on each copy, but things may not work like that. > > If there is a way of “storing” and reusing the object, what is it? If there isn’t a way, it would be good to know to stop me wasting time trying to find it. > > Thanks, > > Colin > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
RP
Ronaldo Persiano
Sun, Aug 21, 2016 8:23 PM

Kintel,

Even very big/complex objects are cached? Object renderization is also
cached?

Colin,

If you don't want to spend time rebuilding complex unchanged parts, may be
helpful to save them in a stl file and importing it as needed.

2016-08-21 14:54 GMT-03:00 Marius Kintel marius@kintel.net:

If the purpose of “storing” and “reusing” the object is to save time and
memory generating it, you’re already doing the correct thing:
OpenSCAD will implicitly cache all geometry, so there is no penalty by
using it multiple times. The cache is based on a normalized source code
representation so any code block with equivalent source code will be reused
automatically, even if it spans a whole hierarchy of objects.

-Marius

On Aug 21, 2016, at 13:45, Colin Smart colin@tweedside.co.uk wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

Which takes an object, rotates around x and y axes and creates the union

of all three objects.

I would like to think that there was some way of “storing” the original

object and performing a transform on each copy, but things may not work
like that.

If there is a way of “storing” and reusing the object, what is it? If

there isn’t a way, it would be good to know to stop me wasting time trying
to find it.

Kintel, Even very big/complex objects are cached? Object renderization is also cached? Colin, If you don't want to spend time rebuilding complex unchanged parts, may be helpful to save them in a stl file and importing it as needed. 2016-08-21 14:54 GMT-03:00 Marius Kintel <marius@kintel.net>: > If the purpose of “storing” and “reusing” the object is to save time and > memory generating it, you’re already doing the correct thing: > OpenSCAD will implicitly cache all geometry, so there is no penalty by > using it multiple times. The cache is based on a normalized source code > representation so any code block with equivalent source code will be reused > automatically, even if it spans a whole hierarchy of objects. > > -Marius > > > On Aug 21, 2016, at 13:45, Colin Smart <colin@tweedside.co.uk> wrote: > > > > I have some code: > > > > dome (100,8); > > rotate ([90,0,0]) dome (100,8); > > rotate ([0,90,0]) dome (100,8); > > > > Which takes an object, rotates around x and y axes and creates the union > of all three objects. > > > > I would like to think that there was some way of “storing” the original > object and performing a transform on each copy, but things may not work > like that. > > > > If there is a way of “storing” and reusing the object, what is it? If > there isn’t a way, it would be good to know to stop me wasting time trying > to find it. > > > > Thanks, > > > > Colin > > _______________________________________________ > > OpenSCAD mailing list > > Discuss@lists.openscad.org > > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
MK
Marius Kintel
Sun, Aug 21, 2016 8:27 PM

On Aug 21, 2016, at 16:23, Ronaldo Persiano rcmpersiano@gmail.com wrote:

Even very big/complex objects are cached? Object renderization is also cached?

Big objects are cached, as long as there is enough memory.
Geometry evaluation is cached, e.g. results of time-consuming CSG operations.

-Marius

On Aug 21, 2016, at 16:23, Ronaldo Persiano <rcmpersiano@gmail.com> wrote: > > Even very big/complex objects are cached? Object renderization is also cached? > Big objects are cached, as long as there is enough memory. Geometry evaluation is cached, e.g. results of time-consuming CSG operations. -Marius
RK
Roland Koebler
Thu, Aug 25, 2016 5:58 PM

Hi,

On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

You can try:

module dome2(a,b)
{
render()
dome(a,b);
}
dome2(100,8);
rotate([90,0,0]) dome2(100,8);
rotate([0,90,0]) dome2(100,8);

Does this help?

I often use render() to speed-up viewing complex objects: It takes longer
to create the 1st preview, but viewing/rotating it is much faster.

Best regards,
Roland

PS: In fact, I usually use:

render_color_enable = true;
module render_color(c)
{
if(render_color_enable) {
color(c)
render()
children();
}
else {
color(c)
children();
}
}

And add render_color(...) to many of my objects.

Hi, On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote: > I have some code: > > dome (100,8); > rotate ([90,0,0]) dome (100,8); > rotate ([0,90,0]) dome (100,8); You can try: module dome2(a,b) { render() dome(a,b); } dome2(100,8); rotate([90,0,0]) dome2(100,8); rotate([0,90,0]) dome2(100,8); Does this help? I often use render() to speed-up viewing complex objects: It takes longer to create the 1st preview, but viewing/rotating it is much faster. Best regards, Roland PS: In fact, I usually use: render_color_enable = true; module render_color(c) { if(render_color_enable) { color(c) render() children(); } else { color(c) children(); } } And add render_color(...) to many of my objects.
O
OzAtMichael
Fri, Aug 26, 2016 12:15 AM

Testing... sorry to hijack, but testing mailing list/forum, as this thread didn't make it there.

-----Original Message-----
From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Roland Koebler
Sent: Friday, 26 August 2016 3:58 AM
To: discuss@lists.openscad.org
Subject: Re: [OpenSCAD] Simple optimisation

Hi,

On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

You can try:

module dome2(a,b)
{
render()
dome(a,b);
}
dome2(100,8);
rotate([90,0,0]) dome2(100,8);
rotate([0,90,0]) dome2(100,8);

Does this help?

I often use render() to speed-up viewing complex objects: It takes longer
to create the 1st preview, but viewing/rotating it is much faster.

Best regards,
Roland

PS: In fact, I usually use:

render_color_enable = true;
module render_color(c)
{
if(render_color_enable) {
color(c)
render()
children();
}
else {
color(c)
children();
}
}

And add render_color(...) to many of my objects.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: 08/25/16

Testing... sorry to hijack, but testing mailing list/forum, as this thread didn't make it there. > -----Original Message----- > From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Roland Koebler > Sent: Friday, 26 August 2016 3:58 AM > To: discuss@lists.openscad.org > Subject: Re: [OpenSCAD] Simple optimisation > > Hi, > > On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote: > > I have some code: > > > > dome (100,8); > > rotate ([90,0,0]) dome (100,8); > > rotate ([0,90,0]) dome (100,8); > > You can try: > > module dome2(a,b) > { > render() > dome(a,b); > } > dome2(100,8); > rotate([90,0,0]) dome2(100,8); > rotate([0,90,0]) dome2(100,8); > > Does this help? > > > I often use render() to speed-up viewing complex objects: It takes longer > to create the 1st preview, but viewing/rotating it is much faster. > > > Best regards, > Roland > > > > PS: In fact, I usually use: > > render_color_enable = true; > module render_color(c) > { > if(render_color_enable) { > color(c) > render() > children(); > } > else { > color(c) > children(); > } > } > > And add render_color(...) to many of my objects. > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > > ----- > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: 08/25/16
RP
Ronaldo Persiano
Fri, Aug 26, 2016 2:15 AM

Michael, it seems the issue is with the archive. I have received messages
from the thread "Living Hinges" but it doesn't appear in the archive.

2016-08-25 21:15 GMT-03:00 OzAtMichael oz.at.michael@gmail.com:

Testing... sorry to hijack, but testing mailing list/forum, as this thread
didn't make it there.

-----Original Message-----
From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of

Roland Koebler

Sent: Friday, 26 August 2016 3:58 AM
To: discuss@lists.openscad.org
Subject: Re: [OpenSCAD] Simple optimisation

Hi,

On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

You can try:

module dome2(a,b)
{
render()
dome(a,b);
}
dome2(100,8);
rotate([90,0,0]) dome2(100,8);
rotate([0,90,0]) dome2(100,8);

Does this help?

I often use render() to speed-up viewing complex objects: It takes longer
to create the 1st preview, but viewing/rotating it is much faster.

Best regards,
Roland

PS: In fact, I usually use:

render_color_enable = true;
module render_color(c)
{
if(render_color_enable) {
color(c)
render()
children();
}
else {
color(c)
children();
}
}

And add render_color(...) to many of my objects.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date:

Michael, it seems the issue is with the archive. I have received messages from the thread "Living Hinges" but it doesn't appear in the archive. 2016-08-25 21:15 GMT-03:00 OzAtMichael <oz.at.michael@gmail.com>: > Testing... sorry to hijack, but testing mailing list/forum, as this thread > didn't make it there. > > > -----Original Message----- > > From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of > Roland Koebler > > Sent: Friday, 26 August 2016 3:58 AM > > To: discuss@lists.openscad.org > > Subject: Re: [OpenSCAD] Simple optimisation > > > > Hi, > > > > On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote: > > > I have some code: > > > > > > dome (100,8); > > > rotate ([90,0,0]) dome (100,8); > > > rotate ([0,90,0]) dome (100,8); > > > > You can try: > > > > module dome2(a,b) > > { > > render() > > dome(a,b); > > } > > dome2(100,8); > > rotate([90,0,0]) dome2(100,8); > > rotate([0,90,0]) dome2(100,8); > > > > Does this help? > > > > > > I often use render() to speed-up viewing complex objects: It takes longer > > to create the 1st preview, but viewing/rotating it is much faster. > > > > > > Best regards, > > Roland > > > > > > > > PS: In fact, I usually use: > > > > render_color_enable = true; > > module render_color(c) > > { > > if(render_color_enable) { > > color(c) > > render() > > children(); > > } > > else { > > color(c) > > children(); > > } > > } > > > > And add render_color(...) to many of my objects. > > > > > > _______________________________________________ > > OpenSCAD mailing list > > Discuss@lists.openscad.org > > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > > > > > > ----- > > No virus found in this message. > > Checked by AVG - www.avg.com > > Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: > 08/25/16 > > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
AD
Ari Diacou
Mon, Aug 29, 2016 12:31 AM

The "living hinges" thread I started was sent from my email to the openscad
general discussion email address, if that has anything to do with anything.

On Thu, Aug 25, 2016 at 10:15 PM, Ronaldo Persiano rcmpersiano@gmail.com
wrote:

Michael, it seems the issue is with the archive. I have received messages
from the thread "Living Hinges" but it doesn't appear in the archive.

2016-08-25 21:15 GMT-03:00 OzAtMichael oz.at.michael@gmail.com:

Testing... sorry to hijack, but testing mailing list/forum, as this
thread didn't make it there.

-----Original Message-----
From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of

Roland Koebler

Sent: Friday, 26 August 2016 3:58 AM
To: discuss@lists.openscad.org
Subject: Re: [OpenSCAD] Simple optimisation

Hi,

On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

You can try:

module dome2(a,b)
{
render()
dome(a,b);
}
dome2(100,8);
rotate([90,0,0]) dome2(100,8);
rotate([0,90,0]) dome2(100,8);

Does this help?

I often use render() to speed-up viewing complex objects: It takes

longer

to create the 1st preview, but viewing/rotating it is much faster.

Best regards,
Roland

PS: In fact, I usually use:

render_color_enable = true;
module render_color(c)
{
if(render_color_enable) {
color(c)
render()
children();
}
else {
color(c)
children();
}
}

And add render_color(...) to many of my objects.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date:

The "living hinges" thread I started was sent from my email to the openscad general discussion email address, if that has anything to do with anything. On Thu, Aug 25, 2016 at 10:15 PM, Ronaldo Persiano <rcmpersiano@gmail.com> wrote: > Michael, it seems the issue is with the archive. I have received messages > from the thread "Living Hinges" but it doesn't appear in the archive. > > 2016-08-25 21:15 GMT-03:00 OzAtMichael <oz.at.michael@gmail.com>: > >> Testing... sorry to hijack, but testing mailing list/forum, as this >> thread didn't make it there. >> >> > -----Original Message----- >> > From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of >> Roland Koebler >> > Sent: Friday, 26 August 2016 3:58 AM >> > To: discuss@lists.openscad.org >> > Subject: Re: [OpenSCAD] Simple optimisation >> > >> > Hi, >> > >> > On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote: >> > > I have some code: >> > > >> > > dome (100,8); >> > > rotate ([90,0,0]) dome (100,8); >> > > rotate ([0,90,0]) dome (100,8); >> > >> > You can try: >> > >> > module dome2(a,b) >> > { >> > render() >> > dome(a,b); >> > } >> > dome2(100,8); >> > rotate([90,0,0]) dome2(100,8); >> > rotate([0,90,0]) dome2(100,8); >> > >> > Does this help? >> > >> > >> > I often use render() to speed-up viewing complex objects: It takes >> longer >> > to create the 1st preview, but viewing/rotating it is much faster. >> > >> > >> > Best regards, >> > Roland >> > >> > >> > >> > PS: In fact, I usually use: >> > >> > render_color_enable = true; >> > module render_color(c) >> > { >> > if(render_color_enable) { >> > color(c) >> > render() >> > children(); >> > } >> > else { >> > color(c) >> > children(); >> > } >> > } >> > >> > And add render_color(...) to many of my objects. >> > >> > >> > _______________________________________________ >> > OpenSCAD mailing list >> > Discuss@lists.openscad.org >> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > >> > >> > >> > ----- >> > No virus found in this message. >> > Checked by AVG - www.avg.com >> > Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: >> 08/25/16 >> >> >> >> _______________________________________________ >> OpenSCAD mailing list >> Discuss@lists.openscad.org >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > >
O
OzAtMichael
Mon, Aug 29, 2016 4:31 AM

This is how I think it works. The input to "Match to Thread?" is in backlog ATM.


From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Ari Diacou
Sent: Monday, 29 August 2016 10:31 AM
To: OpenSCAD general discussion
Subject: Re: [OpenSCAD] Simple optimisation

The "living hinges" thread I started was sent from my email to the openscad general discussion
email address, if that has anything to do with anything.

On Thu, Aug 25, 2016 at 10:15 PM, Ronaldo Persiano rcmpersiano@gmail.com wrote:

Michael, it seems the issue is with the archive. I have received messages from the thread "Living
Hinges" but it doesn't appear in the archive.

2016-08-25 21:15 GMT-03:00 OzAtMichael oz.at.michael@gmail.com:

Testing... sorry to hijack, but testing mailing list/forum, as this thread didn't make it there.

-----Original Message-----
From: Discuss [mailto:discuss-bounces@lists. mailto:discuss-bounces@lists.openscad.org

openscad.org] On Behalf Of Roland Koebler

Sent: Friday, 26 August 2016 3:58 AM
To: discuss@lists.openscad.org
Subject: Re: [OpenSCAD] Simple optimisation

Hi,

On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote:

I have some code:

dome (100,8);
rotate ([90,0,0]) dome (100,8);
rotate ([0,90,0]) dome (100,8);

You can try:

module dome2(a,b)
{
render()
dome(a,b);
}
dome2(100,8);
rotate([90,0,0]) dome2(100,8);
rotate([0,90,0]) dome2(100,8);

Does this help?

I often use render() to speed-up viewing complex objects: It takes longer
to create the 1st preview, but viewing/rotating it is much faster.

Best regards,
Roland

PS: In fact, I usually use:

render_color_enable = true;
module render_color(c)
{
if(render_color_enable) {
color(c)
render()
children();
}
else {
color(c)
children();
}
}

And add render_color(...) to many of my objects.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mail


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: 08/25/16

This is how I think it works. The input to "Match to Thread?" is in backlog ATM. _____ From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of Ari Diacou Sent: Monday, 29 August 2016 10:31 AM To: OpenSCAD general discussion Subject: Re: [OpenSCAD] Simple optimisation The "living hinges" thread I started was sent from my email to the openscad general discussion email address, if that has anything to do with anything. On Thu, Aug 25, 2016 at 10:15 PM, Ronaldo Persiano <rcmpersiano@gmail.com> wrote: Michael, it seems the issue is with the archive. I have received messages from the thread "Living Hinges" but it doesn't appear in the archive. 2016-08-25 21:15 GMT-03:00 OzAtMichael <oz.at.michael@gmail.com>: Testing... sorry to hijack, but testing mailing list/forum, as this thread didn't make it there. > -----Original Message----- > From: Discuss [mailto:discuss-bounces@lists. <mailto:discuss-bounces@lists.openscad.org> openscad.org] On Behalf Of Roland Koebler > Sent: Friday, 26 August 2016 3:58 AM > To: discuss@lists.openscad.org > Subject: Re: [OpenSCAD] Simple optimisation > > Hi, > > On Sun, Aug 21, 2016 at 06:45:16PM +0100, Colin Smart wrote: > > I have some code: > > > > dome (100,8); > > rotate ([90,0,0]) dome (100,8); > > rotate ([0,90,0]) dome (100,8); > > You can try: > > module dome2(a,b) > { > render() > dome(a,b); > } > dome2(100,8); > rotate([90,0,0]) dome2(100,8); > rotate([0,90,0]) dome2(100,8); > > Does this help? > > > I often use render() to speed-up viewing complex objects: It takes longer > to create the 1st preview, but viewing/rotating it is much faster. > > > Best regards, > Roland > > > > PS: In fact, I usually use: > > render_color_enable = true; > module render_color(c) > { > if(render_color_enable) { > color(c) > render() > children(); > } > else { > color(c) > children(); > } > } > > And add render_color(...) to many of my objects. > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mail <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org> man/listinfo/discuss_lists.openscad.org > > > > ----- > No virus found in this message. > Checked by AVG - www.avg.com > Version: 2016.0.7752 / Virus Database: 4647/12876 - Release Date: 08/25/16 _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mail <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org> man/listinfo/discuss_lists.openscad.org _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/ <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org> mailman/listinfo/discuss_lists.openscad.org