As per the title. Posting this right after Ondsel yet again catastrophically destroying a smaller, but mid-complexity multi-part assembly. As such, FreeCAD and Ondsel are non-starters due to the amount of detrimental bugs. I have used SolveSpace for a short time, but it lacks many features (chamfer, fillet tools as base examples).

I have looked into OpenSCAD previously, but decided learning the scripting language wasn’t worth the time. Perhaps with other FOSS options running out, it’s time to give it a fair try. If it’s CAD kernel is particularly reliable and it has some way to interchange sets of defined parameters like FreeCAD’s Configuration Tables, OpenSCAD may be a clear winner.

To note at this point, I am not opposed to using or purchasing proprietary software, as long as the Linux support isn’t half-assed and the price is reasonable (no subscriptions, having a lifetime license for personal/small-time commercial under ~$400 USD per seat).

If anyone has suggestions, or better yet has used something that might fit what I am looking for, I’d love to hear about it.

UPDATE:

I ended up trying out CADQuery with CQ-Editor and my text editor of choice as a replacement for the project I was working on in Ondsel. So why CADQuery specifically? (This is long; I’ve included a TL;DR near the bottom if you don’t want to read a wall of text.)

Defining Features For Me:

Both CADQuery and OpenSCAD support programmatic definition of CAD, which affords having a very declarative way to construct your CAD assemblies. Having global control over models with some ways offered to tackle topological naming makes for a functional experience that allows for quick edits to parts that don’t typically result in footguns. FreeCAD 1.0 just released, supposedly solving the TNP. I might have to demo it at some point just to see if a lot of the bugs and footguns that relate to a lack of TN in previous versions have also been fixed. Above OpenSCAD, CADQuery’s script for writing CAD is directly Python, meaning one has a relatively mature language to really do some powerful things (such as scripted templating for sketches and other parts or having an alternative to FreeCAD’s configuration tables). Given that many complex things (such as lofting dissimilar surfaces) people write in OpenSCAD end up referring back to Python scripts anyway, natively using Python as the basis for CADQuery is honestly a good choice.

Another thing (for better or for worse) is that CADQuery is based on OpenCascade. OCC certainly has its quirks like not being able to define zero-length bodies. It also has a lot of nice features such as STEP export, lofting between dissimilar surfaces, support for splines, etc. A lot of the core features I would expect coming from FreeCAD do exist in some manner in in CADQuery as a result. Some features aren’t fully baked however. Spline support does exist in CADQuery, but is limited in how it can be used (it cannot be used with the Sketch Constraint Solver unlike line segments and arcs). For some very specific projects, this might end up being a dealbreaker, requiring me to use FreeCAD just to get the feature. For most applications I design for however, I don’t see this being a huge caveat in many cases. Due to the declarative nature on top of OCC; if you make a defective design that won’t resolve properly, it will result in a swift error (for as long as you are checking) rather than some of the quieter failures that FreeCAD may emanate. On top of that, the core sketching tools and other implementations of core part-building features aren’t completely riddled with bugs. CAD models actually stay consistent when designed with CADQuery compared to FreeCAD occasionally mutating sketches and parts.

Overall, CADQuery as a CAD design language is quite solid, and seeing that it’s quite extensible with projects like cq-kit existing is a decent sign for its maturity.

Flaws and Nitpicks:

While CADQuery itself is pretty good, I can’t really say the same for the onboarding documentation as well as the officially-supported CQ-Editor. As someone with not a lot of Python 3rd-party tooling experience (conda, mamba, etc.), I went mostly by the books initially for installing CADQuery and CQ-Editor together. This was a mistake. CADQuery and CQ-Editor can be either installed through a huge set of release files bundled and unpacked in a shell script or through conda, pip. I initially tried the bundled command set using conda and mamba, but stopped when I realized the recommended tool of use (mamba) was really attempting to mess with my shell configuration and other properties. So out the window with it and in with just pip in a venv. I ended up getting things mostly installed until I ran into issues with core functionality in CQ-Editor that many said didn’t have issues using package installation via mamba. I then also found that CQ-Editor recommended using micromamba in lieu of mamba for a less shell-invasive installation. So I dumped my venv and setup an installation with micromamba. I then ran into issues with just being able to display a CADQuery test sample. While wading through several similar issues, I found the one that noted that an older version of a given dependency actually needed to be installed for the latest nightly builds of CQ-Editor to properly function. This worked, and CQ-Editor works, but this left me with several questions. In my bug resolving, I curiously looked up queries for distro-specific packages or even a Flatpak for CQ-Editor. The devs explicitly shot down Flatpak support a while back, citing the installation through pip (and conda now) was sufficient.

Based on my experience, not providing distro packages or a Flatpak for CQ-Editor is honestly a mistake. I tend to try a lot of software on Linux so that I can gauge how various pieces of open-source software stack up against each other. I interact with a fair amount of newer Linux users and generally like having a decent answer to most queries of ‘How do I do x’. Obviously, CADQuery has a steeper learning curve than many CAD solutions (especially comparing to the likes of Fusion 360), so for many I might recommend something more along the lines of Dune 3D instead. I do however think that no distro packages, no Flatpak, no actual stable releases that work on the current version of CADQuery (no stable releases for 3+ years), and an installation process to get a minimum viable installation that differs significantly from the documentation is a good onboarding experience. This is honestly just not acceptable if CADQuery and the CQ-Editor project want people to actually use it.

Furthermore, CQ-Editor is the primary and supposedly most feature-filled graphical viewer/editor for CADQuery. This is honestly disappointing to hear as the editor just lacks a lot of basic features. I’ll just list a few basics. It’s a Qt5 application that takes from the system theme by default, but has hardcoded editor and terminal color schemes and a lack of dark-mode icons. It also seems to be a Qt5 application running without native Wayland support. The viewer has no clipping planes, meaning that the only way to gauge part tolerance and internals is to set the opacity of parts in view. The editor is very basic in terms of features, and is almost certainly something that will get disabled immediately in favor of an external editor.

TL;DR:

CADQuery is great as someone coming from FreeCAD and descendants. It has a steeper learning curve being that it uses Python scripting. It has less core bugs than FreeCAD, but some bits of functionality are missing. It also shares many familiar quirks with FreeCAD due to both being built on top of OpenCascade. CQ-Editor really drops the ball in UX and general quality. The installation of CADQuery together with CQ-Editor was unnecessarily painful, and easily the worst part of the experience thus far. I might recommend using CADQuery if you’re familiar with Python (a relatively simple programming language). Installing it however, will likely be a major hurdle to actually using it. More so than actually learning CADQuery.

Alternative I Might Recommend to Beginner Users:

A curious and relatively new software I came across that wasn’t already recommended is Dune 3D. It’s a non-starter for me because it has no configuration-table analogues, but seems to be something that tries to mimic the ease-of-use and reliability of SolveSpace, but with some more features such as chamfers and fillets. I do need to play around with this more, but does look to be a nice solution, if it’s not riddled with bugs.

  • nickwitha_k (he/him)
    link
    14 days ago

    Thanks for sharing! I’ve been contemplating spending some more time with CADQuery as I am more comfortable with text input.