Some jobs repeat until they grate: resetting the scale on a dimension style, building a set of layers in the right order, changing the units and then fixing the drawing limits. Ten identical steps each time, on dozens of drawings a day.
The actrecord command in AutoCAD lets you record that sequence once and call it back as a new command, with no programming at all. This article measures the macro file it writes and states plainly the limit that stops it replacing LISP. For the full set of speed tools see our advanced AutoCAD course.
Where to start it
Read from the acad.cuix interface file and the acad.pgp file of the 2027 release, for the default workspace.
| Way in | Start recording | Stop recording |
|---|---|---|
| Full command | ACTRECORD | ACTSTOP |
| Alias | ARR | ARS |
| Ribbon | none | none |
| Classic menu | Tools → Action Recorder → Record | Tools → Action Recorder → Stop |
Two commands in a pair: one starts, one stops. The actstop command is the one to remember, because forgetting it means the program keeps recording everything you do next.
Autodesk's ACTRECORD page sums it up in a line: "Starts the recording of an action macro." The word "recording" is exactly right — the program copies what you do rather than understanding it, and that is the root of the limit described further down.
Recording a macro, step by step
The method is short.
| Step | What you do |
|---|---|
| 1 | Type ACTRECORD — recording starts |
| 2 | Carry out the steps you want recorded, as you normally would |
| 3 | Type ACTSTOP — the naming dialog appears |
| 4 | Give it a name and click OK |
There is a reliable way to tell whether recording is on: read the ACTRECORDERSTATE variable.
| Value | |
|---|---|
| Idle | 0 |
| Recording | 1 |
Type the variable name at the command line to read it. This is the only certain check when the Action Recorder panel is not on screen.
It is worth checking, because there is no obvious sign on screen once the panel is closed, and a recording left running quietly collects every zoom, every layer change and every stray command until somebody notices. A macro recorded that way still plays back — it simply does a great deal more than intended, which is far harder to diagnose than one that does nothing.
The naming dialog
Typing ACTSTOP brings up a dialog headed Action Macro holding:
| Field | What it is for |
|---|---|
| Action Macro Command Name | The name you will type to run it |
| File Name | The file name, taken from the command name |
| Folder Path | Where the file will live |
| Description | A note to yourself |
| Restore pre-playback view | Whether the view returns to where it was |
| Check for inconsistencies when playback begins | Whether it checks before running |
The first field matters most and is the one people skip. The default names run ActMacro001, ActMacro002, and by ActMacro020 nobody remembers which does what. Name them meaningfully from the start — LAYERSET, DIMSCALEFIX — and they become usable months later.
Where the file lives and what is in it
Record a macro that does exactly one thing — draw a circle — and look at the file.
| What was measured | Value |
|---|---|
| File name | ActMacro001.actmx |
| Size | 5,477 bytes |
| Format | JSON |
| Folder | the value of the ACTRECPATH variable |
Five thousand bytes for a macro that draws one circle. Inside it is JSON, readable in any text editor, with the AutoCAD release that recorded it named on the first line.
The folder sits inside the user profile and is named by the ACTRECPATH variable. Knowing that path is knowing how to move a macro to another machine: copy the .actmx file into the matching folder there.
Playing a macro back by name
This is the best part: nothing to load, no panel to open. Type the macro's name at the command line like any other command.
The whole sequence runs and the program prints:
Command: ACTMACRO001
CIRCLE
Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 2000.000000000000,2000.000000000000
Specify radius of circle or [Diameter]: 300.000000000000
Command: Playback of action macro complete
A small message box headed Action Macro – Playback Complete appears at the end; click Close.
That box is small but useful. It confirms the macro ran to the end rather than stopping partway because some step could not be carried out. On a long macro that changes nothing visible, it is the only thing distinguishing "finished" from "got halfway".
Because the macro becomes a name you can type, it plugs into everything else: put it on a toolbar button, give it a keyboard shortcut, or call it from another macro. Aliases are covered in our article on command aliases in AutoCAD.
The real limit: macros store absolute coordinates
Look closely at the two lines the program prints on playback and the decisive detail is there.
It did not record "draw a circle where the user clicks". It recorded absolute coordinates — 2000.000000000000,2000.000000000000 — and the radius as the hard figure 300.000000000000.
So every playback draws in the same place, at the same size. That suits three kinds of job.
- Setting a batch of system variables to a house standard
- Building layers, dimension styles and units
- Running a sequence that does not depend on where the mouse is
And it suits three kinds of job very badly.
- Drawing something wherever the user points, differently each time
- Working on objects the user selects
- Anything that has to calculate from what is in the drawing
There is a partial remedy. While recording, at the point where the user needs to pick, use the pause feature so the macro asks again on playback. But every pause has to be set up at recording time, and there is no way for a macro to decide anything for itself.
The action recorder against LISP
Two tools aimed at the same problem, with very different reach.
| Action recorder | LISP | |
|---|---|---|
| Programming needed | no | yes |
| Time to automate something simple | a few minutes | half an hour |
| Handles work that depends on the user's choices | barely | yes |
| Arithmetic, loops, conditions | no | yes |
| Moving it to another machine | copy the .actmx file | load the .lsp file |
Put bluntly: a fixed repetition is a macro, anything that has to think is LISP. A standard layer set, a standard batch of variables, a run of text style settings — five minutes with a macro. Reinforcement schedules, coordinate exports, batch dimension edits — those need LISP. The Institute publishes several: see our articles on a reinforcement schedule lisp and a coordinate export lisp. Loading LISP files is covered in our article on the appload command in AutoCAD.
There is a use for macros few people think of, and it suits an office with several drafters: treat one as a record of procedure. A macro that sets up a new drawing, copied to everybody, means everyone starts from the same layers, the same dimension style, the same units. Nobody has to remind anybody, and the drawings still match when the set is assembled.
The other advantage is that anyone can maintain it. The file opens and reads plainly, and the easiest way to change it is not to edit the file at all: record it again under the same name. For a drawing office with nobody who programs, that is the difference between having a shared tool and not having one.
A last practical note on where the actrecord command in AutoCAD earns its keep. The best candidates are not the jobs that take longest, but the ones done most often and got wrong most often. Setting a dimension style takes two minutes by hand, yet across a team over a month it is done hundreds of times, and a handful of those will be done slightly differently. Automating that removes the variation, not just the minutes — and variation is what costs time later, when somebody has to work out why two sheets in the same set do not match.
Five things people say that are not true
| What people say | What the 2027 release actually does |
|---|---|
| The Action Recorder panel must be open to record | Typing ACTRECORD records; check with ACTRECORDERSTATE |
| A macro follows where you click | It copies absolute coordinates into the file |
| A macro can replace LISP | No arithmetic, no loops, no conditions |
| It has to be loaded like a LISP file | Nothing to load; type the macro's name and it runs |
| The macro is stored in the drawing | It lives in its own .actmx file under ACTRECPATH |
Frequently asked questions
What is the alias?
ARR to start recording and ARS to stop. There is no ribbon button.
How do I know whether it is recording?
Read ACTRECORDERSTATE: 0 means idle, 1 means recording.
Where is the macro saved?
In an .actmx file in the folder named by the ACTRECPATH variable, inside the user profile.
How do I move a macro to another machine?
Copy the .actmx file into the matching ACTRECPATH folder there and it can be run straight away.
Why does playback always draw in the same place?
Because the macro stores absolute coordinates. To be asked for a position, a pause has to be built in while recording.
Can a macro replace LISP?
No. A macro repeats a fixed sequence; anything needing arithmetic, loops or conditions has to be written in LISP.