We are a stair manufacturer and our models are highly variable depending on the project. The models consist of a flight, which contains a landing, a stair, and a guardrail. Each flight often has different rise/runs and other parametric differences. The flight assemblies are then composed into a stairwell assembly as an array of flights. I've built an API add on that drives all of this.
The challenge I am facing right now is that for the guardrail I've created an assembly that contains the railing frame as well as a separate assembly that contains the grabrail. The grabrail then contains a part for the piping as well as a pattern of bracket parts. To make one railing configuration, I must create a unique configuration of the railing assembly, the railing frame, the grabrail assembly and the grabrail tubing part. That is a lot of repetition and is tedious to program. What I really would like to do is treat the Railing assembly as a single unit, update the railing assembly's parameters and have its children updated with those parameters. This is doable, obviously. However, the problem is when I now include multiple railings into the stairwell assembly. Unless I create railing component configurations for each instance, only one configuration of each will be shown in all flights and each instance will no longer be driven by the parameters of it's direct railing assembly parent, only the last assembly that it was opened/saved in.
Is there a way to isolate each instance of a child component so that it becomes absorbed into its distinct parent assembly? I've played with virtual components, but that does not seem to have any difference in behavior. I am hoping maybe there is a simple solution I've overlooked?