Question: Can a top-down assembly model that uses a skeleton to define all sub-part geometry be used as a flexible part in a higher level assembly (i.e. a part with at least one flexible dimension, a vardim defined at Assemble|Flexible or when Make Flexible is selected on an assembled part)?
The sub-assembly in question (...3209) is entirely defined by the skeleton (...3211) as shown:
One dimension is made to be flexible. In this case the length within the skeleton. Shown below this is actually through a parameter defined in a notebook declared in the skeleton and in the assembly that uses the skeleton. I've tried other approaches as well such as a local parameter in the skeleton or a local dimension within the skeleton. Seems when selecting the parameter I can drill down into sub-parts or grab parameters at the part level (which this one is). Results are all the same.
When I assemble the part into a higher level assembly, I update the dimension to a new value.
Then it ignores the entry. In the case of the notebook driven parameter, I do get an error (for the direct parameters messaging is different and doesn't state an error, more cryptic):
I've made other flexible parts before, but without any skeleton and all the functionality works normally. I suspect the skeleton has something to do with it, but am not sure if it is something else (i.e. not so much the skeleton, bu that the flexible parameter is not "top level" for the sub-assembly), or some other fundamental Creo limitation.
Can you upload a simplified data set as an example of this problem? It is difficult to debug without something to query.
In the higher level assembly where you get the error do you have access to the parameter that is controlling the flexible dimension?
You should be able to test this in the relation editor and try to insert the parameter through selection and not explicitly typing it. Use the parameter selection UI to see if it is available in the context of this higher level assembly. This is important no matter the source of the parameter (i.e. Notebook or other method).
A zip is attached with a minimum set of features that illustrate the issue. In the case of this example, no notebooks or part level parameters are used.
tube_assy: contains the skeleton and via File | Prepare | Model Properties | Flexible (change) has implemented the flexibility on the skeleton dimension TUBE_LEN as shown:
tube_assy_skel: is the skeleton within which a revolved tube (surface only) is defined as 1000 long (implemented as a distance between two planes).
tube_part: imports the skel (via Copy Geometry) and makes the actual revolve (1000 long in this case).
multi_tube_assy: assembles tube_assy with a new value for the flexible dimension of 500 (the distance by two planes within the higher assembly):
Assembled tube_assy remains at the base model 1000 length instead of 500 (tube in pic below should stop at "ADT1_END"). Interestingly DTM_END seems to be in the right place, but that is the plane showing up in the skeleton within tube_assy. For whatever reason, the tube itself that is using the same skeleton is not getting the message... I tried another version of this where the line in the sketch used for the rotation is tied to the planes vs. the endpoints of the line, same result. If I edit the extern feature with tube_part with the entire multi_tube assembly open, it visually looks right, but then the sketch immediately below it is not following the extern. Very strange as this is how I've used extern copies quite a bit.
Thank you for checking this out.
@pausob is correct; skeletons will not work the way you are attempting to use them.
The functionality you are using is for flexible components. Skeletons are not assembly components. When in doubt about follow this procedure to test the model in question to determine if flexibility is supported.
I think skeleton models are special and one cannot make them flexible. For example, you cannot make skeleton model "flexible", in that the right-click menu does not have the "Make Flexible" option if used on the skeleton model component in an assembly (doesn't matter if it is the 1st skeleton):
So I doubt you can make this work in the manner you describe. In my experience, flexible assemblies will need to have flexible sub-components, and it all has to be tied together using the esoteric "associated parameters" for it to work properly.