Non-destructive modeling
From apm
Reversibility in 3D modelling. Also an old edits can be changed with changes propagating forward to the current version. In programmatic fully parametric 3D modelling that defers triangulation to as late as possible (e.g. OpenSCAD) this comes naturally.
Non-destructive modelling is highly desired for the very same reasons
immutability, purity, lack-of-side-effect, denotativeness is desired in coding.
When programmatic 3D modeling allows for hidden global state (like anything python based does)
then non-destructive modeling is no longer guaranteed.
(wiki-TODO: explain why)
Contents
Pure languages - more or less usable for programmatic CAD
- OpenSCAD (easy to learn) in both function and geometry realm which are kept separate (which is sometimes annoying)
- elm (easy to learn) not aimed at 3D modelling – can do 3D stuff but not for expot for manufacturing
- haskell (hard to learn) there are 3D modeling libraries like ImplicitCAD lack of a live preview is a big issue though
- unison (mid level to learn) not aimed at 3D modelling – no 3D libraries yet :( still early
Languages requiring manual discipline (which always fails because it can)
- libfive (guile scheme or python)
- python based OpenSCAD clones
- Javascrip B-Rep CSG libraries: https://evanw.github.io/csg.js/
- ...