Hacker News new | past | comments | ask | show | jobs | submit login
CADmium: A local-first CAD program built for the browser (mattferraro.dev)
669 points by samwillis 12 days ago | hide | past | favorite | 241 comments





I'm very excited about what Matt is building, the world desperately needs a good open source parametric CAD package. One where the UI/UX is designed to be as "easy" to use a SolidWorks.

The biggest reason this hasn't happened so far is the lack of a truly capable parametric kernel, Truck, the kernel that Matt is using looks like an incredible project and exactly whats needed. The only other kennel till now that been close to being whats needed is OpenCascade, but its lacks important features, is buggy and at times quite unstable.

Once Truck (and CADmium) lands stable fillets (surprisingly one of the hardest features to make stable) it will prove itself as the perfect successor to OpenCascade and and the perfect platform to build the future of open source parametric CAD upon.


Maybe I'm not enough of an evangelist, but I just want a good, non-subscription local-first CAD package.

I've recently moved over to Alibre Atom3D, which, while not open-source, costs $200. Once. Then (as long as your host OS doesn't change too much) you can access your designs forever. It runs on the ACIS kernel.

"Browser first" and (from the readme) "Beyond that, I will try to monetize by offering a hosted version of the software as a paid product." reads to me like this project is doomed to either fizzle or to grow and transform into an open-core, subscription-requiring product, accumulating more complicated dependencies to install and "security features" that make it harder and harder to run in truly local fashion.


The problem with Alibre is that it only works on Windows. I switched from FreeCAD to the free (as in beer) version of Onshape, which works in the browser and is a night and day difference over FreeCAD.

Your designs are wide open for anyone to see, but I can live with that for hobby stuff.


I wouldn't mind having my models public, but that it SaaS is such a nuisance and the reason I am sticking to FreeCAD. I want to be able to edit offline, like on an airplane and not lose the ability to edit my stuff if some company shuts their servers down.

I probably spent 100 hours trying to tame FreeCAD, and ended up thinking CAD was just not for me. I then tried Onshape and found out that the problem was elsewhere.

Did you do any tutorials? I've done like 10 hrs of the MangojellySolutions beginner tutorials on YouTube and after that I've been pretty much able to do what I want or only had to look up solutions to a very specific problem.

I one time had an issue where I messed up and had to post on the FreeCAD forum and got two of the best responses I've gotten anywhere on the internet ever. Two people opened up my model and took screenshots highlighting where my issue was and gave me several suggestions on how to improve my model in other ways. The initial time investment was substantial and there are still a few workflows that could be smoother for me (attaching a sketch to a different face after it's been created), but that's fairly minor.


A big part of those 100 hours were spent watching these kind of videos.

And I asked countless questions on the forum as well. People were always very helpful.

But there’s a point where you just give up.

Having never used OnShape before, it literally took me half a day to get something done and submitted for external production. I tried that design first in FreeCAD, after those 100 hours, and got nowhere.


This. And I think it now has the best tutorials on youtube. And the Facebook group is weirdly fantastic. It’s such a nice community.

But there’s no denying that FreeCAD is still a bit of a lifestyle choice :-) I love it, but I don’t try to sell everyone on it yet.


Agreed. The UI is painful, but the project priorities are correct: fixing TNP and fillet/chamfer needs to come before the polish. First make it minimum viable for the non-zealous, then we can talk about drawing attention with a sexy dark-mode-by-default UI overhaul. It's getting close, but that makes this the most important time to exercise restraint.

Alas, fully fixing the issues with fillets and chamfers may be impossible, because those specific problems are quite foundational issues in OpenCascade. I don’t know if it’s even possible for FreeCAD to know that a fillet would fail by testing it, because of limitations with the responses that come back from the kernel.

It might be possible to predict which edges would have problems, but I think that would involve repeating geometry calculations outside the geometry kernel?

Specifically the main problem with fillets/chamfers in OCC is that the new face cannot completely consume/replace an existing edge.

That is to say -- I think!? -- that one of the edges of the new fillet/chamfer is always an existing edge just displaced, and no edges are destroyed. If an edge would be destroyed, then it fails?

But this is just my colloquial/folklore understanding.

There have been newer versions of OCC that FreeCAD has not yet switched to, I think. (And there is a new (Chinese) fork, called OpenGeometry.)

So maybe there are some fixes already in the pipeline or in the future. But they are somewhat out of the FreeCAD project's control, is my understanding.


I definitely agree on it not being intuitive. Something where I likely will spend hundreds of hours of work and learning is something I want to be unambiguously available to suddenly being taken away from me or be behind a paywall of thousands of dollars. You are 100% correct though that this tradeoff isn't for most people.

On the flip side I spent probably 30 minutes each to get acquainted with Fusion and Onshape, and completed my first designs within a couple of hours.

I've invested several hours already in trying to learn FreeCAD and achieved nothing. Its a hot mess that desperately needs a new UI.


It might take more than several hours. But the Mango Jelly Solutions videos on Youtube will get you into FreeCAD.

Sure, but my primary objective is not "to learn CAD systems" - I just want to get models done for making things.

Right. But this is the choice, isn't it?

I don't know if you can really get away without learning general things about CAD systems if you want to make complex things, because those general things are so influential on the existence and design of real world objects.

It's like saying "but I don't really want to learn about different programming languages or software design, because I only want to write apps for iPhone."

If you want to make very simple objects and not learn deeper concepts, use TinkerCAD. It's fine. Weirdly competent in places; people pull off crazy stuff. It uses a simple physical world model.

Beyond that, you need more abstract tools. Ultimately you have to decide whether you want to exist within the (shifting) free plan limitations of a commercial cloud package, spend money on something like Alibre Atom3D, pay the cloud firms, or use something open source.

I'm not sure if it should be surprising that the open source systems are more of a commitment.

FreeCAD (main branch) has one fundamental limitation which is being mitigated -- the topological naming issues -- and some smaller issues to do with fillets/chamfers, but apart from that is a disorganised-but-competent, open source workbench-based system.

And the tradeoffs are not straightforward. This is less like Photoshop vs GIMP and more like ArcGIS vs QGIS. Is ArcGIS initially more coherent? Yes, allegedly. Is it universally more powerful? No.

FreeCAD is really a lot like QGIS, IMO.

You can learn QGIS, and when you learn it, you might decide that the freedoms and flexibility it offers are worth the pain. Or you might front up the cash for ArcGIS.


100 hours of watching videos and trying to make something and not getting anywhere vs a few hours.

The problem was not about getting away with it without learning general principles.

Of course, those 100 hours taught me about principles that were applicable to OnShape as well, so it’s not entirely apples to apples.

BTW, the issue was never TNP. It was everything else. The absurd separation between Parts and bodies and whatnot. The 5 different assembly benches, none of them good. The crashes. The way you need pixel precision to grab a vertex or an edge. And if some operation cuts a part in multiple disjoint pieces, only one survives.

My wife told me to stop doing what I was doing because I ended the weekend with way more frustration than the work week.


I've not watched 100 hours of videos at all and I've made and printed fully parametric designs with four variants driven by two configuration tables. I don't think it's that hard to learn.

> The absurd separation between Parts and bodies and whatnot.

Again, Parts/Bodies, it's confusing (and Part Design should be called "Single Body Design" IMO) but there are videos that explain the difference.

(I gather it comes from CATIA, and CATIA users are comfortable. Either way you don't have to use both; it's possible to never touch Part Design and do absolutely everything.)

I don't think I got it initially but now the difference is useful. There could be more work to allow non-Part-Design Parts to be wrapped in Part Design bodies. There's a macro (pdwrapper) for this, and Realthunder's branch built it in.

There could be better explanations on how Part Design works, how you build a Part Design Body from existing Parts and how you later combine them.

> The 5 different assembly benches, none of them good.

I feel this pain and I mostly avoided it by just using static placement. There's a new built-in Assembly workbench with a sophisticated solver that is being added in 1.0 which will land in the next two to three months (and is already in 0.22-dev and Ondsel 2024.2). I am going to dive in with that.

> The crashes.

Not a problem I have on the Mac at all now; 0.21 is really stable. Though startup crashes are common on Linux due to W****nd and the complexities of compiling support for it. The Flatpak appears to solve those. Ish.

> The way you need pixel precision to grab a vertex or an edge.

There is a preference setting (a newish one) that makes edge selection rougher/easier.

> And if some operation cuts a part in multiple disjoint pieces, only one survives.

Only in Part Design, which (in mainstream FreeCAD) is concerned with only one contiguous object. In fact, that operation actually fails. (A Body can be started with a compound of multiple pieces, but the first feature has to join them).

RealThunder's branch can support Bodies made of separate solids, and maybe that will come to mainstream once the TNP fix, which is a prerequisite, is in.

Outside of Part Design, objects split as you'd expect.

I don't think FreeCAD is perfect. That would be silly. But none of the "free" plans of the commercial cloud packages are right for me.


I think there's probably a vast range of use cases where having the models freely available isn't hindrance

Even $2k per year in 3D CAD is entry level pricing. Good CAD for $200 once is probably a prank tier idea to suitspeople, even though it's a necessity for 3D printing community.

It is worth noting that what is doable/practical with entry level CAD has increased a lot over the last 20 years. Hobbyists will not feel restricted, and one can do quite a lot of commercial relevant work also.

BricsCAD for instance is less than that, 1600 one-time fee. And it's good.

I think RS Electronics still maintains and gives away a version of DesignSpark for Windows, which is likely a smart move if it integrates with their catalogue.

Alibre Atom3D is the entry level package, but the whole thing seems very much like the Affinity suite model. It looks very good.


Suits gonna get Blendered, but that's a good thing :-)

Feel the same way. Honestly I think there's more money to be had going open source than competing in a sea full of sharks. But hey, that's probably wishful thinking from my part.

But that open-core subscription model is the way open source makes money! Not enough people pay for software out of the goodness of their hearts to make a living off of it.

All subscription software is just a protection racket.

Nice files you got there. It would be a shame if they suddenly become unreadable, eh?

Even the so called "open" core is a joke. Just try to add anything useful. It will get rejected in favor of a paid option.

The whole thing is just an offensive anathema to open source.


I will say that the FreeCAD weekly builds have made massive strides; I believe the toponaming fix is in the latest mainline weekly now and Ondsel have been contributing great work back from their branch as well.

I’ve been playing around with the weekly version and using the OpenDark theme. It looks pretty slick.

It seems like a really exciting time for open-source CAD (hopefully!).


FreeCAD suffers from the same issues that much open-source software suffers from: it has bugs. Bugs erode user confidence.

Apparently, there are now > 500 bugs open.

When commercial software has bugs, you don't even know they exist often. Sure, but there are also ways to make bug free software, but hardly any open-source software exists that uses those development techniques.


You think professional software is bug-free? I have some experience with NX and I can tell you it’s not exactly bug-free either. It’s very likely better than FreeCAD, but requiring zero bugs is just unrealistic.

This is true, but for customers of nx, solidworks, etc it's someone's job to fix the bugs for you

Which doesn't necessarily mean that job will ever get done.

In my experience it always has, every single time.

How do you get Solidworks bugs fixed, and on what timescale? We have ~20 solidworks premium seats, plus a handful of licenses for other dassault products. We've complained loudly about various issues, submitted and voted on feature requests, talked to our VAR at length and in many on-site meetings, and nothing seems to happen as a direct result. At best, a bug is incidentally fixed in a later release.

It's still better than FreeCAD, though.


You submit a ticket with your VAR, and then keep following up with it.

I've never once run into something that they didn't have a workaround for, and then eventually fix. Sometimes it takes a service pack or two.

They out out 4 or 5 service packs every year along with the major yearly releases, those service packs are basically entirely bug fixes.

You may want to look into switching VARs if your not happy with your support.


Our VAR was Trimech for many years, then we tried a few others that were worse, and finally we came back to Trimech.

We've always lagged a year behind the current SW release to try to avoid getting hit by the latest and greatest bugs.

I think we just hit more edge cases than other companies. We have half a TB of stuff in our vault (about 250k files), going back to 2012 for the first import. Lots of legacy files, fairly complex assemblies, heavy use of some tricky stuff like the sheetmetal design tools (where we tend to find the most bugs). And then there's Solidworks Electrical, which I don't think anybody is set up to support well, as it's still a fairly recent acquisition from Trace Software.


I've heard some VFX professionals mention that they got told certain bugs can't be fixed because the codebase is too old and complicated, and they are used to the software crashing randomly on a regular basis.

If people have no alternative in their field or the alternative requires discarding years of experience, the incentive to fix bugs isn't as high as it could be. That's how you get problems like Excel invalidating data with automatic formatting for decades.


Sadly a lot of people think that way.

Particularly younger engineers have their mind blown over the concept of not immediately upgrading all your software just because there's a new version.

In the physical engineering spaces, it's more valuable to keep using the same software version you started a project with, rather than have hundreds of thousands of dollars in damages because of a dickhead bug.


It’s not just that. It’s also ugly and awkward to use. I tried to use it after learning Fusion360, and it’s just lacking. I wasn’t even trying to do anything particularly complicated, and it just kinda sucked.

You see the same problems with a lot of “flagship” oss ware. Gimp seems to have the same awkward feature set for 25 years. Apparently the only thing that has changed is they no longer compile against Gtk 1.0, and they decided to have all images in a single window.

Still can’t do smart background erase.

Inkscape kinda works, but it always seems like attachment points for easily alignment, and a non sucky text editor are forever out of reach.

I’m sorry. I know software is hard, but it’s been literally decades of stagnation.


> Gimp seems to have the same awkward feature set for 25 years. Apparently the only thing that has changed is they no longer compile against Gtk 1.0, and they decided to have all images in a single window.

Off the top of my head:

- Full color management

- Non-destructive filters

- 32-bit per channel precision

- Late binding CMYK support

- Unified transform tool

- Vastly better selection and cropping tools

- Vastly better text tool

Should I go on? :)


You’ve proven my point. A bunch of data loading crap, but nothing substantial on the usability.

This is a simple tutorial task. Is it this easy in Gimp? No. It’s not. But hey, we have the same crappy ScriptFu plugins from a quarter century ago. Anyway, you have the source! Shut up and be grateful you insensitive clod!

https://youtu.be/K25F9RPrP9Q


The last 3 seem like usability upgrades. Substantial, I dunno.

Two and a half decades for a text tool, when the rest of the functionality is stuck in 1996?

Seems fair


> You’ve proven my point.

No, not really. You did say 'feature set'.

> A bunch of data loading crap,

Sure, if you like editing with color fidelity loss.

> but nothing substantial on the usability.

Except non-destructive editing is a major UX improvement.

Except unified transform tool is a major UX improvement.

Except... Well, you get the idea. And I barely got started.

It's almost like you just hate the project and won't accept any changes they do.

I too have my fair share of frustrations with the project — enough to quit it as a team member a couple of years ago. But somehow I don't go around pretending big changes aren't big bc I'm feeling petty all of a sudden.


You can keep assert these things, but do you really think this is acceptable progress of two and a half decades? Look around. It’s not.

I gave a concrete example of a task that is trivial in 2024, and it just does not work nearly as well or as easily. It’s the same functionality of 30 years ago.

Instead, you’re sticking your fingers in your ears and screaming, “it is progress!” Yeah, well maybe technically correct, but the gap has widened. As a project it should be shutdown. It’s zombieware.


Sounds like you are mad at the world and I got in the middle of it. Sorry, I'll see myself out.

Sit by and let nothing happen while you’re out!

>> You see the same problems with a lot of “flagship” oss ware. Gimp seems to have the same awkward feature set for 25 years.

I think Kritta is the new flagship OSS image editing software. I don't use either, but that's my impression.


Very recently (well: yesterday and today), I made the same non trivial shape for an electronics project, and I tried Fusion360, OnShape and FreeCad.

I basically want to extend the base of an Ikea lantern (Enrum); this require creating an (irregular) octagonal shape, and then creating a slot so that the lantern base can sit on it.

I had some distant memories of modeling stuff in Solidworks for a project back in university, so I'm not starting from zero.

I was able to finish my design in Fusion and redid it in one evening in Onshape. As for Freecad... I still don't know how to do it. Or rather: I could probably do it, but only with so much more googling on how to do basic stuff that it is discouraging to even thing about it.

I think the main issue is that Freecad generally expects you to know exactly what to do, and has very poor affordance.

Let's take the very few steps for instance. In order to create my lantern "shoe", I first need to recreate its base. It's some sort of octagon, so the plan is to draw an octagon, extrude it and then probably repeat the operation with several other octagon to carve a slot for the lamp.

So the very first thing is to create a sketch on the xy place. In both OnShape In both Fusion and OnShape, the very first menu item in the toolbar is the "create new sketch" one [1][2]. So you can immediately click on it, then chose you plane, then start to draw.

[1] https://ibb.co/4YMtDnD

[2] https://ibb.co/ZMCf1Yy

In Freecad though, the first thing in the toolbar are.. the camera controls (which are somehow redundant with the interactive cube view of the main area). In fact, you cannot even create a sketch from the default toolbar; at best you can create a Part.

[3] https://ibb.co/ww791Bd

In order to create a new sketch, you need to go to the dropdown menu. This menu is ordered alphabetically. So the first item is "Arc", then "Draft", then "FEM", ... If you do not know the jargon and/or is just starting out, good luck finding where to next ("what's the difference between Draft and Sketch ?" they would say). And even select Sketcher from the combobox, the first controls you see are still the camera ones. Worse: the "create parts" button from earlier is still there ! [3] And so the "new sketch" button is hidden on the right side of while it's probably the very first thing you want to do.

[3] https://ibb.co/xXrTd6t

And for the very short time I spend trying Freecad, issues like were constant.

There's seems to be some open issues related to this in the Github issues viewer, but no tangible commitment as far as I know.


Much of that has been improved for the next release.

>Much of that has been improved for the next release.

Isn't that what OSS project always say?


It's also what FOSS projects do

It has that in common with CAD software which has 5 figure annual subscriptions. Find me a CAD user who doesn't notice bugs in the software they're using and I'll show you someone who has <1 hour of experience.

This is true, but when I encounter a bug in Solidworks there is someone who's job it is to fix it,and they do.

That would be novel in my experience, they seem far more interested in cramming in features (with more associated bugs).

I, for one, love those new features. Often they save me hours a day.

About 10 years ago they released a new feature, slot sketch tool, so instead of drawing 2 circles, two lines, trimming, now it's one click.

If you use the new feature to save significant time, like me, it's wonderful.


And here I thought it is cripplingly obvious UI problems.

The attachment editor is horrible, for instance. If you want to attach a sketch to a datum plane, it will be attached at a random orientation. There is no preview for this, since datum planes are just planes, except you know, the part where it actually is an LCS with a default attachment orientation internally. So now you have to go into the sketch and draw an arrow pointing up and then rotate the sketch into place so that it actually points up. You will have to do this for every single sketch. It is so painful and an every day occurrence that surely someone should have come up with the idea of fixing it years ago, right?

There is usually no preview for additive parts unless it successfully creates the final model. The idea of displaying a transparent preview of just the operation itself never occurred to them. Also, there are hardly any interactable UI features such as draggable arrows in the 3D editor, you mostly enter numbers in the left panel.

I haven't had much trouble with "bugs". The attachment editor thing is considered a feature by the way.


I can only talk about professional visual effects (VFX) software like Maya and Nuke.

Let's just say I've seen their (internal) bug trackers.

TLDR; you couldn't be more wrong.

When OSS software has bugs, at least someone with an interest in the issue and the skills can do something about it.

For closed source software nobody can. Even the people working at the resp. company who are developers rarely or never decide about priorities.

And as an added hurdle, adding features always has higher priority as it drives sales.


"The biggest reason this hasn't happened so far is the lack of a truly capable parametric kernel"

Does parasolid not fit this requirement? The capabilities I've seen in Plasticity are very impressive. Or do you specifically mean FOSS?

The more I use CAD platforms, the more I develop the sense that general-purpose CAD is much less useful than single-purpose applications that provide tailored solutions to narrow problem domains. SVG/DXF/DWG output is a plus, but I think a drawing software that works for high-volume machine parts, one-of-a-kind architecture, highways, 50-mile pipelines, circuits, urban transit plans, and art is the wrong direction. I use industry standard roadway design software and a "road" does not exist in the object model. Horizontal, vertical, and sectional components are all independently defined despite these things being inseparable and having some very obvious and well-specified rules about their interaction. I really think designers should spend more time thinking about outcomes and less time telling the computer how to display them.


Absolutely agree. I just finished a project were where users can design / construct solutions in a specific domain in either 2D or 3D, with support for exporting CAD and STP.

The user works with rich domain objects that limit the possibilities to what actually works or is practice; much like a game level builder. This allows non-experts to design solutions in this particular domain, which of course is great for business / sales.


I think this is a great point. When looking at ‘best practices’ for constructing robust parametric models I keep thinking “this is so much like software engineering where the programming language is the CAD system” (as an aside, I’ve tried OpenSCAD but found the rendering UI waaay too slow even with simple stuff to be usable for me).

So as a model builder you end up trying to build these higher-level abstractions into your model, where the parameters are your top-level interface.

I think CAD is so much like programming in those ways, although I could just be biased since I’m a software engineer.


You are right! CAD users encode a design intent into the software, just like you encode a design intent into an editor. I model a construction outcome with geometry like you might model business rules with functions and objects.

Some of the wisdom from programming would do well to pass onto design software. Like how strong type systems can provide safety by pushing rules to compile time and make some errors unrepresentable. Meanwhile, I can fire up Microstation, draw roads crossing at the same elevation with no intersection (think stops and signals, not geometry) between them. Or a drain culvert could terminate in a big Hello Kitty picture. These things should be impossible. If the task is designing a road, I don't need the ability to draw anything I can possibly imagine. I really need the software to know what a road can and can't do, produce a model that obeys those constraints, and to give me files and documents I can give to an owner and a contractor which convey an accurate understanding of what that model is.


In the ECAD world design rules and design rule check exists to prevent or at least detect that.

Then it is just up to you or your organization to come up with a design rule set that ensures your boards can be manufactured by the board house.


For OpenSCAD, try the nightly build and enable MANIFOLD --- that's an order of magnitude (or two) of increase in the performance.

100% agree. The future of CAD consists in more specialized CAD platforms, not tweaks to general mechanical CAD. Cabinet Vision is one good example.

Parasolid is owned by Siemens, it's not open source really

I don't know a lot about these tools, but I've used QCAD[1] for home improvement projects, drawing schematics and layout diagrams, and been very happy with it. It seems quite powerful. It's also open source, although not browser based.

I'm just wondering why QCAD doesn't seem to get much if any mention on HN when CAD tools and open source comes up.

1 - https://www.qcad.org/


QCAD is not a parametric 3D CAD program. You have to know what your part will look like before you draw it, because all it really does is neatly draw lines and curves.

Contrast with Solvespace (or FreeCAD, or any of the popular commercial parametric 3D CAD programs), which lets you specify relationships (constraints) between elements in 2D and 3D. The shape of your part is the finished result, not the starting point.


2D vs. 3D, I think.

3D is where the excitement is, but also where the difficulty is from the kernel perspective.


I'm impressed what people are doing with 2D CAD, because for the life of me I can't figure out how they do it. I love the constrained based sketching in 3D CAD tools and didn't have the impression that qcad had anything like it?

Qcad is commercial software. The author is doing his best to ride the line between commercial and OSS, but most free software developers don't want to play. LibreCad was forked from an earlier version of Qcad and fell behind. Now they're doing a whole new LibreCAD but it's been years in the making.

As a user of QCAD I am more than happy to pay the extra for the features in the commercial version and support the developer (Not vastly different but adds a few tools that make certain constructions easier). I used it free for a while and appreciated it enough to exchange some money. The extra features are a bonus but it's worth the money even for the free version.

I think it's a shame that LibreCAD has stagnated and diverted, particularly on usability. QCAD has one of the best 2D CAD UX I've used, akin to AutoCAD but more light and nimble. Exactly what is needed for most 2D CAD.

If you need a powerhouse, then you really need 3D anyway, and most likely you aren't a hobbiest if that's the case. For 2D, it's QCAD all the way. 3D is nice, but 2D gets the job done 9/10 times. 3D is overrated.


LibreCAD v3 is very nearly abandoned. I could be wrong, but the vast majority of the new code there came from GSoC students who didn't quite stick around for long except just one who did multiple GSoCs but also eventually left.

> The biggest reason this hasn't happened so far is the lack of a truly capable parametric kernel, Truck, the kernel that Matt is using looks like an incredible project and exactly whats needed.

Indeed. This is a great application for Rust. It's something that's complicated, difficult, and has to work right.


> Indeed. This is a great application for Rust. It's something that's complicated, difficult, and has to work right.

For Rust itself, maybe, but not for its community.


I love this idea. However, the value of solid works (and other expensive solutions) are the domain-specific assets that are available.

SketchUp has a lot of community assets but these still leave you hanging almost immediately.

You need to be able to scrounge up drawings of certain parts by part number that can be inserted quickly.

This is surmountable but I think it would take at least a decade to reach parity...in a best case scenario where CADmium is readily adopted.

I would put in the time to learn CADmium. Having worked in FreeCAD some and SketchUp moreso.

I hate that I can't automate things easier or build my drawings from scriptable components--like a XAML file.


I don't think think this is a problem at all, the industry has standardised on STEP for assets, as long as CADmium and Truck have STEP support (which they will) then they have access to all assets. True, there are dynamically configurable assets for SolidWorks, but any community around a cad package will quickly recreate those.

> lands stable fillets (surprisingly one of the hardest features to make stable)

Interesting. Any chance you could explain why fillets are hard(er)?


For fillets to work well they have to connect three important features of a parametric CAD package:

1. Surface tangency matching - perfectly matching the tangent of the connecting surface on either side of the corner.

2. Edge tangency following - you select an edge, and the fillet should be able to follow along all connected tangent edges.

3. Edge reference tracking - when you modify the model further up the feature tree the kernel needs to keep track of that edge, even if the surfaces that make it drastically change or are split.

All three are hard problems on their own, once you connect them all it becomes a great indicator of the capabilities and stability of a parametric kernel.


I was subscribed to Shapr3D and had been using their parametric beta before switching to Linux and even in that fillets would mess up what I could do with my models afterwards.

The impression I’ve gotten while learning FreeCAD is that making a CAD ‘just work’ is incredibly difficult and the commercial packages probably have a lot of very messy workarounds and heuristics in place to work like they do.


What a concise, informative answer this is. You write well.

FreeCAD’s (well, OpenCascade’s) issues with fillets and chamfers appear to be most acute with a subset of your third point: sometimes adding one involves the new feature fully consuming another edge. This is unsolved in OCC and it’s why sometimes even infinitesimally changing the depth of the fillet or chamfer is enough to stop an edge being destroyed.


For Solvespace I was looking at using curve offsetting to determine where the fillet touches the surface. This would not produce a "rolling ball" fillet in more complex cases, but should be fine for simpler extrusions. It turns out generating an offset curve is another somewhat hard problem in itself.

Yep, it would be difficult to maintain a consistent radius with that method.

My assumption (I've not looked) is that you could offset the surfaces from the two sides (say A and B), and then calculate the intersection of an offset of A with the original B. Then do the opposite for the other side. I think that will give you two edges that will produce a consistent radius.

Offsetting surfaced and calculating intersections aren't exactly easy problems to solve on their own. Fillets are hard!

(Solvespace is awesome BTW! If I had the time (or the expertise) it also makes a brilliant foundation for all this)


>> Offsetting surfaced and calculating intersections aren't exactly easy problems to solve on their own. Fillets are hard!

Yeah, offsetting surfaces is harder than curves ;-) This was my early stab at doing chamfers on extrusions: https://github.com/solvespace/solvespace/issues/453#issuecom...

I know how to do it better now, but ugh... not enough time.


I used solid works on my robotics team.

Tried using some other program but I loved the way solidworks let's you create parts, and then some other features where its hard to exactly discribe the exact thing but for me solidworks seemed so much more intuitive.

I dropped my summer internship money on the version which was a few hundred bucks. ...pretty sure it was cuz I got the student or the hobbist deal.


Solidworks finally has an affordable personal license

https://www.solidworks.com/solution/3dexperience-solidworks-...


YES finally. That's a much more reasonable sum than what I was paying.

Even better if it were as easy and intuitive to use as IronCAD. It's by-far the best UI/UX CAD software and I'll never understand why it doesn't get more recognition.

I think this makes sense for a certain market segment. In the commercial arena, cost of AutoCAD (and similar) is negligible compared to the revenue it generates.

As one of the Solvespace maintainers I have a few comments:

1) You don't want just 2D constraints, 3D is better. If you were writing in C++ I'd say just take our constraint solver (Like Dune3D did). Since you're loving Rust, I can point you to the work of Michael F Bryan who wrote one in Rust and blogged about it here: https://adventures.michaelfbryan.com/posts/constraints-part-...

I think his code is over at gitlab. I haven't looked at it in a couple years. He wrote that after I nerd-sniped him ;-)

2) For geometry kernels... I've got 3 classes of bugs I want to squash in the Solvespace kernel and then it should do booleans pretty reliably, but I haven't had the time. Ours is just under 6k LOC so you could learn a lot from it. My email is the same ID at gmail if you want to ping on this topic. Its been a while since I looked at Truck and I thought it had stagnated a bit. This is a really hard problem, which is why there are so few options out there even in the commercial world. Even triangulating a trimmed NURBS shell is tricky.

3) History/feature tree is closely related to the "topological naming problem" that FreeCAD has. Solvespace handles this by creating each entity from a set of known things. If you try to recreate (regenerate in our lingo) it will just return a handle to the existing entity rather than creating a new one. In other words, every entity "came from something" and that relationship is remembered. Where we handle topological naming it works perfectly. But not everything in solvespace is covered by this. You need to bake this in from the start, it's not something you can easily bolt on afterward.

4) where is the link to try out CADmium?


> As one of the Solvespace maintainers

I'm so grateful there's a tool like this out there - thanks for your efforts, they really are appreciated.


> As one of the Solvespace maintainers I have a few comments: > > 1) You don't want just 2D constraints, 3D is better. If you were writing in C++ I'd say just take our constraint solver (Like Dune3D did).

There is also a wrapper around SolveSpace's solver for Rust[1] but I dunno how hard that would be/is to compile for the webassembly target ...

[1] https://github.com/thekakkun/rust_slvs


Solvespace is freaking awesome. I tried so many different tools and it hits the sweet spot for reasonable learning curve (esp. for someone that is not a mech engineer), power, Linux, cost (free), and safe from disruption (no way I'm subjecting designs to all the risks of hosted offerings). Keep up the great work!


You just told the developer of a non-open source project to take your GPL code. That is a recipe for a copyright dispute.

> the developer of a non-open source project

The first line of the article says "We're building a new open-source CAD program"


It's elastic license unfortunately: https://github.com/MattFerraro/CADmium/blob/main/LICENSE.md

Which is a shame because the AGPL has nearly the same effect & the bonus of unjustifiably terrifying big-corp legal teams.


I'm confused, IIUC the AGPL can be simplified as "you can offer this software over the network, but like GPL the source must be available".

Whereas Elastic license is about, "you must not deliver this software over the network as a cloud service".

The things the Elastic license is trying to prevent seem very different to me?


In effect, these are the same thing. If you try and deliver the software as a cloud service, you'll need to make the part that ties into your auth & observability stack, at the very least, open source.

Cloud companies are unlikely to be comfortable doing that.


Oh, I guess I'm not touching it then.

A comment on HN doesn't Trump the GPL on code mostly written by someone else. Also, they claimed to be open source even though they made a stupid license choice.

I think this is amazing. I'd love to get to the point where we are with open source EDA with open source physical CAD.

> Another downside is that solving this kind of matrix equation gets prohibitively slow when you have a lot of unknowns, which gives rise to the conventional wisdom that individual sketches should be small and simple.

I've gotten quite deep into this, and this is really not a problem in practice[1]

1. FreeCAD's main issues with constraint performance come from a redundant & unnecessary GUI layout algorithm, which falls over with just a few hundred constraints.

2. Eigen's sparse QR decomposition benchmarks at 18s for 2200 constraints, which is really not too bad

3. There are sparse QR decomposition libraries that can handle 500k-1M constraints in about 18s. I can't imagine a CAD sketch with more than a few thousand constraints.

[1]: https://github.com/FreeCAD/FreeCAD/issues/11498#issuecomment...


Without knowing anything about CAD, it's surprising to me that the author didn't try any of these matrix solvers. Particularly since the case of non square matrices with iterative methods is common to many fields.

OndselSolver at https://github.com/Ondsel-Development/OndselSolver can do redundant constraint removal and handle under constrained systems readily using direct Gauss Elimination on sparse matrices. It is used in FreeCAD and Ondsel ES for Assembly constraints.

As someone who learned CAD on autodesk (inventor) ages ago, the only free modeling software I could grasp after working for a few hours was Onshape. Usability seems to be a real problem in this space, Freecad for example seemed to have a billion ways to do the same thing, but in the end only one of them was the real way, some tutorials leaving me with a model that doesn't conform.

Awesome work! It seems like a hard problem

Repo: https://github.com/MattFerraro/CADmium


SolveSpace is good. It's the only free CAD software I've found that's remotely usable (yes including FreeCAD). Unfortunately it has some pretty big missing features, notably bevels & filets.

I also like SolveSpace a lot. I use it to design small things all the time. Tiny single file program, very responsive interface. It's also pretty intuitive (if you're already familiar with CAD constraints and parametric modelling concepts). There was a burst of activity 2-3 years ago so I was hopeful we'd get filets and maybe better error messages but it hasn't happened yet.

Ondsel is also increasingly good. They've released a new version recently: https://ondsel.com/blog/ondsel-es-2024-2/

Their website login-wall downloads for whatever reason, so go to github: https://github.com/Ondsel-Development/FreeCAD/releases


For those unfamiliar, Ondsel is just a custom build of FreeCAD, with some different UI/UX and workbench defaults and their cloud oriented plugin/features enabled by default. They also have some features that haven't yet made their way into a stable FreeCAD release, but most likely will eventually.

I've got no qualms with anything Ondsel is doing, except that their "releases" are based off of the dev versions of FreeCAD, which are still in active development where things are rapidly changing and are poorly tested as a whole package. This leads to the situation where, for example, very basic sketches will cause the most recent Ondsel version to puke in odd ways, but it's a problem that's already been fixed in the FreeCAD dev builds.

So certainly give Ondsel a try; there a lot to like, and they're adding some much needed features to FreeCAD, but until their releases are based off FreeCAD stable, treat it like the unstable dev build it is.


SolveSpace is how I teach people CAD at my local makerspace. It's the only program I know of that can be properly onboarded in an hour or so, figured out from there, is useful on its own, and that makes for a good stepping stone to Inventor/SolidWorks/OnShape/etc.

Ugh Freecad. Love hate relationship.

I pretty much only use the Part Design, Sketcher and Spreadsheet workbenches. Those mostly work OK together. I don’t dare branch out because of poor interoperability between benches; I sometimes use the Part bench as well but it’s so fiddly because you had to take it through two internal format changes to make it work in Part Design.

Hoping that one of the many open source CAD projects can supplant it eventually.


Onshape is an excellent tool in terms of performance and usability. As total newbie I was able to design fully working robot arm with 3d printed joints, design all the motors, their placements and other stuff and even animate movement. The model even worked on my phone, while it was not very practical...

I used OnShape several years ago and loved it. Unfortunately, they priced me out — I'm in the "intensive hobby" segment, which means I'm fine with paying $500/year, but not OK with $1500/year. And OnShape is either free or $1500/year.

Another consideration for many is a good integrated CAM. This is where Autodesk Fusion, much as I dislike the company and the software, is unbeatable today.


Isn't the only difference between the free and $1500 tiers the private projects and direct support? Or did you specifically need the private projects.

I had 10y or so experience with CAD when onshape showed up around 2014. You could tell from the beginning that they cared a ton about usability and had their minds wrapped around how people use CAD. It’s only got better since.

I highly recommend the cadmium folks just soak themselves in onshape’s UX.


Why is open source always so bad at UUX - it's so frustrating. I believe the people who say FreeCAD is powerful but I'm skeptical I will ever experience it.

Probably because every contributor has their own variation of UX they prefer, which they contribute and merge with all the other code. It leads to a lot of inconsistencies which are avoided when you have a hierarchy and a leader who makes everyone adjust their vision. It’s hard to do that with smaller OSS projects, they probably can’t afford alienating contributors by telling them how to do stuff.

You can't do UI in small pieces. Most things like new algorithms or functionality can be added in a very localized way that doesn't impact other components. A UI on the other hand encompasses everything and also needs taste. And tastes are different.

> Why is open source always so bad at UUX - it's so frustrating.

To illustrate why... There's a certain "artistic" FOSS project (before you ask — not GIMP) where the community, incl. former lead dev basically say this:

- UX is bullshit, it's just opinions (verbatim quote)

- No two people agree on what is the right way, so anyone willing to improve UX in this project will have to fight everybody else, don't hold your hopes high (almost a verbatim quote)

- We don't like drama in this community, so we tend to just accept patches that change UI (you'd think this contradicts the previous statement, but somehow the impossible is possible)

They'd also mock a person who wrote a very elaborate first impressions blog post about the software, claiming she is an idiot who didn't bother learning the software.

I don't think the FreeCAD community was ever this bad, but there certainly was a strong element of chaos before. Things are considerably better today. There's a design working group working its way through various incosistencies, for one. It's a long-term project, no doubt about it, they are slowly getting there.


> You could tell from the beginning that they cared a ton about usability and had their minds wrapped around how people use CAD.

Well, what else can you expect from the very same guy who came up with SolidWorks in the 1990s? :)


Yeah, I know him. Fwiw I think onshape’s UI is much better than solidworks.

Agreed, as someone with significant experience with SolidWorks, and varying experience in Creo and NX, Onshape is the only "free" CAD software that has equivalent user experience to any of those, just such a shame that Onshape's "Free" option sucks and their paid option is obviously not priced for hobbyists. Fusion360 is workable, but its user experience is pretty terrible compared to any of the commercial packages I've got experience in.

My ask for a free CAD software would really be for someone to go through and take the robustness and speed of Creo and combine it with the user friendliness of Solidworks, even if it were to have a fairly limited feature-set to start.


Man, I thought FreeCAD’s problem was me being an idiot, but glad to hear someone else come to the same conclusion. I recently spent an hour or two almost every evening for about 3 weeks to come up with what I thought was a simple object I needed to print. The cycle was:

1) Watch and do one tutorial that gets you 80% of the way there.

2) Try to stumble together the rest of the way.

3) Find out the fundamental tutorial doesn’t set up my project in a way that allows me to finish the 20%.

4) Watch the whole project fall apart as I try to modify one of the previous steps.

5) Repeat.

Does the order typical matter that much in CAD? I went all in on this thinking it was a simple object and how hard can FreeCAD be. Turns out, very hard.


There are many, many bad small tutorials on youtube where the presenter has something that works for them but fails to understand the core principles. Or it's from way back before the 0.18 redesign of Part Design.

The Mango Jelly Solutions videos, the Joko engineering videos, the Adventures In Creation videos and thehardwareguy's videos are excellent.

There is no doubt that understanding how to mitigate TNP is important, though. Many of the videos do not go into this each time (which will be good once the issue is mitigated, very soon, but is obviously an issue at the moment).

The fundamental issue I see with bad Youtube tutorials is people skipping from Part Design to other workbenches without understanding that they are not wholly interchangeable. That is, all Part Design Body objects are Parts, but not all Parts are Part Design Body objects. Part Design is a subset.

There is at least one excellent video by Mango Jelly Solutions going into the detail of why you should choose one over the other.

But the guts of it is that Part Design does have an ordered flow -- it's a sequence of steps from a simple to a complete object, executed one after the other and implicitly booleaned together. So it has additive features and subtractive features.

Whereas in a non-Part-Design workflow, you are in charge of when something is cut from something else; there's no subtractive tooling, only boolean tools. More CSG-ish.

A good grasp of FreeCAD involves understanding Part Design's relatively special guided flow, and that outside of it is a more open-ended approach.

The RealThunder developments to Part Design after TNP was fixed do go a long way towards making this less relevant (Part Design can work with multiple bodies rather than being focussed on a single body, and you can "wrap" non-Part-Design objects in a Part Design Body object more freely without using a macro). And that way you get to use Part Design much more like Fusion 360.

But there are definitely FreeCAD proponents who would say that Part Design is training wheels for what is really going on, and that there's no substitute for many general concepts inside Part Design. The latter is true; also the implicit booleans in Part Design make some of the PD operations slower.


> Does the order typical matter that much in CAD? I went all in on this thinking it was a simple object and how hard can FreeCAD be. Turns out, very hard.

Yes, it does matter. I discovered this through my own self learning with OpenSCAD, FreeCAD and OnShape. I actually prefer the workflow of FreeCAD to OnShape for a lot of tasks.

FreeCAD isn't that hard, cad isn't that hard. Especially for any developer with some level of XP in breaking down a complex problem domain into smaller composable parts.


Similarly, I learnt PTC Pro/ENGINEER (now Creo) in university and have tried to learn SolidWorks, Tinkercad, Onshape and FreeCAD but never found them as usable or powerful as ProE. The constraint system, 2D sketch tool and assemblies were hard to map into these other systems.

I feel it’s similar to having learnt Photoshop (7) and then struggle to use GIMP. I keep looking for tools that aren’t there, expect panels to show certain details and they come up short.

It reinforces for me how valuable usability and interface design is for power user tools. But also, how important training materials are, and how loyal a user will be once they are accustomed to completing a workflow with their tool of choice.


It's exciting to see a new entry into this space, especially one that is trying to create a new kernel. Unfortunately, it seems unlikely to be successful. The top kernels in the industry have been in development for decades by armies of CAGD PhDs and programmers, with funding from automotive and aerospace companies. Getting to table-stakes with the feature set will take a long time.

I also question what user problems this is trying to solve. CAD users don't necessarily need things to be open source. They may have limited budgets, but open source is not a user facing feature in this space the way it might be for some developers. Plasticity has shown that it is possible to license Parasolid and make money at a very low price point.

I've been using parametric CAD tools for 30+ years. I find that Onshape is a pretty amazing solution to many of the issues that exist with Creo or Solidworks. I never loose data. Having the equivalent of Google Docs for collaborative CAD with unlimited undo based on a ground up database instead of a file system is life changing. That said, its modeling capabilities are still playing catch up with other tools.

A big downside to Onshape (and Creo and Solidworks) is that it started as 2D sketches to extrude/revovle/loft etc into 3D objects. 3D tools are an add on and afterthought to the fundamentals. Plasticity (and Rhino and Alias) are all much more 3D first.

Onshape's FeatureScript is really cool and powerful, but it is not as good for CAD users to build their own tools as say Grasshopper in Rhino.

I would focus on what user problems are being solved. How will CADmium be a better CAD tool for a certain market than any of the others paid or free? Even though this is very early days in the development process, it's not too early to try to understand user needs. Open source is not in and of itself a goal.


People have said the same about browser engines, that it's impossible to start and new one and catch up due to the unfathomable number of man hours invested. But it's happing, Ladybird browser is making incredible progress. With modern tools, the learnings from older engines and the lack of entering debt it's possible for a small team to build things on par or better than 30yo software.

I have no doubt that a small dedicated team could build a new parametric kernel and CAD package, particularly one that's open source.


There will be significant differences in demands made by the end users of a web browser and a viable CAD system for serious work though.

It is an extremely tough market that many have been shaken out of.

Reliability is a must, particularly on the data representation and exchange front. And those assurances carry ENORMOUS costs. Big money at immediate risk in downstream, physical product if that goes south at any time - spread across multiple manufacturers and other product lifecycle parties.

Lots of workstation compatibility certification work done on CAD kernels.

PLM alone, embedded in many engineering organizations, is a very sticky element for retaining a certain CAD program and certain kernels internally - and it is my understanding that PLM is where the major money is made (not so much on the per seat CAD licensing costs).

New grads are coming out from college today after using CAD company-supplied software in much of their classwork for 4 years.

Many CNC controllers use Parasolid internally for certain visualization and programming operations - machines that will be working on the floor for decades from today.

The fact is that the per seat licensing cost and lock-in tradeoff is simply not a serious issue for many - and such costs have become arguably marginal for even small design houses and manufacturers.


New CAD users would appreciate a good open source alternative. Moreover, the world is a diverse place, not everyone has the same kind of money or quantity.

I think CAD users would benefit greatly from good open source alternatives.


> CAD users don't necessarily need things to be open source... Open source is not in and of itself a goal.

While there are certainly challenges to open source development, there are no downsides to using open source software. It works just as well for people who don't know what it is or means and just as well for people who are indifferent to it. There are great reasons to avoid proprietary software, though, and they're even stronger when you're talking about SaaS (as we increasingly are nowadays, and specifically are in this case). CAD software is an area where many users have /already/ been burned by proprietary systems changing their offerings /after/ they've invested hundreds of hours learning and using their platform.

I'm aware I'm in the minority, but open source is absolutely a goal in and of itself for me. I've been using open source software exclusively for a very long time.


I mean… Onshape, Creo, and Solidworks use the same kernel so it’s not too surprising the UI/UX is similar (I’m speculating for OnShape but given the company history, they probably are). Rhino and the like are geared towards 3D graphics on top of CAD so it’s not surprising either that they’re a Freeform surface modeler first. That being said, I don’t know about the open source part not being a goal. It’s like KiCAD vs Altium. If they manage to have 90% of what Onshape has to offer but open source, I can imagine people using it. I get the angle of cost though, since Solidworks license is about the order of $3-5K, most companies would rather pay it and use something proven.

FWIW, Onshape was created for less than $10M to make a MVP in less than 3 years. I don’t think you need decades of PhDs to make a new CAD program nowadays.


Onshape and Solidworks (and Shapr3D, and Nx amongst others) use the Parasolid kernel. Without Parasolid, Onshape wouldn't have happened so quickly. It also helped that it was founded by many of the core team behind Solidworks. Parasolid started being developed in 1988. [0]

Creo uses the Granite kernel, which was developed by PTC, starting in 1985. [1]

Onshape and Solidworks (and many others) also license the same 2D solver, D-Cubed, now from Siemens as well (originally from a company founded in 1989). [0]

None of this is to say that it is impossible to start fresh, just that there are insane numbers of person-years of development work embodied in these libraries. To get anywhere near the level of completeness and power will take a lot.

[0] https://www.engineering.com/story/parasolid-d-cubed-and-siem...

[1] https://www.shapr3d.com/history-of-cad/parametric-technology...


I don't think it is healthy for most of the commercial CAD industry to rely on one proprietory kernel and exchange file format like Parasolid.

What an excellent summary of the CAD kernel landscape.

Favorite quote from this:

"The only popular open-source b-rep kernel is OpenCascade, which is the Pontiac Aztek of b-rep kernels: It is ugly, barebones, and it might break down on you, but it is drivable and you can get one for free."

SO true!


I laughed out loud at the tuk-tuk analogy.

Why in a browser if it's local-first?

Solvespace has the benefit of being a single download/executable.

It also has a constraint solver which has been used in a couple of projects: CADsketcher as you noted, and Dune 3D: https://github.com/dune3d/dune3d where the author noted:

>I ended up directly using solvespace's solver instead of the suggested wrapper code since it didn't expose all of the features I needed. I also had to patch the solver to make it sufficiently fast for the kinds of equations I was generating by symbolically solving equations where applicable.

Any relation to: https://github.com/jay3sh/cadmium ?

Also, for CAD kernels, Manifold was not mentioned: https://github.com/elalish/manifold/wiki/Manifold-Library --- while I understand it to have many of the same disadvantages as OpenCASCADE, it does seem worth mentioning.

Interestingly the kernel was previously discussed here:

https://news.ycombinator.com/item?id=35071317

It seems really interesting/promising, esp. the compleat history and editability (I'd love to see that history listed in a pane which could be opened/closed --- add a series of disclosure triangles which would allow hiding finished elements so that one could focus on the current task and it would be a dream come true for me --- if I can puzzle out the 3D stuff, so far I've crashed and burned on all the apps I've tried (BRL-CAD, FreeCAD, Solvespace, Alibre Atom...) --- the only thing I've been successful w/ is OpenSCAD and similar coding tools).


> Why in a browser if it's local-first?

Because the web browser did what systems developers have failed at for at least 60 years: creating a platform that can host an application that just works on many different devices.


There is no serious comparison to the performance and richness offered by native applications. Famously (and wisely), Apple quickly reversed their decision on web apps for iOS devices.

That's long gone. Long long gone actually. Now browser is such a huge and capable platform that there's nothing comparable available anywhere.

Even XBox controller's drivers come baked into browser. Just check the number of APIs on MDN.

As for performance, that's already not anywhere into discussion. Check Google Docs. Everything single thing you are on screen is drawn using Canvas and it works just.... everywhere.


Your bar is much lower than mine, so we won't agree on this.

They make money getting their cut of ios app payments. They wouldn't be able to do that for web apps. So they've done their best slowing down adoption of pwa's to keep that revenue coming.

Outdated comment. Look at onshape.

Apple develops only for Apple products.

> Why in a browser if it's local-first?

Because it means it'll work regardless of whether I have a Linux, Mac, Windows, ChromeOS, iPad, or just try to check some detail of my part on my phone.

When I design a part at home, need to make an adjustment at work, and then need to make it using whatever is available in the makerspace, not having to install something is a big win.


>> Manifold was not mentioned

Manifold is a triangle mesh library. CAD should use NURBS surfaces and only triangulate them for rendering. I had looked at replacing the solvespace triangle mesh code with Manfold, but it's a lot of work and what we really need is to fix the NURBS bugs so we don't need to lean on the mesh code so much.

BTW the solvespace constraint solver is also used in the Assembly 3 workbench of FreeCAD ;-) It's really getting around these days.


Yeah, triangle mesh library and NURBS are very different, they do different things. Interesting to know that the solvespace folks wanted to try integrating manifold. Feel free to open an issue or discussion if needed, there were many changes as manifold was actively developed and gaining more users.

I am also interested in having a simple constraint solver for some kind of constructive geometry useful for CAD modeling, but not necessarily a full-fledged NURBS kernel. I think it can be interesting for text-based modeling, probably similar to some of the CadQuery APIs.


>> Interesting to know that the solvespace folks wanted to try integrating manifold.

It was just me. It might fix our remaining issues with meshes.

>> Feel free to open an issue or discussion if needed

I have an open issue for Solvespace here: https://github.com/solvespace/solvespace/issues/1371

It's a low priority though.


> 3D CAD apps are among the most complex UIs that exist.

I agree.

> If you want to make a good one and you only have a small team, the framework had better do a lot of heavy lifting!

I am skeptical that general-purpose UI frameworks can be a good long-term solution for 3D CAD. At times, a nice UX will need to think about many of the following at once:

    - the parametric 3D model
    - its mesh approximation
    - its hidden-surface projection into lines and patches
    - the pixels in the frame buffer
    - UI widgets.
The frameworks make too many assumptions about information being easily partitioned and limited in size.

Maybe the frameworks will help for prototyping, but if the project grows, I expect at some point they will end up ditching frameworks for the core 3D viewport interactions, and have mostly their own code in between OpenGL (or similar) and mouse/keyboard events.

Frameworks for buttons, lists, etc. will probably be fine, but even those tend to be much more dynamic in 3D CAD than in average apps.


The only real solution is imgui

You meant egui. ;)

Aren't there Rust bindings to ImGui?

There are but as a user of both I would be really curious to hear a good reason to use imgui over egui when writing stuff in Rust and to use egui over imgui when writing stuff in C++.

In general, egui IMHO has better ergonomics. Partly because of Rust and partly because it's newer.


I really hope CADmium can wean me off of OpenSCAD. With OpenSCAD, I don't really have to think at first; I use a simple language to write modules that build on other modules. The problem with OpenSCAD is there's no solver: I have variables, but no constraints. As I make changes, suddenly I have to think hard and solve the constraints manually and it's easy to introduce errors. However, the problem isn't severe enough to get me to use something else, because starting a model with OpenSCAD is IMHO far easier that anything else I've tried.

I wish Solvespace and OpenSCAD would have a baby so I could have the best of both worlds.

Ondsel has developed an LGPL 3D assembly solver at https://github.com/Ondsel-Development/OndselSolver It is being used in FreeCAD and Ondsel ES.

FreeCAD has a built in OpenSCAD engine.

I started with OpenSCAD but found FreeCAD to be way more productive for me when it came to actually producing 3d objects. Sometimes I want to start with a square, then delete a line, and add a semi circle. But I don't always know that until I start sketching. With OpenSCAD I feel you have to know the shape primitive you need, then the exact way to modify it, and the fact that it encourages 3D primitives over 2d w/ extrusion and rotating was kinda annoying imo.


Belatedly: this engine has one absolutely fantastic advantage, too.

Because it interprets the file as a sequence of Part object manipulations, it's a very useful way of getting a bRep representation of an OpenSCAD document, so you get the opportunity to generate a clean, minimal STEP file.

OpenSCAD cannot do this itself, and the other conversion approaches just get you a triangle mesh packaged in a STEP file.

It's not perfect -- you get a mesh if you use Minkowski or hull operations. But it's good.


Have you looked at Build123D?

Just wow. I've tried CadQuery and I'm too dumb to use its fluent syntax. But Build123D has amazing DSL, it was an instant understanding what code actually does and it's easy to write also. Thank you for recommendation!

Impressively it’s even the same underlying object system so the two can coexist, use the same previewer etc., and I think there’s even Jupyter support.

But yes, the syntax is IMO much better because it isn’t trying to be so clever.


I haven't. Thanks for the pointer!

https://build123d.readthedocs.io/

Many interesting features, and as it is bRep you have faces and edges, some access to constraints, the ability to import STEP etc. (oh and fillets/chamfers, with the usual OpenCascade caveats)

I have not got into it yet (mostly I am a happy FreeCADder) but your feelings about OpenSCAD resonate with me and this looks like it addresses many of them.

On the one hand OpenSCAD was the first thing that ever gave me any confidence that I would be able to make my own designs to print, and on the other the fact that it is wholly declarative is exasperating.

People make such amazing things in OpenSCAD (like Edgar Kech’s scalable large format field camera) but I do not have the tenacity to keep up with all the maths, or keep consistently avoiding coplanar issues in the preview.


Another option is the BOSL2 library for openscad which has align, attach and anchor operations and many other useful operations and parts.

Can you explain the problem with openscad a little more? I’m not quite following.

As the complexity of a model increases, so does the complexity of determining correct dimensions and object placement. At some point the work becomes complex enough that I spend most of my modeling time cleaning up equations rather than finishing the model. A solver would theoretically replace many of the equations.

As a trivial example, let's say I want a square and a diamond and I want the diamond's corner to touch the square on the side. It would look something like this:

square([10, 10], center=true); dx = 5 + 5 * sqrt(2); translate([dx, 0, 0]) rotate([0, 0, 45]) square([10, 10], center=true);

This is a simple case, but what if either shape is replaced with a hexagon, a gear, or a duck? What if I decide there should be some other shapes between them? What about...?

Ideally, it seems like I should be able to tell OpenSCAD that the square contains a reference point on one side, and one of the corners of the diamond is also a reference point, and OpenSCAD should translate the diamond however is needed to make those two reference points match.

Alternatively, I should use some other software that lets me do something like that.


To illustrate what can be done with the BOSL2 library for openscad this can add 3 "diamonds" to the RIGHT, FWD, and TOP direction of a square, with the RIGHT and FWD diamond's corner touching the square on the side and the TOP diamond sitting atop the square:

cuboid([8,8,2]) align([RIGHT, FWD, TOP]) cuboid([5,5,2], spin=45);


Different person but I've had the same experience.

You can't just write code to, for example, "put this line at a 56.7 degree angle and have it end 0.22mm from this surface". You have to break out the trigonometry to calculate how long that line needs to be.


I'd add PyMadCAD, to those already mentioned.

It's great to see others investing time and talent into open-source CAD. At Ondsel, we believe open-source CAD is incredibly important and we're thrilled to see innovation in this area.

I am trying to look you up, but I am not sure I completely understand your organization and offering. Is Ondsel to FreeCAD the same as Codeweavers to Wine?

We're an open-core company building commercially around FreeCAD. We're leading the development of the new integrated assembly workbench and contributing to many parts of the application. We have our own build of FreeCAD which includes our latest contributions.

We're also building an optional web-based file sharing and collaboration layer.


I wonder if Ondsel would make a plan for supporters. You folks make a great job there, the UX is way easier and better, I'm very impressed.

I'd be happy to support the project but current subscription levels are too high for a hobby shop. I wonder if there is a chance for a pathreon or similar type of support.


Businesses that ask for donations don't have a long and happy life :)

What you could do instead is donate to the FreeCAD Project Association. Part of the money goes into the development fund, that is, grants for developers.


Why donations? Supporter plan, without any additional benefits or fictional ones and with a tiny price will do.

As for the FreeCAD Project Association, thanks for the tip, that's already included. I prefer to spread the butter all over the bread I'm eating, if I can say it that way.


Ondsel is FreeCAD without the sadistic UX.

No, it's not, not really -- because the UX work going into Ondsel is going into mainstream FreeCAD (if it didn't originate there, and a lot of recent work did).

I am sure Ondsel will vary somewhat in UX over time (because they will be somewhat ahead of what they upstream) and because a few things may be unavailable for open-source licensing.

But most of what has changed in terms of UX is already in 0.22-dev. For example OpenTheme will work (don't know if it is included by default), the "glass" tree overlay from RealThunder is there, the overlay panels, the sketcher improvements, the new integrated Assembly workbench etc.

Ondsel is a commercial distribution of FreeCAD with a cloud-based engineering suite integrated -- file sharing, cloud compute (for parametric recalculations and STEP export) etc.

Here is how they describe themselves -- in some useful detail:

https://ondsel.com/handbook/About/about_ondsel/


Aside from the cloud bits I think the most notable way they are different at the moment is that they have their new configuration variable sets functionality, which maybe core FreeCAD hasn't agreed on yet (it's also not finished I believe).

Ondsel are seemingly using that to integrate with recalculation of designs in the cloud compute facility (think Thingiverse customiser but a bit less basic).

I eagerly anticipate that in mainstream FreeCAD, because none of the alternatives are great -- e.g. Spreadsheet is simultaneously cool, powerful and utterly exasperating once it's well-integrated. I am sure we will see it.


Correct. Variable sets (varsets) is partially merged into upstream main development branch. Other work is ongoing. Varsets are much more important than just our web service though. Being able to configure and control variants in a design is underappreciated and will be essential to having complex assemblies with multiple copies of identical parts. Imagine a hinge that is reused in many places in the design. The current angle of the hinge should be controlled on a per-copy basis. When you change the angle, you don't want all copies everywhere to reflect the new state. This is a variant.

Yes -- I've seen the video and spent some time absorbing it and I'm really excited to see that. I really enjoy using spreadsheets and configuration tables but there are some really maddening aspects; I understand global recalculation is kind of unavoidable, but I'm not sure why that has to happen when I change the font of a cell, for example :-)

Thank you for all of your work -- I am away from my CAD projects at the moment but I will be digging properly into 2024.2 as soon as I can.


As an aside, I would love to see Brodie Fairhall's take on varsets at some point. His video on advanced parametric modelling with the spreadsheets is an epic of the genre.

In the realthunder form of freecad, I wrote a macro to give me a form of parametric variant generation. I am so looking forward to this.

In the meantime, have you ever watched the Brodie Fairhall video I mention in a sibling comment?

The shapebinder technique near the end of this video is amazing!

https://www.youtube.com/watch?v=Yp6cIMA7LsI

And there's another clever technique using variant links (which you can take a bit further with BaseFeatures):

https://www.youtube.com/watch?v=m9C_ahIVKOI

It's funny. People describe FreeCAD as maddening or sadistic, and for sure there are elements of the workflow that are frustrating (I'd be happy if I could do the five things I use the Draft workbench for without ever having to open it), but at the same time, it's so liberating and enthralling once you get your head into its way of thinking.

For me it's like QGIS or Inkscape: it's mindblowing that this tool is available to me for free. The trivial things I've been able to do have really changed my life (and I don't mean to overstate that -- these are things I never thought I'd learn and the impacts on my creativity have been striking).


I am using freecad this way already. The macro is for generating variants as part copy objects (fully independent) which are then exported as STEP (or STL).

The macro expect a part container named "export_family" with a single spreadsheet that is used as a template to set any properties and generate the part name.

It will also export any objects within a part container named "export". It also handles recursive part container.

All of that makes possible to export for 3D printing in a single click. Including handling multi material objects more conveniently.

I tried the variant link, but I could only have one variant per link somehow. I couldn't import the same part with multiple variant in the same assembly.


Outstanding writing that is clear and convincing.

I am a mostly (and increasingly) happy FreeCAD user (though I agree with your framing) but OMG I am happy for you, and I will try to get involved when I can.

Best of luck.


We spend a lot of time working on the correct type system for STEP, I don't think that using an untyped format like JSON is a good idea.

I know that ISO 10303-243 uses JSON but in hindsight I think that was a mistake.


Agreed.

I saw “CADmium will use JSON for everything.” and cringed a bit.

This seems like a mistake.


Doesn't JSON plus a schema give you typing?

I recently messed around with using OpenSCAD's WASM build to make a serial plate generator for Voron printers[1], and the one take away from it is that we desperately need a cad export format that preserves variables and history so that parts can be regenerated with new parameters. OpenSCAD, or some other project built on top of it could get there, but not without some major work. Currently building complex projects in OpenSCAD feels like a form of self harm.

[1] https://serial-generator.privatebutts.dev/voron



Quoting directly from that github: "Status: Early prototype. This tool is not yet an MVP, but is being developed in the open. Please do not share this to HN or Reddit or things like that."

Whoops

Plasticity was open source before it abandoned c3d in favor of Parasolid. The repo can still be found here: https://github.com/nkallen/plasticity

A 2D solver works great for sketches and some kinds of assemblies. However, it is insufficient for many kinds of 3D assemblies. The solver Ondsel released (LGPL) which underlies the new integrated assembly workbench is a true 3D solver. https://github.com/Ondsel-Development/OndselSolver

> In contrast, the open source CAD landscape looks like this:

He missed BRL-CAD, which also does brep. The interface is clunky but the kernel seems advanced.


BRL-CAD is a true gem

Do you have any preferred guides for getting started wtih BRL-CAD? I've tried a couple of times, but it seems like it's more a large collection of various tools and it's hard to know where to start. Or even what the general design philosophy is. It looks like the core functionality is more a code-driven approach to modeling? With UI driven design (archer) only in the experimental/early-development stage?

And interestingly "the oldest known public version-controlled codebase in the world that's still under active development" dating back to 1979.

[1] https://en.wikipedia.org/wiki/BRL-CAD#toc-History


Unfortunately it's interface doesn't seem to have been updated since then...

It appears to be written in Rust. Why package it as a wasm app inside of electron instead of compiling to native and using wgpu directly?

Presumably because there aren't many mature Rust GUI options at the moment. Egui is pretty good for what it is, but it's "immediate mode" which comes with some restrictions. Slint seems promising but the developer experience was a little rough when I tried it a couple months ago. Not sure the licensing is compatible with this project either.

You can have much better OS level integrations with Electron (e.g. filesystem), also assuming that you want to reuse as much code as possible.

I’m slightly confused by the 2D constraint problem solver, it seems to me like they have a probably sparse, possibly banded problem. Of course, in a high level description a whole lot can be excused under

> In practice many optimizations are made.

And I’m sure there’s a good reason to do physics. But, do iterative solvers like gmres or whatever have trouble with these kinds of problems?


This looks great! I hosted some discussion about open source cad late last year on this GitHub discussion board. People tend to say that building a new CAD kernel would take ten full time engineers ten years. I like where truck is going and I’m curious to see what its current limitations are. Sadly I haven’t had as much time as I’d like to evaluate the various options. (The other promising option for a complete package is Ondsel).

See that discussion forum here:

https://github.com/tlalexander/open-cad-foundation/discussio...


I have to say I love your approach to solving sketch constraints.

Many times I have used traditional solvers to map out an old building where no angles are 90°. I measure a bunch of distances (with some inaccuracy of course) and spend hours fighting with the solver to get to something that satisfies most of the measurements.

This takes time because I am in essence doing exactly the converging spring forces simulation that you propose. Except much slower :-)


What a great piece of writing. Clearly explained, nicely illustrated, got me really excited about the project.

The claim that onshape runs in a gpu-enabled AWS instance and 'streams the result' to your browser seems far-fetched. I haven't investigated, but I don't have the best internet connection and onshape isn't laggy like anything else built like that. It's possible the core solvers run elsewhere, but the UI and other interactions are definitely all rendered locally.

Hopefully it's an easy to use CAD, because my preferred CAD right now on Linux is FreeCAD is way too complex and the user input in the UI horrendously clunky.

The good side is that all CADs have a very steep learning curve, with most tutorials made by people who are oblivious to the ignorant masses. The landscape is so complex today, that it's easier to use a vector drawing tool and transform it into a 3D model than to use any CAD to make a cylinder.


Ondsel, built on top of FreeCad, aims to make free ad more user friendly and easy to collaborate on projects. Plus Freecad is close to propose a solid solution for topological naming issues. It will be this year, fingers crossed

TBH at this point I'd pay for anything better on Linux.

This looks cool.

What would people recommend for a CAD program to run on Linux that I could use now (that is either free or cheap). I have simple requirements, I want to make a box for some electronics, but need the ability to import (and extrude etc) SVGs.

I couldn't see the SVG feature when I looked at dune, and I had some problems when I used freeCAD, but was planning on looking into it again.

What would people suggest?


FreeCAD is my go to currently but you can also do all that in OnShape if you can swallow the public only files and always online requirements.

FreeCAD has really good file format support in my XP.

https://wiki.freecad.org/SVG


Seems like an exciting project, I'd like to try it out as soon as there's a public testing phase.

On another note, please don't use Discord for development: https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS...

use IRC or Matrix but not Discord.


Good to see someone is making this. Losing free student access to Autodesk Inventor exposed me to the hideous world of free-as-in-money 3D CAD software, and my interest in 3D CAD fizzled pretty quickly as a result.

On a related note, we really, really need a worthy replacement for EAGLE. It's only a couple years away from EOL, and KiCAD is light years away from being feature-equivalent.


Which specific features are keeping you on Eagle? Most of my more "serious" work is still in Altium, but I've been really pleased with a lot of the QoL features KiCAD has been picking up on as of the later releases (bulk sheet symbol entry placement) and feature coverage is good enough that I'm happy doing mixed signal boards with a few high speed interfaces.

Live synchronization of layout and schematic files. I consider this essential to circuit design, especially in later iterative stages. That alone totally eliminates KiCAD as a professional EDA in my opinion.

Live synchronization of layout and schematic files is a feature you find in EAGLE, but in almost no other EDA program.

If you say KiCAD is not an professional EDA due to missing live synchronization, the same argument applies also to Altium, Cadence Allegro, and most other EDA systems which are considered as professional by most people.


Fine. KiCAD's manual tool still gives me more trouble than Altium ever has. How about the lack of a built in autorouter? Infuriating wire placement UX? We can keep going here.

I like how the Truck kernel's github [1] says that their choice to use Rust and WGPU is due to "Trendy Tools" being a core principle. I'm super excited about this.

[1] https://github.com/ricosjp/truck


This is an awesome project. I work with Revit(Python coded) so immediately tried shift + mouse wheel click drag. If you can get anywhere near Revit that would be impressively scary for Autodesk.

Totally going to check this out. I've been rooting for FreeCAD but I think it's just going to be consumed by Ondsel in the next few years.

Does CADmium suffer from a topological naming problem like FreeCAD?


If you worry about freecad/ondsel

Well this article talks about revisiting venture capital in the future. Which pretty much means the end of cadmium at that point haha


But maybe CADmium will have a bigger dev group. FreeCAD devs aren't many and Ondsel has hired quite a few.

> I've been rooting for FreeCAD but I think it's just going to be consumed by Ondsel in the next few years.

Extremely unlikely. Also, no such plans :)


I appreciate the sentiment. But we both know that plans change. Especially in the software world and even more so in the startup business.

Also, "no plans" doesn't really mean much. "I guarantee" is a lot more meaningful.


Well, I could go on and on about this, but consuming FreeCAD is not just unrealistic, it's undesirable.

The best a startup company can do is work in quick iterations: throw things at the proverbial wall to see what sticks, then scale up development accordingly. "Consuming FreeCAD" is the opposite of that. It's how you paint yourself into a corner and die a horrible death.

A much healthier approach is to build a great working relationship with the community: lead the way in a few areas where you have great expertise and encourage development in other areas. It has worked nicely so far.

So no, sorry, I don't see Ondsel consuming FreeCAD over the next few years (or ever). But we can agree to get back to this conversation in, oh, 5 years time would be enough?


>If you'd like to join the effort, join the Discord!

Why is it that open source programs always want me to use an awful (and proprietary) chat app?


I dislike the browser idea but I’ll take it over any subscription based app.

Absolutely amazing. I have high hope for this project to be a real OnShape competitor!

Inequality constraints! This makes me really excited

Why should I use this over openscad?

Are boolean operations working yet?

onShape has been great

Onshape is definitely great, but it could go away or have its free version cut down (like Fusion 360) at any time. Having an open source alternative that's less of a slog than FreeCAD would be awesome.

You know, like they already did previously? It is utterly insane to me how onshape even consider luring folks in again after absolutely ruin their userbase and community.

https://www.youtube.com/watch?v=S9hmi1leU2s


Onshape is great but it's neither open source nor local-first.

Why would anyone want to do CAD in a web page?

JavaScript should be limited to 1997 Netscape 3.0 performance to stop this kind of garbage. And WASM should never have been attempted, and should be removed.

Write real native software if you’re trying to make something good for end users.


It looks like they also have an electron program.

It might be sensible to run CAD in a web page hosted by a server on your local network? I have no idea if they added functionality to have the crunchy bits run on the server instead, that’d be a neat trick.


Getting negative vibes from the name. Cadmium's a nasty substance. I mean, you wouldn't call an augmented reality app ARsenic, would you? Constructive, I hope, criticism.

I suspect naming it after a substance that's poisonous to humans isn't an issue for most average users, and for the users who are even aware what cadmium is, might just improve memory retention when trying to think of the name again further in the future.

Personally, I think it's a catchy name.


You could add even more punniness to the AR name by calling it ARscenic. I don’t think anyone wouldn’t use the software just because it’s named after a toxic substance.

sure, why not?

A great pun overrides all other concerns.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: