很抱歉。这是带标签的LISP
-
- (defun c:xrch (/ OLDERR B XRLIST XRCHANGE XRPATH XRNAME )
- (setq olderr *error*)
- (defun *error* (msg)
- (if (/= msg "Function cancelled")
- (princ (strcat "Error: " msg)))
- (setvar "cmdecho" 1)
- (graphscr)
- (setq *error* olderr)
- (princ)
- ); end error
- (setvar "cmdecho" 0)
- (setq B (tblnext "block" 1))
- (while B
- (if (assoc 1 B) ;find all xrefs
- (setq XRLIST (cons (cdr (assoc 2 B)) XRLIST))) ;in drawing
- (setq B (tblnext "block")))
- (while (not XRCHANGE)
- (textscr)
- (repeat 10
- (terpri))
- (princ "**External References in Drawing**\n") ;print out a list
- (princ "----------------------------------") ;of xrefs for the
- (mapcar 'print XRLIST) ;the user to see
- (repeat 5
- (terpri))
- (setq XRCHANGE (getstring "\nEnter old external reference name: "))
- (if (tblsearch "block" XRCHANGE)
- (progn
- (while (not XRPATH)
- (setq XRNAME (getstring "\nEnter new external reference name: ")) ;our folder structure is setup
- (setq XRPATH (strcat (substr (getvar "dwgprefix") 1 18) XRNAME ".dwg")) ;that the xrefs reside one folder
- (if (findfile XRPATH) ;level up from drawing
- (progn
- (command ".-xref" "p" XRCHANGE XRPATH) ;sets the new path
- (command ".-rename" "b" XRCHANGE XRNAME) ;sets the new name
- );progn
- (progn
- (princ (strcat "\nCould not find " (strcase XRNAME) " in search path.")) ;not found in xref folder
- (setq XRNAME nil)
- (setq XRPATH nil)
- );progn
- );if
- );while
- );progn
- (progn
- (princ (strcat "\nCould not find " (strcase XRCHANGE) " in drawing.")) ;not an xref in drawing
- (setq XRCHANGE nil)
- );progn
- );if
- );while
- (graphscr)
- (setvar "cmdecho" 1)
- (setq *error* olderr)
- (princ)
- );eof
|