Thursday 4 March 2021

Subassembly composer multiple nested decisions issues and workarounds

I used to work with SubAssembly Composer (SAC) 2014 because it was the last version allowing a variable to be deleted and recreated with the same name not reporting the message that this variable already exists. Same thing happens when a variable is cut and pasted somewhere else. Trying to rename from copy to the previous name resulted to the same message. A serious bug that autodesk never responded to my notifications at the civil 3d customization support forum.

I created a subassembly using SAC 2014.Working at it, step by step it became huge and unresponsive.
Solution :
I turned to SAC 2018. This version handles huge subassemblies far better.

Copy or cut/paste a variable makes it impossible to use it with the same name, as mentioned at the beginning of this topic.
Solution :
Declare all variables inside a Sequence at the very start of the program. So there is no need to move it to another place. Not a good solution for someone that is used to programming but...

Finally i reached to a level of complexivity that doing a minor change had a huge time cost.
Solution :
I started unlinking all unecessary nodes keeping linked only those for the case i wanted to create or examine. Quite annoying but i did not find another workaround. For this to work  properly i had to keep written notes about how to reproduce each case.

But even so there was also a quite annoying time lag during changes or addings.
Solution :
Cut the preceding link. Everything takes place on the fly.

But no link or point already entered is available to select. Empty dropdown lists !
Solution :
The above method is perfect as long as no poimt or link selection has to be made. If so i found a better workaround.
Instead of cutting the preceding link i do a dummy insertion eg an empty shape so an error takes place.
Whatever is inserted, changed or moved takes place on the fly.
And best of all, all points and links are available to select.

Finally i have to connect all nodes. Program becomes completely unresponsible. It never unfreezes.
Solution :
Cut the very first node.
Join all others.
Save it using a name that identifies this.
Save it again removing this identification.
Do the every first join.
It freezes. Finally it reports a message that it is out of memory. Press OK. Save it.
It freezes again. But it is saved.
End it by force.
In case of changes use the one that is cut at the very first node. Repeat the above steps.

Notice :
Variables, Points and Links declared in a Switch or Decision are NOT available out of this Switch or Decision scope !!!