刚弄完的修改块名lisp
 - ;1、对选择的块逐一更名。
- ;2、修改块时可以放大图块。
- ;3、出错函数处理,不影响其他lisp的出错函数。
- ;4、修改时间 2011-6-15
- ;5、命令 rb
- (defun c:rb (/ en n i een na naa ens1 )
- (setq *error*_sk0 *error*) ;保存出错处理函数
- (setq *error* *error*_sk1)
- (if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))
- (setq sk_flagrb1 "e")
- (setq en (ssget '((0 . "INSERT")))
- i 0)
- (if (and en (= (type en) 'PICKSET))
- (progn
- (setq n (sslength en))
- (princ (strcat "\n已选择了"(rtos n)"个块!"))
- (repeat n
- (setq een (entget (setq ens1 (ssname en i))) na (cdr (assoc 2 een)) i (+ i 1))
- (command "zoom" "o" ens1 "")
- (setq sk_flagrb1 "be")
- (prompt (strcat "\n原块名为:" na))(terpri)
- (setq naa (getstring "\n请输入新块名[回车就不修改]:"))
- (if (= naa "")()
- (progn
- (command "rename" "b" na naa)
- )
- )
- (command "zoom" "p")
- )
- (setq sk_flagrb1 "e")
- (setvar "cmdecho" 1)
- ))
- (princ)
- )
- ;出错函数
- ;来自明经通道
- (defun *error*_sk1 (msg)
- (if (= (getvar "cmdecho") 1) (setvar "cmdecho" 0))
- (if (wcmatch (strcase msg t) "*break,*cancel*,*exit*,*取消*")
- (if (= (getvar "LOCALE") "CHS")
- (princ "\n用户按了<Esc>强制退出")
- (princ "\nYou cancelled The operation!")
- )
-
- (princ (strcat "\n" msg))
- )
- (terpri)
- (vla-EndUndoMark ;回退
- (vla-get-ActiveDocument (vlax-get-acad-object))
- )
-
- (if (= sk_flagrb1 "be") (command "zoom" "p"))
- (setvar "cmdecho" 1)
- (setq *error* *error*_sk0)
- (princ)
- )
|