Historical Context & Motivation
Repetitive geometric patterns — bolt-hole circles on a flange, rows of windows on a façade, evenly spaced stanchions along a curved highway ramp — are ubiquitous in engineering and architectural drawings. Before computer-aided design, drafters used dividers, protractors, and tedious manual measurement to place each copy of a repeated element. The earliest releases of AutoCAD (1982) shipped with a rudimentary ARRAY command that could duplicate objects in a rectangular grid or around a center point, but the parameters were entered in a modal dialog box, and the result was immediately exploded into independent copies — no associativity, no parametric editing. Over subsequent decades Autodesk steadily improved the command, eventually introducing a fully associative array paradigm in AutoCAD 2012 that preserves the parent-child relationship between source objects and their copies, enabling live, grip-editable adjustment of row count, column spacing, angular fill, and path curvature long after the array is created.
The central question the array feature addresses is deceptively simple: how can a designer replicate geometry parametrically — maintaining a single source of truth — while supporting the three most common distribution patterns encountered in practice: rows-and-columns (rectangular), radial symmetry (polar), and alignment along an arbitrary curve (path)? Answering this question with the modern associative array framework is the focus of this lesson.
Core Principles & Definitions
All three array types share a common conceptual architecture. A source object (or set of objects) is designated as the template, and AutoCAD generates instances — lightweight references — at computed positions. Because the array is associative, modifying the source object automatically updates every instance, and the distribution parameters (counts, spacings, angles) remain editable through grips or the Properties palette. Understanding the five foundational ideas below will give you a mental model that transfers cleanly across rectangular, polar, and path arrays.
Associativity
Base Point
Count & Spacing
Levels (3D Extension)
Grip Editing
Visual Explanation — The Three Array Types
The diagram above illustrates the fundamental spatial logic behind each array type. In the rectangular array, two independent spacing vectors (row and column) define a Cartesian grid; the product of row count and column count yields the total instance count. In the polar array, a center point and a fill angle replace the Cartesian grid; each item is placed at an angular increment computed as the fill angle divided by the item count (or item count minus one, depending on whether the last position coincides with the first). The path array is the most flexible: instances are distributed along a spline, polyline, arc, or any drawable curve, with the option to rotate each instance so that its local X-axis aligns tangent to the path at that point. Notice how the source object (dashed gold) anchors each array — moving or editing it will propagate throughout the associative array.
Mathematical Framework
Although AutoCAD handles the computations internally, understanding the underlying mathematics helps you predict results and debug unexpected layouts. Each array type reduces to a simple transformation model rooted in linear algebra — translations for rectangular arrays, rotation matrices for polar arrays, and arc-length parameterization for path arrays.
P₀ is the base point, i is the column index (0 to cols − 1), j is the row index (0 to rows − 1), Δcol is the column-spacing vector, and Δrow is the row-spacing vector. Total instances = rows × columns.θ₀ is the starting angle of the source object measured from the center, n is the total item count, and fillAngle is the total angular sweep. The position of instance k is (Cx + r·cos θₖ, Cy + r·sin θₖ) where (Cx, Cy) is the center and r is the radius.L is the total arc length of the path curve, n is the item count, and sₖ is the arc-length parameter at which instance k is placed. If 'Align Items' is enabled, each instance is rotated so its local X-axis equals the unit tangent vector T(sₖ) of the path at that point.d is specified rather than a total item count. The number of items is computed as ⌊L / d⌋ + 1 (floor division plus the starting item), and any remainder at the end of the path is left empty.Detailed Breakdown of Each Array Type
Rectangular Arrays (ARRAYRECT)
Invoked via the ARRAYRECT command (or by selecting Rectangular from the ARRAY ribbon panel), this type distributes objects along orthogonal rows and columns. After selecting the source objects and pressing Enter, the contextual Array Creation tab appears on the ribbon. Here you can set column count and column spacing (the X-direction), row count and row spacing (the Y-direction), and optionally levels and level spacing (the Z-direction). The total extents are always count × spacing; adjusting one parameter while holding total constant recalculates the other. An incremental elevation field allows each successive row to step upward in Z, useful for staircase or ramp geometry.
Polar Arrays (ARRAYPOLAR)
The ARRAYPOLAR command arranges instances in a circular pattern around a user-specified center of rotation. Key parameters include item count, fill angle (default 360° for a full circle), and angle between items. The 'Rotate Items' toggle determines whether each instance is rotated to maintain its orientation relative to the center, which is critical for elements like gear teeth or turbine blades that must point radially. A row offset parameter can distribute items across multiple concentric rings, each with an incrementally different radius.
Path Arrays (ARRAYPATH)
The ARRAYPATH command distributes objects along a selected path object — a line, arc, polyline, spline, helix, or circle. The distribution method is either Divide (specify item count; spacing is computed) or Measure (specify spacing; item count is computed). The Align Items option rotates each instance so that its X-axis aligns with the tangent of the path, and the Z Direction option maintains or varies the vertical orientation when the path curves in 3D space. Row offsets and levels can also be applied, creating multi-track distributions parallel to the original path.
Worked Example — Bolt-Hole Pattern on a Flange
A mechanical flange drawing requires 12 equally spaced bolt holes on a circle of radius 150 mm centered at (0, 0). Each bolt hole is a circle of diameter 20 mm. We need a polar array that distributes the source circle through a full 360° and rotates each instance appropriately.
CIRCLE command to draw a circle of radius 10 mm (diameter 20 mm) at point (150, 0). This places the first bolt hole at the 3-o'clock position on the bolt circle.ARRAYPOLAR and press Enter (or navigate to Home → Modify → Array → Polar Array on the ribbon). Select the source circle and press Enter to confirm the selection set.0,0 and press Enter. This is the center of the flange. The preview should immediately show a default array — typically 6 items over 360° — which we will modify next.ARRAYEDIT command to replace, reset, or delete specific instances while keeping the rest of the array intact.Strengths, Limitations & When to Use Each
| Criterion | Rectangular | Polar | Path |
|---|---|---|---|
| Best For | Grids, tile patterns, structural column layouts, parking spaces | Bolt circles, clock faces, gear teeth, radial fan blades | Fencing along roads, guardrails on curves, light fixtures along corridors |
| Geometry Constraint | Orthogonal rows & columns (can rotate the entire array post-creation) | Circular distribution around a single center | Any 2D/3D curve (line, arc, polyline, spline, helix) |
| Spacing Control | Independent X and Y spacing | Angular increment or total fill angle | Divide (equal) or Measure (fixed distance) |
| Rotation of Items | Not applicable (all items maintain orientation) | Optional — each item can rotate to face center | Optional — each item can align tangent to path |
| Limitation | Cannot follow curves; restricted to linear grid | Single radius unless row offset is used; cannot follow non-circular curves | More complex setup; path object must exist before array creation |
| Typical Instance Count | Tens to hundreds (rows × columns) | 6 to 72 (angular symmetry) | Varies widely with path length |
Connection to Advanced Workflows
Associative arrays are not isolated features — they integrate into broader AutoCAD and CAD-ecosystem workflows. Understanding how arrays connect to advanced topics prepares you for production-level project work and certifications.
| Introductory Concept | Advanced Extension |
|---|---|
| Associative arrays with grip editing | Dynamic blocks with array actions, where the array parameters are exposed as block properties and can be constrained by geometric and dimensional constraints |
| Single source object propagation | ARRAYEDIT's 'Replace Items' option allows per-instance overrides; combined with data extraction, this supports BOM (Bill of Materials) generation with variant tracking |
| 2D rectangular arrays for floor plans | 3D arrays using levels to generate multi-story building frameworks; integration with BIM workflows through IFC export |
| Path arrays along polylines | Civil 3D alignment-based distribution where items are arrayed along horizontal and vertical alignments with superelevation-aware rotation |
| Manual ARRAYPOLAR for bolt patterns | AutoLISP / .NET API scripting (e.g., using the ObjectARX AcDbAssocArrayParameters class) to programmatically generate arrays with computed parameters from spreadsheet data |
For computer science students, the API angle is particularly relevant. AutoCAD's .NET API exposes the AcDbAssocArrayActionBody class hierarchy, which mirrors the three array types discussed here. You can programmatically create an AcDbAssocArrayRectangularParameters object, set its row count, column count, and spacing properties, and attach it to a selection set — the same workflow you perform interactively, but scriptable and suitable for batch processing. This bridges the gap between interactive CAD operation and computational design automation, a rapidly growing field where parametric geometry generation is driven by algorithms rather than manual input.
Practice Problems
Lesson Summary
AutoCAD's array system provides three parametric distribution modes — rectangular (ARRAYRECT) for Cartesian grids defined by row count, column count, and independent X/Y spacings; polar (ARRAYPOLAR) for circular patterns defined by a center point, item count, and fill angle; and path (ARRAYPATH) for distribution along any curve using the Divide or Measure method. All three types produce associative arrays — single entities whose source geometry and layout parameters remain editable through grip editing and the Properties palette long after creation.
The mathematical models underlying each type reduce to straightforward transformations: translation vectors for rectangular, rotation about a center with angular increments for polar, and arc-length parameterization with tangent alignment for path. These concepts connect directly to advanced workflows including dynamic blocks, API-driven automation via ObjectARX/.NET, and 3D multi-level distributions. Selecting the correct array type for a given design pattern — much like choosing the right data structure for an algorithm — is the key skill that transforms a manual, error-prone copy-paste workflow into a robust, parametrically editable solution.