# 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 } } } } ```