Cables#
- class Cable(**kwds)#
- Creates a cable.
The cable receives input/output (Winch, Anchor) elements and a variable number of Pulley elements, wrapping around them in an open-track configuration. If only pulleys are provided, the resulting cable track is closed.
The effects of the longitudinal tension coupling between the track components are represented by a number of bodies, joints, motions and forces. Pulley sliding contact and disengagement are considered.
Warning
To instantiate a Cable, Winch, Pulley and Anchor instances need be present in the model first. For a closed-track assembly, only Pulleys are required (minimum of two), while for an open-track, at least one Pulley is required along with two input/output components (Winch, Anchor).
Note
After creating a Cable passing in a combination of the Winch, Pulley and Anchor, any changes to values of attributes belonging to any of these component instances, will be automatically propagated to the Cable instance, upon sending to the solver or calling Summary on the Cable.
Example
from msolve import * from msolve.machinery.cables.winches import Winch from msolve.machinery.cables.pulleys import Pulley from msolve.machinery.cables.anchors import Anchor from msolve.machinery.cables.cables import Cable model = Model(output="single_pulley_cable") ground = Part(ground=True) global_ref = Marker(body=ground) Units(mass="KILOGRAM", length="MILLIMETER", time="SECOND", force="NEWTON") Accgrav(kgrav=-9.81) winch_base = Part(ip=[5.0, 5.0, 5.0, 0.0, 0.0, 0.0], mass=0.001, cm=Marker(qp=[0.0, 100.0, 600.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0])) pulley_base = Part(ip=[5.0, 5.0, 5.0, 0.0, 0.0, 0.0], mass=0.001, cm=Marker(qp=[600.0, 200.0, 800.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0])) anchor_base = Part(ip=[10000.0, 10000.0, 10000.0, 0.0, 0.0, 0.0], mass=10.0, cm=Marker(qp=[1000.0, 200.0, 300.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0])) winch_rm = Marker(body=winch_base, qp=[0.0, 100.0, 600.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0]) pulley_rm = Marker(body=pulley_base, qp=[600.0, 200.0, 800.0], zv=[0.0, 1.0, 0.0], xv=[-1.0, 0.0, 0.0]) anchor_rm = Marker(body=anchor_base, qp=[1000.0, 200.0, 300.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0]) jt_winch = Joint(type="FIXED", i=Marker(body=winch_base, qp=[0.0, 100.0, 600.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0]), j=Marker(body=ground, qp=[0.0, 100.0, 600.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0])) jt_pull = Joint(type="FIXED", i=Marker(body=pulley_base, qp=[600.0, 200.0, 800.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0]), j=Marker(body=ground, qp=[600.0, 200.0, 800.0], zv=[0.0, 0.0, 1.0], xv=[1.0, 0.0, 0.0])) winch_0 = Winch(rm=winch_rm, att_body=winch_base, dc=10.0, radius=50.0, width=100.0, ini_wlength=20000.0, motion_type="DoubleStep", amplitude=2.0, date_fwd=1.0, date_rev=3.0, delay=2.0, connection_type="Revolute", mass=20.0) pulley_0 = Pulley(rm=pulley_rm, att_body=pulley_base, dc=10.0, angle=40.0, radius=100.0, depth=15.0, width=35.0, cradius=10.0, mass=2.0, sliding_locking=True, connection_type="Revolute") anchor_0 = Anchor(rm=anchor_rm, att_body=anchor_base, dc=10.0, gra_size=100.0) cable_0 = Cable(rm=global_ref, components=[winch_0, pulley_0, anchor_0], liftoff_coeff=0.001, ini_preload=9810.0, damping_ratio=1.0, cable_mass=1.0, stiffness=100000.0, dc=10.0, contact_stiffness=10000.0, contact_exponent=1.0, contact_damping=100.0, contact_depth=0.1, contact_mu=0.5, contact_vt=1.0, force_graphics=True, frc_gra_scale=0.01)
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Double
\(m\)
1.0
Reference -
MachineryComponent
[0]Double
\(c\)
100.0
Double
\(d\)
0.1
Double
\(e\)
1.0
Double
\(\mu\)
0.5
Double
\(k\)
10000.0
Double
\(v_{t}\)
1.0
Double
1.0
Double
\(d_{c}\)
10.0
Bool
False
Double
0.01
Int
Auto
Double
9810.0
Double
0.0
Str
Double
0.001
Str
Reference -
Marker
\(\checkmark\)
Double
\(K\)
100000.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- cable_mass#
The cable mass.
Type=Double, Default=1.0
- components#
Type=Reference (MachineryComponent) [0]
- contact_damping#
The contact damping.
Type=Double, Default=100.0
- contact_depth#
The contact depth.
Type=Double, Default=0.1
- contact_exponent#
Type=Double, Default=1.0
- contact_mu#
The contact friction.
Type=Double, Default=0.5
- contact_stiffness#
The contact stiffness.
Type=Double, Default=10000.0
- contact_vt#
The contact transition velocity.
Type=Double, Default=1.0
- damping_ratio#
Type=Double, Default=1.0
- dc#
The diameter of the cable wrapped around the pulley.
Type=Double, Default=10.0
- force_graphics#
Type=Bool, Default=False
- frc_gra_scale#
Type=Double, Default=0.01
- id#
The id of the object.
Type=Int
- ini_preload#
The initial preload of the cable.
Type=Double, Default=9810.0
- ini_vel#
The initial velocity.
Type=Double, Default=0.0
- label#
The label of the composite element.
Type=Str
- liftoff_coeff#
The lift-off coefficient of the cable.
Type=Double, Default=0.001
- name#
Defines a nametag for the object.
Type=Str
- rm#
The reference marker of the composite element.
Type=Reference (Marker), Required
- stiffness#
The stiffness of the cable.
Type=Double, Default=100000.0
- class Winch(**kwds)#
- Creates a winch.
A winch element can be used to attach one end of a cable, wrapping or unwrapping it around itself, in a winding or unwinding motion accordingly:
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Double
\(A\)
0
Reference -
Part
\(\checkmark\)
Reference -
Connection
Enum
REVOLUTE
Double
\(T_{f}\)
0
Double
\(T_{r}\)
0
Double
10.0
Double
\(T_{d}\)
0
Int
Auto
Double
10000.0
Str
Double
\(m\)
0.0
Str
0
Enum
DoubleStep
Str
Double
\(R\)
\(\checkmark\)
Reference -
Marker
\(\checkmark\)
Double
\(W\)
20.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- amplitude#
The amplitude of the winch motion defined in number of revolutions.Used only when motion_type is set to ‘DoubleStep’.
Type=Double, Default=0
- att_body#
The part to which the winch is attached.
Type=Reference (Part), Required, Default=base_body
- connection#
Connection related.
Type=Reference (Connection)
- connection_type#
The type of joint used to constrain the winch to the attachment body.
Type=Enum, Default=REVOLUTE
Permitted values are:
CYLINDRICAL
REVOLUTE
- date_fwd#
The start time for the winding step function of the winch. Used only when motion_type is set to ‘DoubleStep’.
Type=Double, Default=0
- date_rev#
The start time for the unwinding step function of the winch. Used only when motion_type is set to ‘DoubleStep’.
Type=Double, Default=0
- dc#
The diameter of the cable wrapped around the winch.
Type=Double, Default=10.0
- delay#
Type=Double, Default=0
- id#
The id of the object.
Type=Int
- ini_wlength#
The initial wrapped length of the winch.
Type=Double, Default=10000.0
- label#
A string describing the object.
Type=Str
- mass#
The mass.
Type=Double, Default=0.0
- motion_function#
The user defined expression for the winch motion. Used only when motion_type is set to ‘Used Defined’.
Type=Str, Default=0
- motion_type#
The type of user input for the definition of the winch motion.
Type=Enum, Default=DoubleStep
Permitted values are:
DoubleStep
UserDefined
- name#
Defines a nametag for the object.
Type=Str
- radius#
The winch radius.
Type=Double, Required, Default=50.0
- rm#
Reference marker, used for positioning.
Type=Reference (Marker), Required
- width#
The winch axial width.
Type=Double, Default=20.0
- class Pulley(**kwds)#
- Creates a pulley.
A pulley element, that a cable wraps around, can be used to change the direction of the load applied to the cable.
The Pulley is defined by the following dimensions (see Comment 2):
Name
Type
Symbol
Required
Default
Modifiable
Bool
True
\(\checkmark\)
Double
\(A\)
40.0
Reference -
Part
\(\checkmark\)
Reference -
Connection
Enum
REVOLUTE
Double
\(C\)
7.5
Double
\(d_{c}\)
10.0
Double
\(D\)
10.0
Int
Auto
Str
Double
\(m\)
0.0
Str
Double
\(R\)
100.0
Reference -
Marker
\(\checkmark\)
Bool
True
Double
\(W\)
40.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- angle#
The profile angle of the pulley.
Type=Double, Default=40.0
- att_body#
The part to which the pulley is attached.
Type=Reference (Part), Required, Default=base_body
- connection#
Connection related.
Type=Reference (Connection)
- connection_type#
The type of joint used to constrain the pulley to the attachment body.
Type=Enum, Default=REVOLUTE
Permitted values are:
CYLINDRICAL
REVOLUTE
- cradius#
The profile radius of the pulley.
Type=Double, Default=7.5
- dc#
The diameter of the cable wrapped around the pulley.
Type=Double, Default=10.0
- depth#
The profile depth of the pulley.
Type=Double, Default=10.0
- id#
The id of the object.
Type=Int
- label#
A string describing the object.
Type=Str
- mass#
The mass.
Type=Double, Default=0.0
- name#
Defines a nametag for the object.
Type=Str
- radius#
The pulley radius.
Type=Double, Default=100.0
- rm#
Reference marker, used for positioning.
Type=Reference (Marker), Required
- sliding_locking#
Sliding locking activation flag.
Type=Bool, Default=True
- width#
The profile width of the pulley.
Type=Double, Default=40.0
- class Anchor(**kwds)#
- Creates an Anchor.
An anchor element can be used to attach one end of a cable, and represents a fixed connection between the anchor and the attaching body:
Name
Type
Required
Default
Modifiable
Designable
Bool
True
\(\checkmark\)
Reference -
Part
\(\checkmark\)
Reference -
Connection
Double
10.0
Double
0.0
Double
100.0
Int
Auto
Str
Double
0.0
Str
Reference -
Marker
\(\checkmark\)
Double
0.0
- active#
Defines the state of the object.
Type=Bool, Default=True, Modifiable
- att_body#
The part to which the anchor is attached.
Type=Reference (Part), Required, Default=base_body
- connection#
Connection related.
Type=Reference (Connection)
- dc#
The diameter of the cable wrapped around the pulley.
Type=Double, Default=10.0
- density#
The density.
Type=Double, Default=0.0
- gra_size#
The graphic radius of the anchor.
Type=Double, Default=100.0
- id#
The id of the object.
Type=Int
- label#
A string describing the object.
Type=Str
- mass#
The mass.
Type=Double, Default=0.0
- name#
Defines a nametag for the object.
Type=Str
- rm#
Reference marker, used for positioning.
Type=Reference (Marker), Required
- wradius#
The wrapped radius of the anchor.
Type=Double, Default=0.0