This tutorial is for advances users, and demonstrates the use of variant links.
See the video:
https://strandbeest.com/api/uploads/Voorzeil_bewerkt_77dc78a7a4.mp4
the principle of variant links is to insert into the assembly a link to a part, and setting some variables specific to that link. In other words, it allows to create a generic "part" and insert it multiple times, with each instance having some pre-defined variables set to that instance.
For example, you can create a generic extruded beam with a default length, and add it several times to an assembly by specifying the length of the beam:
Any variable of the type float in the Variables container can be set for each variant link.
Anothe possibility for variant links is to insert a sub-assembly mutliple times, with each sub-assembly having a specific variable. This is very handy if you want to insert a same sub-assembly many times, where the difference will be in some kinematics of the sub-assembly. This is the example that we will describe here. The same principle can be applied to variant links to parts.
Important Note: variant links are more expensive in ressources as regular links, therefore use with caution.
Crate a single leg for the Theo Janssen sandwalker:
The dimensions:
- create a new document, call it Walker_Parts
- create 6 Bodies
- in each body, create a part according to the dimensions
- create a new document, call it Walker_Leg
- create an Asm4 Model
- in there, create a variable called Angle_Handle
- create a Sketch, call it Sketch_Handle
- attach it to the LCS origin
- draw a circle and a radius
- set the AttachmentOffset of the sketch to make a rotation of Angle_Handle
- create a sketch, call it Sketch_Leg
- in there, import as external reference the end-point of the radius
- draw the walker leg as shown above, and attach the rotation handle to the imported point
Now this leg-assembly can be imported several times
- create a new document, call it asm_Walker_8legs
- create a variable, call it Assembly_Handle
- insert a variantLink, choose the Walker_Leg
- attach it the LCS origin, offset it length-wise
- set the Variant Variable to Variables.Assembly_Handle + some offset
- do this for each additional leg, adjusting the offset
- now, when you change the variable Assembly_Handle, the positions (kinematics) of each leg will be recalculated




