找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3218|回复: 19

[已解决] 已解决 按指定内容批量替换图中文字

[复制链接]
发表于 2013-9-20 00:38:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 cz7873559 于 2013-9-22 11:17 编辑

要求如题,欲做的是把图中文本按TXT文件内容 1000>00001 1000替换成00001,对我的难在于怎样按行批量处理所有符合条件的字符。自己实现不了,麻烦大家给我指教!不胜感激! 以下是文本内容,附件是相应的TXT文件。
文本内容:

1000>00001
1001>00002
1002>00003
1003>00004
1004>00005
1005>00006
1006>00007
1007>00008
1008>00009
1009>00010
1010>00011


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:TH.txt 
下载次数:20  文件大小:130 Bytes 
下载权限: 不限 以上  [免费赚D豆]





论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 10249个

财富等级: 富甲天下

发表于 2013-9-20 08:26:48 | 显示全部楼层
(defun c:tt ()
(if (and (princ "\n选择文字: ") (setq ss (ssget '((0 . "TEXT") (1 . "1###")))))
(progn
  (setq i -1)
  (repeat (sslength ss)
   (setq ent (entget(ssname ss (setq i (1+ i))))
         txt (cdr(assoc 1 ent)))
   (entmod (subst (cons 1 (itoa (- (atoi txt) 999))) (assoc 1 ent) ent))
  )
))
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 10:02:53 | 显示全部楼层
谢谢zxq0220!这个能实现批量相减得出结果,很有用,先收藏了。我大概没把意思说明白,可能误解了。其实我是想把图中一列的值变成对应的另一列的值。如这个excel数据。

数据.xls

23 KB, 下载次数: 4, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 10:05:42 | 显示全部楼层
数据如图所示
123.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-9-20 14:02:17 | 显示全部楼层
下面代码执行前请加载XDRX API和晓东通用LISP函数库。文件保存到G盘,你可以根据需要修改。
xdtb_txtreplace.gif


  1. (defun c:tt ( / e entl fl n new old ss txt txtl)
  2.   (XD::Begin)
  3.   (setq fl (open "g:\\th.txt" "r"))
  4.   (while (setq txt (read-line fl))
  5.     (setq txtl (xdrx_string_split txt ">"))
  6.     (setq entl (cons txtl entl))
  7.   )
  8.   (close fl)
  9.   (prompt "\n选取要替换的文字<全选>:")
  10.   (if (not (setq ss (ssget '((0 . "text")))))
  11.     (setq ss (ssget "x" '((0 . "text"))))
  12.   )
  13.   (xdrx_setsstodb ss 0)
  14.   (setq i 0)
  15.   (while (setq e (xdrx_getentdata 0))
  16.     (setq txt (xdrx_getpropertyvalue e "TextString"))
  17.     (foreach n entl
  18.       (setq old (car n)
  19.             new (cadr n)
  20.       )
  21.       (if (XD::String:RegExpS old txt "")
  22.         (progn
  23.           (setq i (1+ i))
  24.           (setq txt (XD::String:RegExpR old txt new ""))
  25.         )
  26.       )
  27.     )
  28.     (xdrx_SetPropertyValue e "TextString" txt)
  29.   )
  30.   (if (> i 0)
  31.      (prompt (strcat "\n共替换了 " (itoa i) " 处符合条件的文字."))
  32.      (prompt "\n没有发现符合条件的文字.")
  33.   )
  34.   (XD::End)
  35.   (princ)
  36. )



评分

参与人数 1D豆 +5 收起 理由
cz7873559 + 5 热心帮忙奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 18:25:33 | 显示全部楼层
非常感谢!我得先学学加载XDRX API和晓东通用LISP函数库。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 18:44:28 | 显示全部楼层
麻烦问问。在运行时,提示 错误: 参数类型错误: FILE nil 是怎么回事呢?

点评

你要是没修改程序的话,你的替换规则文件 gh.txt 要保存到G:盘根目录下,如果你修改了程序,把你修改的代码贴上来,可能是你修改错了。  详情 回复 发表于 2013-9-20 19:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-20 19:12:32 | 显示全部楼层
cz7873559 发表于 2013-9-20 18:44
麻烦问问。在运行时,提示 错误: 参数类型错误: FILE nil 是怎么回事呢?

你要是没修改程序的话,你的替换规则文件 gh.txt 要保存到G:盘根目录下,如果你修改了程序,把你修改的代码贴上来,可能是你修改错了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 20:51:35 | 显示全部楼层
  1. (defun c:tt ( / e entl fl n new old ss txt txtl)
  2.   (XD::Begin)
  3. ;;;  (setq fl (open "D:\我的文档\桌面\TH.txt" "r"))
  4.     (setq f1 (getfiled "选择读取的数据文件" strPath "txt" 0))
  5.   (while (setq txt (read-line fl))
  6.     (setq txtl (xdrx_string_split txt ">"))
  7.     (setq entl (cons txtl entl))
  8.   )
  9.   (close fl)
  10.   (prompt "\n选取要替换的文字<全选>:")
  11.   (if (not (setq ss (ssget '((0 . "text")))))
  12.     (setq ss (ssget "x" '((0 . "text"))))
  13.   )
  14.   (xdrx_setsstodb ss 0)
  15.   (setq i 0)
  16.   (while (setq e (xdrx_getentdata 0))
  17.     (setq txt (xdrx_getpropertyvalue e "TextString"))
  18.     (foreach n entl
  19.       (setq old (car n)
  20.             new (cadr n)
  21.       )
  22.       (if (XD::String:RegExpS old txt "")
  23.         (progn
  24.           (setq i (1+ i))
  25.           (setq txt (XD::String:RegExpR old txt new ""))
  26.         )
  27.       )
  28.     )
  29.     (xdrx_SetPropertyValue e "TextString" txt)
  30.   )
  31.   (if (> i 0)
  32.      (prompt (strcat "\n共替换了 " (itoa i) " 处符合条件的文字."))
  33.      (prompt "\n没有发现符合条件的文字.")
  34.   )
  35.   (XD::End)
  36.   (princ)
  37. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 20:52:08 | 显示全部楼层
我改成了选择文本文件,也不行啊。

点评

(setq f1 (getfiled "选择读取的数据文件" strPath "txt" 0)) 你这句相当于得到文件的路径,并没打开,你把注释掉那个OPEN,放这个下面,G:\\TH.TXT 修改成FL  详情 回复 发表于 2013-9-21 14:16
你仔细看看人家的程序,文件路径和你写的有什么不一样? 你少了个斜杠。  详情 回复 发表于 2013-9-20 21:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-20 20:54:39 | 显示全部楼层

我启动cad的时候出现如下情况:请问是否 加载XDRX API和晓东通用LISP函数库  时 没加载正确?
Couldn't find OpenDCL.16.arx.
晓东通用LISP函数库Build 2013.09.08加载完毕...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-20 21:17:46 | 显示全部楼层
cz7873559 发表于 2013-9-20 20:52
我改成了选择文本文件,也不行啊。

你仔细看看人家的程序,文件路径和你写的有什么不一样? 你少了个斜杠。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-21 09:13:40 | 显示全部楼层
您说的对,我按照您的代码就能执行。 自己改了就不行:
(setq fl (open "D:\我的文档\桌面\TH.txt" "r"))
怎样改都改不正确。麻烦给我指教下要怎样改才行啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7071个

财富等级: 富甲天下

发表于 2013-9-21 09:40:12 | 显示全部楼层
(setq fl (open "D:\\我的文档\\桌面\\TH.txt" "r"))
or
(setq fl (open "D:/我的文档/桌面/TH.txt" "r"))

评分

参与人数 1D豆 +5 收起 理由
cz7873559 + 5 技术引导讨论和指点奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-21 10:48:26 | 显示全部楼层
谢谢Underway。我们这些新手就是在像你这样的高手的无私帮助下成长起来!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 06:17 , Processed in 0.454982 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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