明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 732|回复: 6

[提问] cad文字操作

[复制链接]
发表于 2020-7-1 15:47:10 | 显示全部楼层 |阅读模式
批量替换cad里面的文字把zip改成dxf
也不知道这样的弄得出来不,我是上面都不会 cad都是刚学的

就是在文件里搜索左边的  每行一个   替换为右边的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2020-7-1 23:28:15 | 显示全部楼层
本帖最后由 muwind 于 2020-7-1 23:32 编辑

(defun c:BRT( / findbrt F N STRA STRB WZTHTMP)
  (FYBEGIN)
  (if (setq findbrt (findfile "brt.txt"))
      (progn
        (setq F (open findbrt "r"))
        (setq Wzthtmp(read-line F))
        (WHILE Wzthtmp
             (IF (setq N ( vl-string-search ";"  Wzthtmp));文本文件中的分割符,仅查找第一个字符
               (progn
                  (setq stra (substr Wzthtmp 1  N  )
                       strb (substr Wzthtmp  (+ N  2)))
                  (FLRT stra strb)
                  (princ (strcat "\n" stra "替换成" strb ))
               )
             )
              (setq Wzthtmp(read-line F))
         )
        (close F)
       )  
         (princ "找不到批量替换数据文件brt.txt")
     )
  (FYEND)
)

(defun *Fyerror* (msg)
  (princ (strcat  "\n FyCAD提醒您 : "  msg "  (拜拜!欢迎再来哦!)"))  
  (setq *error* olderr)
  (setvar "cmdecho" oldcmdecho)
  (setvar "osmode" oldosmode)
  (princ)
)


(defun Fybegin()  
     (setq olderr *error*      
            *error*  *Fyerror* )
     (setq oldcmdecho (getvar "cmdecho" ))
     (setq oldosmode (getvar "osmode" ))
     (setvar "cmdecho" 0)
     (setvar "osmode" 0)
     (setvar "texteval" 1)
     (princ)
)

(defun Fyend()      
     (setq *error* olderr)
     (setvar "cmdecho" oldcmdecho)
     (setvar "osmode" oldosmode)
     (princ)
)
(defun FLRT (OldText NewText  / sset index pointer text text_str text_str_len OldText_Len NewText_len);RT=ReplaceText
  (setq sset (ssget "_X" (list (cons 0 "text"))));仅选择单行文本
  (setq index 0)
  (while (and sset (/= (setq text (ssname sset index)) nil)) ;获取选择集中序号为index(初始为0,之后递增)的图元名
                                                                                      ;如果不存在退出循环,存在就继续执行下面的代码
      (setq pointer 1)
      (setq text_str (cdr (assoc 1 (entget text))));获取文本内容
      (setq text_str_len (strlen text_str));获取文本长度
      (setq OldText_len (strlen OldText));被替换的文本长度
      (setq NewText_len (strlen NewText));替换的文本长度
         (while (<  pointer (- (+ text_str_len 2) OldText_Len)  );比如文本为“11”,替换“11”为“22”,第一次判断为4-2大1执行后续程序。
            (if (= (strcase (substr text_str pointer OldText_Len)) (strcase OldText));全部转为大写对比是否相同
               (progn
                 (setq text_str (strcat (substr  text_str 1 (- pointer 1) ) NewText (substr text_str (+ pointer OldText_Len))))
                                 ;将替换前的文本,新的文本后替换后的文本组成新的文本内容
                 (entmod (subst (cons 1 text_str) (assoc 1 (entget text)) (entget text)))
                                 ;修改文本的DXF完成文字修改
                 (setq pointer (+ pointer NewText_Len) )
                                 ;新的对比起始点,原来起始点加上替换文本的长度
                 (setq text_str_len (strlen text_str))
                                 ;替换后文本的长度
                );end progn
                                (setq pointer (1+ pointer))
            );end if
         );while
    (setq index (1+ index));选择集图元序号递增
   );while
)

BRT.TXT 文件的内容就是
OldText;NewText
中间用分号隔离开 07年用纯LISP写的,公司很多在用,我自己反而不怎么用了主要是照顾那些坚持用R14的前辈们

评分

参与人数 1金钱 +5 收起 理由
eechenchun + 5 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-2 10:06:28 | 显示全部楼层
也可以  不错不错 灰常感谢
发表于 2020-7-2 11:27:03 | 显示全部楼层
把zip改成dxf
cad都是刚学的
只看到这两句,其它都看不到






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2020-7-2 13:46:57 | 显示全部楼层
tryhi 发表于 2020-7-2 11:27
把zip改成dxf
cad都是刚学的
只看到这两句,其它都看不到

附件里哦 附件里哦 附件里哦
发表于 2020-7-7 11:40:18 | 显示全部楼层
输入的字符串有缺陷
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 22:44 , Processed in 0.199186 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表