cad 如何用vba实现修改图纸中的文字?谢谢啦高手们

 我来答
朱06CAD
推荐于2016-01-08 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
;;;修改文字内容
(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程序。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式