(defun c:rb(/ en name old_name new_name %tt i ssdata new_la old_la ssdata1) (cmdf) (defun *error* (msg) (princ msg) (princ) ) (while (= en nil) (setq en (entget (CAR (entsel "\n 请选择源块: "))))) (setq name (cdr (assoc 0 en))) (if (/= name "INSERT") (progn (princ "\n 你选择的不是块,只对块!!!") (exit) ) )
(if (= name "INSERT") (progn (setq new_name (assoc 2 en)) (setq new_la (assoc 8 en)) (prompt "\n 请选择要替换的块: ") (setq %TT (ssget '((0 . "INSERT")))) (setq i 0) (repeat (sslength %TT) (progn (setq ssdata (entget (ssname %tt i))) (setq old_name (assoc 2 ssdata)) (setq ssdata1 (subst new_name old_name ssdata)) ;(setq old_la (assoc 8 ssdata)) ;(setq ssdata1 (subst new_la old_la ssdata)) (entmod ssdata1) (setq i (1+ i)) ) )
)) (princ) )
替换的块的层要和源块为同一个层,为何加入下面这段代码后不能更新
(setq old_la (assoc 8 ssdata)) (setq ssdata1 (subst new_la old_la ssdata))
(entmod ......)是可以更新多个的,不知语法要怎么写
|