|
|
Subscribe / Log in / New account

A survey of free CAD systems

February 6, 2023

This article was contributed by Alexandre Prokoudine

Computer-aided design (CAD) software is expensive to develop, which is a good reason to appreciate the existing free and open-source alternatives to some of the big names in the industry. This article takes a bird's-eye view at free and open-source software for 2D drafting and 3D parametric solid modeling, its progress over the years, as well as wins and ongoing challenges.

FreeCAD

FreeCAD, distributed under LGPLv3 LGPLv2+, can incorporate virtually any set of tools related to design and engineering. The program is organized into workbenches — modes that provide job-specific tools to work with 2D or 3D geometry and its metadata. You can start with a 2D sketch of a part, complete it in 3D, do the finite element analysis, then create project documentation for submission, all by moving between workbenches and without ever leaving the program. That has been project's goal from its inception at Daimler in 2001.

[FreeCAD screenshot] Drafting in 2D with FreeCAD is a little confusing as there are multiple workbenches that have 2D geometry tools. The choice of a workbench depends on the type of the project being worked on. The Sketcher workbench is best used when one has a 3D project in mind that starts as a 2D sketch. The Draft workbench is better suited for use cases that stick with 2D (e.g. floor plans). In addition, workbenches like BIM (building information modeling) also provide tools for 2D sketching. Creating documentation (placing views onto a sheet of paper) requires yet another workbench called TechDraw. There are a lot of additional workbenches that can be installed separately via a built-in add-ons manager. They are all tailored for specific tasks like designing boat hulls, working with sheet metal designs, etc.

FreeCAD is a capable system overall, good enough to have become the haven for former Fusion 360 users who jumped ship after the licensing policy change in late 2020. However, the project has its struggles. Users commonly cite a difficult learning curve, performance issues, as well as crashes and various glitches as major obstacles.

There are various attempts at fixing some of the worst problems; several developers who contribute to that effort rely on funding from the community, usually via Patreon. In early 2022, the project created the FreeCAD Project Association (FPA), a Belgium-based non-profit organization that holds various assets (such as domain names), serves as the project's representative in conversations with institutions, and issues grants to contributors.

QCAD

QCAD is a 2D CAD program with a focus on drafting without constraints. The project was started by Andreas Mustun in 1999 as a computer-aided manufacturing (CAM) tool. Because the tool is mature and 2D-only, changes over the past few years have come at a seemingly glacial pace. The program has a large set of design and modification tools and is currently popular with do-it-yourself people and tinkerers of all kinds. It's also extensible using ECMAScript, and that section of the forum is one of the more active ones.

[QCAD screenshot] Although the user interface is organized differently from that of other, similar programs in the industry, most features in the program are readily discoverable, so QCAD is easy to get started with. The program is stable; only eight crash bugs are marked as not fixed in the tracker (out of 481 open reports and feature requests overall), and none of them is older than two years. Mustun keeps a pretty tight grip on this.

As a project, QCAD is different from every other free/libre CAD program: there is a community version (GPLv3+), a commercial version with extra plugins like support for the proprietary DWG format, and a separate commercial version with a CAM module and support for nesting. A lot of new advanced features end up only in the proprietary editions. It's hard to say whether the project is sustainable in financial terms since it definitely is a one-man band; third-party contributions of code are rather scarce. However, QCAD has been around for over 20 years, releases are frequent, and the community is active.

LibreCAD

LibreCAD started off as a fork of QCAD v2.x in 2010. Originally, Ries van Twisk was just planning to create a CAM module for QCAD to use it with a Mechmate CNC router. However, at the time, QCAD was based on Qt3, which was rapidly becoming obsolete, and the availability of the community edition (under GPLv2) was not certain. So Van Twisk acted on this concern and did the Qt3-to-Qt4 port.

Just like the original project, LibreCAD focuses on drafting features and is commonly used as a generic 2D CAD program. Because QCAD received a substantial internal redesign and an license change from GPLv2-only to GPLv3+ since work on LibreCAD had started, feature-wise LibreCAD v2.x continues to offer features mostly available in QCAD v2.x, but not from newer versions.

In 2014, the team decided to rewrite the geometry kernel of the program for legal and technical reasons. The original QCAD v2.x kernel code was GPLv2-only, which prevented a change to GPLv3+, and they considered the code itself not good enough to justify adding new features. The v3 branch has been in development since then, mostly by Google Summer of Code (GSoC) students. It has a new geometry calculations kernel, hardware-accelerated rendering, an updated, Ribbon-like user interface, and more changes. However, at this time, it's far from a being in a releasable state.

The project has been struggling with attracting regular active contributors for some years now. Only one GSoC student has stuck with the project to become a v3 branch maintainer and a GSoC mentor himself. At the same time, LibreCAD lost two of its most prolific contributors, Van Twisk and Rallaz. On a few occasions, LibreCAD contributors have stated that they are not ready for paid work on the program. But they do accept donations.

The current plan is to make just a few more releases in the v2.2.x series to include more contributions, then switch the focus to v3 entirely. The team is also hoping to attract more attention to LibreCAD v3 by starting to provide regular CI builds, which was the focus of their 2022 GSoC project.

SolveSpace

Originally a proprietary program with a rather unusual user interface, SolveSpace became free software in 2013. It is mainly a 3D drafting program that can be used in a 2D context to some extent. The entire project has been built around a sophisticated constraints solver.

Unlike QCAD, SolveSpace doesn't have dozens of 2D drafting tools. However, the combination of basic design tools (line, circle, rectangle, spline) and parametric modeling with constraints makes it powerful enough to design various parts (with NURBS, no less), which is why SolveSpace is commonly used for mechanical design of simple parts.

It's hard to beat the summary of SolveSpace recently written by user "somat" at HackerNews:

It feels like the program has captured the pure essence of parametric modeling and put it in program form. Lightweight and nimble, nothing extra, just plain fun to use. Until your models start exploding, which happens often in SolveSpace.

Two most problematic parts in SolveSpace however are the NURBS implementation and the user interface — 10% and 17% of all reported bugs and requests have been filed against those respectively.

There is no formal roadmap in the project, but the v4.0 milestone page provides some insight into the project's future plans. There is also an experimental port of SolveSpace to WebAssembly via Emscripten available in the main development branch, although the goal to make the program work on the web is not being actively pursued.

Development is driven purely by fun, the current team does not even accept donations, and there is no formal organization such as a non-profit foundation.

CAD Sketcher for Blender

This is a relatively new project designed and built as a Blender add-on. CAD Sketcher makes use of SolveSpace's constraints solver (its port to Python called py-slvs, in fact).

CAD Sketcher was designed to improve Blender for technical use cases rather than turn it into a full-fledged CAD application. CAD Sketcher uses the main viewport in Blender to create 2D sketches on the user's plane of choice. The add-on supports drawing geometric shapes (lines, rectangles, circles, arcs), setting various constraints, creating bevels etc. The resulting draft then can be used to create a 3D model of the design. Plugging into a vibrant, active project like Blender has certain benefits from developer's standpoint: it's easy to both create the user interface and distribute the program (installing an add-on Blender is as easy as loading a ZIP archive from the Preferences dialog).

Like some other free/libre CAD software projects, CAD Sketcher is mostly a one-man band, where one person does the vast majority of development. On the other hand, given project's intentionally limited scope, this appears to work for the community. According to project's roadmap, CAD Sketcher v1.0 is not too far off, and there's no shortage of ideas for future work. Development of the project is currently financed to some extent by selling the plugin on Gumroad. The project is maintained in collaboration with MakerTales YouTube channel that has over 70,000 subscribers.

OpenSCAD

[OpenSCAD screenshot] OpenSCAD developers identify it as "The programmers solid 3D CAD modeler". Instructions are written in a simple programming language, the OpenSCAD compiler then reads that script, renders a 3D model, and exports it to STL (a 3D-printable file format) or sends it to OctoPrint (a web interface for 3D printers). You can learn more from an introduction to OpenSCAD at LWN.

The project was started in 2010 by Marius Kintel after he got involved with the RepRap project and felt the need for a design tool more suitable for 3D printing than what was available at the time. Over the years, OpenSCAD has become popular with the maker community, especially with users of platforms like Thingiverse.

Reviewers commonly highlight the benefits of OpenSCAD, such as making designs inherently parametric (which also makes it easy to create variations of a design) and being better suited to users who come to modeling with a programming background. However, most 3D CAD programs today are parametric and many (even free/libre ones) allow modeling with code in languages that have a wider use than OpenSCAD's own scripting language. So it's up to the user to decide whether the built-in scripting language is expressive enough for them.

The project's activity is currently lower than in its most active years (2014-2015), however there are several active contributors, and the project is steadily moving toward the next release (the latest was in February 2021). There's also an online version of OpenSCAD, based on Dominick Schroer's port of OpenSCAD to WebAssembly.

BRL-CAD

[BRL-CAD screenshot] BRL-CAD is a 3D CAD system with support for both constructive solid geometry (CSG) and boundary representation (B-REP). This project originated in US Army Ballistic Research Laboratory (hence BRL) in 1979, became an open-source project in 2004, and is still managed by US Army employees.

BRL has shaped the feature set and the user interface quite a lot. Here is one of BRL-CAD developers providing his insight on the subject at Hacker News:

BRL-CAD has had more than 450 years of full-time effort invested, tens of millions with development spanning over four decades. However, that investment is heavily centered around features, integrations, and capabilities that are not as typically useful to the general public. [...] Primary paid focus is military vulnerability and lethality analyses where BRL-CAD is absolutely unparalleled... Still, general usability is not funded and is left to the auspices of the open source community.

This is probably the main reason why BRL-CAD is not popular in the industry despite its long track record. Nevertheless, the team is concerned with how much usable the program is for non-army users. They've been participating in GSoC for many years now, and most of their GSoC projects focus on modernizing both the internals and the user interface. Arbalest, the new Qt-based user interface, is already a multi-year project primarily developed via the GSoC program.

The core BRL-CAD developers are currently funded by the US government, but there are also some unpaid active contributors.

Collaboration between projects

BRL-CAD has been serving as an umbrella organization in GSoC for several FOSS CAD projects since 2013. In 2014, BRL-CAD developers registered The OpenCAx Association, a US-based 501(c)(3) non-profit organization. BRL-CAD, LibreCAD, OpenSCAD, FreeCAD, STEPcode, and Slic3r are all members of the association. Several other projects, such as IfcOpenShell, LinuxCNC, and KiCad, are not (yet) part of it, although they participated in GSoC under the BRL-CAD umbrella in various years.

So far, there is not much code sharing between these projects. There is some potential in using the geometry kernel of BRL-CAD elsewhere, but this would, at the very least, require an entirely new public API. There is some ongoing work on that API: the prototype known as Modular Object-Oriented Solidity Engine, or MOOSE, is already being developed.

Another obvious project where collaboration could happen is STEPcode, a set of ISO10303-conformant schemas and classes for reading and writing STEP files. BRL-CAD developers are also reportedly interested in creating "reusable geometry conversion infrastructure which includes AP242 and a couple dozen other formats".

Interestingly, two more projects that look like an obvious fit for the association — SolveSpace and libredwg — are not part of it. SolveSpace's constraints solver is now used in multiple projects, including FreeCAD's Assembly3 workbench and CAD Sketcher. And libredwg, also used by multiple projects, is a library for reading and writing the proprietary DWG format.

Summary

It's hard to overestimate just how important funding is in the CAD area; developing a sophisticated CAD program is expensive. It isn't surprising that FOSS projects with the best track record in terms of steady progress and regular releases are also projects that have funding more or less figured out. Overall, 2D/3D CAD projects appear to be moving toward better organization, even though there are still many improvements to make there.

While there's not much collaboration between projects apart from participating in GSoC together, it's interesting that both FreeCAD and Blender appear to be successfully building ecosystems so that new major features can be developed as add-ons and plugged into a larger host application. This simplifies both development and distribution.

One common weak spot is user interfaces. Drafting and solid modeling are surprisingly conservative fields; most of the available free/libre CAD programs have a 1990s/2000s user interface, which is both a blessing and a curse. There's the familiarity aspect that is hard to deny, but also not a lot of original research to find better ways to accomplish tasks.

The difference becomes especially apparent when you look at newer projects like Plasticity. It's a 2D/3D CAD program (LGPL, but based on a proprietary geometry computations kernel) written mostly in TypeScript. The approach to UX design follows modern patterns, and the amount of praise the program gets from experienced users, even at the current alpha stage, shows just how much interest for a shake-up has built up in the community of engineers and tinkerers. This is something that developers of other existing projects will have to deal with one way or another.


Index entries for this article
GuestArticlesProkoudine, Alexandre


to post comments

A survey of free CAD systems

Posted Feb 6, 2023 16:04 UTC (Mon) by arachnist (subscriber, #94626) [Link] (1 responses)

One that I like, that wasn't included here is CadQuery: https://github.com/CadQuery/cadquery
It's kinda similar to OpenSCAD in that you're actually programming the model, but since it's leveraging python, it's a lot easier to debug when your model does something unexpected, and you can actually export .step files, which is useful if you want to do anything other than just 3d-print your models, though it is also useful there - both PrusaSlicer and Cura (though only in paid version) support importing .step files.

A survey of free CAD systems

Posted Feb 6, 2023 20:24 UTC (Mon) by prokoudine (guest, #41788) [Link]

It's an interesting project indeed, but I had to stop somewhere :) There's also ZCAD, CadZinho, OpenVSP, and probably a dozen other active 2D/3D CAD projects, including somewhat unusual ones (think LeoCAD).

A survey of free CAD systems

Posted Feb 6, 2023 17:00 UTC (Mon) by smurf (subscriber, #17840) [Link]

For people who like nicely programmable CAD without all the questionable frills of constraint solvers and 3D editors there's also CadQuery. It's programmed in Python, comes with a nice GUI editor that should be mostly familiar to OpenSCAD users, and (from what I can see) does NOT suffer from OpenSCAD's "add 0.001 to the dimensions of all negative volumes so you get proper geometries" disease.

My only major pain point is that installing it requires a nontrivial heap of work if you're not using Anaconda. *Sigh*.

A survey of free CAD systems

Posted Feb 6, 2023 18:42 UTC (Mon) by jhoblitt (subscriber, #77733) [Link]

One of the barriers for entry in the CAM space is that often a gcode post-processor, which is machine+cam combination specific, is required to adapt generic gcode to the machine's quirks. Often, the machine manufacturer will provide f360, mastercam, and/or camworks post processors and no documentation as to what gcode mangling is required.

A survey of free CAD systems

Posted Feb 7, 2023 4:22 UTC (Tue) by dgc (subscriber, #6611) [Link] (3 responses)

Here's what I had to say about it in 2017 after a couple of years of struggling with the available CAD tools to design and build a race car:

https://youtu.be/VigVEbeTtXM?t=804

I mention most of the same tools, and talk about all the same problems. i.e. nothing in has really changed that much in the past few years....

A survey of free CAD systems

Posted Feb 7, 2023 5:17 UTC (Tue) by Burgundavia (guest, #25172) [Link] (2 responses)

I'd disagree. I've been a FreeCAD user since 2018 and the newer versions are lightyears ahead of where they were. At the level of commercial CAD? No, not yet, but I look at QGIS for the likely picture in a few years - a stable & growing codebase with increasing financial support.

A survey of free CAD systems

Posted Feb 7, 2023 6:32 UTC (Tue) by dgc (subscriber, #6611) [Link] (1 responses)

Oh, there's been improvements, no doubt about that. Freecad definitely has /more functionality/ than it had a few years ago. But it still has performance problems, UI problems, object model problems, crash and hang problems, and so on. It's still way behind solidworks, onshape, etc in terms of ease of use and learning curves, and it still suffers from poor documentation.

That's the point I'm making - all the observations that I made back in 2017 are clearly still valid today. There might be more functionality in the tools, but the barriers to widespread adoption of those tools clearly have not been addressed in any significant way....

A survey of free CAD systems

Posted Feb 7, 2023 13:06 UTC (Tue) by calumapplepie (guest, #143655) [Link]

Solidworks and onshape and others also suffer from crashes, corrupting their own data, performance issues, weird and fidgety behavior with mate relations, awkward piles of weird tools buried in sub-menus, and confusing and contradictory documentation. They're better, yes, but they are still finicky and frequently unintuitive. The fact that one is often running older versions for licensing reasons doesn't help.

A survey of free CAD systems

Posted Feb 7, 2023 4:45 UTC (Tue) by yootis (subscriber, #4762) [Link] (3 responses)

This article inspired me to try CadQuery again. So I installed the SNAP of it on Fedora, and it simply doesn't run:

$ cadquery-editor
/snap/cadquery-editor/2/usr/bin/python3: can't open file 'run.py': [Errno 2] No such file or directory

Isn't this exactly what snaps are supposed to solve?

A survey of free CAD systems

Posted Feb 7, 2023 6:46 UTC (Tue) by mathstuf (subscriber, #69389) [Link] (1 responses)

I thought SNAPs required `snapd`. Does `snapd` work (reliably) on non-Ubuntu yet?

A survey of free CAD systems

Posted Feb 7, 2023 6:51 UTC (Tue) by yootis (subscriber, #4762) [Link]

Well, the snap of SolveSpace works, and so does Signal desktop.

A survey of free CAD systems

Posted Feb 7, 2023 10:05 UTC (Tue) by atnot (subscriber, #124910) [Link]

A large proportion of snaps were created because canonical paid one person to write drive-by commits adding snap packaging for as many projects as possible, without consulting with the project first. Since the far majority of these projects never cared about snap in the first place (and said person has now left the company), they usually just bitrot and are forgotten about until someone complains, at which point they have a high chance just delete the snap package.

At least that's what happened in my case :)

A survey of free CAD systems

Posted Feb 7, 2023 13:47 UTC (Tue) by LtWorf (subscriber, #124958) [Link]

I wanted to 3d print something. I had no idea where to start.

I found some youtube tutorial about freecad and I can't complain too much. But perhaps the shape I wanted to produce wasn't too complicated.

A survey of free CAD systems

Posted Feb 7, 2023 16:00 UTC (Tue) by joib (subscriber, #8541) [Link]

As a minor fix(?), AFAICS FreeCAD is under LGPL-2.0-later, not LGPLv3. See https://wiki.freecad.org/Licence and https://github.com/FreeCAD/FreeCAD/blob/master/LICENSE .

A survey of free CAD systems

Posted Feb 9, 2023 18:01 UTC (Thu) by gerdesj (subscriber, #5446) [Link]

If you want to see what's really possible with OpenSCAD, this chap - JustinSDK was a bit of a legend. He sadly passed away recently:

https://github.com/JustinSDK/dotSCAD

A survey of free CAD systems

Posted Feb 16, 2023 13:17 UTC (Thu) by ramcdona (guest, #163673) [Link]

Thanks for writing this summary. Much appreciated.

Good Parametric 3D MCAD with connections to CAM is an essential tool for any Open Hardware project -- as essential as a compiler is to Open Source software.

I.e. anyone supporting Open Hardware needs to be supporting Open Source MCAD.


Copyright © 2023, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds