实际上,我的代码是“分离、审计、绑定、清除所有内容”。如果您只希望代码拆离未引用的外部参照,那么删除audit和purge all很简单,但我不知道是否可以删除bind命令。除非有人可以修改lisp,使其仅绑定“那些未引用的外部参照”。这就是lisp的全部技巧,将未引用的外部参照重定位到空白图形并绑定空白图形。
**要使此lisp正常工作,必须在搜索路径中放置一个名为“dummy.dwg”的空白图形**
- (defun C:SENT ( / )
- (defun *error*(msg)
- (setvar "modemacro" ".")
- (setvar "bindtype" oldBnType)
- (setvar "cmdecho" 1)
- (princ "\n...Audit/Bind/PurgeAll terminated!!! ")
- (princ)
- ); end of *error*
- (setvar "modemacro" "Audit/Bind/PurgeAll processing......please wait......")
- (setvar "cmdecho" 0)
- (prompt "\n--- Audit/Bind/PurgeAll......please wait---")
- (prompt "\nAuditing...")(terpri)
- (command "_audit" "y")
- (bind_xrefs)
- (prompt "\nPurging #1")(terpri)
- (command "-purge" "a" "*" "N")
- (prompt "\nPurging #2")(terpri)
- (command "-purge" "a" "*" "N")
- (prompt "\nPurging #3")(terpri)
- (command "-purge" "a" "*" "N")
- (prompt "\n--- Audit, Bind, PurgeAll completed! ---")
- (setvar "modemacro" ".")
- (setvar "cmdecho" 1)
- (princ)
- ); end of c:sent
- (defun bind_xrefs ( / CMD)
- (setq oldBnType(getvar "bindtype"))
- (setq CMD (getvar "CMDECHO"))
- (setvar "CMDECHO" 0)
- (setvar "bindtype" 0)
- (setq XLIST (xref-status))
- (if XLIST
- (progn
- (prompt "\nBinding all Xrefs...")
- (foreach n XLIST (rem-xref n))
- (command "-xref" "b" "*" )
- (prompt "...done")(terpri)
- )
- )
- (setvar "CMDECHO" CMD)
- (setvar "bindtype" oldBnType)
- (princ)
- )
- (defun rem-xref ( XL / XNAME XSTATUS )
- (setq XNAME (nth 0 XL))
- (setq XSTATUS (nth 2 XL))
- (if (= XSTATUS "UNLOADED")
- (rem_unload)
- )
- (if (= XSTATUS "UNRESOLVED")
- (rem_unload)
- )
- )
- (defun xref-status ( / d n f r)
- (while (setq d (tblnext "block" (null d)))
- (cond
- (
- (eq 4 (logand 4 (cdr (assoc 70 d))))
- (setq
- d (entget (tblobjname "block" (cdr (assoc 2 d))))
- n (cdr (assoc 2 d))
- p (cdr (assoc 3 d))
- f (cdr (assoc 70 d))
- )
- (setq r
- (cons
- (list n p
- (cond
- ( (eq 32 (logand 32 f)) "LOADED")
- ( (assoc 71 d) "UNLOADED")
- ( t "UNRESOLVED")
- )
- )
- r
- )
- )
- )
- )
- )
- (reverse r)
- )
- (defun rem_unload ( / )
- (setq DFILE (findfile "dummy.dwg"))
- (if (not DFILE)
- (prompt "\nCannot find dummy_xref drawing ")
- (progn
- (command "-xref" "p" XNAME DFILE)
- (command "-xref" "r" XNAME)
- )
- )
- )
|