Community Tip - New to the community? Learn how to post a question and get help from PTC and industry experts! X
Platform: Creo 2.0 M030
Problem: Mechanism constraints broken on a simple assembly with two synchronized hydraulic cylinders that extend/retract and pivot around a common axis.
Additionally, there is a guide-plate that controls the arc of the devices on the ends of the cylinders. That guide plate also has the ability to move back and forth in a slot. The model did at one point perform nearly as intended.
I would appreciate some feedback on how this assembly could be created.
Thanks!
Solved! Go to Solution.
Hey Shaun,
I just took a smaple look at 5000-400-a17000.asm - and this basic assembly already has connection error. problem seems to be in a bad tangent constraint, between the 2 first components, that also seem to be a wrong one - pin goes through the whoel solid material.
In top assembly you just inherit same error.
I changed tangent to Coincedent (aligns slot side with a hole) and error goes away - also in top assembly. Try putting the fixed assembly into your data and check if top assembly works better.
Regards
- Vlad
I never liked that little "disconnnected" error.
The only thing someone pointed out that fixes this is by starting with a "snapshot" in order to "reset" the assembly.
And welcome to the forum, Shaun!
I discovered snapshots after the assy failed - I'll definitely explore that in the future.
Wow... this really is a convoluted mess. I finally got rid of the error. I had to remove all the connections at all levels and replaced them with fixed.
You might also explore setting the regeneration value in the connection assembly constraints.
I for one would -really- like PTC tech support to weigh in on this thread on how to best zero on this type of disconnected failure.
It seems we are simply flying blind in trying to resolve issues such as this.
I went so far as to begin deleting components and I was down to 3 components and the it required fixing to remove the error. Of course, it wasn't the -only- error.
Shaun,
Here are some general notes on connections and related errors in Mechanism design - see if this may help you. Given you talk about sub-level mechanisms problems in top level assembly this might be related to disruption in bodies scheme / body locks.
http://communities.ptc.com/message/222656#222656
Regards
- Vlad
Vladimir; I really appreciate the insight you provided in the linked post. I read it at the time and it makes perfect sense.
I think here is a different issue. Yes, the model is a mess (sorry Shaun!), and when you are in this state, where do you even begin to clean it up? Shouldn't there be -some- kind of log that tells you where the "disconnected" error emanates from?
Consider this scenario:
Someone left an assembly file in a lousy state and they went off on their new job and left me to resolve it during a routine Engineering Change Order operation. Now, rather that a 10 minute drawing update, I have a 2-3 day assembly rebuild to do and probably a fully messed up exploded assembly drawing, assuming I even know -how- it was meant to work in the 1st place.
This is all too common. When you contract with someone to do simple work, then telling them that their files are a mess is typically cause to get you replaced in a hurry. Clients just want -results-!
Is there not any kind of diagnostic tool within Creo that can help sort out these types of constraint errors? Model tree columns that will highlight the failure? "FIXIT" button?
In the case of the file included in this thread, the sub-components do not fail on their own, they fail at the top level. But no indication what-so-ever as to -what- is failing. Someone probably dragged a component and things cannot be put back where they were... and then they saved it! ...and purged the previous versions. Etc.
Antonius Dirriwachter wrote:
In the case of the file included in this thread, the sub-components do not fail on their own, they fail at the top level. But no indication what-so-ever as to -what- is failing.
Yea that's what I'm struggling with.
I can strip everything out of the top assembly one by one until I've isolated the issue, but I still can't get the mechanism to function, and I don't know what happened to cause the failure.
The model is definetly a mess. It is in-progress created from a lot of client iges parts, so working from the top-down would've been counter productive. I hoped there would be something obvious for mechanism modelling in Creo, like a set of best practices or something.
Would it make more sense to model the assy's/subs as trsaditional models (ie not mechanisms), and drive them with family tables or something?
Edit: And thanks for the link, Vladimir! I'll read through that thread carefully.
Antonius,
I fully understand your point, especially the "Is there not any kind of diagnostic tool within Creo that can help sort out these types of constraint errors? Model tree columns that will highlight the failure? "FIXIT" button?".
Unfortunately there is no such magic in Creo 🙂 ... since it is usually preferable not to take decision instead of the designer - too high responsibility, and too low chance that any algorithm sophisticated as it could be will fully understand designer intent.
Investigation tools are however there. Best example - Reference Viewer. Detection of circular references tool in particular. I wish we had same visualization level for bodies ...
What we do have is Mechanism Tree, model tree column "body" (that will report body # for each component), and errors (agree they are not too informative). Working with Tree Column "body" / dumping it time to time you can see if things change as you work, and back analyses what you changed that caused unwanted bodies change. e.g. you added 5 subassemblies to top assembly that have total 10 rigid bodies and start working in top assembly, and note that now you have 8 bodies. Means 3 bodies "locked" to one. The earlier you catch this - the easier to check what and how you constrained wrong.
Regarding tutorials - I do not pretend that referred post is sufficient. We need PTCU and learning connector much better cover Mechanism. I do make this point internally, but adding such a request at a technical committee could have even better effect.
Regards
- Vlad
Thanks again, Vladimir. Can you expand on how to report errors in the Model tree? I found the body # column, status, and dependency, but I do not see of a way to show errors in either the mdeol tree or the mechanism tree. The information reports also do not provide this.
Hi Antonius,
Sorry if I was unclear. Model Tree is only for "body #" tracking. Messages come on lessage.log.
We are currently working to provide more informative messages. So that instead of " The connection "Connection_1" will be suppressed because of invalid constraint(s)." there will be also an indication to which component does this connection belong to.
In the future we definitely shall provide Reference Viewer - like investigation tool to detect "body locking loops" that lead to such connection errors.
Best
- Vlad
Thank you, Vladimir. I was hoping I wasn't overlooking an important feature.
In looking at the linked explanation it seems that PTC software is designed to make any number of magic decisions for the designer. In example 3 "Formally C continues to show "not fully constrained", but D later "locks" it to Ground in body calculation." In other words, the software is performing an unexpected task and it is lying to the user about the result.
The answer for this and so many other development problems that become a problem for users is that the intended function of the software drives the software development process. Someone has to decide the conditions under which a routine will work: what the inputs are, what the intermediate steps/structures are, what the expected results are, what the user needs to do, and what the user will be shown.
PTC should create and publish detailed manuals first and then create software that behaves as described. I call this break-through development concept "top-down design."
The suggestion to continuously check the status is both valuable and tragic. It may be the only help, but it is of no use at all to someone assuming responsibility for a project. Is it really the PTC position that everone should start from scratch on every part and every assembly?
Reliance on TCs is perplexing. Mechanism is hard to use, therefore there is little interest in using it, therefore few push for improving it, so it is low on the list for PTC to work on, so it remains hard to use. If PTC developers are not interested in creating software that users are happy to use, then they should not be surprised when they are no longer employed as developers. If PTC management isn't interested in funding the developers, then that will also be self-fulfilling, won't it? Finally, if developers and management don't care if users make money, then users will work to return the favor.
So the consensus must be to abandon this mechanism assy and rebuild it using "normal" techniques.
Shaun; typically I don't give up on such efforts and the more I learn about the feature or functionality the better I get at using it. I do have to consider my client's needs in any given situation. More often than not, I will do what is required for the task but later go in on my own time to learn more about "the next level". In your case, you might need to simply look at what value the effort is providing.
Yesterday I did a mechanism feature that one would think is simple, and it does involve something I said earlier that made the mechanism fail. I took a simple link chain and built a 2 link subassembly. The next level required the chain to follow a slot with a bend. I was getting the error you were getting whenever I tried to add links beyond the 1st slot curve (into the bend). It turns out that I had to remove the regen position in the subassembly.
I did finally get it to work and it took a while to get the best mating constraints for both assemblies so I could make a gear set (rack and pinion) and apply a servo motor. But unless you do this every day, and are absolutely diligent about your assembly constraints, you can lock it up in a hurry.
click on image to animate
In the past, with Pro|E 2000i, before I had Mechanism I would create assemblies where a single value change would update the assembly on alternate configurations. I was still very careful to ensure every component was fully constrained. This was the "normal" method you refer to but it allowed me to do some worthwhile analysis non the less. The thing was to really mind the desired outcome and have this in mind when going through all the levels of assembly. And yes, this can get too complex to manage easily. Mechanism and a few other new features actually helped this aspect of my day to day work.
Thanks for that Antonious.
Unfortunately, modelling the mechanism adds very little value to the customer; most of the components are in manufacture now, and all I need to do is populate the assy dwgs/boms and ensure it works in the intended range of motion.
My difficulty now is in modelling the assy's without using mechanism constraints, and I dont know where to start. I need to have a few (or more) "configurations" of the tool for the drawings,and have multiple moveable subs mate with each other in the top ga.
This is the part where I say I am a SolidWorks user and Creo is much different than what I am used to.
From what I can tell of your assembly, you have a primary motion with the two cylinders. As the cylinders expand, the "tri-clamp collar" rotates following the low hanging slot.
If you can live with those two "variables" in the required assemblies for your drawings, you might explore flexible models for the cylinders themselves and add a slot constraint (follower) at the lower "detector(?)". If all works well, you can then have a single value drive both cylinders. In your drawing, you have an instance of each condition.
If you then need some other smaller detail views of any part of the subassembly, you can do this same thing at these lower levels. You can then add the model to the drawing and make separate views of the "zoomed" feature, such as the "lock lever" for instance.
I fully understand just how frustrating it is when you have to make a lot of alternate configurations just to show it in a drawing. Family tables and flexible models are just about the only way to get there short of making completely separate models. In a PDM (windchill) environment, it gets even harder to manage since you do have to account for BOM generation.
What I am getting at is that you can replace many of your mechanism constraints in alternate fixed model configurations by means of family tables or flexible assemblies. If you use the mechanism constraints "passively" in select cases, you might just have a much more manageable model. However, be very purposeful in your sub-assembly constraints. You can drive just about any constraint value with a family table or be it flexible assembly.
Your interpretation of the motions involved is correct, however; there is one more motion involving the position of the low hanging slot:
The whole thing can move back nad forth in yet another slot (as seen above).
Antonius Dirriwachter wrote:
If you can live with those two "variables" in the required assemblies for your drawings, you might explore flexible models for the cylinders themselves and add a slot constraint (follower) at the lower "detector(?)". If all works well, you can then have a single value drive both cylinders. In your drawing, you have an instance of each condition.
Perhaps then there would be three variables and I could attempt what you've decribed above. I have not had to use a 'flexible' model before and I haven't seen an applicable sample online that would help me with this. Do you know of a guide or resource that may help?
I am working in Windchill fwiw.
Aha! Yes, that was the missing piece. Just avoid that constraint and let it follow the slot. You just need to make a normal planar (coincident) constraint. That would be one of your flexible value or simply a missing constraint driven by the next level assembly.
Is the assembly structure still flexible where you have to place things on the multi-level BOM? I highly recommend getting that locked down 1st so that a simple change doesn't affect your motion efforts. Often I get manufacturing to make a "simple" change that blows up all my efforts yet again.
How do I add flexibilty to the cylinder assembly?
Hey Shaun,
I just took a smaple look at 5000-400-a17000.asm - and this basic assembly already has connection error. problem seems to be in a bad tangent constraint, between the 2 first components, that also seem to be a wrong one - pin goes through the whoel solid material.
In top assembly you just inherit same error.
I changed tangent to Coincedent (aligns slot side with a hole) and error goes away - also in top assembly. Try putting the fixed assembly into your data and check if top assembly works better.
Regards
- Vlad
That's awesome thanks!
But how on earth did you discover the failed constraint??? I've never had an error from that sub before....
EDIT: Oh my goodness. The assy functions again!! This is extremely disturbing.
Well, opened first subassembly in order - it already had an error. Then opened first sub-subassembly ... and it also had it - this is enough to screw everything. So that one was small enough to fix it. And tangent looked so strange for such kind of connection ... and Tangent has tendency to have several legal solutions often causing mechanism troubles.
In general if you have bottom levels functioning and get errors on the top level you only need to care top level connections between the big chunks. But when you get troubles from the bottom level it eventually have big costs to find ...
best
- Vlad
I'll only respond on the technical complaint - not on emotions / assumptions or judgements :
""Formally C continues to show "not fully constrained", but D later "locks" it to Ground in body calculation." In other words, the software is performing an unexpected task and it is lying to the user about the result."
This is a wrong conclusion. Creo simulates design world / process as close as possible. You can have a simple hinge assembly - purchaced, in the box. It has 1 DOF (degree of freedom) due to PIN joint.
Now you put it in a bigger assembly, and for some unknown reason weld it to a wall - weld both sides of it. Now what happens ? Your hinge still remains hinge, but connection is not functional any more. This is what Creo does on a CAD side. Hinge assembly connection is not changed (and should not be changed) since this is a cathalog item hence redefining Pin still show Pin. However attempt to Drag it in a scope of higher assembly - where it was physically "welded" to a wall - reports that connection is not functional any more.
The example hinge should report that one or both halves of the hinge are overconstrained via circular reference, not that the connection is no longer functional.
The amibiguity of the example is due to the following interpretations:
1) C showed not fully constrained, but the user performs a later operation, D, that locks it to ground, with the user not noticing/not being informed they have now fully/over-constrained the item. (poor feedback)
2) C continues to show not fully constrained even though the user performed a later operation D that locks it to ground. (lie)
3) C continues to show not fully constrained even though the software makes a calculation that locks it to ground in body calculation. (lie)
It is an unemotional analysis that Mechanica Mechanism, in possession of PTC from RASNA for almost 20 years, still presents it's users with a high level of difficulty in creating, maintaining, validating, and diagnosing basic operations. The suggestion of using TCs to fix this is flawed based on nearly 20 years of being ineffective. Root-cause analysis clearly leads back to the developers and their management.
Vlad has found the error culprit, but I'm convinced this assembly should be modeled not using mechanism constraints (its not necessary for us).
Antonius recommended using flexible constraints for the cylinder and driving them with family tables - I would really appreciate if someone could get me started; what components are flexible? Where do the flexible dimensions belong? How does the hinge function? I have not modeled a flexible component or sub assy before..
I saw that tangent constraint as well but it didn't dawn on me to try to delete it. I still don't know how one can see that this was the offending feature. Glad it was resolved, however.
Shaun... sorry I left you hanging there. It was time for me to go for my daily bike ride. As for making things flexible at the assembly level, you right click on the component in the assembly tree and select "make flexible". From there you have several option to control a parameter of the cylinder model. For instance, you can have the shaft in the cylinder constrained with a distance. You can then -overwrite- the distance with the value you specify in the flexible model dialog. Once the assembly is regenerated, it will take on the new position. I do something very similar with springs where the part model can be driven with a single height measurement. Making the spring flexible allows me to make a uncompressed spring drawing, but have the spring compressed in the assembly.
Unfortunately, there is a flexible modeling extension so searching for help is rather difficult.
...here is a quick overview on an compressed/uncompressed o-ring model
Antonius,
The fact that this particular Tangent (togather with Coincedent) causes connection failure is a bug and we will get it fixed soon. In general, unfortunately, tangent is not too good in mechanism, Cam is more robust in and in many cases can replace tangent. Note that Tangent is not supported in Connections.
- Vlad
Two things - You have already done flexible modeling, just not using the Flexible modeling feature and Flexible modeling is misnamed.
When I say you've already done this, it's because all that Flexible modeling does is perform existing operations on existing models by creating on-the-fly, invisible, family table parts. RIght now, if the cylinders have a dimension that regulates their length, you can change their length by changing that value. However, that will change the length of all the models of the cylinder. By using the Flexible extension that same value change can be made to an automatically generated, invisible, family table member that is substituted for the original cylinder. Because it is automatic, it does not affect the cylinder model PDM status (should not mark the cylinder as modified.)
I say it is misnamed because many users assume it can affect items in ways items can't otherwise be changed. If, for example, the cylinder was an IGES import, Flexible can't change it's length. It also can't make something just bend or stretch - the usual interpretation of flexible.
Flexibility can affect - dimensions, suppress/resume features, suppress/resume components. Dimensions can be driven by entering a new value or creating a measurement and using that value.
In your cylinder example, you could create an assembly that moved parts. In the Flexible portion you would assign the distance between pivots on the cylinder to be the same as the measured distance between the axes of the pins that mount the cylinder.
It is also possible to use Setup in a part or assembly to pre-define flexibility. When installing a pre-defined flexible part the user will be prompted to use or ignore the defined flexiblity.
The documentation is poor, but since it only affects methods that you already use, it is trivial (once found) to apply. Also, the only way to change values you set for the parts is by Redefining the component -> Flexibility. The altered dimensions won't show up with Modify.
It is also a good method to cause some trouble. Suppose a washer is too small to fit over a screw. Change the washer using flexibility to a size that fits. The model can be inspected for interference between parts and none will be found, but when it gets to the factory floor, the washer still doesn't fit. The flexible part or assembly gets a special icon in the model tree, but this change is not reflected in the BOM.