Most mechanical CAD tools (SolidWorks, Fusion, FreeCAD) still lock all modeling into opaque binary files. That makes it hard to track changes, collaborate with Git, or automate builds.
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
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.
The problem is hard. I wish those working on it luck, but I don't have high confidence that it is solvable.
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.
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).
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.
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).
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...
https://www.godsvg.com/