明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2128|回复: 13

如何实现文本批量选择,批量替换

[复制链接]
发表于 2021-7-6 22:01 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 magicheno 于 2021-7-6 22:04 编辑

这个功能比较适用在目录编辑的时候,实现文本批量选择,批量替换。大佬们按顺序点选右边的单行文本,框选或者点选左边的,可以实现第二张那张图吗


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

最佳答案

查看完整内容

试试,单行文字由上到下顺序批选批刷
发表于 2021-7-6 22:01 | 显示全部楼层
试试,单行文字由上到下顺序批选批刷



本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
magicheno + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-7-6 23:51 | 显示全部楼层
本帖最后由 magicheno 于 2021-7-6 23:52 编辑
start4444 发表于 2021-7-6 23:17
试试,单行文字由上到下顺序批选批刷

感谢大侠出手,试了下效果不错的,就是都是框选的,但是我的想法选择对象应该是只能依次用点选的吧,因为选择的对象都在每个图框的图名里面,框选选不到呢
回复

使用道具 举报

发表于 2021-7-7 00:16 | 显示全部楼层
为什么你要上个误导的示意图····图框和文字根本是两码事
回复

使用道具 举报

 楼主| 发表于 2021-7-7 00:19 | 显示全部楼层
本帖最后由 magicheno 于 2021-7-7 00:20 编辑
start4444 发表于 2021-7-7 00:16
为什么你要上个误导的示意图····图框和文字根本是两码事

看来以后的更加精确的提问了,抱歉呢大侠,因为我想着以为图框里的图名或者平面图底下的图名都是单行文本格式应该和我举例的是一回事吧,惭愧
回复

使用道具 举报

发表于 2021-7-7 00:38 | 显示全部楼层
那就是提取的不用排序了,把ss1那句换成这个就行了 (setq ss1 (ssget '((0 . "text"))) lst1 (ss->lst ss1))
回复

使用道具 举报

 楼主| 发表于 2021-7-7 00:44 | 显示全部楼层
本帖最后由 magicheno 于 2021-7-7 00:46 编辑
start4444 发表于 2021-7-7 00:38
那就是提取的不用排序了,把ss1那句换成这个就行了 (setq ss1 (ssget '((0 . "text"))) lst1 (ss->lst ss1) ...

(defun c:tt6 (/ lst1 lst2 ss1 ss2)
(prompt "\n【提取文字】:")
(setq ss1 (ssget '((0 . "text"))) lst1 (ss->lst ss1))
(prompt "\n【刷对象】:")
(setq ss2 (ssget ":s" '((0 . "text"))) lst2 (ss->lst ss2) lst2 (vl-sort lst2 '(lambda (a b) (> (cadr (cdr (assoc 10 (entget a)))) (cadr (cdr (assoc 10 (entget b))))))))
(mapcar  '(lambda (a b) (entmod (setq ent2 (entget b) ent2 (subst (assoc 1 (entget a)) (assoc 1 ent2) ent2 )))) lst1 lst2)
(princ)  
)
;;120.2 [功能] 选择集->图元列表
(defun ss->lst (ss / I L)
  (repeat (setq i (sslength ss))
    (setq L (cons (ssname ss (setq i (1- i))) L))
  )
)


可以了实现了,感谢大侠

回复

使用道具 举报

 楼主| 发表于 2021-7-7 00:53 | 显示全部楼层
start4444 发表于 2021-7-7 00:38
那就是提取的不用排序了,把ss1那句换成这个就行了 (setq ss1 (ssget '((0 . "text"))) lst1 (ss->lst ss1) ...

大佬想再请教你另外的新的个问题,如下图的右边是带空格的单行文本,能否实现,提取文字空格左边的文字,然后替换左边的文字如下图

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2021-7-7 11:38 | 显示全部楼层
magicheno 发表于 2021-7-7 00:53
大佬想再请教你另外的新的个问题,如下图的右边是带空格的单行文本,能否实现,提取文字空格左边的文字, ...

(defun c:tt5 (/ lst1 lst2 ss1 ss2)
(prompt "\n【提取文字】:")
(setq ss1 (ssget '((0 . "text"))) lst1 (ss->lst ss1))
(prompt "\n【刷对象】:")
(setq ss2 (ssget ":s" '((0 . "text"))) lst2 (ss->lst ss2) lst2 (vl-sort lst2 '(lambda (a b) (> (cadr (cdr (assoc 10 (entget a)))) (cadr (cdr (assoc 10 (entget b))))))))
(mapcar  '(lambda (a b) (entmod (setq ent2 (entget b) ent2 (subst (cons 1 (car (Parse_zhs (cdr (assoc 1 (entget a))) " "))) (assoc 1 ent2) ent2 )))) lst1 lst2)
(princ)  
)
;;120.2 [功能] 选择集->图元列表
(defun ss->lst (ss / I L)
  (repeat (setq i (sslength ss))
    (setq L (cons (ssname ss (setq i (1- i))) L))
  )
)


;;说明:分割字符串by GU
                ;;参数:str:
                ;;参数:del:
                ;;返回:
(defun Parse_zhs (str del / pos lst)
  (while (setq pos (vl-string-search del str))
    (setq lst (cons (substr str 1 pos) lst)
          str (substr str (+ pos 1 (strlen del)))
    )
  )
  (reverse (cons str lst))
)

评分

参与人数 1明经币 +1 收起 理由
magicheno + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-7-7 13:41 | 显示全部楼层
start4444 发表于 2021-7-7 11:38
(defun c:tt5 (/ lst1 lst2 ss1 ss2)
(prompt "\n【提取文字】:")
(setq ss1 (ssget '((0 . "text"))) ...

大佬实在太感谢了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 04:09 , Processed in 0.255425 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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