0 Members and 1 Guest are viewing this topic.
(defun c:cpurge (/ doc del_itms pstyl n namelist styls sub) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq pstyl (vla-item (vla-get-dictionaries doc) "ACAD_PLOTSTYLENAME")) (mapcar '(lambda (col) (vlax-for x col (vl-catch-all-apply 'vla-delete (list x)) ) ) (list (vla-get-dimstyles doc) (vla-get-linetypes doc) (vla-get-textstyles doc) (vla-get-plotconfigurations doc) ) ) (vlax-for lay (vla-get-layers doc) (if (not (member (vla-get-plotstylename lay) namelist)) (setq namelist (cons (vla-get-plotstylename lay) namelist)) ) ) (setq styls (entget (vlax-vla-object->ename pstyl)) sub (member (assoc 3 styls) styls) sub (reverse (cddr (reverse sub))) n 0) (while (< (setq n (+ n 2)) (1- (length sub))) (if (not (member (cdr (nth n sub)) namelist)) (setq del_itms (cons (vla-get-objectid (vlax-ename->vla-object (cdr (nth (1+ n) sub)))) del_itms)) ) ) (vlax-for itm pstyl (if (member (vla-get-objectid itm) del_itms) (vla-delete itm) ) ) (princ) )
On another topic.......how would you change the drawing viewres silently?
The first thing I tried was NOMUTT. Somehow, Purge overrides the NOMUTT setting and lists everything purged, or not, no matter what.
... but VBA doesn't mutter.