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

  16. Tomi Engdahl says:

    Add Intuitiveness to OpenSCAD With Encoder

    the OpenVectorKB which allowed the ubiquitous vectors in OpenSCAD to be changed at will while keeping the parametric qualities of the program, and even leveraging them.

    All three values in a vector, X, Y, and Z, are modified by twisting encoder knobs. The device acts as a keyboard to

    select the relevant value
    replace it with an updated value
    refresh the display
    move the cursor back to the starting point

    2017-10-29 (Su) Vector Editing Keyboard OpenVectorKB UPGRADED

  17. Tomi Engdahl says:

    IceSL is a Cool Slicer

    The mechanical and electronic parts of a 3D printer are critical for success, but so is the slicing software. Slic3r and Cura are arguably the most popular, and how they command your printer has a lot to do with the results you can get. There are lots of other slicers out there both free and paid, but it is hard to really dig into each one of them to see if they are really better than whatever you are using today. If you are interested in the performance of IceSL — a free slicer for Windows and Linux — [DIY3DTECH] has a video review that can help you decide if you want to try it. You can see the video below.

    IceSL has several modules and can actually do OpenSCAD-like modeling in Lua so you could — in theory — do everything in this one tool

  18. Tomi Engdahl says:

    Making Rubber Stamps with OpenSCAD

    GitHub user [harout] was in the market for some rubber stamps to help children learn the Armenian alphabet, but couldn’t track down a commercially available set. With a 3D printer and some OpenSCAD code, [harout] was able to turn this commercial shortcoming into a DIY success story.

    Rather than having to manually render each stamp, he was able to come up with a simple Bash script that calls OpenSCAD with the “-D” option. When this option is passed to OpenSCAD, it allows you to override a particular variable in the .scad file. A single OpenSCAD file is therefore able to create a stamp of any letter passed to it on the command line. The Bash script uses this option to change the variable holding the letter, renders the STL to a unique file name, and then moves on to the next letter and repeats the process.

    This procedural generation of STLs is a fantastic use of OpenSCAD, and is certainly not limited to simple children’s stamps. With some improvements to the code, the script could take any given string and font and spit out a ready to print mold.

  19. Tomi Engdahl says:

    Sketchfab lets you import 3D models into your favorite 3D software

    Sketchfab has built a huge library of 3D models. Some of them are available under a Creative Common license, others can be purchased. The startup now wants to help you do stuff with all this content. You can now download and import 3D models into your favorite 3D app.


    Sketchfab lets you import 3D models into your favorite 3D software
    Romain Dillet
    @romaindillet / Yesterday

    Sketchfab has built a huge library of 3D models. Some of them are available under a Creative Common license, others can be purchased. The startup now wants to help you do stuff with all this content. You can now download and import 3D models into your favorite 3D app.

    Behind the scenes, Sketchfab has built a download API and some integrations with popular 3D tools. After that, you’ll find a Sketchfab search bar in a third-party app. You can type a few keywords, filter by quality, preview and then download a 3D model into your current work.

    Sketchfab uses the glTF format. Eventually, the startup will let you store your own 3D models so you can access them from all Sketchfab-enabled apps. You’ll also find your purchased model in there, too.

    Sketchfab has developed plugins for Unity, Unreal and Godot. Game developers are going to love this integration, especially if you want to put together a quick prototype before building your own 3D models.

    You also can use Sketchfab in Torch3D, Minsight, Spatial stories, Selerio, StellarX, Holobeam, AnimVR, Plattar, Sketchbox3D and Looking Glass.

    And the company is also working on integrations for Amazon Sumerian, Blender, Substance, Modo, Cinema 4D, Octane, HighFidelity, Aframe, Houdini, Sansar, Mimesys, The Wave VR, Masterpiece VR, Artomatix, Flipside VR, Blend Media, NormalVR, Vectary, Streem, and Meta glasses.

  20. Tomi Engdahl says:

    Customize All the Fan Covers You Never Knew You Needed

    The Customizable Fan Grill Cover is a parametric design in OpenSCAD that allows adjusting the frame style, size, and grill pattern for any fan cover one may possibly need.

    Customizable Fan Grill Cover

  21. Tomi Engdahl says:

    3D Printed Zipper Box
    Broke the zipper on your coat? Print a fix.

  22. Tomi Engdahl says:

    Make 3D-Modeling Child’s Play with a Can of Play-Doh

    You need to replicate a small part on a 3-D printer, so you start getting your tools together. Calipers, rulers, and a sketch pad at a minimum, and if you’re extra fancy, maybe you pull out a 3D-scanner to make the job really easy. But would you raid your kid’s stash of Play-Doh too?

    You might, if you want to follow [Vladimir Mariano]’s lead and use Play-Doh for accurately modeling surface features in the part to be replicated.

    The video below shows the Play-Doh trick up front, but stay tuned through the whole thing to get some great tips on using the sheet metal tool to wrap and unwrap cylinders, as well as learning how to import images and recalibrate them in Fusion 360.

    Run into a modeling problem that Play-Doh can’t solve? Relax, we’ve got a rundown on the basics for you.

    Reverse Engineer a part with Fusion 360 and Playdoh

  23. Tomi Engdahl says:

    Sweet Home 3D: An open source tool to help you decide on your dream home

    Interior design application makes it easy to render your favorite house—real or imaginary.

  24. Tomi Engdahl says:

    Try NopSCADlib For Your Next OpenSCAD Project

    Most readers of this site are familiar by now with the OpenSCAD 3D modeling software, where you can write code to create 3D models. You may have even used OpenSCAD to output some STL files for your 3D printer. But for years now, [nophead] has been pushing OpenSCAD further than most, creating some complex utility and parts libraries to help with modeling, and a suite of Python scripts

    Recently [nophead] tidied all of this OpenSCAD infrastructure up and released it on GitHub as NopSCADlib.


Leave a Comment

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