
OpenSCAD allows to describe 3D objects as code, which can be organized in libraries and reused in various contexts. It provides an editor with an interactive 3D object view, allowing to quickly understand how the code translates to 3D geometries and refine and debug the model.
The great advantage of OpenSCAD is that the designs can be parametrized and adjusted to suit varying needs or to refine a design through successive prototyping cycles. OpenSCAD code can be designed to generate 3D objects from a set of high-level parameters, for example, you can write a function that will create a pipe of given length, inner and outer diameter. Another example would be some OpenSCAD function that will generate a wheel hub, and that you can parametrize for various widths and diameters, and then assemble in a larger object, for example, a cart.
OpenSCAD being quite popular, there are many reusable part libraries available in e.g. ThingiVerse. Review collected by and hosted on G2.com.
The OpenSCAD code editor is not very versatile as it does not provide code assist or on-the-fly syntax validation. It would be nice if the editor could be ported to a more modern IDE environment such as eclipse or VSCode.
The programmatic nature of OpenSCAD makes it best suited to 3D designers with some programming experience.
A limiting factor when using parts libraries is that OpenSCAD's editor does not handle multiple files. Review collected by and hosted on G2.com.