cad文字操作
批量替换cad里面的文字把zip改成dxf也不知道这样的弄得出来不,我是上面都不会 cad都是刚学的
就是在文件里搜索左边的每行一个 替换为右边的
本帖最后由 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 1N)
strb (substr Wzthtmp(+ N2)))
(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 (substrtext_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的前辈们
也可以不错不错 灰常感谢 把zip改成dxf
cad都是刚学的
只看到这两句,其它都看不到
tryhi 发表于 2020-7-2 11:27
把zip改成dxf
cad都是刚学的
只看到这两句,其它都看不到
附件里哦 附件里哦 附件里哦 输入的字符串有缺陷
页:
[1]