And the proprietary "Product Data/Lifecycle Management" tools are expensive, bloated and hard to use.
The industry standard version control here is Perforce. Perforce being Perforce, there even are 3rd party solution to de-duplicate users' workspaces in order to save gigabytes of disk space.
- Feature3, hole: diameter 3.0mm
+ Feature3, hole: diameter 3.1mm
- Feature4, extrude: Sketch 1: dimension4 400mm
+ Feature4, extrude: Sketch 1: dimension4 425mm
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.