4 ms·
EDA is at least simple text formats that work well with git, etc. I've seen lots of good version control of EDA using standard tools. I don't think I've ever se
by johnwalkr 6y ago
EDA is at least simple text formats that work well with git, etc. I've seen lots of good version control of EDA using standard tools. I don't think I've ever seen good version control of mechanical CAD. The files are large, binary, not really diff'able, and almost every file is touched in every session.
And the proprietary "Product Data/Lifecycle Management" tools are expensive, bloated and hard to use.
- rjsw 6y agoMechanical CAD doesn't have to use binary files.
- johnwalkr 6y agoThat'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: - 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.
- rjsw 6y agoWe don't need yet another CAD interchange format. 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.
- johnwalkr 6y agoThat'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!
- rathel 6y agoIf we're talking about IC EDA - then the OpenAccess library format (anything but, more like InteroperableAccess at best) is binary. 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.