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 these programs certainly helped makers get into 3D modeling, most had serious limitations. Only a few have been truly open-source, and even fewer have been both open-source and parametric. Parametric CAD allows you to create 3D models based on a series of parameters, such as defining a cube by its origin and dimensions. This is in contrast to sculpting style 3D modeling software, which is controlled much more visually. The benefit of parametric modeling is that parameters can be changed later, and the model can be updated on the fly. Features can also be defined mathematically, so that they change in relation to each other.

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.

If you’re looking for a parametric open-source CAD program that can run in your browser, this is it. It’s far enough along that you can use it for real-world (albeit simple) modeling. CAD does, however, still require a certain type of spatial thinking and reasoning. So, if you’re new to the 3D modeling world, it might be worth tinkering with a more learning-oriented tool like BlocksCAD.

[thanks to mmiscool for the tip!]

46 thoughts on “Open-Source Parametric CAD in Your Browser

    1. My kids use openscad on my Ubuntu laptop when I am around and not using it; is a R-Pi 3(their computer) powerful enough to run it? Unfortunately there is not a working build of either Openscad not full Arduino IDE for the R-Pi.

      1. Not sure. I haven’t tried.

        Note that OpenSCAD and OpenJSCAD are different – although I believe there’s some shared code that led to the similar names?

        OpenSCAD is a traditional application, OpenJSCAD is browser-based.

        I have used both, but in the context of this article I was referring to the latter browser-based version. :)

    1. I’ve been learning OpenSCAD this past week – I’ve not found it too bad, although I’ve encountered some of the bugs you mentioned already. C-CSG looks pretty impressive – is it more reliable/performant than OpenSCAD?

  1. why the hell i should use a CAD-in-browser? it cost on overload by browser itself, an all other constraints. better go with a installed program to optimize speed as soon as my model became big. parametric and open source coded CADs are already available, give a look to FreeCAD or OpensCAD. please give up with this stupid trend “i-run-everything-in-browser”!

    1. instant accessability and platform independence are the most powerfull arguments. shure this isnt the powerhouse for cad, but it fills a niche I have in my medium size manufacturing company. However, a browserbased DXF-editor would be soooo much more usefull!

      1. I would even go so far that there is a lot of willing to pay companys for such a softwaretool as it allows me to use older PCs or notebooks in the production line. they may not get much older there because of all the metal dust, but who cares if i can just plug in another one, browse to a website and can go on with my work.

  2. Personally I think this is awesome. I’ve only had my girlfriend’s laptop with me over the Christmas break and it doesn’t have any of my usual software installed on it. I need a method to convert log files from my teensy to CSVs, so I though f***-it, I’ll give JavaScript a go. Surprisingly powerful! I am used to using MATLAB, but I have found Plot.Ly to be equally as flexible. I say bring on the JavaScript, all you need a browser, I think that’s pretty fantastic :)

    Ps Merry Christmas everyone

    1. I have encountered this in a world of buggy, wierdware laden, MS-pain. Just load your favorite OS onto a big USB flash drive and use that to boot. Between that and my old Maemo smartphone I have enough capacity to work and play nearly as normal. I usualy pick Lubuntu so as long as it is amd64 I can boot damn near any laptop from the last few years and have it moving at high speed in a useful OS with the packages I need.

  3. Is there an open source/free CAD software package that supports assemblies with constraints? For example, I have multiple parts and I want to join them together in order to make a complete “product”. I know FreeCAD has an inofficial “Assembly2” workbench, but even it is super buggy and recently no longer developed. The official assembly workbench is nowhere in sight, as well. Anyone know of anything? It is one of the issues that forces me to continue using mega expensive commercial CAD software :/

  4. This may shock you but….I’ve been doing parametric CAD design for years using an excel spreadsheet, and small set of macros that convert the cell contents to corresponding lines in a file that OPENSCAD opens automatically. The ability to put formulae into excel cells allow for a rapid scaling and, using a hierachial approach with modules, design of components and assemblies. Throw in the animation variable $t and I can quickly create animations of the designs and printable STL files.

      1. I love faces. Just not sketches on them.

        Sketches are for planes. You can make planes from sketches.

        When you sketch on faces, you open up a pandora’s box of please-break-my-model-whenever-I-change-anything. You cascade problems all the way down; change the angle on a face slightly? everything breaks. add an edge? everything breaks.

        Of course, this is just my opinion, but a well-made document model should have a form that follows rules closer to: sketches and planes first, operations to generate and manipulate solids after – with no sketches, planes, points, or any other 2d primitives after the first solid is created. This way, when you inevitably have to change something, you won’t have to axe your entire model, but may have a couple of operations that must be repaired.

        Now, for the love of FSM, please, stop sketching on faces.

        1. But that mostly occurs with history-based modeling. Newer, more direct-modeling-oriented interfaces are unaffected by sketching on faces vs planes. In fact, I just started using the Orchard platform, and in the interface, you can even move and rotate sketches like objects, even after sketching on a face (https://3DOrchard.com). It’s a bit different to get used to, but works well once you do!

        2. Of cource you could sketch on a plane but you would fail to get the reference geometry from the underlying surface/face.
          In nx you can sketch directly on a face. In the background it creates a plane that is linked to the face that the sketch resides on but these are trivial details that most people don’t have to deal with.

  5. I can’t reply to every post that mention OpenScad here but it is worth pointing out that the software presented here is essentially different. OpenScad is very useful but feels like cad from the 80s (being generous). This Sketcher, like Freecad, Solvespace or the commercial “equivalents” Solidworks, Inventor, etc.. they allow to define shapes based on constraints, which inherently makes the models dynamic and very simple to build. It takes hours of work to make a very simple solid model using Openscad while it would take minutes to make it with the aforementioned software.

    1. i agree openscad is perfect for thingiverse and general household objects but unless you’re design need is inherently programmatic, i.e math generated, most times you will save time by using something like solidworks/onshape using constraints/variables/equations especially if it’s complex and especially especially if you want to easily fillet any edge quickly just to see how it looks.. without having to code boolean operations for single fillets or spend time looking for a library and trawling through code… which might be fun but i just want to focus on designing my model and not worry about anything i don’t have to

  6. I previously used Solidworks, then Onshape, but I recently made the switch to Orchard (https://3DOrchard.com). It’s a free platform for crowdsourced design and runs in the browser. I like it because of how quickly I can jump in and start modeling or editing designs, and how quickly the interface was to learn (although, my previous CAD experience helped). The interface is slightly different than I was used to, but slick once you get the hang of it. Tools become available based on what’s selected (rather than in your face all the time). The only potential drawback is it requires chrome (but I use chrome so it’s np for me): https://3DOrchard.com

  7. :sigh: I wish that someone could figure out how to compile a native Windows build of Antimony. ( http://www.mattkeeter.com/projects/antimony/3 ) If any of you are up for it, there is even a bit of money in it for you. ( https://www.bountysource.com/issues/20680913-native-windows-build )

    (For those of you who haven’t heard of it, there is a pretty good explanation at Matt’s site. Two things that aren’t mentioned for some inexplicable reason, though is A) Every field in a component can be filled either with a value or a Python formula, and B) Every field in every component can be referenced with component.field!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s