Skip to main content
12-Amethyst
May 15, 2024
Question

Flexible component (torsion spring) controlled by angle

  • May 15, 2024
  • 6 replies
  • 5054 views

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.

6 replies

21-Topaz I
May 15, 2024

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.

Paul612-AmethystAuthor
12-Amethyst
May 15, 2024

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.

21-Topaz I
May 15, 2024

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.

tbraxton
22-Sapphire II
22-Sapphire II
May 15, 2024

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.

 

 

 

Paul612-AmethystAuthor
12-Amethyst
May 16, 2024

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.

tbraxton
22-Sapphire II
22-Sapphire II
May 16, 2024

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.

Community Moderator
May 22, 2024

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.

10-Marble
January 2, 2025

Hi Paul! I came across this forum post because I was having the same issue..... I did come up with a solution though.

 

  1. So the first thing to do is set up your torsion spring model so that there is a variable like SPRING_ANG, which can be set to 0-360° and control the position of the legs. (It sounds like you already have this done).
  2. Then create two dummy datums that measure from the same common plane and axis reference. The angles for these planes is SPRING_ANG_1 and SPRING_ANG_2 and will be used in our flexible assembly.
  3. In the assembly, set SPRING_ANG_1 to be measured between a fixed plane and a rotating plane on the other part of the hinge.
  4. Then set SPRING_ANG_2 to be measured between the same fixed plane and a rotating plane that is 90° from the previous rotating plane.
  5. Create a relation similar to as shown in the torsion spring part.
    • When SPRING_ANG_2 is less than 90°, we can set the SPRING_ANG to just SPRING_ANG_1 with no adjustment.
    • When SPRING_ANG_2 is greater than 90°, we need to set SPRING_ANG to be the opposite angle to SPRING_ANG_1 (since Creo just flipped the measurement to measure the smaller angle)

 

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...

  • Actual angle: 15°
    • SPRING_ANG_1: 15°
    • SPRING_ANG_2: 75°
  • Actual angle: 105°
    • SPRING_ANG_1: 105°
    • SPRING_ANG_2: 15°
  • Actual angle: 195°
    • SPRING_ANG_1: 165°
    • SPRING_ANG_2: 105°
  • Actual angle: 285°
    • SPRING_ANG_1: 75°
    • SPRING_ANG_2: 165°

arrow_reference.png

 

 

spring_cases.png

 

Here are two different cases, one <180°, the other >180°

 

spring_setup.png

 

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!

 

 

Patriot_1776
22-Sapphire II
January 8, 2025

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.

10-Marble
January 9, 2025

How would you use that datum point to control parameters on a flexible part?

Patriot_1776
22-Sapphire II
January 9, 2025

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.

Patriot_1776
22-Sapphire II
January 9, 2025

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.

10-Marble
January 9, 2025

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.

 

angle_explanation.png

 

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.

Patriot_1776
22-Sapphire II
January 9, 2025

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.