乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 48|回复: 13

[编程交流] 一次编辑大量文本?

[复制链接]

13

主题

41

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 13:07:11 | 显示全部楼层 |阅读模式
我正在寻找一种方法,我可以收集一个图纸内的所有文本,并可以大规模编辑它的意愿。
 
我知道AutoCAD有一个内置函数,允许批量查找和替换,并且存在其他类似的例程,但我发现这是一个限制,您必须搜索特定的字符串。
 
我需要的是一个函数,它列出整个图形或指定绘图区域内的所有可用文本,然后用所需的最终结果替换每个实例。
 
我怎么能在这方面得到帮助?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 13:14:10 | 显示全部楼层
我认为当说FIND命令对您的案例有限制时,您需要更具体一些。
此外,可能会要求版主在AutoLISP、VBA、CUI和自定义部分中移动您的帖子。
 
当做
回复

使用道具 举报

1

主题

597

帖子

599

银币

初来乍到

Rank: 1

铜币
2
发表于 2022-7-5 13:16:56 | 显示全部楼层
编辑>查找>查找位置:选定对象
 
首先,选择文本对象并执行上述操作。您可以选中“全部替换”。
 
等等,你说过你想一次编辑多个字符串。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 13:22:47 | 显示全部楼层
多么奇怪的请求啊。写起来很有趣。。。
 
需要DosLib。
 
  1. (defun c:EAT (/ ss sLst eLst nLst)
  2. ;; Edit All Text (playing around)
  3. ;; DosLib Required
  4. ;; Alan J. Thompson, 05.21.10
  5. (if (and (or dos_proplist
  6.               (alert "DosLib required. Please download and install.")
  7.               (command "_.browser" "http://www.en.na.mcneel.com/doslib.htm")
  8.           )
  9.           (setq ss (ssget "_X" '((0 . "ATTDEF,MTEXT,MULTILEADER,TEXT"))))
  10.      )
  11.    (progn
  12.      ((lambda (i)
  13.         (while (setq e (ssname ss (setq i (1+ i))))
  14.           ((lambda (ent)
  15.              (or (eq 4
  16.                      (logand 4 (cdr (assoc 70 (entget (tblobjname "layer" (cdr (assoc 8 ent)))))))
  17.                  )
  18.                  ((lambda (str)
  19.                     (setq sLst (cons (cons str str) sLst)
  20.                           eLst (cons e eLst)
  21.                     )
  22.                   )
  23.                    ((lambda (s)
  24.                       (cond
  25.                         ((eq (cdr (assoc 0 ent)) "MULTILEADER") (cdr (assoc 304 ent)))
  26.                         ((vl-position (cdr (assoc 0 ent)) '("ATTDEF" "MTEXT" "TEXT"))
  27.                          (foreach x ent
  28.                            (and (vl-position (car x) '(1 3)) (setq s (strcat s (cdr x))))
  29.                          )
  30.                          s
  31.                         )
  32.                       )
  33.                     )
  34.                      ""
  35.                    )
  36.                  )
  37.              )
  38.            )
  39.             (entget e)
  40.           )
  41.         )
  42.       )
  43.        -1
  44.      )
  45.      (if (and sLst eLst)
  46.        (if (setq nLst (dos_proplist "Edit All Text" "Edit text:" sLst))
  47.          (mapcar
  48.            (function
  49.              (lambda (e s)
  50.                (or (eq "" (cdr s))
  51.                    (eq (car s) (cdr s))
  52.                    (vla-put-textstring (vlax-ename->vla-object e) (cdr s))
  53.                )
  54.              )
  55.            )
  56.            eLst
  57.            nLst
  58.          )
  59.        )
  60.        (alert "No text on unlocked layers!")
  61.      )
  62.    )
  63. )
  64. (princ)
  65. )
140715g4h1yms4jjmnk22s.jpg
回复

使用道具 举报

13

主题

41

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 13:28:57 | 显示全部楼层
但我希望奇数是好的!谢谢你这么有团队精神!!!这对我以后会有很大帮助。
 
但是可以进一步调整一下,允许我指定我想要的文本所在的区域吗?
 
因为用这种方法所有的文字都会显示出来,现在我有了这个有700多个文字输入的绘图,我失去了我想要替换的!!!
 
但是付出了巨大的努力,我想知道为什么没有人认为这是有效的!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 13:30:24 | 显示全部楼层
选择方法(我有点喜欢)。。。
 
  1. (defun c:EAST (/ ss sLst eLst nLst)
  2. ;; Edit All Selected Text
  3. ;; DosLib Required
  4. ;; Alan J. Thompson, 05.21.10
  5. (if (and (or dos_proplist
  6.               (alert "DosLib required. Please download and install.")
  7.               (command "_.browser" "http://www.en.na.mcneel.com/doslib.htm")
  8.           )
  9.           (setq ss (ssget "_:L" '((0 . "ATTDEF,MTEXT,MULTILEADER,TEXT"))))
  10.      )
  11.    ((lambda (i)
  12.       (while (setq e (ssname ss (setq i (1+ i))))
  13.         ((lambda (str)
  14.            (setq sLst (cons (cons str str) sLst)
  15.                  eLst (cons e eLst)
  16.            )
  17.          )
  18.           ((lambda (s ent)
  19.              (cond
  20.                ((eq (cdr (assoc 0 ent)) "MULTILEADER") (cdr (assoc 304 ent)))
  21.                ((vl-position (cdr (assoc 0 ent)) '("ATTDEF" "MTEXT" "TEXT"))
  22.                 (foreach x ent
  23.                   (and (vl-position (car x) '(1 3)) (setq s (strcat s (cdr x))))
  24.                 )
  25.                 s
  26.                )
  27.              )
  28.            )
  29.             ""
  30.             (entget e)
  31.           )
  32.         )
  33.       )
  34.       (if (setq nLst (dos_proplist "Edit All Text" "Edit text:" sLst))
  35.         (mapcar
  36.           (function
  37.             (lambda (e s)
  38.               (or (eq "" (cdr s))
  39.                   (eq (car s) (cdr s))
  40.                   (vla-put-textstring (vlax-ename->vla-object e) (cdr s))
  41.               )
  42.             )
  43.           )
  44.           eLst
  45.           nLst
  46.         )
  47.       )
  48.     )
  49.      -1
  50.    )
  51. )
  52. (princ)
  53. )
140717yhcjhppchzd38cep.jpg
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 13:37:37 | 显示全部楼层
我还更新了原始版本,以忽略锁定层上的对象。
回复

使用道具 举报

13

主题

41

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 13:40:59 | 显示全部楼层
哦,天哪,这真的很有帮助。
 
我请求它,因为有时我会命名多边形的顶点,如A1、A2、A3、A50、A51。。。我可能会在稍后决定添加或删除顶点,因此我必须对受影响的点重新编号。
 
想象一下,在没有任何帮助的情况下手动执行此操作!
 
这是我想要的主要原因之一。但有时我发现自己想要编辑一幅画里的很多文字。当你需要处理大量文本时,一个接一个地选择它们并转到属性来更改它们的标题是完全令人厌倦的。
 
再次感谢你,艾伦!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 13:44:58 | 显示全部楼层
回想一下,很久以前,我看到一些非常旧的文本编辑器,可以选择多达3个文本对象进行编辑。我必须记住把它放在我的LSP文件夹中,并在周一上班时加载它;永远不知道,可能有它的用处。
 
享受吧,不客气。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 13:49:53 | 显示全部楼层
微小修复。。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 00:44 , Processed in 2.078704 second(s), 74 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表