To accommodate occasional users (like Micha) one could consider a multifunctional command to install a connection (“BongoConnect”?) (joint is already in use by Rhino) between 2 objects,.
It is assumed that all objects are in the desired position (relative to each other) from the start. Rhino has sufficient tools for that purpose.
Steps would be:
• Select object to connect
• Select object to connect to (SnapIntoPlace=Yes)
• Pick location of connection The use of Rhino’s Osnap is obvious.
• Set type of joint (Hinge Telescopic Rubber band)
• Define turning/sliding/stretching direction (X Y Z Custom Parallel)
The command will:
- make the first object child of the second (just like BongoSelectParent)
- move his pivot to the indicated location.
- set the right kind of joint.
- set the right axis
The ‘Custom’ option offers the user an interface like in BongoChangeConstraintHeading.
In the ‘Parallel’ option the direction of independent line or the edge of a (poly)surface can be selected (like in Filet commands) by the user.
If desired direction is not World-orthogonal the pivot is rotated (using Z by default?) and ‘Rotate in world space’ is disabled (for Hinges). It is maybe a good idea to do this (Object Space for Hinges) anyway, just in case the objects are reoriented afterwards.
An example is shown in Connect.3dm (478.4 KB) under A
In the second step an option ‘World’ could be included meant for the beginning (head) of an IK-chain
• Select object to connect to (SnapIntoPlace=Yes World)
When the option is chosen the first (and only) object is given a pivot with joint properties as defined by the further steps of the command.
See B in the model above.
In the fourth step an option ‘None’ (or Fix) could be included meant for users accustomed to this command to be employable as an equivalent for “Select Parent”.
• Set type of joint (Hinge, Telescopic, Rubber band, None)
One could think even further.
When the object to be connected to is already ‘child’ (no child can have 2 parents) the procedure could offer a dialog: This object is already a junior in a hierarchy (ChangeParent UseConstraint).
• ChangeParent : the object is detached from his current hierarchy, hence allowing execution of the remainder of the procedure as described above.
• UseConstraint : In any case an auxiliary point is added at the chosen location, which is made child of the object. The further conduct then depends on the nature of the ‘to-connect-to’ object.
In case this object is:
• ‘World’ (option described above): the auxiliary point is constrained to his position (‘Keep pivot location the same’). No further action of the user is needed
• A point: the auxiliary point is constrained to the point ‘to-connect-to’. No further action of the user is needed
• A line, curve, surface or an extrusion: a second dialog: Select type of connection (Fix/twirl Slipping) is needed
• Fix/twirl : A second auxiliary point is added at the chosen location and made child of the ‘to-connect-to’ object. The first auxiliary is constrained to the second.
• Slipping : The auxiliary is constrained the line, curve or extrusion.
No further action of the user is needed
• A polysurface: The Fix/twirl procedure as described above is performed. No further action of the user is needed
Al five cases are illustrated in Connect 2.3dm (878 KB)
I think this kind of automation could work for simple IK-chain structures. Application on more complex puzzles could probably result in messy (malfunctioning?) structures?
One could fear such ‘automations’ would prevent users to grasp the fundamental principles of the hierarchical scheme of Bongo?