Well, I purge my drawings EVERY time I save them ...
Before I am told that this is neither efficient use of my time, nor productive, let me explain ....
I have "housekeeping" routines that run independently of each other and independent of user interaction
This is how I have it setup ...
Reactor for purging drawing, I'll explain the "EndSave" thing in a minute....
Private Sub AcadDocument_EndSave(ByVal FileName As String)
SendCommand "ENDIT" & vbCr
End Sub
This is the purging proggie .....
(defun c:ENDIT (/ NAME)
(setq CMD (getvar "CMDECHO")
(setvar "CMDECHO" 0)
(setq NAME (getvar "DWGNAME"))
(IF (/= (GETVAR "DWGPREFIX")(SUBSTR NAME 1 (STRLEN (GETVAR "DWGPREFIX"))))
(SETQ NAME (STRCAT (GETVAR "DWGPREFIX")NAME))
)
(setvar "EXPERT" 4)
(command ".WBLOCK" NAME "*")
(setvar "EXPERT" 0)
(setvar "CMDECHO" CMD)
(princ)
)
This line is located in my Acaddoc.lsp
(command "-insert" "*mytemplate" "0,0" 1 0)
Now while it is not elegant, it is efficient, behind the scenes, and no user interaction required
Let me explain the EndSave thing above in case you have not figured it out...
If you use the wblock command it does not reset the dbmod variable and thus will prompt you to save the drawing once again when you close it. (effectively losing any purging value), plus you will have a bak in the event you need to "undo" your save.
So now whenever I "save" a drawing (regardless of how it was initiated) the reactor will call the endit routine after it has been initially saved, wblock my entire drawing to the original drawing name, effectively purging it.
When I open a new drawing, the line in my acaddoc.lsp will automatically insert the default template (containing all of my layers, linetypes, textstyle, dimstyles, etc...) and since it is inserted as an exploded block, it does not get written to the drawing header.
I only audit drawings once or twice during their lifespan...but then again it is regularly only a few weeks long.... then it is archive city....