Difference between revisions of "OpenSCAD"

From apm
Jump to: navigation, search
(Related: added Constructive solid geometry)
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
  
 
* '''It is denotative''' / "pure" / free of side effect free – and that is always the case and guaranteed
 
* '''It is denotative''' / "pure" / free of side effect free – and that is always the case and guaranteed
 +
* It now does support higher order functions (support for functions that can take other functions as arguments)
 
* It has a well working graphical live preview
 
* It has a well working graphical live preview
 
'''It is fully programmatic'''  
 
'''It is fully programmatic'''  
Line 12: Line 13:
 
* '''It has no record datatypes – quite problematic'''
 
* '''It has no record datatypes – quite problematic'''
 
* It has no type-safety worth noting
 
* It has no type-safety worth noting
* It does not support higher-order-functions (no support for functions that can take other functions as arguments)
 
 
* The CGAL back-end is boundary representation (B-Rep) based and tends to choke on congested geometry  
 
* The CGAL back-end is boundary representation (B-Rep) based and tends to choke on congested geometry  
 
* (coplanar surfaces can be problematic – visual preview artifacts)
 
* (coplanar surfaces can be problematic – visual preview artifacts)
Line 20: Line 20:
 
== Misc notes ==
 
== Misc notes ==
  
OpenSCAD being pure but not (higher order) functional is a bit of an oddity. <br>
+
OpenSCAD does not use (or need) a type-system to guarantee the purity of code like e.g. the Haskell language does.
Normally for programming languages to be pure being functional is almost kind of a prerequisite.
+
 
+
Also OpenSCAD does not use (or need) a type-system to guarantee the purity of code like e.g. the Haskell language does.
+
  
 
OpenSCAD manages to avoid the problem of "purely functional programming is poorly functional" <br>
 
OpenSCAD manages to avoid the problem of "purely functional programming is poorly functional" <br>
 
by very much entirely being batch data processing.
 
by very much entirely being batch data processing.
 
Very much matching the problem of 3D modelling.
 
Very much matching the problem of 3D modelling.
 +
 +
== Outdated, does no longer apply ==
 +
 +
OpenSCAD does not support higher-order-functions (no support for functions that can take other functions as arguments)
 +
OpenSCAD being pure but not (higher order) functional is a bit of an oddity. <br>
 +
Normally for programming languages to be pure being functional is almost kind of a prerequisite.
  
 
== Related ==
 
== Related ==
  
 +
* '''[[Programmatic 3D modeling]]'''
 +
* [[Non-destructive modeling]]
 
* [[3D modeling]]
 
* [[3D modeling]]
 
* [[Constructive solid geometry]]
 
* [[Constructive solid geometry]]

Latest revision as of 14:05, 6 June 2023

OpenSCAD is a programmatic 3D modelling software (free & open-source)

Advantages

  • It is denotative / "pure" / free of side effect free – and that is always the case and guaranteed
  • It now does support higher order functions (support for functions that can take other functions as arguments)
  • It has a well working graphical live preview

It is fully programmatic

Limitations

  • It has no record datatypes – quite problematic
  • It has no type-safety worth noting
  • The CGAL back-end is boundary representation (B-Rep) based and tends to choke on congested geometry
  • (coplanar surfaces can be problematic – visual preview artifacts)
  • Infinite volumes can't be specified – detracts on code elegancy and increases computational cost
  • There is no editing (or pick selecting) stuff on the graphical side

Misc notes

OpenSCAD does not use (or need) a type-system to guarantee the purity of code like e.g. the Haskell language does.

OpenSCAD manages to avoid the problem of "purely functional programming is poorly functional"
by very much entirely being batch data processing. Very much matching the problem of 3D modelling.

Outdated, does no longer apply

OpenSCAD does not support higher-order-functions (no support for functions that can take other functions as arguments) OpenSCAD being pure but not (higher order) functional is a bit of an oddity.
Normally for programming languages to be pure being functional is almost kind of a prerequisite.

Related

External links