Off by default since 1.108.0: VDCWHO → Track turns tracking on for a seat. Once on, a background watcher stamps every created or edited entity with the creator, last editor, timestamps, and command on an Xrecord (mirrored into the Properties palette); VDCWHO queries those stamps by Pick, User, Since, Track, Backfill, or pUrge. A seat-level kill switch, env var
VDC_EDITTRACK=0, keeps a seat from ever hooking anything (queries still work), and the Track toggle fully detaches the hooks when off.
Tracked entity
Creator (CreatedBy)
Last tracked editor
EditCommand
Honesty rules
What it does
- Watcher: attaches to every open document, listens to object-appended / object-modified events and collects touched entities, nothing is written inside a reactor.
- Stamp on command end: each entity gets a
VDC_EDITTRACKXrecord,CreatedBy/CreatedAtonce,LastEditedBy/LastEditedAt/EditCommandoverwritten each edit. - Works on every entity, plain lines and text as much as Civil 3D objects; a COPY counts as creation by the copier.
- Writes run with undo recording disabled; cancelled / failed commands discard their collection so rolled-back edits never stamp. A save flushes pending stamps too, catching Properties-palette edits made outside a command.
- ~120 bytes/object;
MaxObjectsPerCommand(5000) caps huge batch commands and reports when it caps. - Exempt commands (
ExemptCommands) are ignored wholesale, never collected, stamped, or capped. Ships exempt:AUDIT,RECOVER,RECOVERALL,PURGE,-PURGE,VDCSTYLEAUDIT,VDCSTDQC. Keeps a drawing-repairAUDITfrom burying real authorship under "AUDIT". - Stamps travel with the DWG and clone with copied objects; xref'd objects show their stamps when queried in the source drawing.
Modes & settings
- Pick (default): click objects for a per-object who/when/command line; User: grip-select everything a named user last touched; Since: grip-select everything with a tracked edit on/after a
yyyy-mm-dddate. - Track: toggles tracking on/off, persisted as
Enabled. Backfill: mirrors existing stamps into the property set (run once on pre-v1.1.0 drawings). pUrge: strips every stamp +VDC_TRACKset (confirmation required). - Properties mirror: stamps mirror into ACA property set
VDC_TRACK, shown in the Extended Data tab, authorship with no command at all. - The compact Xrecord is the source of truth; the property set is the display layer, which roughly doubles per-object overhead, set
MirrorToPropertySets: falseto skip it. - Settings:
VDC_EDITTRACK_SETTINGS, default%APPDATA%\VDC\EditTrack\settings.json.
Dialog

VDCWHOWhen to use it
- Finding out who created or last changed an object, for coordination or accountability.
How to run it
- Run VDCWHO > Track once on each seat that should track (it stays on across sessions; the startup line says tracking ON / OFF).
- Run VDCWHO - the dialog carries the mode (Pick / User / Since / Track / Backfill / Purge) plus the user-name and date fields.
- Read the who/when/command result (also visible in Properties -> Extended Data).
Options
- Backfill: stamp objects that pre-date tracking.
- Seat kill switch: set the environment variable VDC_EDITTRACK=0 and this seat never hooks anything (zero overhead; queries still work). It outranks the Track toggle.
Watch out for
- No retroactive history - only edits made while the bundle was loaded are tracked.
- A seat with VDC_EDITTRACK=0 (or Track off) leaves no trace - the stamps keep naming the previous editor.
Related: Style QC