Recent Topics


by atartanian

OpenSCAD is an open source programming language and IDE (Integrated Development Environment) for parametric 3D design. It is used to create precise, customizable and easily modifiable designs ready for 3D printing. It has a growing developer community and is the tool used to create designs compatible with the MakerBot Customizer app: http://www.thingiverse.com/apps/customizer

You can download OpenSCAD from www.openscad.org/downloads.html

This group is a place to discuss all things OpenSCAD including (but not limited to) new features, techniques, questions, libraries, works in progress, etc. So post a new Topic or contribute on an existing one!

Share knowledge, get constructive feedback, and ask questions!

Join to add your OpenSCAD designs or libraries to this group's Things. Non-OpenSCAD designs will be removed.

Have fun!

View Comment

Customizer Update

by tbuser

Customizer now runs the new version of OpenSCAD 2015.03

Also, all the google fonts from http://www.google.com/fonts have been added to the servers and can be used in text() :)

View Comment

OpenSCAD 2015.03 is out!

by atartanian

WOOT! now we can put comic sans on everything ;D

get it here: http://www.openscad.org/downloads.html

If you make any scripts that use features from the new version, add links to them in this post!

Summary of changes

Language Features

  • Added text() module for 2D text
  • Added offset() module for 2D offsets
  • Added list comprehensions and let()
  • Added concat() function
  • Added chr() function
  • surface() can now take PNG images as input
  • min() and max() can now take a vector argument
  • 2D minkowski can now handle polygons with holes
  • Variables can now be assigned in local blocks without using assign()

Program Features

  • Added Toolbar icons
  • New code editor based on QScintilla
  • Added Splash screen
  • Added SVG export
  • Added AMF export
  • Added --viewall and --autocenter cmd-line parameters
  • GUI is now translated into German, Czech, Spanish, French and Russian
  • MDI (Multiple Document Interface) is now available on all platforms
  • Color schemes for viewer and editor can be user-edited using JSON files
  • GUI components are now dockable
  • Added Tickmarks on axes


  • Performance improvement: 2D (clipper), preview, hull, minkowski, surface
  • Performance improvement: Reduce duplicate evaluation of identical expressions
  • Better recursion behavior
  • STL export and import is now more robust
  • Internal cavities are better supported
  • New examples
  • Windows cmd-line behaves better
  • Better mirror() and scale() behavior when using negative factors


  • polyhedron() now takes a faces= argument rather than triangles=
  • assign() is no longer needed. Local variables can be created in any scope
View Comment

Strange crash.

by TheHeadlessSourceMan

While attempting to plot an Archimedes curve (in a rather brute-force way) I ran into a nasty program crash.

Any ideas why this is happening so I can prevent it?

function archimedesRadius(radians,a,b,c=1)=a+bpow(radians,1/c);
module archimedesPlate(a,b,c=1,degrees=360,clockwise=true){

draw a flat plane representing an Archimedes curve

a = initial offset
b = spiral increase
c = a cubic factor.  usually leave at 1.0, but there are related curves you can make by changing this
for(angle=[0:inc:degrees-inc]) hull(){
    rotate([0,0,angle]) translate([archimedesRadius(angle/(2*PI),a,b,c),0,0]) circle(r=thick/2,$fn=6);
    rotate([0,0,angle+inc]) translate([archimedesRadius((angle+inc)/(2*PI),a,b,c),0,0]) circle(r=thick/2,$fn=6);
    //circle(r=thick/2,$fn=6); // for some baffling reason, uncommenting this line crashes the planet!



View Comment

Customizable things with various numbers of output parts

by kickahaota

TL:DR: Does anyone know how to get Customizer to produce some dynamically-specified number of output part files?

Wordy version:

The customizer I'm working on (https://www.thingiverse.com/thing:2954310 , to be exact) creates things with multiple parts (in this case, card boxes and lids). I want to put them out as separate STL files so the user can arrange them on the build plate, print multiple copies of one part, etc. The handy-dandy 'part' variable in Customizer lets me do this. I want the user to be able to create up to five card boxes (and one lid) in the final Thing, so my Part menu has "Box 1", "Box 2", "Box 3", "Box 4", "Box 5", and "Lid". The Customizer processes these and spits out six STL files. This is great -- if the user actually wants five card boxes. But some users will want fewer.

My initial version of the .scad file simply put out no output when it was working on a part that was unneeded. So if the user only wanted two boxes, then the Box 3, Box 4, and Box 5 parts would produce no output. But it turns out that if any part produces no output, Customizer errors out and doesn't create the customized Thing at all. (And it does so without any error message other than "Error!", which made it rather interesting to debug. :) )

I've currently solved this in an effective but rather silly way. If the .scad file is asked to render a part that the user doesn't want, it outputs "This file is unneeded and you can delete it" in linear_extrude'd text. So if the user asks for two card boxes and a lid, then the user gets Box 1, Box 2, and Lid files with sensible contents, along with Box 3, Box 4, and Box 5 files that say "Please delete me."

I could make separate Customizers with different hardcoded numbers of card boxes, but that seems really clunky.

Does anyone know of a clever way to do this?

Customizable Card Boxes and Lids
View Comment