OpenSCAD User Manual

From Wikibooks, open books for an open world
Jump to: navigation, search



OpenSCAD is a software for creating solid 3D CAD objects.
It is free software and available for GNU/Linux, Microsoft Windows and Mac OS X.

Unlike most free software for creating 3D models (such as the well-known application Blender), OpenSCAD does not focus on the artistic aspects of 3D modelling, but instead focuses on the CAD aspects. So it might be the application you are looking for when you are planning to create 3D models of machine parts, but probably is not what you are looking for when you are more interested in creating computer-animated movies or organic life-like models.

OpenSCAD, unlike many CAD products, is not an interactive modeler. Instead it is something like a 2D/3D-compiler that reads in a program file that describes the object and renders the model from this file. This gives you (the designer) full control over the modelling process. This enables you to easily change any step in the modelling process. This enables you to make designs that are defined by configurable parameters.

OpenSCAD has two main operating modes, Preview and Render. Preview is relatively fast using 3D graphics and the computer's GPU, but is an approximation of the model and can produce artifacts; Preview uses OpenCSG and OpenGL. Render generates exact geometry and a fully tessellated mesh, it is not an approximation and as such it is often a lengthy process, taking minutes or hours for larger designs; Render uses CGAL as its geometry engine.

OpenSCAD provides two types of 3D modelling:

Autocad DXF files are used as the data exchange format for 2D outlines. In addition to 2D paths for extrusion it is also possible to read design parameters from DXF files. Besides DXF files OpenSCAD can read and create 3D models in the STL and OFF file formats.

OpenSCAD can be downloaded from You may find extra information in the mailing list.

People who don't want to (or can't) install new software on their computer may be able to use OpenJSCAD ( ), a port of OpenSCAD that runs in a web browser, if your browser supports WebGL

A pt_BR translation of this document is avaliable on GitHub repository (not completed/on development) [1]

Teachers: A basic 25 slide presentation is made freely available under GNUFDL to walk your students through the process of using OpenSCAD here

Fablab Lannion (France) edited a nice (french speaking) interactive tutorial that you might appreciate.

First Steps

The OpenSCAD User Manual[edit]

  1. Introduction
  2. First Steps
  3. The OpenSCAD User Interface
  4. Export - STL, OFF, AMF, DXF, SVG, CSG, PNG
    1. DXF Extrusion
    2. Other 2D formats
  5. Commented Example Projects
  6. Using an external Editor with OpenSCAD
  7. Integration with other applications
  8. Using OpenSCAD in a command line environment
  9. Building OpenSCAD from Sources
    1. Building on Linux/UNIX
    2. Cross-compiling for Windows on Linux or Mac OS X
    3. Building on Windows (Outdated)
    4. Building on Windows (New)
    5. Building on Mac OS X
    6. Submitting patches
  10. Frequently Asked Questions
  11. Libraries
  12. Tips and Tricks
  13. Command Glossary - Very short name and syntax reference

The OpenSCAD Language Reference[edit]

  1. The OpenSCAD Language
    1. General - READ THIS FIRST - comments, values and data types, variables, vectors, getting input
  2. 3D objects -
    1. 3D Primitive Solids - cube, sphere, cylinder, polyhedron
    2. 3D to 2D Projection
  3. 2D Objects
    1. 2D Primitives - square, circle, polygon
    2. Text - Generate text using installed or user supplied font files.
    3. 2D to 3D - linear_extrude, rotate_extrude
  4. Transform
    1. color
    2. rotate, translate, mirror, multmatrix
    3. scale, resize
    4. offset, minkowski, hull
    5. Combining transformations
  5. Boolean combination
    1. union, difference, intersection, render
  6. Other Functions and Operators
    1. Conditional and Iterator Functions - for, intersection_for, if, conditional ? :, assign
    2. Mathematical Operators - General, Vectors, Matrix multiplication
    3. Mathematical Functions
      1. Trigonometric (cos sin tan acos asin atan atan2)
      2. Other (abs ceil concat cross exp floor ln len let log lookup max min norm pow rands round sign sqrt)
    4. String Functions - str, chr
    5. List Comprehensions
    6. Other Language Features - Special '$' variables, echo,render, surface, search , version(), version_num(), parent_module(n) and $parent_modules, assert
  7. User-Defined Functions and Modules
  8. Debugging aids -  % # ! * echo
  9. External libraries and code files
    1. include - SCAD, CSG
    2. use - SCAD
    3. import - STL, OFF, DXF
      1. import_dxf - Deprecated
      2. import_stl - Deprecated
    4. surface - PNG

Work in progress[edit]

This section contains documentation about ongoing work which is available as experimental features in snapshot versions of OpenSCAD or not yet integrated at all and pending in a branch or pull-request at the OpenSCAD github repository.