OpenSCAD


OpenSCAD is a free software application for creating solid 3D CAD objects. It is a script-only based modeller that uses its own description language; parts can be previewed, but cannot be interactively selected or modified by mouse in the 3D view. An OpenSCAD script specifies geometric primitives and defines how they are modified and combined to render a 3D model. As such, the program does constructive solid geometry. OpenSCAD is available for Windows, Linux and OS X.

Previewing

For fast previewing of models using z-buffering, OpenSCAD employs OpenCSG and OpenGL.
The 3D model position can be interactively manipulated in the view with a mouse similarly to other 3D modellers. It is also possible to define a default "camera" position in the script.
Part colors can be defined in the 3D view.
Preview is relatively fast and allows interactive modifications while modifying the script.
The model renderer takes into account lighting, but the lighting source is not modifiable.

Use

OpenSCAD allows a designer to create accurate 3D models and parametric designs that can be easily adjusted by changing the parameters.
OpenSCAD documents are human-readable scripts in plain ASCII text.
As such, OpenSCAD is a programmer-oriented solid-modeling tool and has been recommended as an entry-level CAD tool for designing open-source hardware such as scientific tools for research and education.
It is mostly used to design 3D printed parts, which are exported in STL format.
Animation is possible with a speed of a few images per seconds for simple models. The animation can have effect on any parameter, being it the camera position or the parts dimensions, position, shape or existence.
It can be recorded as a set of images usable to build films.

Exportation

OpenSCAD is a wrapper to a CSG engine with a graphical user interface and integrated editor, developed in C++. As of 2016, it uses the Computational Geometry Algorithms Library as its basic CSG engine.
Its script syntax reflects a functional programming philosophy. Much as in Haskell, within a scope each "variable" is treated as a constant, immutable with at most one value.

Related software