Proposal: GUI-first, text-based mechanical CAD inspired by software engineering
29 points| thinkmachyx | 8 months ago
I’ve written a proposal for an alternative paradigm:
- GUI-first, like KiCad - visual modeling is the default
- Text-based source files (YAML/JSON) — readable, diffable, Git-friendly
- Separation of source and result - .step, .stl and previews are built artifacts
- Parametric logic is explicit - slot width = tab width + clearance
Works with Git, CI, or scripting — no more PDM lock-in The proposal is called SplitCAD, and it's just a concept for now — not a working tool. But I’d love to hear from anyone frustrated by the limitations of current mechanical CAD.
GitHub: https://github.com/yuanxun-yx/SplitCAD
bluGill|7 months ago
What you want is something that allows more than one person to work on a project. Programming started with file locks - you can divide a large project into pieces (parts, sub assemblies...) and then lock those pieces. I think that is done by the better CADs already, if not it is easy and you should apply that.
Eventually we figured out how to create merge tools - break the program up into lines, and if a line is changed by only one person apply the change, otherwise make sometime redo that line manually. Until you figure out how to merge graphical drawings you are stuck. Making the file next based isn't going to fix anything because the tools will sometimes need to restructure the file based on what seems like a trivial change.
rjsw|7 months ago
marcosdumay|7 months ago
The problem is that graphical tools are usually large, proprietary software made with the explicit purpose of locking people into an entire ecosystem. Diffing is a small specialized operation that enables portability and interoperability between ecosystems, so tool creators actively avoid those.
X-Ryl669|7 months ago
thinkmachyx|7 months ago
IshKebab|7 months ago
Code-based CAD is fine for things that are highly regular like fasteners, springs, etc. You're never going to design a motorbike or a chainsaw using OpenSCAD though (at least not if you aren't masochistic).
loloquwowndueo|7 months ago
bluGill|7 months ago
aDyslecticCrow|7 months ago
willrshansen|7 months ago
Things you've got right:
Features your proposed solution is missing that I want: The main problem with Cadquery is that it's entirely code-first, and you lose out on the intuitiveness of GUI editingOne of the less obvious things I really like about dealing with code cad is that feature selection can be based on intent. Like "upper-rightmost feature" rather than "feature closest to this coordinate I just clicked". There's got to be a good way to incorporate this aspect into the "edit in GUI -> code is generated" step (without just requiring manual code editing), but I'm not good enough at UX immediately see it.
WillAdams|7 months ago
That said, I believe this would be helped immensely by an overview of CAD --- fortunately, one was published a while back, and dragged back from 404-ness by one CAD vendor:
https://www.shapr3d.com/history-of-cad/introduction
a reading of that to understand the overall context would probably provide a solid foundation for your efforts.
There has been some recent discussion of making OpenSCAD and derivatives thereof more interactive:
https://groups.google.com/g/pythonscad/c/a-FVSiRnzhw
and various efforts/research:
https://www.reddit.com/r/openscad/comments/18wpaoz/investiga...
https://old.reddit.com/r/openscad/comments/1eswe2w/i_made_a_...
Try that latter at:
https://scriptcad.com/paulftw/2.0-demo
Agree w/ @jpm_sd that Dune 3D is well worth looking at (it's the only interactive 3D CAD where I was actually able to make it through the tutorial).
severak_cz|7 months ago
Curently I am experimenting with drawing things in DeltaCAD (another easy to use CAD - unfortunately abandonware now), converting it to my format (via DXF export) and displaying it with javascript. I want to reimplement second version in javascript to be able to run it in browser and use better GUI components than those which I tried to implement myself.
[0] - https://github.com/severak/graph-paper
[1] - https://github.com/severak/graph-paper/blob/main/doc/file-fo...
WillAdams|7 months ago
https://www.godsvg.com/
zxspectrum1982|7 months ago
WillAdams|7 months ago
stergios|7 months ago
ddingus|8 months ago
But I am just going to put this here so the general thoughts incorporate a fundamental problem before significant labor investments go too far:
What is a probable, viable, possible answer to the geometry kernel problem?
Parasolid, arguably the leader and generally most capable geometry kernel we have today, is or at least I can't see past...
...is just not something easily duplicated.
There are a bazillion man months of time in that body of code. And those are hard hours!
For those unfamiliar, the geometry kernel is the piece that resolves geometry cases to make operations possible. Imagine a cylinder and rectangle. Now imagine they have some common volume. They intersect, in other words.
Put a fillet on one edge to blend the edge.
How many literal edge and corner cases can you come up with?
There are way more than you think!
Now multiply that tiny problem space with all the geometry used every day.
And then multiple that time again by what it takes to make it robust.
And the whole thing, as it stand today is not even multi-threaded!
Any CAD that we expect to see even moderate general use in a professional sense, needs this piece.
How do we, meaning anyone interested in CAD this way, get past this?
I wish there were some OSS type license for Parasolid. It could be treated like the Linux kernel.
Whatever replaces Parasolid and friends, should be treated like the Linux kernel.
The closest we have is Open Cascade.
Sorry. I do not want to piss on a good vision. But this has to be said.
Peace and good luck!
I used voice input on this. Pleqse forgive typos.
blobfish01|7 months ago
tda|7 months ago
> Whatever replaces Parasolid and friends, should be treated like the Linux kernel.
So much this! But the undertaking is so daunting, how do we get there? A capable, OSS CAD kernel would provide so much value to the world. I whish e.g. the EU could just "nationalise" such important, crucial software and redistribute it openly. Or that through some Chinese effort a newer and better kernel just lands out of nowhere and disrupt the field, like with DeepSeek.
The world has benefitted so immensely from Linux being freely available, has anyone even tried to put a price on the benefit to humanity? Imagine being stuck in a world where on big corporations can have proper OS-es, and everyone else is stuck with some anaemic locked down kernel...
rjsw|7 months ago
I did propose that licencing it as dual AGPL + commercial could be a way around the objections to the attempts to make JT into an ISO standard, didn't get anywhere.
thinkmachyx|8 months ago
Although building such engine requires tons of work, but the engine we’re having is indeed a bit of old. Except for the problems I mentioned, you also mentioned they’re still single threaded. That’s why I think it’s still worth building a new one, especially when there’s no good open sourced one currently.
I’m a big supporter of open source. If we have something like that in the future, we should of course make it open source like Linux kernel and allow everyone to enjoy the benefit of it.
api|7 months ago
Of course the catch here is going to be the precision required for real world use. A ton of impressive AI demos are just that — demos. They are good enough to wow as a demo. Still, if the data set is big enough, and you’d probably want to run the model itself in at least fp32 precision, maybe you could get something.
There is a body of machine learning work that’s been done on precision annealing of models. Basically you train to min loss and then go into a finer grained domain using something like simulated annealing to fine tune parameters.
trumpeta|7 months ago
jqpabc123|8 months ago
jpm_sd|7 months ago
Have a look at Dune3D:
https://dune3d.org/
https://docs.dune3d.org/en/latest/why-another-3d-cad.html
alsko|7 months ago
https://solvespace.com
therouwboat|7 months ago
Technical drawing comes with list of changes and more important projects have approval processes.