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
Hi I have a torsion spring which is modeled with relations to show it as near to real world as possible. This behaves correctly (as a stand alone model) adjusting the diameter, body height etc, when the parameters are modified within the spring design. The working deflection range of the spring is from 0° - 193° between the 2 legs.
When this spring is installed into an assembly and the spring is made as a flexible component and constrained by an angular positions in the assembly model. The flexible spring behaves correctly through the deflection range 0° - 179°, but anything over that, then the angular measurement is reversed. For example at full deflection on the assembly model 193° , the flexible component measurement analysis reads 167° ( i.e. 360 - 193).
In the assembly model the spring then appears disconnected.
There is no difference if the analysis plot is set to 0-360 or +/- 180.
The only way I have found to gain the correct measurement is to manually modify the angle measurement (flip the measurement direction by the arrows) each time the deflection angle goes either side of the 180° deflection range. This is an unsatisfactory solution, whilst dragging the model.
How do I control the way Creo measures this angle?, so that it reflects the working range (0° - 193°) of the components in the assembly without manual intervention each time I drag the model.
I am using Creo 8.03.
I have run into this before. It is an issue with the datum plane flipping direction.
In my case I created a curve rather than relying on a datum plane. For cartesian coordinates you can define an arc as:
Angle = 235
Radius = 5
Y = Radius * cos (t * Angle)
X = Radius * sin (t * Angle)
There is more discussion about curves here:
https://community.ptc.com/t5/3D-Part-Assembly-Design/Equations-for-Curves-and-more/td-p/446997
FYI Century Spring (https://www.centuryspring.com/) allows you to download native Creo models and their models have equations built into them. You could find something close to what you need and modify it if you need something custom.
Hi Chris,
Thanks.
How does the function define the angle by a datum plane?, The angle in the assembly is defined by an angle between sketched curves in parts in the assembly.
Does the datum curve go into the assembly or the part and how do I tell creo to use that as a reference for the angular dim.
Any pointers would help.
Thank you.
I think ideally you redesign your part so its not driven by datums or so that the datum is driven by the curve. The curve would be in the part. You could have a parameter that drive the curve and then make that parameter flexible at the assembly level. As I stated before, I would recommend downloading one of the century parts to see how they have it setup. Its a bunch of parameters and relations.
Hi Chris,
Thanks for the idea. I looked at the century spring parts and the way that is designed, the ID does not decrease when the angle of deflection parameter is changed, so it does not appear to be a real world scenario for a flexible torsion spring. Where as my design does simulate the spring ID change when the leg deflects. With that said, I did add this to my assembly and made it flexible, and I observed the same behaviour with the flipping of the measured angle in the assembly.
The behaviour I am seeing, I believe is not with the spring design but with the way Creo measures the variable angle in the assembly as part of the flexible component. This is were the datum for the angle is being flipped, when it exceeds the 180° position.
I am wanting to control the way Creo measures the variable angle in the assembly when using the flexible component function.
Another option is to create a sketch used to control the clocking angle as shown below. This sketch defines the clocking angle and DTM 4 is driven by the sketch. Try this approach to control the datum plane angle from 0-193 deg it may resolve the issue. It is hard for me to tell without your model, but it can work.
Use a sketch of a point on a circle to define the clocking angle. You then create a plane through the datum point of the sketch. This can be exploited to prevent the flip of the normal to the plane. Note the angle domain is 0-359.99 degrees. Creo 7 model enclosed for reference.
Thanks for the video and model. I would agree this is an option for controlling the clocking angle through 0° - 359.99° and does work when I incorporated this into my spring design. However it did not change the way the the spring worked in the assembly as a flexible component. The way my design works does not limit the clocking angle to 359.99°, But in my application scenario it will never go beyond 193°.
The behaviour I am seeing, I believe is not within the spring design but with the way Creo measures the variable angle in the assembly as part of the flexible component. This is were the datum for the angle is being flipped, when it exceeds the 180° position.
I am wanting to control the way Creo measures the variable angle in the assembly when using the flexible component function.
In your assembly, is it possible to create a skeleton model that controls the clocking angle using the method I disclosed above to control the flexible spring angle? If so, and you assemble the spring to the skeleton then the spring should follow the datum plane clocking reference in the skeleton.
I have added a skeleton model to the assembly, and yes it does control the angle of the spring correctly in the assembly model. However this scenario causes another issue in the spring at the part level.. If the skeleton model in the assembly is driving the clocking angle of the part by relation, when both the part and assembly are in session, the part model (separate window) is always shown in the clocked angle position attached to the assembly. As the skeleton model only controls the clocked angle from pre-load (42°) to max load (193°). Therefore the part model is not ever shown in the free state. 0° which I require for the manufacturing drawing, Hence the requirement for using the flexible component feature in the assembly.
I assume I have interpreted your suggestion correctly, and the behaviour I am experiencing is true.
Any suggestions on a way forward are greatly appreciated.
A quick and dirty fix for this is to set the angle to the free state in the flexible model and then create a new part from the body of the spring model when it is at 0 degrees. Once you create this new part from the spring model set the dependency of the copy geometry feature in the new part to none. This will ensure that you have a free state version of the part to use where needed.
To Create a New Part by Copying the Geometry from a Body (ptc.com)
Thanks for the suggestion.
If I copy the spring model without dependancy, for the free state, if I want to change the spring design, say edit the wire dia, this will not update the spring in the assembly. Therefore the quick and dirty fix I dont think will would not work for me.
FYI , I did try and make a family table instance and made a parameter for the clocked angle ( relation) and tried to set this to 0° in the free state instance, but because this is a driven dimension from the assembly it is automatically over ridden. If that had worked it would have at least kept the 2 part models with dependant geometry.
I think that to resolve your issue you need to define the flexibility of the spring component in assembly mode when placing the spring in the assembly. Define the flexibility on the fly when you are placing the spring in the assembly.
When you do this the spring only has flexibility enabled in assembly mode and not part mode. This should retain the free state configuration of the spring when you open the part in part mode. I am not sure how a drawing will handle this because I have never used this for a drawing in the manner that you are attempting.
Hello @Paul6,
It looks like you have some responses from some community members. If any of these replies helped you solve your question please mark the appropriate reply as the Accepted Solution.
Of course, if you have more to share on your issue, please let the Community know so other community members can continue to help you.
Thanks,
Community Moderation Team.
Hi Paul! I came across this forum post because I was having the same issue..... I did come up with a solution though.
I know it's kind of complicated to get all of the angles correct, but it does work, it just requires two flexible measurements instead of one and a little programming.
*When setting up the flexible measurements, you may need to adjust the normals that Creo is measuring based off of. Just click the highlighted arrows to change the direction. Some cases to try to make sure all the angles work out...
Here are two different cases, one <180°, the other >180°
Here is a screenshot of my torsion spring setup (I am still working on adding more relations to change the pitch and outer diameter based on the deflection angle, but I had to get the flexible angle working first!!)
If you have any questions or problems, please reply to this post and I'll do my best to help!
What you can do is set up a datum point based off a CS, angular dims to points like that do NOT flip/flop, they are absolute degrees. You could do the same basic thing with a helical curve created by a curve by equation (cylindrical option) and use that endpoint as your point to run a datum thru.
How would you use that datum point to control parameters on a flexible part?
It looks like the spring isn't radically changing, i.e. less than 360deg. So, for the what looks like 4.5 turns, just use geometry, and then add the angle of the point (0-360) to that. In other words, as a flexible part, that angle is the dim used as flexible at assy, not a parameter. The vendor part is at 4.5 turns, at assembly, out make it rotated another 90deg, or 180deg. If I remember you can even use an angle measurement at assembly and not simply a distance, which is why I much prefer using dims as flexible instead of parameters.
But the flexible angle measure only measures between 0-180 and then flips. How are you using the datum points to control the flexible part?
So, you're using a COTS spring, and moving the arms angularly relative to each other, with the bottom pic being the resting state, and the middle pic being one possible "flexible" position at assembly?
Question:
So, if the above is true, and if you care about actually having the geometry accurate in the flexible state, what are you missing that happens to the geometry, that is making your model incorrect?
I actually was going to model this based on a video I saw only a couple weeks or so ago on Youtube, I didn't see this thread until recently, after I saw that video.
When you control a flexible component with an angle, the angle flips over 180° because it is continually trying to measure the smallest angle.
Even if your spring is modeled correctly to deform from 0-360°, the flexible measure CANNOT measure over 180°.
See this example. The hinge is CLEARLY at two different angles, but the flexible dimension is measuring 165° in either case because past 180° the program starts measuring from the other side.
It's very frustrating and in my experience, there is no way to set a constant binormal vector to use as a reference for measuring the angle. That's why I suggested using a second angle measurement offset 90° to detect when the first angle flips.
I'm in the middle of something, and don't have a model, BUT, when measuring angles in general, you have the option of what part of the angle you want (one being conjugate angle I think), so see if the "Angle" cell under "Method" doesn't allow that.
That works for the measuring tool, but there is no such option that I can see for flexible components.