That's true, although most native formats of mechanical CAD programs are binary so I think a standard tool would need to support it. I've actually been searching online for solutions for a while as well as thinking about trying to solve this problem. Ideally, you'd want to be able to see text such as:
To get there, I'd propose a new CAD interchange format as the current ones are more like polygon meshes. I prefer this over some standard API as that would probably be broken in 10 years when you go back and check a part's history but you're not using the same CAD program anymore. Then, my hypothetical standard version control system would:
- control read/write access to files to prevent unintentional file changes due to rotated views, etc. The user would have to manually select which files are checked out/active. This might require a plugin to the CAD programs, so I may rethink this.
- Upon commit, the user adds comments, then all changed files are exported to the new interchange format
- text based diff is generated
- CAD with color highlights is generated
This is a pretty intensive operation, but it doesn't need to be instant. I think I would allow branches and make a workflow to automatically show conflicts based on diffs and CAD, then the user would manually resolve conflicts, declare a branch merged and select the files to go into main branch. After typing that, I am wondering if centralized control of read/write and one branch is the only way.
In the short term, I think an MVP could be scripted:
- Before commit, user selects which files are to be kept and other files are rolled back to previous version and writes the commit message
- Updated files are exported to STL (there are many tools available to compare STL files visually)
- A tool generates combined/subtracted STL files for each updated file
- git commit
- git notes to cross-reference the combined/subtracted STL to the commit message
- Nice to have: built-in STL viewer
Github is supposed to have STL Diffs but it took me forever to find an example on github because everyone commits files as _v1, _v2 (highlighting my complaint that version control is not part of standard practice). Only to find out they removed this feature.
Grabcad has been great for me but I need to find an on-premises solution.
I have been working on STEP (ISO 10303) for 35 years. Every few years someone comes along to a meeting and declares that we need to start again and adopt their new model, they waste everyone's time for a bit then go away again.
That's interesting. Did some light reading just now and I see that STEP is already considering feature-based descriptions. I have lots more reading to do, I am pretty ignorant about STEP!