OpenSCAD - The Programmers Solid 3D CAD Modeller (fork with Delaunay triangulation and bend operator)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Vitaliy Filippov 80abdc1da0 Experimental circular/spherical/cylindric bend modifier (issue openscad/openscad#815) 8 years ago
cgal #1215 Repair non-manifold tessellation results, detect and report non-manifold results 8 years ago
color-schemes axes-color for Tomorrow Night 8 years ago
contrib Fix incorrect indentation for lines affected by # modifier 8 years ago
doc Patch level release checklist 8 years ago
examples Removed deprecated assign statement 8 years ago
fonts Keep 05-osx-fonts.conf in fonts dir to make the fonts work in development mode 8 years ago
fonts-osx Keep 05-osx-fonts.conf in fonts dir to make the fonts work in development mode 8 years ago
icons Activate special icon for nightly builds (using SUFFIX=-nightly). 8 years ago
images Added new Preview and Render icons from @atartanian 8 years ago
libraries Updated MCAD 9 years ago
locale Czech translation: Add missing space 8 years ago
patches Updated OpenCSG build to correctly set the install name 8 years ago
releases typo 8 years ago
scripts Allow compiling against libstdc++ and c++03 8 years ago
src Experimental circular/spherical/cylindric bend modifier (issue openscad/openscad#815) 8 years ago
test-code Removed old code made redundant by tests 12 years ago
testdata #1325 Fixed crash when polygons with > 3 indices turn out to be degenerate 8 years ago
tests Simple detection of script and direction based on given text. 8 years ago
winconsole Move winconsole to separate folder. 8 years ago
xcode #1325 Fixed crash when polygons with > 3 indices turn out to be degenerate 8 years ago
.gitignore Ignore .mo files lying next to .po files 8 years ago
.gitmodules Make MCAD submodule relative to openscad toplevel. 11 years ago
.travis.yml Use for notification emails 8 years ago
COPYING Fixed FSF address 10 years ago
Info.plist Mac fix: Only use NSLog when GUI launched 9 years ago
OpenSCAD.sdef Experimental Apple Event hack; you can now do 'tell application "OpenSCAD" to reload' 13 years ago Updated prerequisites 8 years ago
RELEASE_NOTES typo 8 years ago Use correct links to release notes 8 years ago Release notes doesn't currently change for patch level releases 8 years ago
bison.pri Put back some stuff necessary for building on non-MSVC platforms for now 10 years ago
boost.pri Add defines for MSYS2 build. 8 years ago
c++11.pri Cleaned up c++11 config a bit 8 years ago
cgal.pri Updates to build on MSYS2. 8 years ago
common.pri Merge remote-tracking branch 'origin/master' into c++11 8 years ago
dsa_pub.pem Added support for signing binaries 10 years ago
eigen.pri Remove eigen2 detection, eigen3 is required. 8 years ago
flex.pri Modified parse to allow overloading of variables in local blocks. Also did some minor cleanups while at it. Test cases missing 10 years ago
fontconfig.pri Add libraries to qmake config. 9 years ago
freetype.pri Use OPENSCAD_LIBRARY include path only if it actually exists. 9 years ago
gettext.pri minor build fix; avoid generating empty -I or -L arguments. Needed for MacPorts build 8 years ago
glew.pri Updates to build on MSYS2. 8 years ago
glib-2.0.pri bugfix: use 470 to read qmake variable 9 years ago
harfbuzz.pri Use OPENSCAD_LIBRARY include path only if it actually exists. 9 years ago
mingw-cross-env.pri Move -DNOGDI to main project file. 8 years ago
opencsg.pri Some more build system cleaning 11 years ago
openscad.appdata.xml AppData: Do not have 2 default screenshots 9 years ago Experimental circular/spherical/cylindric bend modifier (issue openscad/openscad#815) 8 years ago
openscad.qrc #1203 Explicitly set icon to make sure windows systems correctly set up the icon 8 years ago
openscad_win32.rc Add on-launch code to set Document Icon in windows registry 8 years ago
qscintilla2.prf Workaround for Fedora 21 builds (fixes #1254). 8 years ago
scintilla.pri Handle both Qt4 and Qt5 and add fallback in case of missing qscintilla2.prf. 8 years ago gcc and clang profiles 10 years ago Experimental homebrew dependency build 9 years ago Quick and dirty fixup 9 years ago Unset QMAKESPEC to avoid old Qt4 env to bleed over 9 years ago
sparkle.pri Move software update menu handling to AutoUpdater. This should fix #714 8 years ago
valgrind.supp Killed some memory leaks 11 years ago
version.pri Version splitting used wrong variable, causing version() to return [0,0,0]. Fixes #1329 8 years ago
win.pri In this commit i'll change just the Qt project, c and header files to get OpenSCAD 10 years ago

Travis CI Coverity Status Bitdeli Badge

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, including XCode command-line tools.

Install Dependencies:

Run the script that sets up the environment variables: source

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

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

For the adventurous, it might be possible to build OpenSCAD using MacPorts or Homebrew. The main challenge is that both these systems have partially broken libraries, but that tends to change from time to time.

  1. MacPorts (assumes MacPorts is already installed)

    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

  2. Homebrew (assumes Homebrew) is already installed)

    NB! Homebrew's qscintilla2 component doesn't support Qt5, so using Qt4 is currently necessary. However, Homebrew's Qt4 has a broken moc command, causing OpenSCAD compilation to break. This may be fixed in Homebrew by the time you read this. NB! Homebrew's harfbuzz package requires X11, so you may have to install an X11 server. NB! Homebrew doesnt have an OpenCSG package

    brew install cgal qscintilla2 eigen harfbuzz

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 variables.

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.


First, run 'qmake' from Qt4 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' 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: