AutoCAD – Drawings

The actrecord command in AutoCAD: record a sequence, call it back as a command

The actrecord command in AutoCAD records a sequence of steps as a new command, with no programming. The file it writes, measured, and its one real limit.

  • TS. Đỗ Quốc Hoàng
  • 8 min read
A macro stores absolute coordinates in its file Photo: Diagram by the Institute of Information Technology in Civil Engineering

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 inStart recordingStop recording
Full commandACTRECORDACTSTOP
AliasARRARS
Ribbonnonenone
Classic menuTools → Action Recorder → RecordTools → 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.

StepWhat you do
1Type ACTRECORD — recording starts
2Carry out the steps you want recorded, as you normally would
3Type ACTSTOP — the naming dialog appears
4Give it a name and click OK

There is a reliable way to tell whether recording is on: read the ACTRECORDERSTATE variable.

Value
Idle0
Recording1

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:

FieldWhat it is for
Action Macro Command NameThe name you will type to run it
File NameThe file name, taken from the command name
Folder PathWhere the file will live
DescriptionA note to yourself
Restore pre-playback viewWhether the view returns to where it was
Check for inconsistencies when playback beginsWhether 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.

Recording and playing a macro Photo: A macro stores absolute coordinates in its file

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 measuredValue
File nameActMacro001.actmx
Size5,477 bytes
FormatJSON
Folderthe 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 coordinates2000.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 recorderLISP
Programming needednoyes
Time to automate something simplea few minuteshalf an hour
Handles work that depends on the user's choicesbarelyyes
Arithmetic, loops, conditionsnoyes
Moving it to another machinecopy the .actmx fileload 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 sayWhat the 2027 release actually does
The Action Recorder panel must be open to recordTyping ACTRECORD records; check with ACTRECORDERSTATE
A macro follows where you clickIt copies absolute coordinates into the file
A macro can replace LISPNo arithmetic, no loops, no conditions
It has to be loaded like a LISP fileNothing to load; type the macro's name and it runs
The macro is stored in the drawingIt 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.

About the author

TS. Đỗ Quốc Hoàng — Vice Director of the Institute of Information Technology in Civil Engineering, Hanoi University of Civil Engineering, and a specialist in software development for construction