Hoists nodes are combinations of a hook and the suspension wire. They are typically used together with a crane but this is not a requirement.
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.
Hook models are loaded from a
.hoist.dave model file.
The model in the file is required to 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.
Cablenode with name
crane-wire. This node models the wire between the hook and the crane and may run over sheaves to model reeving.
Pointnode with the name
elevation. The global elevation of this node is used to report the elevation of the hook.
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.
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.
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.
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 .dave code 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']),