Placing columns for a multi-storey frame, bolts around a flange, or piles under a footing all mean repeating one solid by a rule. In 3D that needs a third direction: levels stacked vertically, or an axis of rotation that does not lie in the XY plane. The 3darray command in AutoCAD does exactly that through a short series of questions on the command line.
This article tries 3DARRAY in AutoCAD 2027 with the acadiso.dwt template, on a 100 × 100 × 100 box at the origin. 2D arrays and the newer array types are covered in the array command. Boxes and other basic solids are covered in 3D solids in AutoCAD. For drafting taught properly, the Institute runs an AutoCAD course for construction.
Starting 3DARRAY
| Route | Where |
|---|---|
Type 3DARRAY or alias 3A | Command line |
| Menu | Modify → 3D Operations → 3D Array |
| Toolbar | Modeling → 3D Array |
Locations and the alias come from the 2027 acad.cuix and acad.pgp files. There is no ribbon button in the Drafting & Annotation workspace, so typing 3A is quickest.
The first time you run it in a session, the command line prints Initializing... 3DARRAY loaded. That shows 3DARRAY is an AutoLISP program loaded on demand. In the command log it calls _.COPY, _.ARRAY and _.UCS in turn to do its work.
The Autodesk documentation on 3DARRAY notes that its functionality has been replaced by the enhanced ARRAY command. Even so, the command still runs in 2027 and is still on the menu.
3D array in AutoCAD: rows, columns and levels
Type 3A, select the box, press Enter. AutoCAD asks for the array type, then in turn:
Enter the type of array [Rectangular/Polar] <R>:R
Enter the number of rows (---) <1>: 2
Enter the number of columns (|||) <1>: 3
Enter the number of levels (...) <1>: 4
Specify the distance between rows (---): 200
Specify the distance between columns (|||): 300
Specify the distance between levels (...): 400
The result is 24 boxes. Reading their centroids shows that each quantity follows one axis:
| Quantity | Axis | Box centroids |
|---|---|---|
| Rows, 200 apart | Y | Y = 50, 250 |
| Columns, 300 apart | X | X = 50, 350, 650 |
| Levels, 400 apart | Z | Z = 50, 450, 850, 1 250 |
Each distance is measured centre to centre, not as the gap between boxes: the X centroids step by exactly 300, so with 100-wide boxes the clear gap between columns is 200.
The easy mistake is expecting rows along X; they run along Y. The symbols in the prompts hint at this: (---) shows horizontal rows stacked above one another, (|||) shows vertical columns side by side.
A negative distance runs the array against the axis. With 1 row, 1 column, 3 levels and a level distance of -400, the centroids sit at Z = 50, −350, −750: the array stacks downwards below the original.
AutoCAD only asks for a distance when that quantity is greater than 1. Enter 1 row, 1 column, 3 levels and the only distance question is Specify the distance between levels (...). That matters when you script the command: the number of answers must match the questions actually asked, or the extra numbers are read by the command line as something else.
24 separate solids and one U
All 24 boxes are separate solids (AcDb3dSolid), with no link between them. Editing one box leaves the others as they are.
Although the command runs several commands internally, typing U once straight after 3DARRAY removes all 24 and leaves just the original box. If you typed the wrong number of levels, one U is enough.
3D polar array around any axis
Choose P at the array type question. AutoCAD asks:
Enter the number of items in the array: 6
Specify the angle to fill (+=ccw, -=cw) <360>: 360
Rotate arrayed objects? [Yes/No] <Y>: Y
Specify center point of array: 0,0,0
Specify second point on axis of rotation: 0,0,100
Unlike a 2D polar array, which needs only a centre, this one needs two points to define an axis in space. 0,0,0 and 0,0,100 give the vertical Z axis. With the box placed from X = 450 to 550, the six boxes have centroids exactly 500 from the axis on the horizontal plane Z = 50: (500, 0), (250, 433), (−250, 433), (−500, 0), (−250, −433), (250, −433).
Change the axis and the ring changes plane. Take the X axis, from 0,0,0 to 100,0,0, with four items and the box offset 500 along Y. The four centroids are (50, 500, 0), (50, 0, 500), (50, −500, 0), (50, 0, −500): the ring stands upright in the YZ plane. A 2D polar array cannot do that, for example spacing spokes around a horizontal shaft.
With a fill angle other than 360, the first and last items sit at the two ends of the arc. With 4 items and 180°, the centroids lie at 0°, 60°, 120° and 180°: the step is 180 divided by 3, not by 4.
After a polar array, the WORLDUCS variable is still 1. In other words, the user coordinate system the command uses internally has been restored, and the drawing is back in the WCS.
Rotate arrayed objects: Yes or No
The Rotate arrayed objects? question decides whether the copies turn with the ring. A square box hides the difference, so try a long 200 × 40 box from 400,−20 to 600,20, four items about Z:
| Choice | Footprint seen from above | Box centroids |
|---|---|---|
Yes | 200×40, 40×200, 200×40, 40×200 | (500, 0), (0, 500), (−500, 0), (0, −500) |
No | 200×40 for all four | (500, 0), (−80, 620), (−700, 40), (−120, −580) |
With Yes, each box turns 90° with the ring and the centroids sit evenly on a circle of radius 500. With No, the boxes keep their direction. But their centroids do not sit on that circle: their distances from the axis range from 500 to about 700. So if the copies must be evenly spaced about the axis, choose Yes, which is the default.
3DARRAY vs ARRAYRECT
The newer ARRAYRECT also has a Levels option. Run it on the same box, 2 rows × 3 columns × 4 levels with associativity on (AS = Yes), and the result is one AcDbBlockReference object, an associative array. With associativity off, ARRAYRECT also gives 24 separate solids, like 3DARRAY.
3DARRAY | ARRAYRECT with Levels | |
|---|---|---|
| Result | 24 separate solids | 1 associative array (with AS = Yes) |
| Object type | AcDb3dSolid × 24 | AcDbBlockReference × 1 |
| Interaction | A fixed series of questions, done when they end | An options prompt [ASsociative/Base point/Rows/Columns/Levels/eXit] |
3DARRAY suits cases where you want separate solids to edit one by one afterwards, or when scripting, because its questions are fixed. An associative array suits cases where the counts may still change. How associative arrays work is covered in the array command.
A worked example: columns for a three-storey frame
A frame has a column grid of 3 bays × 2 bays, 6 000 bays along X, 4 500 along Y, and a storey height of 3 600:
- Model one 300 × 300 column, 3 600 tall, at the origin with
BOX. 3A, select the column,R.- Rows
3(along Y, three grid lines), columns4(along X, four grid lines), levels3. - Row distance
4500, column distance6000, level distance3600.
That gives 3 × 4 × 3 = 36 separate columns. If you got it wrong, one U brings you back to a single column. To look at the frame from several sides, use the methods in rotating the 3D view.
The 3A command in AutoCAD and LISP: a small trap
Because 3DARRAY is itself a LISP program, you cannot select objects with a LISP variable such as !h while it runs. The command line reports:
Can't reenter LISP.
*Invalid selection*
The numbers typed next are taken as answers to the selection prompt, and the command hangs at Remove objects:. Select with L (the last object drawn), with a selection window, or by clicking. If the command has hung, press Esc a few times to get out.
Three things often repeated that are not true
| Often repeated | What holds on the 2027 release |
|---|---|
| Rows in 3DARRAY run along the X axis | Rows run along Y, columns along X, levels along Z |
| 4 items over 180° gives a 45° step | The step is 60°: the first and last items sit at the ends of the arc |
| With Rotate = No the solids still sit evenly on the circle | They keep their direction but move off the circle |
Frequently asked questions
What does the 3darray command in AutoCAD do?
It repeats a solid in rows, columns and levels in 3D, or around any axis of rotation. The alias is 3A.
Which axes do rows, columns and levels follow?
Rows follow Y, columns X, levels Z. A negative distance runs the array against the axis.
How do I make a polar array around a horizontal axis?
Choose P, then give two points on a horizontal axis, such as 0,0,0 and 100,0,0. The ring then stands upright in the YZ plane.
How do I undo a wrong array?
Type U once straight after the command. All the copies go, leaving the original.
Is the 3DARRAY result associative like the newer ARRAY?
No. 3DARRAY gives separate solids. For an associative array with levels, use ARRAYRECT with the Levels option and associativity on.