OpenSCAD - The Programmers Solid 3D CAD Modeller
C++ C OpenSCAD Shell CMake Python Other
Failed to load latest commit information.
cgal #1647 remove workarounds for older versions of boost Jun 27, 2016
color-schemes axes-color for Tomorrow Night May 12, 2015
contrib Provide correct feature in scad-mode.el Feb 5, 2016
doc Updated class hierarchy Jul 20, 2016
examples Updated examples/rotate_extrude, added rotate_extrude-angle test, upd… Nov 15, 2015
fonts-osx Keep 05-osx-fonts.conf in fonts dir to make the fonts work in develop… Mar 3, 2015
fonts Keep 05-osx-fonts.conf in fonts dir to make the fonts work in develop… Mar 3, 2015
icons Add keywords to the desktop file Aug 11, 2015
images make Orthogonal View button show Orthogonal projected cube, not persp… Oct 24, 2015
libraries Updated MCAD Mar 7, 2014
locale Updated spanish translation Apr 13, 2016
patches Merge pull request #1520 from GilesBathgate/tesscombine-memleak Dec 14, 2015
releases sync with 2015.03-branch Feb 17, 2016
scripts Turn off parallel tests on trusty Jul 20, 2016
src No need to dynamic_cast as the return type is already correct Jul 22, 2016
test-code Removed old code made redundant by tests Oct 31, 2010
testdata #1672 Added testcase Jun 19, 2016
tests Escape html characters in text test output Jul 22, 2016
winconsole Move winconsole to separate folder. Jan 8, 2015
xcode AST refactoring: New ASTNode supertype, refactored Expression, Module… Jun 13, 2016
.gitignore Update ignores Jul 20, 2016
.gitmodules Make MCAD submodule relative to openscad toplevel. Feb 18, 2012
.travis.yml Added OS X build and trusty build to travis config Jul 19, 2016
COPYING Fixed FSF address Oct 7, 2012
Info.plist Added experimental SVG import Jul 19, 2016
OpenSCAD.sdef Experimental Apple Event hack; you can now do 'tell application "Open… Feb 2, 2010 Removed defunct Bitdeli badge Jul 19, 2016
RELEASE_NOTES sync with 2015.03-2 Nov 16, 2015 Use correct links to release notes Mar 9, 2015 Release notes doesn't currently change for patch level releases Mar 14, 2015
bison.pri Put back some stuff necessary for building on non-MSVC platforms for now Aug 19, 2013
boost.pri allow shared library cross-build under MXE Nov 1, 2015
c++11.pri We now require OS X >= 10.8 Jul 15, 2016
cgal.pri allow shared library cross-build under MXE Nov 2, 2015
common.pri Added experimental SVG import Jul 19, 2016
csgopnode.h #1527 Green refactoring: Renamed some classes, cleaned up some member… Dec 25, 2015
dsa_pub.pem Added support for signing binaries Feb 11, 2013
eigen.pri Remove eigen2 detection, eigen3 is required. Dec 20, 2014
flex.pri Modified parse to allow overloading of variables in local blocks. Als… Apr 26, 2013
fontconfig.pri Add libraries to qmake config. Feb 2, 2014
freetype.pri Use OPENSCAD_LIBRARY include path only if it actually exists. Aug 30, 2014
gettext.pri minor build fix; avoid generating empty -I or -L arguments. Needed fo… Jan 21, 2015
glew.pri allow shared library cross-build under MXE Nov 2, 2015
glib-2.0.pri allow shared library cross-build under MXE Nov 2, 2015
harfbuzz.pri Use OPENSCAD_LIBRARY include path only if it actually exists. Aug 30, 2014
libxml2.pri Added experimental SVG import Jul 19, 2016
mingw-cross-env.pri allow shared library cross-build under MXE Nov 2, 2015
opencsg.pri QGLView requires glew regardless of whether opencsg is used. Oct 23, 2015
opengl.pri Link to GLU and X11 also when using QOpenGLWidget (fixes #1545). Jan 10, 2016 Create multilingual appdata file using itstool Jun 21, 2015 Added experimental SVG import Jul 19, 2016
openscad.qrc Remove flattr icon and use styled link instead. Jun 28, 2015
openscad_win32.rc Add on-launch code to set Document Icon in windows registry Jan 11, 2015
qscintilla2.prf Workaround for Fedora 21 builds (fixes #1254). Apr 26, 2015
scintilla.pri allow build against custom version of qscintilla. see issue 1493 Nov 20, 2015 doc Jan 27, 2016
sparkle.pri Move software update menu handling to AutoUpdater. This should fix #714 Nov 10, 2014
valgrind.supp Killed some memory leaks Nov 27, 2011
version.pri allow shared library cross-build under MXE Nov 2, 2015
virtualfb.log Added OS X build and trusty build to travis config Jul 19, 2016
win.pri In this commit i'll change just the Qt project, c and header files to… Jul 28, 2013

Travis CI Coverity Status

Visit our IRC channel

What is OpenSCAD?

Flattr this git repo

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

Unlike most free software for creating 3D models (such as the famous application Blender) it does not focus on the artistic aspects of 3D modeling but instead on the CAD aspects. Thus it might be the application you are looking for when you are planning to create 3D models of machine parts but pretty sure is not what you are looking for when you are more interested in creating computer-animated movies.

OpenSCAD is not an interactive modeler. Instead it is something like a 3D-compiler that reads in a script file that describes the object and renders the 3D model from this script file (see examples below). This gives you (the designer) full control over the modeling process and enables you to easily change any step in the modeling process or make designs that are defined by configurable parameters.

OpenSCAD provides two main modeling techniques: First there is constructive solid geometry (aka CSG) and second there is extrusion of 2D outlines. As data exchange format format for this 2D outlines Autocad DXF files are used. 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.

Getting started

You can download the latest binaries of OpenSCAD at Install binaries as you would any other software.

When you open OpenSCAD, you'll see three frames within the window. The left frame is where you'll write code to model 3D objects. The right frame is where you'll see the 3D rendering of your model.

Let's make a tree! Type the following code into the left frame:

cylinder(h = 30, r = 8);

Then render the 3D model by hitting F5. Now you can see a cylinder for the trunk in our tree. Now let's add the bushy/leafy part of the tree represented by a sphere. To do so, we will union a cylinder and a sphere.

union() {
  cylinder(h = 30, r = 8);

But, it's not quite right! The bushy/leafy are around the base of the tree. We need to move the sphere up the z-axis.

union() {
  cylinder(h = 30, r = 8);
  translate([0, 0, 40]) sphere(20);

And that's it! You made your first 3D model! There are other primitive shapes that you can combine with other set operations (union, intersection, difference) and transformations (rotate, scale, translate) to make complex models! Check out all the other language features in the OpenSCAD Manual.


Have a look at the OpenSCAD Homepage ( for documentation.

Building OpenSCAD

To build OpenSCAD from source, follow the instructions for the platform applicable to you below.


To build OpenSCAD, you need some libraries and tools. The version numbers in brackets specify the versions which have been used for development. Other versions may or may not work as well.

If you're using a newer version of Ubuntu, you can install these libraries from aptitude. If you're using Mac, or an older Linux/BSD, there are build scripts that download and compile the libraries from source. Follow the instructions for the platform you're compiling on below.

Getting the source code

Install git ( onto your system. Then run a clone:

git clone git://

This will download the latest sources into a directory named 'openscad'.

To pull the MCAD library (, do the following:

cd openscad
git submodule update --init

Building for Mac OS X


  • Xcode
  • cmake
  • pkg-config

Install Dependencies:

After building dependencies, follow the instructions in the Compilation section.

  1. From source

Run the script that sets up the environment variables: source

Then run the script to compile all the dependencies: ./scripts/

  1. Homebrew (assumes Homebrew is already installed)

    1. **MacPorts** (assumes [MacPorts]( is already installed)
    For the adventurous, it might be possible to build OpenSCAD using _MacPorts_. The main challenge is that MacPorts have partially broken libraries, but that tends to change from time to time.
    NB! MacPorts currently doesn't support Qt5 very well, so using Qt4
    is the only working option at the moment. However, MacPorts' Qt4
    has a broken ```moc``` command, causing OpenSCAD compilation to
    break. This may be fixed in MacPorts by the time you read this.
    ```sudo port install opencsg qscintilla boost cgal pkgconfig eigen3 harfbuzz fontconfig```
    ### Building for Linux/BSD
    First, make sure that you have git installed (often packaged as 'git-core' 
    or 'scmgit'). Once you've cloned this git repository, download and install 
    the dependency packages listed above using your system's package 
    manager. A convenience script is provided that can help with this 
    process on some systems:
    sudo ./scripts/
    After installing dependencies, check their versions. You can run this 
    script to help you:
    Take care that you don't have old local copies anywhere (/usr/local/). 
    If all dependencies are present and of a high enough version, skip ahead 
    to the Compilation instructions. 
    ### Building for Linux/BSD on systems with older or missing dependencies
    If some of your system dependency libraries are missing or old, then you 
    can download and build newer versions into $HOME/openscad_deps by 
    following this process. First, run the script that sets up the 
    environment variables. 
    source ./scripts/
    Then run the script to compile all the prerequisite libraries above:
    Note that huge dependencies like gcc, qt, or glib2 are not included 
    here, only the smaller ones (boost, CGAL, opencsg, etc). After the 
    build, again check dependencies.
    After that, follow the Compilation instructions below.
    ### Building for Windows
    OpenSCAD for Windows is usually cross-compiled from Linux. If you wish to
    attempt an MSVC build on Windows, please see this site:
    To cross-build, first make sure that you have development tools 
    installed to get GCC. Then after you've cloned this git repository, 
    start a new clean bash shell and run the script that sets up the environment 
    source ./scripts/ 32
    Then run the script to download & compile all the prerequisite libraries above:
    ./scripts/ 32
    Note that this process can take several hours, as it uses the system to cross-build many libraries. After it is 
    complete, build OpenSCAD and package it to an installer:
    ./scripts/ mingw32
    If you wish you can only build the openscad.exe binary:
    cd mingw32
    qmake ../ CONFIG+=mingw-cross-env
    For a 64-bit Windows cross-build, replace 32 with 64 in the above instructions. 
    ### Compilation
    First, run 'qmake' from Qt to generate a Makefile.
    On some systems, depending on which version(s) of Qt you have installed, you may need to specify which version you want to use, e.g. by running 'qmake4', 'qmake-qt4', 'qmake -qt=qt5', or something alike. 
    Then run make. Finally you might run 'make install' as root or simply copy the
    'openscad' binary ( on Mac OS X) to the bin directory of your choice.
    If you had problems compiling from source, raise a new issue in the
    [issue tracker on the github page](
    This site and it's subpages can also be helpful: