PINOBJECT pins individual objects so they cannot be modified, and keeps them pinned between drawing sessions. Three commands: PINOBJECT pins a selection, UNPINOBJECT releases one, UNPINALL releases everything and removes the stored record.
What FreezeFrame does
Read this before relying on it. This is a demonstration of what reactors can do, not a security feature. The protection only works while this file is loaded — anyone who opens the drawing without it can edit the objects freely.
For genuinely locking content, a locked layer does the same job, is enforced by AutoCAD itself, and travels with the drawing. That is the right answer for anything that matters.
Where this is useful is protecting a survey base, a grid or a title block from your own accidental edits during a working session — the case where a locked layer would be a nuisance because you keep needing to unlock it for something else on the same layer.
How to use it
- Load the routine with
APPLOAD, or put it on your support file search path. - Type
PINOBJECTand select the objects to protect. - Work normally. Any edit to a pinned object is reversed immediately.
- Type
UNPINOBJECTto release specific objects, orUNPINALLto release everything and clear the record.
How it works
Two reactors, plus a dictionary.
The editor reactor fires after every command and every LISP routine finishes. It compares each pinned object against the DXF data captured when it was pinned, and writes that data back — undoing any change. If an object was deleted, it is undeleted.
The drawing reactor fires on save, writing the pinned objects’ handles into a drawing dictionary so the pins can be rebuilt when the drawing is next opened with this file loaded.
Note the consequence of the first one. Changes are not prevented, they are reversed immediately after the command that made them. The object flickers rather than refusing to move. That is inherent to how reactors work — they run after the fact, not before it — and it is exactly why this cannot be a real protection mechanism.
Notes and limits
- This is not security. Open the drawing without this file loaded and every pinned object edits normally.
- Use a locked layer for anything that matters. AutoCAD enforces it, and it travels with the file.
- Objects flicker rather than refusing to move, because the reactor reverses the change after the command completes.
- Pins survive saving and reopening, but only if this file is loaded in the session that opens the drawing.
Download and details
| Name | FreezeFrame — pin individual objects so they cannot be modified |
| Download | FreezeFrame.lsp — 15.1 KB, plain AutoLISP source. Downloads directly; no zip to unpack. |
| Type | AutoCAD AutoLISP routine |
| Commands | PINOBJECT, UNPINALL, UNPINOBJECT |
| Requires | the ActiveX layer (loaded automatically by the routine with vl-load-com). |
| Source size | 15.1 KB, 385 lines |
| Error handling | Yes — a *error* handler restores every system variable it changed, on cancel as well as on error. |
| Undo | Not needed — this routine only reads the drawing and changes nothing. |
| Compatibility | AutoCAD (any release with AutoLISP), BricsCAD, ZWCAD, GstarCAD, ProgeCAD and other IntelliCAD-based platforms. AutoCAD LT needs a LISP enabler. No .NET, no ObjectARX, no installer. |
| Author | YZ, August 2026 |
| Licence | Free to use, supplied “as is” with no warranty. |
References
- PORTLOCK LISP — locking viewports rather than individual objects
- Delete Layer LISP — working with layers, which is the enforced alternative
- More free AutoLISP routines on this site
- Wisey’s Steel Shapes — free structural steel section drawing program