Array classes. Specifics of each class of arrays
All 3D arrays created in TFLEX CAD can be distinguished by the way of copying into the following classes:
The algorithm of creating this type of arrays as well as command's interface are described in the Linear Array of 3D Elements section.
The linear array is created by placing copies of the source objects along one, two or three direction vectors. Depending on the number of the direction vectors, it will be onedimensional, twodimensional or threedimensional array. All elements of the onedimensional and twodimensional linear array lie in one plane. All elements of threedimensional linear array lie in parallel planes.
Onedimensional linear array 
Twodimensional linear array 
Threedimensional linear array 
The direction vectors of a linear array are defined either by two 3D points (in this way, the vector will be directed from the first selected point to the second one), or by a single 3D object suitable for defining a vector in the space.
The array size along each direction is characterized by the number of copies, the placement step and the total length of the array in the given direction. To define an array, you need to specify just two of the three parameters. Depending on the mode used, it can be:
•Number of copies and step;
•Total length and step;
•Number of copies and total length.
The third parameters is calculated automatically by the system from two userdefined parameters.
1  Vector of first direction (rows) 2  Vector of second direction (columns) 3  Vector of third direction (height) 4  Array step in first direction 5  Array length in first direction 6  Array step and length in second direction 7  Array step and length in third direction 
The number of copies along each direction vector always includes the source object being copied (even if it is not included in the composition of the array). For example, the array shown above contains 3 copies in the first direction and 2 copies each in the second and third directions.
A linear array allows creating copies not only forward, but also backward (reverse) along each direction vector. Reverse copies are created with the same step as forwardgoing copies along the given vector. The number of copies in the reverse direction can either be the same as in the forward direction along this vector, or specified by a separate numerical value.
Keep in mind, that in case of defining number of copies in reverse direction by a numerical value, the first copy of the forward direction and the first copy of reverse direction are the same element (see picture below). Defining zero value for number of copies in the reverse direction excludes the first copy of the forward direction from the array.
Twodimensional linear array 1  Source object 2  First direction (red arrow  forward, blue arrow  reverse) 3  Second direction (red arrow  forward, blue arrow  reverse) 4  Number of copies in first forward direction (three in all shown examples) 5  Number of copies in first reverse direction (symmetric to forward direction in all shown examples) 6  Number of copies in second forward direction (three in all shown examples) 7  Number of copies in second reverse direction 

Two copies in second reverse direction 
One copy in second reverse direction 
Zero copies in second reverse direction 
The algorithm of creating this type of arrays as well as command's interface are described in the Circular Array of 3D Elements section.
In the circular array, the copies are placed on a circle about the array axis. The axis of revolution of a circular array is defined, just as the direction vectors in a linear array, by selecting two 3D points or one 3D element suitable for defining a vector in the space. The position of array elements about the axis is determined by the number of copies, the rotational step per copy and the total angle of elements rotation about the axis.
To define an array, you need to specify just two of the three parameters. Depending on the mode used, it can be:
• Number of copies and step;
• Total angle and step;
• Number of copies and total angle.
The third parameters is calculated automatically by the system from two userdefined parameters.
The copy rotational step determines, by what angle to rotate the source body about the axis to place the first copy. The second copy is created by rotating the first one by the same angle, and so on. The rotation is done in the clockwise direction, as watched along the array axis.
Optionally, the total angle can be defined, using two points: start and end point of rotation. In this case, total angle is equal to angle between two planes: both passing through an array axis and each passing through one of the aforementioned points. If a direction from start point to end point coincides with the forward direction of rotation, then the step value is positive by default, otherwise  negative.
Keep in mind that the number of copies can be handled in different ways depending on a value of the total angle. Upon rotation by the full circle (360 degrees), the number of copies includes the source object. Upon rotation by any other total angle, the number of copies doesn't include the source object.
Onedimensional circular array with nine copies in forward direction 1  Source object 2  Array axis 3  Start point of rotation 4  End point of rotation 

Total angle  360 degree 
Total angle is defined by two points. 
Total angle is defined by two points. 
Instead of using the start and end points for defining the total angle, they can be used for defining the step.
1  Source object
2  Array axis
3  Start point of rotation
4  End point of rotation
5  Angle between planes passing through array axis and start and end points is used as array step
Backward rotation is possible, including simultaneous creation of copies in two directions – forward and backward. The backward rotation is done with the same step as the forward one, while the number of copies may differ.
Enabling the reverse direction, when total angle is above 180 degrees, may lead to creating multiple copies in the same point. E.g.: enabling the reverse direction, when total angle is 360 degrees, leads to duplicating all copies in the array.
In case of defining number of copies in reverse direction by a numerical value, the first copy of the reverse direction coincides with the source object.
Defining number of copies in reverse direction 1  Source object 2  Array axis 3  Number of copies in forward direction (four in both cases) 4  Number of copies in reverse direction 

Number of copies in reverse direction is defined as Symmetric 
Number of copies in reverse direction is defined by Value (five copies) 
When copies are created, there are two options for a copy's orientation: Rotated (default) and Parallel Offset. In the first case, a copy is created by actually rotating the source body about the array axis. In the second case, the source body is copied without rotation about the axis (meaning that orientation of each copy in the space is the same as the source body orientation).
Onedimensional circular array with total angle of 360 degrees 1  Source object 2  Array axis 

Rotated copies 
Parallel Offset copies 
The circular array also allows creating copies in the second and third direction. The second direction is the radial direction of the array. In this case, array elements will be located in one plane, making up a pattern of concentric circles. The third direction is along the array axis, with the array elements located on a cylindrical surface. Number of copies, length and step for the second and third direction is defined in same way as in the first direction.
Threedimensional circular array with nine copies in first direction, 1  Source object 2  Array axis 3  First direction (rotation) 4  Second direction (radial translation) 5  Third direction (axial translation) 6  Number of copies in second forward direction 7  Number of copies in third forward direction Forward directions are indicated by red arrows, reverse directions  by blue arrows 
The algorithm of creating this type of arrays as well as command's interface are described in the Array of 3D Elements by Points section.
To create a 3D array by points, select the base 3D point on the array's source object, and an arbitrary number of target 3D points (into which the source object will be copied). The arrayed elements will be placed in the specified 3D points.
1  Vertex of the source object selected as the base point 2  3D nodes used as target points 
Target points are defined with successive selection of single 3D points (3D nodes, vertices, etc.) or arrays of 3D nodes. The list of target points of an array may contain both 3D points and arrays of 3D nodes.
The algorithm of creating this type of arrays as well as command's interface are described in the Array of 3D Elements by Path section.
In the array by path, the placement of the array elements is defined by one or two 3D curves. Such an array can be considered analogous to the linear array, however, with the copies placed along spatial curves rather than straight lines. Those curves can be represented by arbitrary 3D curves (3D paths, 3D profiles, edges, etc.).
Using a single guide curve results in a onedimensional array, two guide curves – in a twodimensional array, three guide curves  in a threedimensional array.
Arrays by path 1  First guide curve 2  Second guide curve 3  Third guide curve 4  Source object (3D node) Directions of guide curves are represented by red arrows 

Onedimensional array 
Twodimensional array 
Threedimensional array 
By default, array is directed not along guide curves themselves, but along curves constructed by combining guide curve's starting point with the source object. Starting points of closed curves are detected automatically.
Directions of selected edges are indicated by small arrows in the 3D scene.
Direction of 3D paths and 3D profiles can be indicated in the 3D scene, using the Arrow on ends of 3D paths/profiles option (Document Parameters > 3D > 3D).
Additionally a start point can be manually specified for each direction. The projection of said point onto a guide defines a start of an array. In this case, a closed guide curve is used at its whole length, while an open guide curve is trimmed, so that start point's projection becomes a start of a guide curve.
Twodimensional array with closed guide curve used for defining second direction 1  First guide curve 2  Second guide curve 3  Source object (3D node) 4  Start point Directions of guide curves are represented by red arrows 

Start point is selected for second direction 
Start point is selected for first direction 
The placement of copies (array elements) along the guide curve depends on the following array parameters: number of copies, step and total length of the array along the given curve, and, additionally, the copies' placement option.
Number of copies, step and total array length along the guide curve are interrelated parameters. To define the array, you need to specify just two parameters out of the three. The omitted parameter will be calculated by the system automatically. The total array length can be evaluated by the guide curve (the system will determine the curve length, and then take the resulting value as the length of the array in the given direction).
The total array length may not exceed the length of the guide curve.
The placement option determines:
•The position of the copies' placement points (array elements) along the guide curve. Depending on the used placement option, the step of the array by path determines either the distance along the path between the fixing points of the copies or the path's chord length.
•The orientation of copies in the space. The position of copies in the space is determined by bringing the target coordinate system of each copy over the source coordinate system of the object being copied (that case, the source object of the array). The source coordinate system is created at the start of the guide curve, while the target – at the fixing point of the particular copy. The axis orientation of either coordinate system is defined by the copy placement option.
There are the following copy placement options:
•Translation along Path. The target coordinate systems of all copies are placed along the path according to the specified step and "number of copies" parameters. The axis orientation of those coordinate systems is fixed and does not depend on the 3D path geometry. This placement option can be used, if you need to put copies of the source body along the guide curve, preserving the spatial orientation of each copy as that of the source body.
•Minimum Twist along Path. The Xaxis of the target coordinate system of each copy is determined as to provide smooth rotation of the curvature vector from the start to the end of the path. The Zaxis always points in the direction tangent to the path at the origin of the current copy's coordinate system. An example of using an array by path with minimum twist by path as a model of a conveyor belt.
This example can be found in the Examples library, in the Examples\3D Modeling\Array\Conveyor.grb folder.
•By Chord. To find the position of the first copy, a sphere is created with the center at the path start and the radius equal to the array step. The copy will be placed at the intersection point of the sphere and the 3D path. Next, another sphere is constructed with the center at this point, and so on. This is how attachment points of all copies are determined. The target coordinate systems of the copies are placed in those points. The Xaxis of a target coordinate system is oriented by the incoming chord of the 3D path. A path chord is defined by the attachment points of two neighboring copies. The source coordinate system is located at the start of the path. Its Xaxis points toward the first copy's position. With this copy placement option, the array step is the chord length of the 3D path. This placement option can be successfully implemented, for example, in caterpillar belt and chain drive design.
A caterpillar belt design example is provided in the Examples library, in the Examples\3D Modeling\Array\Track.grb folder.
The twodimensional array by path is created similarly. The set of parameters is defined for the second guide curve in the same way, including the number of copies, step and total length of the array in that direction and the copy placement option. Note that the source object in the second direction will be the complete set created by the onedimensional array along the first guide curve.
Twodimensional array by path 
Twodimensional array by path 
Threedimensional arrays along path can be created in the same way, except that it can only use the Translation along Path placement option in all three directions. The twodimensional array by first and second guides is used as the source object in the third direction.
The algorithm of creating this type of arrays as well as command's interface are described in the Parametric Array of 3D Elements section.
The parametric array uses a universal approach that allows creating an array by parametric copying of the source element. The same approach is used in the Parametric Sweep operation and in one of the 3D path creation modes.
The algorithm of face approach is described in details in the Parametric Sweep chapter. Therefore, the current topic just briefly touches upon the algorithm description.
A parametric array can be an array of bodies, operations or construction elements only. Parametric arrays of faces or fragments cannot be created.
To create a parametric array, you need to define the law of calculating the socalled coordinate system of the current copy. The copying of the array source object is done in the direction from the source coordinate system to the calculated target coordinate system of the current copy.
The user can select one of the model's local coordinate systems as the source coordinates. If no local coordinate system was selected, then the global coordinate system is used as the source coordinates.
The coordinate system of the current copy (particularly, its origin and axis orientation) can be defined in one of the two ways:
•Free copy orientation. Modifications of the coordinate system parameters of the current copy are described by expressions.
•Copy orientation by 3D curves or surfaces. To define the spatial position of the current copy's coordinate system, use the appropriate 3D curves or surfaces of other bodies. By managing the copy's coordinate system, you control the position of each copy.
The position of a copy's coordinate system is controlled by the array parameters. All parameters are divided into two types:
•Driven parameters are the parameters whose values are calculated automatically during element creation. One can introduce independent variables to read the values of such parameters.
•Driving parameters are the entries whose values are specified by the user. The entries for the driving variables permit arbitrary expressions including any system variable. For example, including a variable keeping the copy number, in such an expression, will make the given parameter depend on the copy number.
Some array parameters can be sometimes driving, and sometimes driven. The leading parameter Number of copy is always driven. It definitely requires assignment of an independent variable that will be tracking the current copy number during the operation processing. The copy number is automatically incremented through the array calculation, starting from 1, up to the specified quantity, with the step equal to 1.
The calculation is done in the following order: the copy number is assigned the next ordinal number, then the driving parameters are calculated, then the driven parameters are calculated (if any), and, finally, copying is done.
When using the free copy orientation option, just select the array source object, specify the number of copies and assign independent variable to the Number of copy parameter. By using the variable assuming the current copy number, one can introduce certain relations in the entries of driving parameters, as well as in 2D or 3D constructions, and make the geometry of the original body, in turn, depend on those relations.
An example of a parametric array with free copy orientation is a model of a spiral staircase, as shown on the diagram at the beginning of this topic.
The copy orientation option by path or by surface is convenient in the cases when defining the expression for the exact law of the copy parameters modification is not feasible. In such cases, it is convenient to use various 3D curves or surfaces for specifying the position and orientation of the current copy's coordinate system.
The algorithm of creating this type of arrays as well as command's interface are described in the Array of 3D Elements by Pattern section.
Array by pattern copies parameters of array from the pattern and replicates it. Arrays of any class can be used as a pattern. It is also possible to use face of a hole as a pattern. In this case, an array is based on all holes created by parent operation of selected face.
The algorithm of creating this type of arrays as well as command's interface are described in the Array of 3D Elements by Table section.
Array by table allows using values from the database as coordinates of array's elements.
There are 3 types of coordinate systems relative to which you can create an array by table  Cartesian, Spherical and Cylindrical. Coordinates of array's elements in the selected coordinate system are defined by a database.
There's also the Parametric Array option within the array by table command. It allows using values from a database for defining model's variables.
Topics in this section:
•Circular Array of 3D Elements;
•Array of 3D Elements by Points;
•Array of 3D Elements by Path;
•Parametric Array of 3D Elements;