找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1100|回复: 25

[编程申请] 替换编程

[复制链接]
发表于 2020-2-16 09:56:45 | 显示全部楼层 |阅读模式

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

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

×
哪位大哥能帮我修改一下下面这个LISP程序呢,这是一个文字替换程序,但是这个程序我觉得有一个缺点,就是需要一个一个的去替换,能不能帮我修改一下可以一键替换呢,按字数多的替换字数少的原则进行替换呢。
下面是原LISP原文:(defun c:tt ( / i s ss sss txt otxt o_txt ent)
        (setvar"CMDECHO" 0)
        (princ "\n选择替换成的文字")
        (setq s (ssget ":S" '((0 . "TEXT"))))
        (setq txt (assoc 1 (entget (ssname s 0))))
        (princ "\n选择被替换的文字类型")
        (setq ss (ssget ":S" '((0 . "TEXT"))))
        (setq otxt (assoc 1 (entget (ssname ss 0))))
        (princ"\n请框选需要替换的范围:")
        (setq sss (ssget (list (cons 0 "TEXT") otxt)))
        (setq i -1)
        (repeat (sslength sss)
                (setq ent (entget (ssname sss (setq i (1+ i)))))
                (setq o_txt (assoc 1 ent))
                (setq ent (subst txt o_txt ent))
                (entmod ent)
        )
  (princ)
)

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

已领礼包: 1864个

财富等级: 堆金积玉

发表于 2020-2-16 12:13:22 | 显示全部楼层
你得先确定替换前多的字里没有重复的字。不然"你说你在干什么?   你"怎么替换?

点评

哥,替换前多的字里面确实有重复的字,但是少的字只是多的字的一部分,相当于把少的字补全吧。这个能不能实现呢  详情 回复 发表于 2020-2-16 15:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2230个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

 楼主| 发表于 2020-2-16 15:20:38 | 显示全部楼层
aimisiyou 发表于 2020-2-16 12:13
你得先确定替换前多的字里没有重复的字。不然"你说你在干什么?   你"怎么替换?

哥,替换前多的字里面确实有重复的字,但是少的字只是多的字的一部分,相当于把少的字补全吧。这个能不能实现呢

点评

如果有重复的字(刚好是字少的开头),那从哪里配对开始呢?  详情 回复 发表于 2020-2-16 15:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1864个

财富等级: 堆金积玉

发表于 2020-2-16 15:30:06 | 显示全部楼层
hphkjz 发表于 2020-2-16 15:20
哥,替换前多的字里面确实有重复的字,但是少的字只是多的字的一部分,相当于把少的字补全吧。这个能不能 ...

如果有重复的字(刚好是字少的开头),那从哪里配对开始呢?

点评

并且都是开头的字相同  详情 回复 发表于 2020-2-16 15:49
字多的里面一定包含着字少的才可以配对。  详情 回复 发表于 2020-2-16 15:47
这样吧哥,我和你说一下我实际遇到的情况,一栋楼会有好多的梁,比如KL1 200*500,而相同的梁只标了一个KL1,我想把它补全了,也变成KL1 200*500。但是还有KL2、KL3等等。但是只需要一键就可以把他们搜索完毕并且替  详情 回复 发表于 2020-2-16 15:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 15:46:04 | 显示全部楼层
aimisiyou 发表于 2020-2-16 15:30
如果有重复的字(刚好是字少的开头),那从哪里配对开始呢?

这样吧哥,我和你说一下我实际遇到的情况,一栋楼会有好多的梁,比如KL1 200*500,而相同的梁只标了一个KL1,我想把它补全了,也变成KL1 200*500。但是还有KL2、KL3等等。但是只需要一键就可以把他们搜索完毕并且替换完毕。哥,这个意思你能明白了么,这个功能能实现吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 15:47:54 | 显示全部楼层
aimisiyou 发表于 2020-2-16 15:30
如果有重复的字(刚好是字少的开头),那从哪里配对开始呢?

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

使用道具 举报

 楼主| 发表于 2020-2-16 15:49:20 | 显示全部楼层
aimisiyou 发表于 2020-2-16 15:30
如果有重复的字(刚好是字少的开头),那从哪里配对开始呢?

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

使用道具 举报

已领礼包: 1864个

财富等级: 堆金积玉

发表于 2020-2-16 16:32:35 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-2-16 16:33 编辑

可以实现的。先获取所有文字,然后分成两类,一类字多,一类字少。将每一个字少的和字多的匹对,替换。

点评

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

使用道具 举报

 楼主| 发表于 2020-2-16 16:39:28 | 显示全部楼层
aimisiyou 发表于 2020-2-16 16:32
可以实现的。先获取所有文字,然后分成两类,一类字多,一类字少。将每一个字少的和字多的匹对,替换。

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

使用道具 举报

已领礼包: 1864个

财富等级: 堆金积玉

发表于 2020-2-16 16:41:51 | 显示全部楼层
发个CAD图过来,便于检测效果。

点评

大哥,CAD图纸发过去了,在附件了,那些文字有可能不在一个图层哦  详情 回复 发表于 2020-2-16 16:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-16 16:57:47 | 显示全部楼层
aimisiyou 发表于 2020-2-16 16:41
发个CAD图过来,便于检测效果。

大哥,CAD图纸发过去了,在附件了,那些文字有可能不在一个图层哦

梁 板图.rar

1.23 MB, 下载次数: 9, 下载积分: D豆 -1 , 活跃度 1

点评

(setq sn (ssget ":N" '((0 . "Mtext")))) (setq i 0 n (sslength sn) plst nil) (while (< i n) (setq plst (cons (cdr (assoc 1 (entget (ssname sn i)))) plst)) (setq i (+ i 1)) ) (setq  详情 回复 发表于 2020-2-16 19:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1864个

财富等级: 堆金积玉

发表于 2020-2-16 19:36:17 | 显示全部楼层
hphkjz 发表于 2020-2-16 16:57
大哥,CAD图纸发过去了,在附件了,那些文字有可能不在一个图层哦

(setq sn (ssget ":N" '((0 . "Mtext"))))
(setq i 0 n (sslength sn) plst nil)
(while (< i n)
        (setq plst (cons (cdr (assoc 1 (entget (ssname sn i)))) plst))
        (setq i (+ i 1))
)
(setq pt1 (vl-sort (vl-remove nil (mapcar '(lambda (x) (if (> (strlen x) 5) x nil)) plst)) '<))
(setq pt2 (vl-sort (vl-remove nil (mapcar '(lambda (x) (if (<= (strlen x) 5) x nil)) plst)) '<))
(setq ppst (mapcar '(lambda (x) (car (vl-remove nil (mapcar '(lambda (y) (if (= x (substr y 1 (strlen x))) (list x y) nil)) pt1)))) pt2))
(setq j 0)
(while (< j n)
     (setq ea (entget (ssname sn j)))
     (if (assoc (cdr (assoc 1 ea)) ppst)
      (progn
   (setq eb (reverse (cons (cons 1 (cadr (assoc (cdr (assoc 1 ea)) ppst)))
               (reverse (vl-remove (assoc 1 ea) ea))
                   )
       ))
   (setq ea eb)
       (entmod ea)
   )
     )
  (setq j (+ j 1))
)

电脑上CAD里没有相应字体,打开看不见字符。在电脑上同一图层上试了下,可以将少的字改成多的字。

724fad8ee82c6dba.png

点评

大哥,非常非常感谢,但是你发的这个代码如何使用呢,能发给我个完整的代码吗  详情 回复 发表于 2020-2-17 09:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-2-16 20:37:47 | 显示全部楼层
多利用论坛搜索

对话框文字万能替换工具(第二版)-加入正则替换
166 个回复 - 4754 次查看
加入了“正则表达式”查找替换功能,真正的“万能”替换。 **** 本内容被作者隐藏 **** 正则替换的几个例子: 1、字首的字母替换成"" 2、字母和数字之间添加“-” 3、字母变2个,后添加 “--” ...
2018-5-18 23:15 - Lispboy - 每日插件


                               
登录/注册后可看大图

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 16:29 , Processed in 0.419298 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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