I can't find out what am I doing wrong with my chain assembly model.
End links and main links are assembled with MDX assembly constraints and flexible dimensions.
At assembly level, all these dimensions are controlled by relations and parameters.
And these parameters are declared flexible in the chain assembly model.
Up to this point everything works fine : when I change parameters, everything regenerate as expected in the chain assembly model.
When I integrate this chain in another empty assembly, the first link of the chain does not regenerate correctly when I change the flexible parameters. All others will regenerate as expected.
I don't get why.
Any hint ?
Solved! Go to Solution.
With the help of many posts in different discussions, I finally found a way to set my chain correctly :
In short, I added "associate parameters" to all the varied dimension of the individuals links so that I can call them in the relations.
I don't understand why but in relations at assembly level, calling the varied dimension with the parameter (w01:FID_74=width_main_link) works fine but calling the same dimension with the varied dimension (d0:6=width_main_link) leads to problems at a higher level assembly.
With this set up, I can assemble as many chains as necessary, all with different dimensions in a top level assembly and it works fine every time.
so I am done for what I wanted to do, even if I still don't really understand why it works now ...
If anybody knows I would be glad to hear.
I attached the files in order to make my problem easier to understand.
Edit: Attachment removed by user request. (Ryan Kelley)
There is nothing immediately obvious. However, check to make sure you do not have a relation driving the failing feature. Relations will overwrite flexibility.
Hi Antonius, thank you for your time.
I don't understand how you got that "d7". In the file d7 is d1, which is correct.
I am still struggling but I did more tests :
- If I import the chain_01.asm in an other assembly without flexibility, it regenerates correctly
- If I add flexibility on chain_01.asm on the required parameters without changing values, it regenerates correctly
- If I modify any of the three values for the end links, regeneration fails for "link_start.prt" which keeps the original values ; link_end.prt regenerates correctly with the updated values.
It must be an obvious mistake but I still can't find it !
I am not sure what is generating the errors in relations.
I find trying to mimic natural shapes to be troublesome.
I am not sure how this behaves in a next-level assembly. Technically, it seems you have locked the angles with relations at this level so you cannot move the links in between the ends in the next level because they are locked by relations. I would have to simplify the problem to better see the issue. Your flexibility is the physical size and shape of the links. But you have also set the assembly constraints with relations. Try simplifying the problem by using only curves.
well, I would really like to have this chain like this
Concerning the anlges, they just prevent the links to rotate "reverse" like a normal echain. And as far as I tested this works fine.
I just noticed that I am not consistent in my relations conerning the use of ampersand before parameters and dimensions.
And I can't find any clear explanation about what difference it makes to add ampersand or not ... Do you have any ?
the & is only needed for annotation. Relations seem to understand the values without any delimiting.
I have used a trick to avoid reversing... and yes, it is a very prevalent problem with a lot of Creo functions.
When you define the pin constraint, try adding angle limits. This will help.
When I do chains, I constrain them to a curve. Much easier in the long run. The chain can be managed with a perimeter dimension in a sketch, and the endpoints can be varied. A different approach but definitely a more manageable means to provide reasonable curvature. Specially when you figure out how to control splines directly. Just remember that the links represent poly-lines and the curve is actual length. The two do not always equal each other's chainlength so you need a "relief" joint somewhere. This can be managed at either end.