CAD tools for programmers

OpenSCAD is a free software for creating solid 3D CAD objects. It is open source software that is available for Linux/UNIX, MS Windows and Mac OS X – and also a version that runs online in browser. After quick testing it looks like OpenSCAD is a really wonderful tool for 3D modeling. While it doesn’t have the traditional graphical interface of AutoCAD – it’s basically a programming language for 3D models – OpenSCAD is able to create very complex parts with only a few lines of code. OpenSCAD allows for two types of modeling – constructive solid geometry, or taking 3D primitives and stretching, scaling, and intersecting them to create a 3D shape, or extrusion from a 2D outline. It should be sitable for making desings for 3D printing as quite a few RepRap parts were designed in OpenSCAD and Makerbot 3D printer maker has OpenSCAD tutorials for this in mind.

If you want to start experimenting with OpenSCAD parts in your browser. There are two alternatives for this. offers one online version of OpenSCAD that runs nicely at least on Chrome browser (failed to work properly in Firefox for me). It is a nice playground to test OpenSCAD.


OpenJsCad is a 2D and 3D modeling tool similar to OpenSCAD, but web based and using Javascript language.
3D solids can be exported as STL files, 2D areas can be exported in a DXF file. OpenJsCAD is written entirely in Javascript and able to be embedded in a web page. To build your own models, create a .jscad file with your javascript code and parse the file using the OpenJsCad parser.


There is an alpha version of the software on-line at It is is intended to become a Javascript based alternative to OpenSCAD, for 3D solid modeling.


Does coding your 3D objects, while quite easy, still look too complicated to get started. There are also some alternatives that are even easier to get started. BlocksCAD is Browser-Based 3D Modeling that Teaches You CAD. MIT has come up with a new block-based educational tool called BlocksCAD. BlocksCAD is essentially Scratch combined with OpenSCAD and allows the user to use blocks (similar to Scratch) to build a 3D model. With this tool it’s possible to avoid model code syntax issues but still develop 3D models. You just make model by moving blocks, and get a 3D model and OpenSCAD code as result.  You can use the tool online at



For ideas on other 3D modeling tools, check out also Scratch Your Itch for 3D Modeling with BeetleBlocks, Learn 3D Modeling in Your Browser and Development Tools of the Prop-Making World articles.



  1. Tomi Engdahl says:

    Nice design example with Tinkercad to play on-line:

    [CollabProjectBase] by CollabProjectBase 4

  2. Tomi Engdahl says:

    Making Parametric Models in Fusion 360

    We all know and love OpenSCAD for its sweet sweet parametrical goodness. However, it’s possible to get some of that same goodness out of Fusion 360. To do this we will be making a mathematical model of our object and then we’ll change variables to get different geometry. It’s simpler than it sounds.

    Even if you don’t use Fusion 360 it’s good to have an idea of how different design tools work. This is web-based 3D Modeling software produced by Autodesk. One of the nice features is that it lets me share my models with others.

  3. Tomi Engdahl says:

    ImplicitCAD: Programmatic CAD Built with 3D Printing in Mind

    Programmatic CAD, in particular the OpenSCAD language and IDE, has accompanied the maker movement for a while now. After its introduction in 2009, it quickly found its way into the 3D printing toolbox of many makers and eventually became what could be called an Industry Standard among open hardware labs, makerspaces and tinkerers. The Prusa i3, one of the most popular DIY 3D printers, was designed in OpenSCAD, and even Makerbot, the company that sold 100.000 3D printers, uses the language for its “Customizer” – an online tool that allows users to customize 3D printable models with minimal effort.

    OpenSCAD is indeed a wonderful tool, and we have been using it a lot. We have become used to its quirks and accepted working with polygon mesh approximations of the models we are trying to design. We have made our peace with excessive rendering times, scripting workarounds and the pain of creating fillets, and we have learned to keep our aesthetic expectations low. We are happy with the fact that there is a way to programmatically create and share virtually any object, but sometimes we wish there was a better way in the open source world. Hint: there is.

    Inspired by OpenSCAD, ImplicitCAD was originally started by Christopher Olah in early 2012, aiming to create a solid programmatic CAD tool to create complex models for 3D printing. It borrows the OpenSCAD language for modeling but has its own 3D geometry engine. At the core, the engine relies on continuous mathematical descriptions of 3D geometries rather than polygon mesh approximations.

    Powerful, Open-Source, Programmatic CAD

    ImplicitCAD is a project dedicated to using the power of math and computer science to get stupid design problems out of the way of the 3D printing revolution.

  4. Tomi Engdahl says:

    Solvespace: A Parametric CAD Tool

    3D printing seems like it takes forever when you’re waiting for a part to come out. But if you’re like us, the real time spent in making something new is in modelling and refining the piece. There are tons of CAD programs out there, and finding one that meets your needs is part functionality and part personal preference. Reader [Leibowitz] pointed us to Solvespace, and it looks like it fills the gap between something like OpenSCAD and something more feature-full (and complicated) like FreeCAD.

    It has a lot of what we like about OpenSCAD
    But it also has other features like constraint solvers for mechanisms and linkages.

    there’s also ImplicitCAD. Or try out Autodesk’s free (but not open) Fusion 360. And now there’s Solvespace.

  5. Tomi Engdahl says:

    Parametric 3D Printable Wheels And Treads

    When it comes to robotic platforms, there is one constant problem: wheels. Wheels have infinite variety for every purpose imaginable, but if you buy a wheeled robotic chassis you have exactly one choice. Even if you go down to the local Horror Freight, there’s only about five or six different wheels available, all of which will quickly disintegrate.

    To solve this problem, [Audrey] created OpenWheel, a system of parametric, 3D-printable wheels, tweels, tires, and tracks for robotics and more.

    Like all good parametric 3D-printable designs, OpenWheel is written in OpenSCAD. These aren’t 3D designs; they’re code that compiles into printable objects, with variables to set the radius, thickness, diameter of the axle, bolt pattern, and everything else that goes into the shape of a wheel.

    OpenWheel : parametric OSH wheels/tyres/tracks

    Openwheel provides parametric open source wheels, tyres and tank tracks completely 3D printable, with lots of options, for robots and more

  6. Tomi Engdahl says:

    Open-Source Parametric CAD in Your Browser

    Until recently, computer-aided design (CAD) software was really only used by engineering companies who could afford to pay thousands of dollars a year per license. The available software, while very powerful, had a very high learning curve and took a lot of training and experience to master. But, with the rise of hobbyist 3D printing, a number of much more simple CAD programs became available.

    While still in its infancy, JS.Sketcher is seeking to fill that niche. It is 100% open-source, runs in your browser using only JavaScript, and is fully parametric (with both constraints and editable dimensions). At this time, available features are still pretty limited and simple. You can: extrude/cut, revolve, shell, and do boolean operations with solids. More advanced features aren’t available yet, but hopefully will be added in the future.

    Parametric 2D and 3D modeler written in pure javascript

  7. Tomi Engdahl says:

    Ditch OpenSCAD for C++

    There’s an old saying that a picture is worth a thousand words.

    You think you want to draw things graphically, but once you start doing complex things and making changes, parametric modeling is the way to go. Some CAD tools let you do both, but many 3D printer users wind up using OpenSCAD which is fully parametric.

    If you’ve used OpenSCAD you know that it is like a simple programming language, but with some significant differences from what you normally use.

    I considered OpenJSCAD. It is more or less OpenSCAD for JavaScript. However, JavaScript is a bit of a scripting language itself. Sure, it has objects and some other features, but I’m more comfortable with C++. I thought about using the OpenCSG library that OpenSCAD uses, but that exposes a lot of detail.

    Instead, I turned to a project that uses C++ code to generate OpenSCAD output, OOML (the Object Oriented Mechanics Language)). OpenSCAD does the rendering, exporting, and other functions.

    C++ Object Oriented Mechanis Language

  8. disruptivestudent62 says:

    I was so informed by this post, too bad my school is so scared of getting DDOS’d that they don’t allow any form of internet freedom that I can’t actually find code of OpenSCAD programs to put on my computer.

  9. Tomi Engdahl says:

    Two-Piece Boxes Thanks to Laser-Cut Flex Hinges

    It sounds like a challenge from a [Martin Gardner] math puzzle from the Scientific American of days gone by: is it possible to build a three-dimensional wooden box with only two surfaces? It turns out it is, if you bend the rules and bend the wood to make living hinge boxes with a laser cutter.

    Lasercuttable Flexboxes designed in OpenSCAD

  10. Tomi Engdahl says:

    Practical Enclosure Design, Optimized for 3D Printing

    [3D Hubs] have shared a handy guide on designing practical and 3D printing-friendly enclosures. The guide walks through the design of a two shell, two button remote control enclosure. It allows for a PCB mounted inside, exposes a USB port, and is optimized for 3D printing without painting itself into a corner in the process. [3D Hubs] uses Fusion 360 (free to hobbyists and startups) in their examples, but the design principles are easily implemented with any tool.

    One of the tips is to design parts with wall thicknesses that are a multiple of the printer’s nozzle diameter. For example, a 2.4 mm wall thickness may sound a bit arbitrary at first, but it divides easily by the typical FDM nozzle diameter of 0.4 mm which makes slicing results more consistent and reliable.

    CAD Modeling #1 – Enclosures

  11. Tomi Engdahl says:


    Parametric 2D and 3D modeler written in pure javascript

    Parametric 2D and 3D modeler written in pure javascript. The goal is to create parametric CAD software for web.

  12. Tomi Engdahl says:

    3D Printed lathe in operation

    I needed to make some 3D printed pulleys more accurate – there was 0.5mm deviation in their diameters over a revolution. So I used my 3D printer to make the parts for a primitive lathe to turn them more accurately.

    OpenSCAD files needed to print the late parts are now online at

  13. Tomi Engdahl says:

    Download and Laser Your Own Pulleys

    [Scott Swaaley] needed a bunch of timing pulleys for the clock he was building. He had already decided on the MXL profile, but he needed so many of these toothed pulleys in so many configurations (hex-bored, hubless) that it would blow out his budget. Plus, he wanted them transparent as well. So why not just laser them out of acrylic?

    Not finding anything useful on the manufacturers’ sites, [Scott] decided to create his own web application to generate the shapes and download them as SVGs, dreaming of a resource like Gear Generator except for timing pulleys instead of involute spur gears. [Scott] has the application running on his GitHub. You can create MXL, XL, and L pulleys with any number of teeth and any hole size. From there you can output as an SVG and laser or mill the pulley.

    Timing Pulley Generator

  14. Tomi Engdahl says:

    InstantCAD Promises Faster Iterative Design

    The design process for any product is necessarily an iterative one. Often, a prototype is modelled or built, and changes are made to overcome problems and improve the design. This can be a tedious process, and it’s one that MIT’s CSAIL has sought to speed up with InstantCAD.

    The basic idea is integrating analysis tools as a plugin within already existing CAD software. A design can be created, and then parametrically modified, while the analysis updates on screen in a near-live fashion. Imagine modelling a spanner, and then dragging sliders to change things like length and width while watching the stress concentrations change in real time. The tool appears to primarily be using some sort of finite element analysis, though the paper also shows examples of analyzing fluid flows as well.

    The software is impressive, however there are caveats. Like any computer analysis, serious verification work must be undertaken to ensure its validity.

    Reshaping computer-aided design
    CSAIL’s InstantCAD allows manufacturers to simulate, optimize CAD designs in real-time.

  15. Tomi Engdahl says:

    3D-Printed Kwikset Keys Parametrically

    Good ol’ Kwikset-standard locks were introduced in 1946 and enjoyed a decades-long security by obscurity. The technology still stands today as a ubiquitous and fairly minimal level of security. It’s the simplest of the various standards (e.g., Master, Schlage, etc.) with a mere five pins with values ranging from 1 (not cut down hardly at all) to 7 (cut deeply). This relative simplicity made the Kwikset the ideal platform for [Dave Pedu] to test his 3D-printed keys.

    3d Printing real-world keys
    Creating copies of keys using a 3d printer and OpenSCAD


Leave a Comment

Your email address will not be published. Required fields are marked *