What's your opinion on these criticisms of Openscad?

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

What's your opinion on these criticisms of Openscad?

Qiang
I am in the process of choosing a CAD software to learn. I find a
review on openscad, and would like to see expert opinions on the following
criticism.
If these are ture, what is the impact on product design?

1 language does not have variables, for example. It has things
which look as if they should be variables, but they are in fact
evaluated statically at compile-time and are really just
constants. There is an "assign" function which can alter values
at run-time, but it does not give the full behavior of a
variable (you cannot use it to pass variable parameters, for
example). It's a bit like one of the (so called) "functional
programming language" beloved of mathematicians, but wrapped in
the syntax of a procedural programming language without even
the (dubious, in my opinion) clarity of a real functional
programming language.

2 Openscad does not really do CSG. It is a front-end for either
of two "rendering" (using the term loosely) libraries: OpenCSG
and GCAL. OpenCSG is a splendidly tricky program which appears to
do CSG without actually ever doing the calculations for the
geometry. As a display engine, OpenCSG is brilliant. But there's
more to CAD than display. GCAL is indeed a library of
computational graphics algorithms which can do the geometry "for
real." But OpenSCAD uses CGAL just to generate
STL (stereolithography) output files. There is no way to get at
the geometry calculated by GCAL within the OpenSCAD model.  He
then gives an example that openscad can't find the intersection
point of 3 planes.

3 OpenSCAD lacks the powerful capabilities of local
coordinate systems.

The link to the review is here
http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

Thank you for your help!



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

nophead
I think the simple answer is none of those features are necessary to describe a 3D object, so for those that think logically and understand high school maths and geometry there are no limits to what you can create with OpenScad. For people that think visually conventional 3D CAD is probably better.

On 17 September 2015 at 17:04, Qiang <[hidden email]> wrote:
I am in the process of choosing a CAD software to learn. I find a
review on openscad, and would like to see expert opinions on the following
criticism.
If these are ture, what is the impact on product design?

1 language does not have variables, for example. It has things
which look as if they should be variables, but they are in fact
evaluated statically at compile-time and are really just
constants. There is an "assign" function which can alter values
at run-time, but it does not give the full behavior of a
variable (you cannot use it to pass variable parameters, for
example). It's a bit like one of the (so called) "functional
programming language" beloved of mathematicians, but wrapped in
the syntax of a procedural programming language without even
the (dubious, in my opinion) clarity of a real functional
programming language.

2 Openscad does not really do CSG. It is a front-end for either
of two "rendering" (using the term loosely) libraries: OpenCSG
and GCAL. OpenCSG is a splendidly tricky program which appears to
do CSG without actually ever doing the calculations for the
geometry. As a display engine, OpenCSG is brilliant. But there's
more to CAD than display. GCAL is indeed a library of
computational graphics algorithms which can do the geometry "for
real." But OpenSCAD uses CGAL just to generate
STL (stereolithography) output files. There is no way to get at
the geometry calculated by GCAL within the OpenSCAD model.  He
then gives an example that openscad can't find the intersection
point of 3 planes.

3 OpenSCAD lacks the powerful capabilities of local
coordinate systems.

The link to the review is here
http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

Thank you for your help!



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

kintel
Administrator
In reply to this post by Qiang
On Sep 17, 2015, at 12:04 PM, Qiang <[hidden email]> wrote:

> 1 language does not have variables

OpenSCAD has immutable values, which doesn’t stop you from doing anything in terms of programming. It just tends to confuse programmers who have only been exposed to procedural languages. Some people call this "iterative programmers disease”.
If you’re confused by functional programming, you can use one of the packages generating OpenSCAD code using other programming languages (python, ruby, C etc.).

> 2 Openscad does not really do CSG.

As opposed to his beliefs, CGAL doesn’t do CSG in the way he thinks either; they just do meshes.
Doing a real NURBS BRep-style CSG engine would be cool though. Still waiting for a good Open Source CAD kernel who can do that :)

> 3 OpenSCAD lacks the powerful capabilities of local coordinate systems.
>
No idea what that means; I’m not familiar with Varkon.

 -Marius


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

runsun
In reply to this post by Qiang
review wrote
 review:
In a programmatic system such as Varkon, if you have two entities which intersect and you want to position a third entity at that intersection, you just do it. There are routines in Varkon which take two entities and return their intersection in a form suitable for futher use. In OpenSCAD this is not possible. It isn't just that they haven't implemented the functions yet; it's not possible given the underlying system. It never will be possible. OpenSCAD itslef never calculates the geometry of the solid constructions, and has no conception of what an intersection might be.
OpenSCAD has two ways to create shapes, one is the commonly used primary shape modules like cube(), cylinder(), etc. The other is polyhedron in which you can define points of your choice.

It's true that OpenSCAD doesn't calc something like intersection using the primary shapes modules, but you can always achieve this with polyhedron. In my code, I'm doing the intersection all the time, line-line, line-plane, plane-plane ... etc. I believe it's won't be that difficult to find intersection of object.
$ Runsun Pan, PhD
$ libs: scadx, doctest, faces(git), offline doc(git), runscad.py(2,git), editor of choice: CudaText ( OpenSCAD lexer); $ Tips; $ Snippets
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

runsun
In reply to this post by kintel
kintel wrote
> 3 OpenSCAD lacks the powerful capabilities of local coordinate systems.
>
No idea what that means; I’m not familiar with Varkon.
All OpenSCAD shapes start with O=[0,0,0], with the x,y,z in the [1,0,0], [0,1,0], [0,0,1] directions, resp. That's the only one GLOBAL coordinate system we have. If we want to make a shape on some point P, we make it on O first, then move it to P.

A local coordinate system is a coordinate system right on P, such that the obj can be made directly on P.

This sound redundent if O => P is just a parallel translation. But often cases are that it requires rotations as well. So in many .scad practices, we see users in struggle trying to make the rotation/translation right.

I personally think that this criticism has it's point. In fact, I create my polyhedron lib entirely in local coordiate system. In my lib, given any 3 points in the space, users can make a shape on that.

This doesn't mean the OpenSCAD global coordinate system is at fault. In many many cases, a global system is much quicker and easier to handle, especially when users want is not complicated, and I believe this is the application that OpenSCAD is designed for. But if we go beyond some complication level, a local coordinate system will be very handed.
$ Runsun Pan, PhD
$ libs: scadx, doctest, faces(git), offline doc(git), runscad.py(2,git), editor of choice: CudaText ( OpenSCAD lexer); $ Tips; $ Snippets
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

Tom.Nally
In reply to this post by kintel
Say that you create a tall, slender cylinder in OpenScad, one whose height is perhaps 4 times larger than its diameter.  At the time of the cylinder's creation, the global axes and the cylinder's local axes will be identical, with the local z- and global-z axis lying along the longitudinal axis of the cylinder.

Now say that you rotate the cylinder 45 degrees about the global x-axis.  The global x-axis and the cylinder's local x-axis still remain the same after the rotation.  However, the cylinder's local z-axis will rotate along with the cylinder so that it remains aligned with the cylinder's longitudinal axis.  Likewise, the cylinder's local y-axis rotates, too.

You can see why this kind of a feature might be useful (not that I'm arguing for it).  There are some occasions when a designer might want to translate or rotate an object relative the object's local axes rather than the global axes.  For example, if the slender cylinder were a bolt instead, and if the bolt was rotated 45 degrees about the global x-axis, and if you wanted to prepare an animation where the bolt tightens, then you would want to rotate the bolt about its longitudinal axis, which would be its local z-axis.

I suspect that the mathematics for tracking and displaying an object's local axes would be very complex.

In my business (structural engineering) most structural analysis software packages will recognize that each structural member has its own set of local axes, in addition to the global axes that tend to govern for the entire structure.

> 3 OpenSCAD lacks the powerful capabilities of local coordinate systems.
>
No idea what that means; I'm not familiar with Varkon.

 -Marius


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

G. Wade Johnson
In reply to this post by Qiang
That review is relatively amusing.

A lot of the complaints are the same ones I've seen in the past from
programmers who only know one language looking at a language they are
unfamiliar with. "See it's not a real language, it doesn't have this
one feature that I like in the form that I like it."<shrug/>

The variables in OpenSCAD could be called "constants" or "immutable
variables". They cannot change over time, because OpenSCAD models a
physical object...time is not a factor.

On Thu, 17 Sep 2015 16:04:00 +0000 (UTC)
Qiang <[hidden email]> wrote:

> I am in the process of choosing a CAD software to learn. I find a
> review on openscad, and would like to see expert opinions on the
> following criticism.
> If these are ture, what is the impact on product design?
>
> 1 language does not have variables, for example. It has things
> which look as if they should be variables, but they are in fact
> evaluated statically at compile-time and are really just
> constants. There is an "assign" function which can alter values
> at run-time, but it does not give the full behavior of a
> variable (you cannot use it to pass variable parameters, for
> example). It's a bit like one of the (so called) "functional
> programming language" beloved of mathematicians, but wrapped in
> the syntax of a procedural programming language without even
> the (dubious, in my opinion) clarity of a real functional
> programming language.

Note that this is his opinion. Many of us have done functional
programming in more procedural languages for years.

> 2 Openscad does not really do CSG. It is a front-end for either
> of two "rendering" (using the term loosely) libraries: OpenCSG
> and GCAL. OpenCSG is a splendidly tricky program which appears to
> do CSG without actually ever doing the calculations for the
> geometry. As a display engine, OpenCSG is brilliant. But there's
> more to CAD than display. GCAL is indeed a library of
> computational graphics algorithms which can do the geometry "for
> real." But OpenSCAD uses CGAL just to generate
> STL (stereolithography) output files. There is no way to get at
> the geometry calculated by GCAL within the OpenSCAD model.  He
> then gives an example that openscad can't find the intersection
> point of 3 planes.

It could be fair to point out that OpenSCAD does not deal with infinite
objects like planes. The 0-dimensional point at the intersection of 2
planes is kind-of outside the scope of a tool for generating 3D models
for fabrication. It's kind of like making the argument that all
programming languages are bad, because they can't properly deal with
infinite precision real numbers.

However, as a practical point, I can easily find the intersection
volume of 3 thin planes.

> 3 OpenSCAD lacks the powerful capabilities of local
> coordinate systems.

That's a fair point. I haven't actually needed it in my designs. But, I
could pretty easily simulate it in my modules.

> The link to the review is here
> http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

I would have really loved to see his example code, (it seems to be
giving a 404 at the moment). From his description, he seems to be
mistaking his inexperience with the tool for limitations of the tool.

G. Wade

> Thank you for your help!
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


--
A tautology is a thing which is tautological.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

Peter Falke
Have a look at some of the (video) tutorials to get an impression of Openscad:

https://www.youtube.com/watch?v=XNghpq9sKRc

http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial

(I just googled these, ther are more around.)

All things on http://www.thingiverse.com/ that use the costumiser are using Openscad, and a lot of other model are made with Openscad, there, as well.

2015-09-17 19:39 GMT+02:00 G. Wade Johnson <[hidden email]>:
That review is relatively amusing.

A lot of the complaints are the same ones I've seen in the past from
programmers who only know one language looking at a language they are
unfamiliar with. "See it's not a real language, it doesn't have this
one feature that I like in the form that I like it."<shrug/>

The variables in OpenSCAD could be called "constants" or "immutable
variables". They cannot change over time, because OpenSCAD models a
physical object...time is not a factor.

On Thu, 17 Sep 2015 16:04:00 +0000 (UTC)
Qiang <[hidden email]> wrote:

> I am in the process of choosing a CAD software to learn. I find a
> review on openscad, and would like to see expert opinions on the
> following criticism.
> If these are ture, what is the impact on product design?
>
> 1 language does not have variables, for example. It has things
> which look as if they should be variables, but they are in fact
> evaluated statically at compile-time and are really just
> constants. There is an "assign" function which can alter values
> at run-time, but it does not give the full behavior of a
> variable (you cannot use it to pass variable parameters, for
> example). It's a bit like one of the (so called) "functional
> programming language" beloved of mathematicians, but wrapped in
> the syntax of a procedural programming language without even
> the (dubious, in my opinion) clarity of a real functional
> programming language.

Note that this is his opinion. Many of us have done functional
programming in more procedural languages for years.

> 2 Openscad does not really do CSG. It is a front-end for either
> of two "rendering" (using the term loosely) libraries: OpenCSG
> and GCAL. OpenCSG is a splendidly tricky program which appears to
> do CSG without actually ever doing the calculations for the
> geometry. As a display engine, OpenCSG is brilliant. But there's
> more to CAD than display. GCAL is indeed a library of
> computational graphics algorithms which can do the geometry "for
> real." But OpenSCAD uses CGAL just to generate
> STL (stereolithography) output files. There is no way to get at
> the geometry calculated by GCAL within the OpenSCAD model.  He
> then gives an example that openscad can't find the intersection
> point of 3 planes.

It could be fair to point out that OpenSCAD does not deal with infinite
objects like planes. The 0-dimensional point at the intersection of 2
planes is kind-of outside the scope of a tool for generating 3D models
for fabrication. It's kind of like making the argument that all
programming languages are bad, because they can't properly deal with
infinite precision real numbers.

However, as a practical point, I can easily find the intersection
volume of 3 thin planes.

> 3 OpenSCAD lacks the powerful capabilities of local
> coordinate systems.

That's a fair point. I haven't actually needed it in my designs. But, I
could pretty easily simulate it in my modules.

> The link to the review is here
> http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

I would have really loved to see his example code, (it seems to be
giving a 404 at the moment). From his description, he seems to be
mistaking his inexperience with the tool for limitations of the tool.

G. Wade

> Thank you for your help!
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


--
A tautology is a thing which is tautological.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

nophead
In reply to this post by G. Wade Johnson
Whenever you use translate and rotate you create a local coordinate system underneath them in the tree. If you have a cylinder at an arbitrary angle and position and you want to put say a sphere on top then you simply translate the sphere by the height of the cylinder at the same tree level as the cylinder. If that is not convenient code structure wise you make the translation and rotation into a module that can be used anywhere. Such a module could be considered a named local coordinate system.

On 17 September 2015 at 18:39, G. Wade Johnson <[hidden email]> wrote:
That review is relatively amusing.

A lot of the complaints are the same ones I've seen in the past from
programmers who only know one language looking at a language they are
unfamiliar with. "See it's not a real language, it doesn't have this
one feature that I like in the form that I like it."<shrug/>

The variables in OpenSCAD could be called "constants" or "immutable
variables". They cannot change over time, because OpenSCAD models a
physical object...time is not a factor.

On Thu, 17 Sep 2015 16:04:00 +0000 (UTC)
Qiang <[hidden email]> wrote:

> I am in the process of choosing a CAD software to learn. I find a
> review on openscad, and would like to see expert opinions on the
> following criticism.
> If these are ture, what is the impact on product design?
>
> 1 language does not have variables, for example. It has things
> which look as if they should be variables, but they are in fact
> evaluated statically at compile-time and are really just
> constants. There is an "assign" function which can alter values
> at run-time, but it does not give the full behavior of a
> variable (you cannot use it to pass variable parameters, for
> example). It's a bit like one of the (so called) "functional
> programming language" beloved of mathematicians, but wrapped in
> the syntax of a procedural programming language without even
> the (dubious, in my opinion) clarity of a real functional
> programming language.

Note that this is his opinion. Many of us have done functional
programming in more procedural languages for years.

> 2 Openscad does not really do CSG. It is a front-end for either
> of two "rendering" (using the term loosely) libraries: OpenCSG
> and GCAL. OpenCSG is a splendidly tricky program which appears to
> do CSG without actually ever doing the calculations for the
> geometry. As a display engine, OpenCSG is brilliant. But there's
> more to CAD than display. GCAL is indeed a library of
> computational graphics algorithms which can do the geometry "for
> real." But OpenSCAD uses CGAL just to generate
> STL (stereolithography) output files. There is no way to get at
> the geometry calculated by GCAL within the OpenSCAD model.  He
> then gives an example that openscad can't find the intersection
> point of 3 planes.

It could be fair to point out that OpenSCAD does not deal with infinite
objects like planes. The 0-dimensional point at the intersection of 2
planes is kind-of outside the scope of a tool for generating 3D models
for fabrication. It's kind of like making the argument that all
programming languages are bad, because they can't properly deal with
infinite precision real numbers.

However, as a practical point, I can easily find the intersection
volume of 3 thin planes.

> 3 OpenSCAD lacks the powerful capabilities of local
> coordinate systems.

That's a fair point. I haven't actually needed it in my designs. But, I
could pretty easily simulate it in my modules.

> The link to the review is here
> http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

I would have really loved to see his example code, (it seems to be
giving a 404 at the moment). From his description, he seems to be
mistaking his inexperience with the tool for limitations of the tool.

G. Wade

> Thank you for your help!
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


--
A tautology is a thing which is tautological.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

Peter Falke
For some cool examples have a look at http://kitwallace.tumblr.com/

image

2015-09-17 20:14 GMT+02:00 nop head <[hidden email]>:
Whenever you use translate and rotate you create a local coordinate system underneath them in the tree. If you have a cylinder at an arbitrary angle and position and you want to put say a sphere on top then you simply translate the sphere by the height of the cylinder at the same tree level as the cylinder. If that is not convenient code structure wise you make the translation and rotation into a module that can be used anywhere. Such a module could be considered a named local coordinate system.

On 17 September 2015 at 18:39, G. Wade Johnson <[hidden email]> wrote:
That review is relatively amusing.

A lot of the complaints are the same ones I've seen in the past from
programmers who only know one language looking at a language they are
unfamiliar with. "See it's not a real language, it doesn't have this
one feature that I like in the form that I like it."<shrug/>

The variables in OpenSCAD could be called "constants" or "immutable
variables". They cannot change over time, because OpenSCAD models a
physical object...time is not a factor.

On Thu, 17 Sep 2015 16:04:00 +0000 (UTC)
Qiang <[hidden email]> wrote:

> I am in the process of choosing a CAD software to learn. I find a
> review on openscad, and would like to see expert opinions on the
> following criticism.
> If these are ture, what is the impact on product design?
>
> 1 language does not have variables, for example. It has things
> which look as if they should be variables, but they are in fact
> evaluated statically at compile-time and are really just
> constants. There is an "assign" function which can alter values
> at run-time, but it does not give the full behavior of a
> variable (you cannot use it to pass variable parameters, for
> example). It's a bit like one of the (so called) "functional
> programming language" beloved of mathematicians, but wrapped in
> the syntax of a procedural programming language without even
> the (dubious, in my opinion) clarity of a real functional
> programming language.

Note that this is his opinion. Many of us have done functional
programming in more procedural languages for years.

> 2 Openscad does not really do CSG. It is a front-end for either
> of two "rendering" (using the term loosely) libraries: OpenCSG
> and GCAL. OpenCSG is a splendidly tricky program which appears to
> do CSG without actually ever doing the calculations for the
> geometry. As a display engine, OpenCSG is brilliant. But there's
> more to CAD than display. GCAL is indeed a library of
> computational graphics algorithms which can do the geometry "for
> real." But OpenSCAD uses CGAL just to generate
> STL (stereolithography) output files. There is no way to get at
> the geometry calculated by GCAL within the OpenSCAD model.  He
> then gives an example that openscad can't find the intersection
> point of 3 planes.

It could be fair to point out that OpenSCAD does not deal with infinite
objects like planes. The 0-dimensional point at the intersection of 2
planes is kind-of outside the scope of a tool for generating 3D models
for fabrication. It's kind of like making the argument that all
programming languages are bad, because they can't properly deal with
infinite precision real numbers.

However, as a practical point, I can easily find the intersection
volume of 3 thin planes.

> 3 OpenSCAD lacks the powerful capabilities of local
> coordinate systems.

That's a fair point. I haven't actually needed it in my designs. But, I
could pretty easily simulate it in my modules.

> The link to the review is here
> http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

I would have really loved to see his example code, (it seems to be
giving a 404 at the moment). From his description, he seems to be
mistaking his inexperience with the tool for limitations of the tool.

G. Wade

> Thank you for your help!
>
>
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


--
A tautology is a thing which is tautological.

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

runsun
In reply to this post by nophead
nophead wrote
If that is not convenient code structure wise you make the
translation and rotation into a module that can be used anywhere. Such a
module could be considered a named local coordinate system.
Yes users can do that. However, it's not a straightforward thing for people who do not already master in this process.  OpenSCAD is my first and only software to learn and use in 3D drawing. It took me a long long time to write this thing --- about a little more than a year  from knowing nothing about OpenSCAD to such a module. It's fair to say that this feature is one of the biggest obstacles in my learning process.  Many people might just turn away.

I have the impression that OpenSCAD is developed with a mind that people can pick it up and use it quickly, even for beginners. With this in mind, I do believe that a module to move (translate+rotate) an obj from one coordinate system to another should have been made built-in.

$ Runsun Pan, PhD
$ libs: scadx, doctest, faces(git), offline doc(git), runscad.py(2,git), editor of choice: CudaText ( OpenSCAD lexer); $ Tips; $ Snippets
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

sclaes
In reply to this post by G. Wade Johnson
On 17 September 2015 at 19:39, G. Wade Johnson <[hidden email]> wrote:
[snip]
> It could be fair to point out that OpenSCAD does not deal with infinite
> objects like planes. The 0-dimensional point at the intersection of 2
> planes is kind-of outside the scope of a tool for generating 3D models
> for fabrication. It's kind of like making the argument that all
> programming languages are bad, because they can't properly deal with
> infinite precision real numbers.
>
> However, as a practical point, I can easily find the intersection
> volume of 3 thin planes.

What are thin planes?

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

MichaelAtOz
Administrator
In reply to this post by Peter Falke
Peter Falke wrote
All things on http://www.thingiverse.com/ that use the costumiser
LOL.



Admin - email* me if you need anything,
or if I've done something stupid...
* click on my MichaelAtOz label, there is a link to email me.

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work.
Obviously inclusion of works of previous authors is not included in the above.


The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out!
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

G. Wade Johnson
In reply to this post by sclaes
On Thu, 17 Sep 2015 23:57:02 +0200
Stefaan Claes <[hidden email]> wrote:

> On 17 September 2015 at 19:39, G. Wade Johnson <[hidden email]>
> wrote: [snip]
> > It could be fair to point out that OpenSCAD does not deal with
> > infinite objects like planes. The 0-dimensional point at the
> > intersection of 2 planes is kind-of outside the scope of a tool for
> > generating 3D models for fabrication. It's kind of like making the
> > argument that all programming languages are bad, because they can't
> > properly deal with infinite precision real numbers.
> >
> > However, as a practical point, I can easily find the intersection
> > volume of 3 thin planes.
>
> What are thin planes?
>
> _______________________________________________
> OpenSCAD mailing list
> [hidden email]
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

cube( [100, 100, 1] );
cube( [100, 1, 100] );
cube( [1, 100, 100] );

This would give three 100mm x 100mm plates 1mm thick.
You could replace the 1 with an arbitrarily small number, of course.
But, too much smaller and it would not be useful for printing.

G. Wade
--
Beware of bugs in the above code; I have only proved it correct, not
tried it.                                             -- Donald Knuth

_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

MichaelAtOz
Administrator
In reply to this post by MichaelAtOz
In regard to the OP.

If you are from a programming background, and can understand the difference between an iterative language and a functional language (even if you haven't used the later), you will be able to learn to program functionally. You will likely like OpenSCAD.

If you like to use your mouse to grab a cube and drag it, then OpenSCAD is not for you.

In reality OpenSCAD is a descriptive geometry language, conceptually like HTML, you define the layout. It basically builds a tree of geometry, not a sequence of iterative statements. Once you understand the distinction, which can take a mind-shift, it becomes easy.

Re OP items

1.

- "(you cannot use it to pass variable parameters, for example)." wrong. OpenSCAD is fully parametric, if you want it to be.

- there have also been a number of advances since 2014.
-- full recursion with concat() means the language is Turing Complete.
-- List Comprehensions, allow you to use variables in new ways.

2.

- well it produces CSG geometry, he is correct in that you cannot get the numeric result of a CSG operation and then use that to modify other geometry, that breaks the descriptive/functional programming language context.
-- what that means is you need to calculate the point you are interested in and then describe the geometry in that context.
-- probably one of the more frustrating aspects for complex models, and has lead to a number of proposals for change, which generally have not gone anywhere, because they break the language context. Although there are some workarounds which may become available (called OpenSCAD2 - although I may be wrong - early days)

- OpenCSG and GCAL. What he misses about this is the usability aspect. OpenCSG is quick, GCAL is Slooow. With OpenSCAD this gives you a quick preview of your design, without the overhead of fully calculating the geometry of every point. When you are ready, or need to, you can render the full model. This combination is IMO what makes OpenSCAD stand out.

3. See discussion in above posts. Not a problem AFAIC.

Other points.

In his review, he talks about a .scad script to make the tool, unfortunately it is not available. I suspect it could have been done in a better/easier way using OpenSCAD as it is designed for. He is coming from a position of 'I need to get the CSG result, but can't, so I did it this way as a hack'.

Finally, he has not looked into support. Have a look around the forum and Github repository, you will find OpenSCAD is one of the best  supported products, both by developers, and the community. Unlike Varkon it would seem.

Admin - email* me if you need anything,
or if I've done something stupid...
* click on my MichaelAtOz label, there is a link to email me.

Unless specifically shown otherwise above, my contribution is in the Public Domain; to the extent possible under law, I have waived all copyright and related or neighbouring rights to this work.
Obviously inclusion of works of previous authors is not included in the above.


The TPP is no simple “trade agreement.” Fight it! http://www.ourfairdeal.org/ time is running out!
Reply | Threaded
Open this post in threaded view
|

Re: What's your opinion on these criticisms of Openscad?

doug.moen
In reply to this post by Qiang
1. quote: "because OpenSCAD does not have variables it is not possible to pass anything other than compile-time constants as parameters to modules."

This isn't correct. OpenSCAD variables are run-time constants, not compile time constants, and that makes a big difference.

OpenSCAD is a purely declarative (aka functional) language. That's a feature, not a bug. You describe geometric objects using pure mathematics, which has a number of advantages. The only disadvantage is that this style of programming uses different idioms than what you might be used to from Python or Javascript. If you have some experience with the functional style of programming, or if your mind hasn't been corrupted from years of programming in an imperative language, then OpenSCAD is straighforward.

2.  "Openscad does not really do CSG."

Actually, OpenSCAD really does do CSG. Check out the definition of CSG in Wikipedia: https://en.wikipedia.org/wiki/Constructive_solid_geometry.

First, the fundamental geometric object in OpenSCAD is a geometric solid. Second, all of the fundamental CSG operations are supported, as well as some additional advanced operations, like convex hull and minkowski sum, which are missing from BRL-CAD.

"There is no way to get at the geometry calculated by GCAL within the OpenSCAD model." Yes, this is a known limitation: there are some open feature requests to fix this. OpenSCAD is actively maintained and continually improving, so this may be fixed in a future release.

It turns out that BRL-CAD has some features missing from OpenSCAD. As I have noted, the reverse is also true. The conclusion that "OpenSCAD is not a true CSG system" is completely false, though. OpenSCAD users have a somewhat different set of idioms for describing geometry than BRL-CAD users. Different doesn't automatically mean worse.

3. "OpenSCAD also lacks the powerful capabilities of local coordinate systems present in Varkon. (In fairness, most CAD programs lack this as well.)"

Varkon is an imperative programming language; programs are written in a completely different style from OpenSCAD. In Varkon, all geometry is created using side effects. At first glance, this aspect of the language looks pretty horrible to me, compared to what I'm used to in OpenSCAD. Local coordinate systems are a kludge to work around some of the limitations of this style of programming, since I assume you can't modify a geometric object once it has been emitted, and I don't think they are needed in OpenSCAD.

In Varkon, you apparently call "mode_local" to enter a local coordinate system, then you call a module, which outputs a set of geometric objects as a side effect, modified by the current local coordinate system. At least that's what I think is going on. In OpenSCAD, a module call is a side-effect-free expression that returns a geometric object, which you can then modify by applying transformations like translate and rotate. That's what you do *instead of* using local coordinate systems. I like the OpenSCAD approach better.

Doug Moen. 

On 17 September 2015 at 12:04, Qiang <[hidden email]> wrote:
I am in the process of choosing a CAD software to learn. I find a
review on openscad, and would like to see expert opinions on the following
criticism.
If these are ture, what is the impact on product design?

1 language does not have variables, for example. It has things
which look as if they should be variables, but they are in fact
evaluated statically at compile-time and are really just
constants. There is an "assign" function which can alter values
at run-time, but it does not give the full behavior of a
variable (you cannot use it to pass variable parameters, for
example). It's a bit like one of the (so called) "functional
programming language" beloved of mathematicians, but wrapped in
the syntax of a procedural programming language without even
the (dubious, in my opinion) clarity of a real functional
programming language.

2 Openscad does not really do CSG. It is a front-end for either
of two "rendering" (using the term loosely) libraries: OpenCSG
and GCAL. OpenCSG is a splendidly tricky program which appears to
do CSG without actually ever doing the calculations for the
geometry. As a display engine, OpenCSG is brilliant. But there's
more to CAD than display. GCAL is indeed a library of
computational graphics algorithms which can do the geometry "for
real." But OpenSCAD uses CGAL just to generate
STL (stereolithography) output files. There is no way to get at
the geometry calculated by GCAL within the OpenSCAD model.  He
then gives an example that openscad can't find the intersection
point of 3 planes.

3 OpenSCAD lacks the powerful capabilities of local
coordinate systems.

The link to the review is here
http://www.circuitousroot.com/artifice/drafting/reviewing-the-options/index.html#brl-cad

Thank you for your help!



_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org




_______________________________________________
OpenSCAD mailing list
[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org