cad 如何用vba实现修改图纸中的文字?谢谢啦高手们
1个回答
推荐于2016-01-08 · 知道合伙人软件行家
关注
展开全部
;;;修改文字内容
(defun C:ZX10 ( / #k1 %k2 %k3 %k4 %k5 %k6 %k7 &k1 &kw1 i)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(princ "\n请选择文字")
(setq &kw1 (ssget ":S" (list (cons 0 "TEXT"))) %k2 t);选择文字
(if (/= &kw1 nil);如果有选择
(progn
(while %k2;循环修改
(setq %k2 (ZX10~1));取得要修改的文字代码
(if (/= %k2 nil);如果选择了
(progn
(setq %k3 (ZX10~2));那么取得要修改的内容
(if (= %k3 nil) (setq %k2 nil) );如果没有取得内容就结束
)
)
(if (/= %k3 nil);如果符合以上条件
(progn
(setq i 0 %k3 (cons 1 %k3));修改内容变为表里面的元素
(repeat (sslength &kw1);对所有的文字进行查看
(setq &k1 (ssname &kw1 i);取得一个对象
#k1 (entget &k1);取得属性列表
%k4 (assoc 1 #k1);取得内容元素
%k6 (assoc 40 #k1);取得高度元素
%k7 (cons 40 150);修改高度元素
%k5 (cdr %k4);取得文字内容
)
(if (= %k2 %k5);如果文字内容符合
(progn
(setq #k1 (subst %k3 %k4 #k1));替换文字内容
(setq #k1 (subst %k7 %k6 #k1));替换高度
(entmod #k1);刷新文字
)
)
(setq i (+ i 1));下一个
)
)
)
)
)
)
(prin1)
)
;;子程序;;
(defun ZX10~1 ( / %k1 &kw2)
(setq %k1 nil)
(princ "\n请选择要修改的文字内容")
(setq &kw2 (ssget ":S" (list (cons 0 "TEXT"))))
(if (/= &kw2 nil)
(progn
(setq %k1 (cdr (assoc 1 (entget (ssname &kw2 0)))))
(princ "\n选择文字为")
(princ %k1)
)
)
%k1
)
;;;子程序;;
(defun ZX10~2 ( / %k1 &kw2)
(setq %k1 nil)
(princ "\n请选择要替换的内容")
(setq &kw2 (ssget ":S" (list (cons 0 "TEXT"))))
(if (/= &kw2 nil)
(progn
(setq %k1 (cdr (assoc 1 (entget (ssname &kw2 0)))))
(princ "\n修改内容为")
(princ %k1)
)
)
%k1
);内容复制到记事本,以【ZX10.lsp】命名,加载到autoLISP,命令:ZX10
操作过程:首先框选需要修改的文字;然后点选需要修改的文字得到内容,然后点选需要修改的内容【文字】;autoLISP程序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询