HelicesΒΆ
Learning targets
- Construct Helices as 3D Primitives
This example constructs three helices with slightly different parameter settings. All three are shown in the following figure. The helix is generated by sweeping a ball with radius TubeRadius
along a helical path in winding around a cylinder of radius HelixRadius
. The Pitch
and WindingNr
determine the number and the distance between windings in z direction. From left to right the TubeRadius
decreases while the WindingNr
increases. The rightmost helix is also rotated by 90 degrees around the z axis.
.jcm
Input File
The layout.jcm
file contains a Layout3D section indicating the use of 3D primitives. The substrate and background is defined first, then the object section with the three objects follows. The Helix
is determined by its HelixRadius
, TubeRadius
, WindingNr
and Pitch
. The primitives GlobalPosition
and Rotation
are shared with all 3D primitives.
Note
The GlobalPosition
refers to the center of the base of the cylinder the helical path is wound around. Note that the Helix
object will extend below the plane of this base by the TubeRadius
.
layout.jcm [ASCII]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
Layout3D { UnitOfLength = 1.0 BoundaryConditions { Boundary { Direction = All Class = Transparent } } Extrusion { Objects { Parallelogram { Priority = -1 DomainId = 101 Height = 5.0 Width = 10.0 MeshOptions { MaximumSideLength = 2.0 } } } MultiLayer { Layer { Name = "Substrate" Thickness = .5 DomainIdMapping = [101 1] } Layer { Thickness = 12 DomainIdMapping = [101 101] } } } Objects { Helix { Name = "Helix1" DomainId = 4 Priority = 1 HelixRadius = 1 TubeRadius = 0.2 Pitch = 1.0 WindingNr = 3.0 GlobalPosition = [0, 0, 1] MeshOptions { MaximumSideLength = 0.1 } } Helix { Name = "Helix2" DomainId = 5 Priority = 1 HelixRadius = 1 TubeRadius = 0.3 Pitch = 1.5 WindingNr = 2.0 GlobalPosition = [-3.3, 0, 1] MeshOptions { MaximumSideLength = 0.1 } } Helix{ Name = "Helix3" DomainId = 2 Priority = 1 HelixRadius = 1 TubeRadius = 0.1 Pitch = 1 WindingNr = 4.0 GlobalPosition = [3.3, 0, 1] Rotation = [0.0, 0.0 ; 0.0, 1.0; 1.0, 0.0] MeshOptions { MaximumSideLength = 0.1 } } } }