Skip to content

Latest commit

 

History

History
44 lines (37 loc) · 2.18 KB

goal.md

File metadata and controls

44 lines (37 loc) · 2.18 KB

The main goal of the lisscad project is to provide a simple programmatic CAD tool.

By way of explanation, the main goal of lisscad is based on the understanding that OpenSCAD itself is not and will not be simple. Its built-in text editor is not as good as general text editors. More importantly, OpenSCAD has some deficiencies even as a domain-specific programming language, including its awkward syntax.

lisscad tries to deliver simplicity mainly through consistency and minimalism at the scripting stage. Specifically:

  • The scripting language is Lissp, a minimalistic dialect of Lisp, similar to Clojure.
  • Operations are well defined. There is less room for error than in OpenSCAD.

lisscad has the following secondary goals:

  • The power of a high-order general programming language instead of a DSL.
  • Interoperability with Python, another general programming language.
  • Ease of use. Outside of the minimalistic scripting environment, lisscad has bells and whistles.
    • Good CLI utilities for project management.
    • Built-in safety checks with error messages for common mistakes, such as a mismatch between the number of dimensions in an operation’s argument and its operand.
    • Thanks to Lissp’s ability to handle special characters in operator names, special OpenSCAD operations like % are accessible by their original names, not mangled as they would have to be for Python.
    • Optionally saving 2D images of 3D renders etc.
  • Built-in higher-level CAD operations.

The following are not goals of lisscad:

  • Absolute fidelity to OpenSCAD’s vocabulary. A more faithful interface could be added as an alternative prelude, but this is not planned.
  • Laxity for the sake of working flexibly with 2 or 3 dimensions. OpenSCAD will not complain if, for example, you translate a 3D shape with coordinates for only 2 dimensions, or vice versa. lisscad will complain if you do that, so as not to hide error.
  • Mutability. Some Python–OpenSCAD transpilers are marketed with the argument that values are more mutable in Python than they are in OpenSCAD. lisscad does not do this, because of the primary goal of simplicity.
  • Object orientation.