MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now

Recent Topics

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


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

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

warning: too many unnamed arguments supplied

by rshambaugh

I'm trying to customize this speaker spacer: https://www.thingiverse.com/thing:2924217

but I'm getting a warning preventing the outer ring from rendering:

WARNING: Too many unnamed arguments supplied, in file speakerrings.scad, line 77

Specifically, this line:

    spacerTrim(0, spacerTrimThickness, spacerTrimHeight);

Here's the entire code:

// Speaker ring generator
// Code remix from https://www.thingiverse.com/thing:451253
// Use to make speaker rings for 5, 5.25, 6, 6.5, 6.75, 8, 10, 12, 15, 18, 21 inch speakers (sizes dependent on 3D printer capabilities, maybe use CNC for larger speaker spacers)
// preview[view:south, tilt:top]
/* [Unit adjustment] */
// Choose from mm, cm, or inch 
units_entered = 25.4;//[1:mm, 10:cm, 25.4:inch]

/* [Spacer Ring Sizing] */
// inner diameter (e.g. Speaker cutout diameter), set to just a little larger than the speaker cutout.  Default is for 6.5 inch ring.
d_inner= 5.5;

// outer diameter, (Speaker ring outer diameter)
d_outer= 7.61;

// height of adapter, (Common heights are .25, .5, .75, 1 inch)
h = 1.81;

/* [Hidden] */
// inner tolerance substract from wall)
i_inner = 0;
// outer tolerance in mm (substract from wall)
i_outer = 0;

// This code from https://www.thingiverse.com/apps/customizer/run?thing_id=1483876
/* [Flush Mounting Trim Ring] */

// Width of flush-mount trim, Set to .01 for no flush-mount ring (if height is less than .6 inches try using the opposite of the height, (i.e. height is 0.44 than make this -0.44) 
spacerTrimThickness = 0.25; 

// Height of flush-mount trim, Set to .01 for no flush-mount ring (if height is less than .6 inches try using the opposite of the height, (i.e. height is 0.44 than make this -0.44)
spacerTrimHeight = 0.15; 

/* [Speaker Screw Holes] */
//Speaker mount hole diameter, (same size as inner d_inner), (should be slightly larger than needed to ensure fit)
speakerHoleDiameter = d_inner;

//diagonally opposing holes this distance apart
speakerScrewHoleSpacing = 6.0;

numberOfSpeakerScrewHoles = 4; 

//.128 inch (3.25mm) seems good for #6 wood screw (screw in slowly / don't overtighten to avoid cracking) - chase with drill bit if needed
speakerScrewHoleDiameter = 0.128;

// Sets the angle from 0 to position holes, 45 is default
speakerScrewHoleAngle = 45;

/* [Spacer Ring Mounting Holes] */

//diagonally opposing holes this distance apart
mountScrewHoleSpacing = 6.5; 

numberOfMountScrewHoles = 4; 

//.2 inch (5.05mm) seems good for mount screws.  (use oem if possible), (screw in slowly / don't overtighten to avoid cracking) - chase with drill bit if needed
mountScrewHoleDiameter = 0.2;

/* [Spacer Ring Template] */
// Print 2D template to check fit

difference() {
    cylinder(d=d_outer+spacerTrimThickness-i_outer, h=h, $fn=256);

    translate([0,0,-1]) {
        cylinder(d=d_inner+i_inner, h=h+2, $fn=256);

    screwCutOuts(0, speakerScrewHoleSpacing, numberOfSpeakerScrewHoles, speakerScrewHoleDiameter, speakerScrewHoleAngle);

    mountscrewCutOuts(0, mountScrewHoleSpacing, numberOfMountScrewHoles, mountScrewHoleDiameter);

    spacerTrim(0, spacerTrimThickness, spacerTrimHeight);


echo ((d_outer-d_inner-i_outer-i_inner)/2, units_entered);

module screwCutOuts(rotation, distance, numberOfHoles, holeDiameter, holeAngle)

    rotate ([rotation,0,0]) translate([0, 0, 1]) 
        for (i = [0 : 360 / numberOfHoles : 360])
            rotate([0,0,i + holeAngle])
                translate([0, distance / 2, h*.25])
                    cylinder(r = holeDiameter / 2, h = h * 2, $fn=50);

module mountscrewCutOuts(rotation, distance, numberOfHoles, holeDiameter)

    rotate ([rotation,0,0]) translate([0, 0, -1.5]) 
        for (i = [0 : 360 / numberOfHoles : 360])
            rotate([0,0,i + 0])
                translate([0, distance / 2, 2])
                    union () {
                        cylinder(r = holeDiameter / 2, h = h * 2, $fn=50);
                translate([0,0,1])cylinder(h=h*.26, r=holeDiameter / 2 + .1, $fn=50);

// Trim for ring flush-mounting.  Code from https://www.thingiverse.com/apps/customizer/run?thing_id=1483876
module spacerTrim(spacerTrimThickness, spacerTrimHeight) 

    difference() {

        translate([0, 0, h+h-spacerTrimHeight])
        cylinder(h=h + spacerTrimHeight, d=d_outer, $fn=256);
        cylinder(h=h * 4, d=d_inner, center=true);


Any ideas about what's wrong?

Speaker Spacer Ring Generator
View Comment

OpenSCAD 2019.05 has just been released

by Torsten


As Marius already wrote a nice summary for the mailing list, I'm just shamelessly reposting that... so here we go...

OpenSCAD 2019.05 has just been released: http://www.openscad.org/news.html#20190518

This release adds a number of features which have been in development for the last 4 years. Some of the larger program features are Customizer, which was first started as a Google Summer of Code project, and 3D input device support. The OpenSCAD language itself and standard library has seen a number of iterative improvements

The source code, as well as binaries for Mac OS X, Windows and Linux are ready for download.

As usual, thanks go to everyone who has contributed to this release through development and community management, bug reports and fixes, documentation, translation, discussions, as well as testing the development snapshots!

A summary of changes since last release follows.

Take care,


Language Features:

  • New modules
    • assert() - stop script evaluation on failed constraints
    • let() - scoped assignment
  • New functions
    • ord() - convert from character to Unicode code point
    • echo()
    • assert() - stop script evaluation on failed constraints
    • Type testing functions: is_undef(), is_list(), is_num(), is_bool(), is_string()
  • New special variable: $preview variable which is set to true in preview mode
  • List comprehension updates
    • Added if/else condition
    • Added each keyword
    • Added C-style for loop
    • Now allows looping over characters of a string
  • rotate_extrude(): Added angle parameter to
  • import() now supports SVG, 3MF and AMF
  • color() now supports hex color codes
  • Removed glide() and subdiv() which were never implemented

Program Features:

  • Customizer: Allow parametrizing design parameters with GUI customization
  • Support for using 3D-Mouse / Joystick / Gamepad input devices for controlling the 3D view
  • 3D Printing support: Purchase from a print service partner or print to Octoprint
  • New export file formats: SVG, 3MF, AMF
  • Quick-edit and preview of values using Alt-Arrows (Shift-Alt-Arrows on macOS)
  • Added --view cmd-line parameter
  • Play sound notification on render complete
  • Line numbers and filenames are now shown for many errors and warnings
  • Hardwarning preference: Stop on first warning
  • Hardwarning and assert now shows a stack trace
  • New warnings
    • Module call parameterns don't match module declaration
    • Argument value of of range
    • Duplicate passed argument
    • Children passed to module not accepting children
    • Reference to inknown $special_variables
    • Duplicate assigment
  • New translations: Ukrainian, Polish
View Comment