discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

What's your opinion on these criticisms of Openscad?

R
runsun
Thu, Sep 17, 2015 9:33 PM

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: doctest , faces ( git ), offliner ( git );

tips: hash( 1 , 2 ), sweep , var

$ -- Linux Mint 17.1 Rebecca x64  + OpenSCAD 2015.03.15/2015.04.01.nightly

--
View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13878.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

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: doctest , faces ( git ), offliner ( git ); tips: hash( 1 , 2 ), sweep , var $ -- Linux Mint 17.1 Rebecca x64 + OpenSCAD 2015.03.15/2015.04.01.nightly -- View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13878.html Sent from the OpenSCAD mailing list archive at Nabble.com.
SC
Stefaan Claes
Thu, Sep 17, 2015 9:57 PM

On 17 September 2015 at 19:39, G. Wade Johnson gwadej@anomaly.org 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?

On 17 September 2015 at 19:39, G. Wade Johnson <gwadej@anomaly.org> 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?
M
MichaelAtOz
Thu, Sep 17, 2015 10:10 PM

Peter Falke wrote

All things on http://www.thingiverse.com/ that use the

costumiser

LOL.


Newly minted Admin - PM me if you need anything, or if I've done something stupid...

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!

View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13881.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Peter Falke wrote > All things on http://www.thingiverse.com/ that use the * > costumiser * LOL. ----- Newly minted Admin - PM me if you need anything, or if I've done something stupid... 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! -- View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13881.html Sent from the OpenSCAD mailing list archive at Nabble.com.
GW
G. Wade Johnson
Thu, Sep 17, 2015 10:12 PM

On Thu, 17 Sep 2015 23:57:02 +0200
Stefaan Claes spcl67@gmail.com wrote:

On 17 September 2015 at 19:39, G. Wade Johnson gwadej@anomaly.org
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.

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

On Thu, 17 Sep 2015 23:57:02 +0200 Stefaan Claes <spcl67@gmail.com> wrote: > On 17 September 2015 at 19:39, G. Wade Johnson <gwadej@anomaly.org> > 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 > Discuss@lists.openscad.org > 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
M
MichaelAtOz
Thu, Sep 17, 2015 10:50 PM

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

  • 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.

  1. 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.


Newly minted Admin - PM me if you need anything, or if I've done something stupid...

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!

View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13883.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

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 <https://en.wikipedia.org/wiki/Turing_completeness> . -- List Comprehensions <https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/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. ----- Newly minted Admin - PM me if you need anything, or if I've done something stupid... 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! -- View this message in context: http://forum.openscad.org/What-s-your-opinion-on-these-criticisms-of-Openscad-tp13866p13883.html Sent from the OpenSCAD mailing list archive at Nabble.com.
DM
doug moen
Fri, Sep 18, 2015 12:52 AM
  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.

  1. "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.

  1. "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 godblessfq@gmail.com 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
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

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 <godblessfq@gmail.com> 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 > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > >