Hoist node#
Hoists nodes are combinations of a block, hook and the suspension wire. They are typically used together with a crane but this is not a requirement.
If a hoist is used without a crane, then it is positioned at the origin of its parent. To move it, make it the child of a Frame or Body and move that.
A hoist node reports its elevation and provides a way to set it by adapting the wire length. This length change involves a numerical estimation which can be performed using either a goal-seek or a quick estimation based on the current hook load.
Property |
Does |
Remarks |
---|---|---|
Hook model |
Load the hook model |
For hook models see below |
Elevation |
Vertical distance between Z=0 (waterline) and measurement point on the hook as defined in the hook model. |
Can only be set indirectly |
Hoist wire length |
The length of the hoist-wire [m] |
|
Swivel-fixed |
hook is / is not able to freely rotate below the block |
only when a swivel is present |
Swivel-angle |
If the hook is not able to rotate by itself (swivel-fixed = True), then this determine the fixed rotation angle |
only when a swivel is present |
Remaining hook distance |
The total distance between points remain1 and remain2 |
Only available if these points have been defined in the hoist model. If the points are not defined then -1 |
Remaining hook height |
The vertical distance between the remain1 and remain2. |
Negative if remain2 is above remain1 |
Hookload_kN |
The hookload in kN |
Calculated by vector summation of all points in the hoist model that have either “Prong” or “Horn” in their name (not case sentitive). |
Hookload_points |
Lists the points that are used to calculate the hookload |
Points with nothing attached to it do not contribute to the hookload. |
Making Hoist models#
Hook models are loaded from a .hoist.dave
model file.
The model in the file must have nodes with the following names:
A node with name
crane-tip
. This node will be attached to the parent, so it needs to be a node type that can have a parent. For example Frame, Body, Point or Visual.A
Cable
node with namecrane-wire
. This node models the wire between the hook and the crane and may run over sheaves to model reeving. It is allowed to use multiple cables, in that case all shall have a name starting withcrane-wire
. For examplecrane-wire1
andcrane-wire2
. In case multiple cables are used they will always be given the same length.A
Point
node with the nameelevation
. The global elevation of this node is used to report the elevation of the hook.
The model MAY have the following nodes as well:
A node called “swivel” of which the Z degree of freedom models the rotation of the hook under the block.
Two
Point
nodes calledremain1
andremain2
. The distance between these two point is reported at “remaining hook height”.remain1
is on the crane-tip.
For calculation of the hookload all the Points
that are used to attach rigging to, either directly or via a circle child, shall have a name containing either “prong” or “horn”.
Example:#
The following example creates a hoist. It used the default 2-prong block of DAVE to model the hook using a component. This is not a requirement, it is also valid to model the whole block in the hoist model.
The crane-tip
node is a frame. When attached to a crane, the boom of the crane will run in x-direction. For detailed hoists it is possible to set degrees of freedom on this frame. For example to model the rotations of the pack of sheaves in the crane boom.
But for simple models like this it can be left at fixed.
The crane-wire
node is a cable. The length is set to something typical. Modelling two falls makes sure that the block can not yaw freely below the crane.
The elevation
point is located on the block component. The elevation at which to place this node depends on how you want to define the elevation.
The corresponding .hoist.dave file is:
# example_hoist.hoist.dave
# code for crane-tip
s.new_frame(name='crane-tip')
# code for Block2p
c = s.new_component(name='Block2p',
path=r'res: crane block 2p.dave',
fixed = False)
# code for Point
s.new_point(name='Point',
parent='crane-tip',
position=(0,-2,0))
# code for Point_1
s.new_point(name='Point_1',
parent='crane-tip',
position=(0,2,0))
# code for elevation
s.new_point(name='elevation',
parent='Block2p',
position=(0,0,-3))
# code for crane-wire
s.new_cable(name='crane-wire',
endA='Point',
endB='Point_1',
length=30,
EA=1000000.0,
sheaves = ['Block2p/Hoist sheeve 2',
'Block2p/Hoist sheeve 1']),
An example of a hoist including swivel and remaining points is:
s.new_frame(name='crane-tip')
s.new_rigidbody(name='Upper block',
mass=15,
cog=(0, 0, 1),
fixed =False,
)
s.new_point(name='Point',
parent='crane-tip',
position=(0, -2, 0))
s.new_point(name='Point_1',
parent='crane-tip',
position=(0, 2, 0))
s.new_point(name='remain1',
parent='crane-tip',
position=(0, 0, -1))
s.new_point(name='elevation',
parent='Upper block',
position=(0, 0, -3))
s.new_point(name='Hoist sheeve 1',
parent='Upper block',
position=(2, 0, 1.5))
s.new_point(name='Hoist sheeve 2',
parent='Upper block',
position=(-2, 0, 1.5))
s.new_visual(name='Upper block visual',
parent='Upper block',
path=r'upper_block.obj')
s.new_rigidbody(name='swivel',
mass=65,
cog=(0,
0,
-1.3),
parent='Upper block',
position=(0, 0, -1.5),
fixed =(True, True, True, True, True, False),
)
s.new_point(name='remain2',
parent='Upper block',
position=(0,
0,
3))
s.new_cable(name='crane-wire',
endA='Point',
endB='Point_1',
length=30,
EA=1000000.0,
sheaves = ['Hoist sheeve 2',
'Hoist sheeve 1'])
s.new_point(name='prong1',
parent='swivel',
position=(1.2,
0,
-1.3))
s.new_point(name='prong3',
parent='swivel',
position=(-1.2,
0,
-1.3))
s.new_visual(name='Visual',
parent='swivel',
path=r'hook2p.obj')