明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2302|回复: 2

求批量替换单行或多行文字的LSP源代码

[复制链接]
发表于 2013-11-29 14:24 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 清风明月名字 于 2013-11-29 14:28 编辑





我新建了一个文本文件“F:\批量文字替换的配对.txt”,我将替换配对放在里面,形式为
中国镡中华人民共和国
1镡一
2镡二
3镡三
4镡四

我希望使用LSP,可以读取文本文件中的内容,并拆分成一对,再对我选中的图元进行替换,这样一次就可以进行任意多次数的替换。
我还希望代码分成几个插件(只略为修改一点),第1个插件是完全匹配时才替换,第2个插件时,包含才替换;第三个是替换项位于被替换项的最左侧才替换;第四个是替换项位于被替换项的最右侧才替换
替换对象为多行文本及单行文本。
最好不要是伪源码。
我有一个朋友给我的代码可供参考。
(vl-Load-Com)
(defun c:当属性层文本内容右侧不等于文本文件任意行内容时删除它 (/ ss path txt i en n loop txt str txtstr)
  (if (and (setq ss (ssget "X" '((0 . "MTEXT,TEXT")(8 . "0000用于图元属性快速输出利用(简称“属性”图层)"))))
           ; (setq path (getfiled "选择文本文件" "" "txt" 4))
           (setq path "F:/仅保留符合本文本文件中内容的CAD文本图元.txt")
      )
    (progn
      (setq txt (Z:ReadTXT path))
      (setq i -1)
      (while (setq en (ssname ss (setq i (1+ i))))
        (setq loop t n -1  str (strcase (vla-get-TextString (vlax-ename->vla-object en))))
        (if (null (while (and loop (setq txtstr (nth (setq n (1+ n)) txt)))
                    (if
                                ; (/= str txtstr)
                                ; 判断是否包含
;;;                                (vl-string-search (strcase txtstr) (strcase str))
                               (wcmatch str (strcat  (vl-princ-to-string txtstr) "*"))

                                (progn (setq loop nil) T))
                  )
            )
          (entdel en)
        )
      )
    )
  )
  (princ)
)

(defun Z:ReadTXT (path / file txtlst str)
  (if (setq fn (findfile path))
    (progn
      (setq file (open fn "r"))
      (setq Txtlst '())
      (while (setq str (read-line file))
        (setq Txtlst (cons (strcase str) Txtlst))
      )
      (close file)
    )
  )
  (reverse txtlst)
)






附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2014-1-10 08:46 | 显示全部楼层
看不懂楼主的需求,附加的檔是地质资料,
是要依文字檔里的资画画成地质剖面图吗?

还是文字檔是原始资料,dwg檔是完成的成果,
想要修改文字檔,执行LISP,自动修改dwg里的成果。

点评

文本文件中是替换的配对,比如1镡一表示1要替换成一,2镡二表示2要替换成二...其它类推。 这些替换配对是放在文本文件中,用来对CAD中的单行或多行文本进行替换。  发表于 2014-1-10 12:02
回复

使用道具 举报

 楼主| 发表于 2014-1-10 12:06 | 显示全部楼层
Atsai 发表于 2014-1-10 08:46
看不懂楼主的需求,附加的檔是地质资料,
是要依文字檔里的资画画成地质剖面图吗?

文本文件中是替换的配对,比如1镡一表示1要替换成一,2镡二表示2要替换成二...其它类推。 这些替换配对是放在文本文件中,用来对CAD中的单行或多行文本进行替换。
比如文本文件中有100个替换配对,我操作一次LISP代码W,W就会去读取文本文件中的配对(100对),我再选中单行或多行文本,它就会对单行或多行文本进行100次替换
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 18:42 , Processed in 0.360106 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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