Community Tip - You can subscribe to a forum, label or individual post and receive email notifications when someone posts a new topic or reply. Learn more! X
Hello.
I have a subassembly (a pneumatic cylinder) which is used several times in a main assembly. The cylinder piston is constrained with a mecanism constraint (cylinder) so that it moves in and out. When I drag one piston all pistons from that subassembly moves, I would like to be able to move each piston individualy. Is that possible?
//Linus
Solved! Go to Solution.
You will need to make the subassembly flexible so that the each can act according their own constraints.
Highlight the sub-assembly in the model tree, RMB and "Make flexible". At that pont, you should be able to select a parameter that allows the sub-assembly to vary. Be sure that it is not over-constrained.
Try flexibility in a smaller test assembly if you have trouble.
You will need to make the subassembly flexible so that the each can act according their own constraints.
Highlight the sub-assembly in the model tree, RMB and "Make flexible". At that pont, you should be able to select a parameter that allows the sub-assembly to vary. Be sure that it is not over-constrained.
Try flexibility in a smaller test assembly if you have trouble.
Thanks Tom I will try that.
I probably should have added a few caveats. I am assuming you have the piston locked in some library version that is locked to some known dimension. Locking regeneration values in mechanism assemblies have stopped things from moving for me at higher level assemblies.
So the safe way is to make the mechanism element in the sub-assembly flexible and manage it in the higher level assembly. It all depend on the level of geometry control you are required to incorporate.
However, making a component flexible is not necessary in all cases. Evaluating a system that is locked up is AGONY! So much so that I simply start over if the project can manage it.
I've attached a file, commercial core Creo 2.0, that you can lift (drag component) the upper knob and the two identical cylinders will work correctly in real time.
Enjoy.
(tip: turn on the placement folder in the assembly tree.)
(tip: slider and pistons are similar. If you don't need rotation, sliders are simpler.)
(tip: you can use multiple mechanism constraints on the same sub-assembly - ref: cylinder pivots.)
A follow up to TomD's correct answer:
Once you've got this working, you ought to set up "predefined flexibility", in case other users want to use your subassembly in the future, or you yourself forget what specifically you ought to "make flexible". (I.e. is it a dimension in an assembly constraint? In a sketch? A parameter?) In the original model, File / Prepare / Model Properties. Halfway down under the "Tools" heading there is a "Flexible" section; click "change" and set up your flexible features. Henceforth, when this subassembly is added, the user will be prompted if they want to make these items flexible.
If what you're changing is indeed a dimension rather than a parameter, consider giving it a descriptive name, so it's clear to the end user what they're being prompted to change, rather than just a d#. For some reason, you have to exit the sketch and edit it to do this. (I.e. use "Edit" rather than "Edit Definition", so you can select the 3D representation of the dimension.)
A warning about flexibility: Because the original model is never modified, the assembly must be regenerated every time it's used to show the new position. Usually this is no problem, and happens quickly & automatically when you open the model. However, if you have the config.pro setting "regenerate_read_only_objects no", and you "lock" things in your PDMLink workspace because they are regenerating needlessly... Then the flexible models in those assemblies will not be shown accurately, as the auto-regeneration when it first opens is blocked too, not just updates based on seemingly modified relational links.
Another option aside from making the model flexible, is to make it a family table generic. This is better suited to something that has a finite number of fixed positions though, may not work so well for a pneumatic cylinder, unless you're content with it stopping at 10% increments or something like that. With this approach, you actually get a new instance model (with a new filename) for each position, and it shouldn't need to regenerate when you open it.
I've modeled assemblies that involve multiple cylinders working in tandem, and also assemblies which have multiple cylinders working independently to create complicated end effector motions. The two situations are not the same and to prevent lock-ups, I caution that you really have to be aware of the maths that are happening under the hood, and the pitfalls of over-constraining the system. Creo will often allow you to put two "actuating" cylinders (that is, subassemblies that involve a cylindrical joint with specified regeneratoin value for the position of the piston) in between a common base and end effector and you think everything is hunky-dory. But next time you open your design, you find one of the cylinders is flipped, or you get the "mechanism cannot be solved" message.
In these "tandem" situations, Creo needs one of the cylinders to be the "actuator" and another to be the "follower". It is possible to build all this into a single cylinder model by utilising the PTC_CONSTRAINT_SET parameters and flexibility functionality, but this is not for the faint at heart.
Note: if you don't have the "enable regeneration value" ticked off, then you should be able to place the cylinders in the parent assembly and move their pistons independently:
One other to be very careful about, is that in earlier versions of creo, using flexible parts of any type caused the index #'s (for the flexible parts AND some other parts) in your parametric BOM table to change without warning all over your dwgs. The parametric balloons always stayed correct to the index number, but the problem is now your notes or anything else don't match the index numbers, and if your dwg BOM is simply a reflection of a BOM generated in Windchill or some other outside system, you're totally FUBAR'd because they no longer match.
My fix for the time in versions up to creo elements/pro 5.0 was to fix the individual index, then fix the whole table, but that was a pain to have to do EVERY time something in the assy changed. And the lower-level users where I worked would ALWAYS forget to fix things. It was a sneaky/bad situation, but I needed to use flexible parts, so.....
Has this been fixed in, say, creo 3?