Hoist node

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.

image-20231031171444788

A hoist node reports it 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
Can only be set indirectly

Remaining hook height

The vertical distance between the remain1 and remain2.

Negative if remain2 is above remain1
Can only be set indirectly

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).
This means the weight of the hook itself is not part of the hookload, only the forces applied onto it.

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:

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

  2. A Cable node with name crane-wire. This node models the wire between the hook and the crane and may run over sheaves to model reeving.

  3. A Pointnode with the name elevation. The global elevation of this node is used to report the elevation of the hook.

The model MAY have the following nodes as well:

  1. A node called “swivel” of which the Z degree of freedom models the rotation of the hook under the block.

  2. Two Point nodes called remain1 and remain2. 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.

image-20230523085312250

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.

image-20230523083521034

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.

image-20230523083521034

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')