chrisb wrote: ↑
Sun Oct 13, 2019 9:50 am
Just to make clear what I want and what I don't want: I don't want to suppress different workbenches, but I don't want to see that several capable programmers invest time in basically the same functions.
I've though a long time about this, and I might have a different view on this: I think that what really matters is not so much the functions of an assembly workbench, but the data structure representing the assembly
I explain: I work on projects that have life-spans of years, if not tens of years. If I do a project now with a tool, I need to be able to use that tool in 20 years, or another tool that is compatible. If I can't be sure that I can, I don't begin with this tool. This tool can be as good as it wants to be today, if I don't have a very high degree of confidence that it will still be around in 20 years I don't even touch it. Think PDF, or STEP. At a former place we had CatiaV5 at work, I had it personally on my computer, but with a 2 year license: I never used it for my personal projects because I knew that I might not have it later (which actually happened). This is actually why I got involved in FreeCAD: I use today a commercial CAD system (very good) but it has an USB dongle, and if it breaks, if I loose it, or if it gets stolen, my data is inaccessible.
So for me, the real question is: what is the best data structure to represent assemblies in FreeCAD such that FreeCAD — or a fork of FreeCAD — will still open a project in 10 years ? There are basically 2 options:
- put every App::Part in a single file, as I believe that App:Part is here to stay. This is probably good for small projects, but unworkable for large projects
- put parts (App::Part or others) in different files, "link" them together in a way that the "linking" will still correctly "link" the parts together in 10 years. By linking correctly I mean that the parts are put in the correct place, at least in the place they were at the last time the project was saved. The placement might be frozen, might have lost its parametric functionality, but at least I can open the project and measure all parts, and if it's worth-it I can re-create the project in another software. BUT: I must be able to open it !. If I can't , the project is dead !
I have tried to open a discussion on this matter
before, unfortunately none of the "gurus
" answered: what should the FreeCAD native data structure for assemblies be ? How should App::Part, App::Link, PartDesign::Body ... be used to form assemblies ? And this should be decided such that it is forward compatible, meaning that it can cope with use-cases and scenarios that we can't think of today.
This is important, not which button goes here or there. A button can be coded in a day, changing a data structure takes years.