A survey of free CAD systems
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.
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.
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 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 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 | |
---|---|
GuestArticles | Prokoudine, Alexandre |
Posted Feb 6, 2023 16:04 UTC (Mon)
by arachnist (subscriber, #94626)
[Link] (1 responses)
Posted Feb 6, 2023 20:24 UTC (Mon)
by prokoudine (guest, #41788)
[Link]
Posted Feb 6, 2023 17:00 UTC (Mon)
by smurf (subscriber, #17840)
[Link]
My only major pain point is that installing it requires a nontrivial heap of work if you're not using Anaconda. *Sigh*.
Posted Feb 6, 2023 18:42 UTC (Mon)
by jhoblitt (subscriber, #77733)
[Link]
Posted Feb 7, 2023 4:22 UTC (Tue)
by dgc (subscriber, #6611)
[Link] (3 responses)
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....
Posted Feb 7, 2023 5:17 UTC (Tue)
by Burgundavia (guest, #25172)
[Link] (2 responses)
Posted Feb 7, 2023 6:32 UTC (Tue)
by dgc (subscriber, #6611)
[Link] (1 responses)
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....
Posted Feb 7, 2023 13:06 UTC (Tue)
by calumapplepie (guest, #143655)
[Link]
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
Isn't this exactly what snaps are supposed to solve?
Posted Feb 7, 2023 6:46 UTC (Tue)
by mathstuf (subscriber, #69389)
[Link] (1 responses)
Posted Feb 7, 2023 6:51 UTC (Tue)
by yootis (subscriber, #4762)
[Link]
Well, the snap of SolveSpace works, and so does Signal desktop.
Posted Feb 7, 2023 10:05 UTC (Tue)
by atnot (subscriber, #124910)
[Link]
At least that's what happened in my case :)
Posted Feb 7, 2023 13:47 UTC (Tue)
by LtWorf (subscriber, #124958)
[Link]
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.
Posted Feb 7, 2023 16:00 UTC (Tue)
by joib (subscriber, #8541)
[Link]
Posted Feb 9, 2023 18:01 UTC (Thu)
by gerdesj (subscriber, #5446)
[Link]
Posted Feb 16, 2023 13:17 UTC (Thu)
by ramcdona (guest, #163673)
[Link]
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.
A survey of free CAD systems
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
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
/snap/cadquery-editor/2/usr/bin/python3: can't open file 'run.py': [Errno 2] No such file or directory
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems
A survey of free CAD systems