OpenSCAD
From apm
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 has a well working graphical live preview
It is fully programmatic
- => limits to groups as in point-and-click graphical 3D modelling do not apply.
See: Naive groupings as dumbed down functions and Grouping of geometries
Limitations
- It has no record datatypes – quite problematic
- 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
- (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 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.
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"
by very much entirely being batch data processing.
Very much matching the problem of 3D modelling.
External links
- OpenSCADs website – (uses CGAL under the hood – C/C++)
- openscad – Github, Marius Kintel