Draft OrthoArray

Description
The tool creates an orthogonal (3-axes) array from a selected object.

The OrthoArray tool can be used on any object that has a Part TopoShape, meaning 2D shapes created with the Draft Workbench, but also 3D solids created with other workbenches, for example, Part, PartDesign, or Arch. It can also create App Links instead of simple copies.


 * To create polar or circular arrays, use the corresponding and  tools.
 * To position copies along a path use or.
 * To position copies at specified points use.
 * To create copies and manually place them use or.
 * To create exact copies and manually place or scale them, use or.

This command deprecates the previously existing as well as the short lived  tools.



Usage

 * 1) Select the object that you wish to duplicate.
 * 2) Press the  button. If no object is selected, you will be invited to select one.
 * 3) The task panel is launched, where you can select the number of elements in each X, Y, Z direction; and the interval between each created element.
 * 4) You can click on the 3D view to set up all the numbers and intervals, and complete the command. Otherwise, just press  or the  button to complete the operation.

Notes:
 * Each element in the array is an exact clone of the original object, but the entire array is considered a single unit in terms of properties and appearance.
 * This command creates the same parametric "Array" object as the one created with the and  tools. Therefore, the array can be converted to orthogonal, polar, or circular by changing its  property.

Options
These are the options displayed in the task panel.


 * : the elements in the X, Y, and Z directions. A copy of the original object is always produced, so this number must be at least in every direction.
 * : the values of displacement for the copies in the X direction. To create strictly rectangular arrays, the Y and Z values should be zero.
 * : the values of displacement for the copies in the Y direction. To create strictly rectangular arrays, the X and Z values should be zero.
 * : the values of displacement for the copies in the Z direction. To create strictly rectangular arrays, the X and Y values should be zero.
 * : it resets the interval vectors to a rectangular displacement, that is, , and.
 * : if it is checked, the resulting objects in the array will fuse together if they touch each other. This only works if is unchecked.
 * : if it is checked, the resulting array will be a "Link array". This array internally uses App Link objects, so it is more efficient when handling many copies of complex shapes. However, in this case, the objects cannot be fused together.
 * Press or the  button to abort the current command.

if a Link array is created, this object cannot be converted to a regular array. And similarly, a regular array cannot be converted to a Link array. Therefore, you must choose the type of array that you want at creation time.

Properties
An OrthoArray is derived from a Part Feature ( class), therefore it shares all the latter's properties. In addition to the properties described in Part Feature, the OrthoArray has the following properties in the property editor.


 * : specifies the type of array to create,, , or.
 * : specifies the object and edge that can be used as reference for polar and circular arrays; for example, it can be the edge of a or a . If this property exists, it overrides both  and, for polar and circular arrays.
 * : specifies the object to duplicate in the array.
 * : it defaults to ; if it is, and the copies intersect with each other, they will be fused together into a single shape. This only works if the initial array was not a "Link array".


 * : a vector specifying the interval between each copy on the X axis.
 * : a vector specifying the interval between each copy on the Y axis.
 * : a vector specifying the interval between each copy on the Z axis.
 * : the number of copies on the X direction. The object counts as one copy; it must be at least.
 * : the number of copies on the Y direction.
 * : the number of copies on the Z direction.


 * : the axis direction around which the elements in a polar or circular array are created.
 * : specifies the center point of the polar or circular array. The passes through this point.


 * : specifies the aperture of the circular arc to cover with copies; use 360 to cover an entire circle.
 * : distance and orientation of each copy in direction.
 * : number of copies in the polar direction.


 * : the number of circular layers to create. The object counts as one layer; it must be at least.
 * : the distance between circular layers.
 * : a number that indicates the symmetry lines in the circular layers. This number changes the distribution of the objects and making it very large may eliminate the more central layers.
 * : the distance between copies in the same circular layer.

Link arrays
In addition to the previous properties, these properties only appear when the array is created as a Link array.


 * : it is the total number of objects in the array including the original object. This property is read-only as the value depends on the other "Number" properties, whether they are orthogonal, polar, or circular.
 * : if it is, the individual App Link objects will be available to select in the tree view.


 * : the scale factor of the entire array.
 * : a list of N-vectors determining the individual scaling factor of each of the N-elements in the array, where N is.
 * : if it is it can override the linked object's placement.

Scripting
Draft API and FreeCAD Scripting Basics.

The OrthoArray tool can be used in macros and from the Python console by using the following function.

Older call:

New call:


 * Creates an object from the.
 * The vectors, , and determine the distance between the base points of each copy, in the X, Y, and Z directions; and , , and  are the number of copies in the respective direction.
 * If is, the type of array created will be a Link array, whose elements are App Link instances instead of simple copies.
 * ignores the Z component, so the result is going to be a 2D array in the XY plane.


 * The variants ignore the off-diagonal components of the, , and  vectors, so the arrays will be completely rectangular; the distance between the elements is determined by , , and.

Example:

Scripting, non-parametric array
When using the tool, a parametric  object is created. This can be scripted as described in the previous section.

However, to obtain standalone copies of the base object, the simple function can be used. This will create simple copies, not a new parametric object.

To create a rectangular array, use it like this:

To create a polar array, use it like this:


 * Creates an array from the objects contained in, which can be a single object or a list of objects.
 * In case of a rectangular array,, , and determine the distance between the base points of each copy, in the X, Y, and Z directions; and , , and  are the number of copies in the respective direction.
 * In case of a polar array, defines the center of the array circle,  is the angle of the arc in degrees to cover with copies, and  is the number of copies to arrange around the circle, including the original object.
 * is returned with the new copies.
 * is either a single object or a list of objects, depending on the input.

This function internally uses and  with.

Example: