So, I’ve been going through the whole FreeCAD learning curve, using it for prototype design, and of course at first all my models kept breaking as I changed things, learned all about the “toponaming” problem of referencing generated geometry, so have developed a workflow that uses NO referenced geometry and I just place EVERYTHING via expressions based directly on values in a dimensions Spreadsheet. It’s a bit tedious, but it produces very robust and stable models which I can fiddle with and change dimensions and not break things.
However, I’m not entirely happy with the Spreadsheet workflow, especially as it has started to get PAINFULLY slow (updating even unreferenced text fields on the spreadsheet works but hangs the whole program for like 5 minutes or more)! Also, I’d really like to be able to have my variables NESTED, as I kinda have a lot of them piling up, and it’s hard to move stuff around in the spreadsheet. Plus I can’t access these values directly from the tree, which interferes with my workflow, and the Spreadsheet Workbench does not even allow to be in a separate un-docked window.
As I’ve looked around for other solutions, I found this article from last summer on just this subject from Ondsel (who I hadn’t heard of before this, but damn they sure seem active in FreeCAD dev), which agrees with my assessment of a need for a better solution, as I have also tried and found lacking all the options it presents.
I also just (finally) learned that you could add arbitrary properties to any node! This seems almost sufficient, but then the question of where to put these properties. I was hoping to use the App::Part objects to hold this data, like have a set of expression properties right on that object, which pleases my sense of organization, but apparently then none of the geometry objects inside the part can reference them!
TLDR:
I’d like to better understand why that is, why can an object inside an App::Part container not access properties of that container? I’d also like to understand a bit better what efforts are under way to build some kind of core arbitrary variable handling system, and how I can help (my day job is as a software developer, in Java these days, but have a dim memory of writing C++ code in an earlier aeon).