OpenSCAD 2015.03 released with text objects support

Marius Kintel released a major new version of OpenSCAD, a 3D solid modeling application popular with the makers movement and 3D printing communities.

OpenSCAD is different from the usual solid modeling CAD software in a way that instead of visual modeling you use a simple declarative programming language, hence “The Programmers’ Solid 3D CAD Modeler” slogan. Complex objects are constructed from solid primitives such as cube, sphere, cylinder, polyhedron etc., extruded from 2D objects etc. These days, of course, there is an OpenSCAD workbench in FreeCAD for more visually inclined people.

Just to give you idea, here’s e.g. a platform for a micro spider hex multirotor, 3D-printed in PLA from a design available in the OpenSCAD file format on Thingiverse.

Micro Spider Hex Multirotor

The first intersting new feature in v2015.03 is support for text, especially since OpenSCAD relies on harfbuzz, free/libre OpenType shaping engine. What it means is that OpenType features like contextual ligatures are supported. A somewhat tired example here is, of course, the much abused Lobster typeface which has quite a lot of these ligatures:

Ligatures in OpenSCAD text

The command for that is as simple as:

text("open", size="4", font ="Lobster Two");

Of course, if you are going to 3D-print that, you need to merge these ligatures. It’s unlikely that there will be manual kerning, but you can fix your model the old way, by splitting a word into several blocks, then translating them accordingly like this:

text("op", size="4", font ="Lobster Two");
translate ([10.9,0,0]) {
    text("en", size="4", font ="Lobster Two");

The result is:

Ligatures merged

The other benefit is that complex scripts are supported. An unparalled imaginative example here is the word “Devanagari” written in, well, Devanagari:

For information about text attributes such as vertical and horizontal alignment have a look at the documentation.

One more new OpenSCAD function is offset() which moves polygon outlines outwards or inwards by a given amount. You can control if you want rounding of corners (and by how much), straight corners, or chamfers.

Offset example

There are a couple of new functions and some improvements in the existing ones, like e.g. using PNG as input for a heightmap in the surface function.

PNG as heightmap in OpenSCAD

The user interface got a few improvements as well: new startup dialog to quickly open recent files or examples from a library, new QScintilla-based code editor with folding support, SVG and AMF exporting, and more.

There is a less verbose yet more complete list of changes on GitHub.

Builds are available for Mac and Windows, there’s a PPA for Ubuntu (not updated yet), and source code is there for everyone (a note to Fedora users: unless you like jumping through hoops before using software, build with Qt4 and the respective version of QScintilla).