ATTPULL reads attribute values out of every drawing in a folder and builds an Excel workbook from them. ATTPUSH writes new values back into every drawing in a folder. No drawing is opened in the editor — a hundred files are processed in the time it takes to open one.
What AttHarvest does
This is the door schedule pulled straight from the door blocks, the room data sheet built from the room tags, and the revision number pushed into every title block on the project at once.
ATTPULL — extracting. Name the blocks you want, either by typing the name or by picking one on screen, and choose which of their tags to extract: all of them, or a specific list in a specific order. Block insertion coordinates can be included as an extra column, which turns the extract into a setting-out schedule.
The result opens in Excel in one of three layouts. Group by filename gives one section per drawing with each block listed under it — best for reviewing drawings one at a time. Group by block merges the same data across every drawing and groups by block name instead — best for counting and comparing one symbol across a project. Drawing list mode gives a single flat table, one column per tag and one row per block, with the source drawing in its own column. That last one is a proper database table, and it is the one to choose if the result is going to be sorted, filtered or pivoted.
ATTPUSH — editing. Name one block, list the tags to change and the value each should be set to, and every matching block in every drawing is updated. Tags and their current values can be read straight off a block on screen, so building the list is a matter of picking rather than typing.
How to use it
- Load the routine with
APPLOAD, or put it on your support file search path. - Type
ATTHARVESTto be asked which mode you want, or go straight toATTPULLorATTPUSH. - Choose the folder of drawings to process.
- Name the block, by typing it or by picking one on screen.
- Choose the tags — all of them, or a specific list in a specific order.
- For
ATTPULL, pick the layout and the extract opens in Excel. ForATTPUSH, give the value each tag should be set to and confirm.
How it works
Drawings are read and written through ObjectDBX, a database-only interface with no editor window, no regeneration and no view to set up. That is the whole reason a folder of a hundred files takes about as long as opening one.
A drawing already open in the current session is handled differently, through its live document object rather than ObjectDBX. This matters more than it sounds: ObjectDBX on an already-open file would read the version on disk and silently ignore unsaved work, and it would hold a second handle on a file somebody is editing. Detecting that case and routing around it is the difference between a reliable batch tool and one that occasionally loses an afternoon.
Both constant and ordinary attributes are read. Constant attributes live in the block definition rather than the insertion and are easy to miss entirely. A schedule that omits them is quietly incomplete — and quietly is the problem, because nothing on the output says anything is absent.
When a pushed value changes length, single-line attributes are re-anchored so that centred and right-justified text stays visually where it was instead of drifting sideways. Without that, changing a revision from A to AA nudges every title block on the project.
Drawings are only saved if something actually changed in them, so a run that matches nothing leaves every file’s timestamp alone — which keeps your backups and your issue records honest.
Notes and limits
- Read this before running ATTPUSH. It modifies drawings and SAVES them without opening them, and there is no undo across files. Test on a copy of the folder first. Every time.
- ATTPULL only reads, and is safe to run on anything.
- Extraction requires Microsoft Excel to be installed. The workbook is built through Excel itself.
- ObjectDBX will not touch a file that is open elsewhere — on another machine, or by another user on a network share. Close the drawings before a push.
- Constant attributes can be read but not written. They belong to the block definition, so there is no per-insertion value for ATTPUSH to change.
Download and details
| Name | AttHarvest — extract and edit block attributes across a folder of drawings |
| Download | AttHarvest.lsp — 96.1 KB, plain AutoLISP source. Downloads directly; no zip to unpack. |
| Type | AutoCAD AutoLISP routine |
| Commands | ATTHARVEST, ATTPULL, ATTPUSH |
| Requires | the ActiveX layer (loaded automatically by the routine with vl-load-com); nothing extra — the dialog is written to a temporary file at run time and deleted again, so there is no .dcl to install. |
| Source size | 96.1 KB, 2,086 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
- ATTCLONE LISP — match attribute formatting without touching any values
- TAGTINT LISP — recolour chosen attribute tags across many blocks
- More free AutoLISP routines on this site
- Wisey’s Steel Shapes — free structural steel section drawing program