乐筑天下

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

[编程交流] 批量将相同后缀附加到mu

[复制链接]

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:07:06 | 显示全部楼层 |阅读模式
我有近1000个独特的MText。我想一次在它们上面加上第二行同样的文字。所有当前的多行文字都不同,字符长度不同,因此我不能使用“查找和替换”。然而,它们都在同一层上,很容易作为一个组进行选择。
 
有没有简单的方法?Lisp程序还是其他?
 

原件:
 
"12345"
 
“abcde”
 
"..."
 
 
预期结果:
 
"12345
房子“
 
“abcde
房子“
 
"...
房子“
 
谢谢
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:18:14 | 显示全部楼层
也许是这样
未经测试。。。
  1. (defun c:test (/ en i ss st)
  2. (if (setq ss (ssget ":L" '((0 . "MTEXT"))))
  3.    (repeat (setq i (sslength ss))
  4.      (setq en (entget (ssname ss (setq i (1- i))))
  5.     st (cdr (assoc 1 en))
  6.      )
  7.      (if (wcmatch st "*12345*,*abcde*")
  8. (progn
  9.   (setq st (strcat st "\\PHOUSE"))
  10.   (entmod (subst (cons 1 st) (assoc 1 en) en))
  11. )
  12.      )
  13.    )
  14. )
  15. (princ)
  16. )

 
HTH公司
亨里克
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:27:43 | 显示全部楼层
我可能错了,因为我不能完全阅读lisp编码,但“12345”,“abcde”只是样本,不能用于选择。目前所有的多行文字都完全不同。我可能应该从一开始就这么说,但它们都是不同的街道地址,我想添加第二行,其中的描述将是相同的。如果我不太懂代码,请随时纠正我。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:36:32 | 显示全部楼层
这可能有帮助:前缀/后缀文本
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:44:09 | 显示全部楼层
正如你所说,“然而,它们都在同一层上,很容易作为一个组进行选择。”
在代码处,将“\\PHOUSE”处的房屋更改为“每个房屋的描述都相同”,用街道名称隔离图层,运行代码并仅选择要更改的多行文字。
  1. (defun c:test (/ en i ss st)
  2. (if (setq ss (ssget ":L" '((0 . "MTEXT"))))
  3.    (repeat (setq i (sslength ss))
  4.      (setq en (entget (ssname ss (setq i (1- i))))
  5.     st (cdr (assoc 1 en))
  6.     st (strcat st "\\P[color="blue"]HOUSE[/color]")
  7.      )
  8.      (entmod (subst (cons 1 st) (assoc 1 en) en))
  9.    )
  10. )
  11. (princ)
  12. )

 
HTH公司
亨里克
回复

使用道具 举报

7

主题

29

帖子

22

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:46:54 | 显示全部楼层
 
我花了一分钟的时间来理解代码,但我明白了。我在论坛上搜索了“附加后缀”,但没有得到你的帖子结果。
 
 
我最终使用了李的代码,因为我知道我将来也会用到其他部分。然而,你回答了我在他的代码中提出的如何启动的新问题。我试过“\”(失败),你的建议“\\P”解决了它。
 
谢谢你们!耶,团队合作!英雄联盟
 
好奇问题:
为什么要将变量编码到中,而不是一系列提示?
i、 e.[前缀/后缀/两者]:,指定后缀:
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:53:12 | 显示全部楼层
 
 
 
不客气!
 
 
李的代码是为了从其他函数调用而编写的函数。。。
我的,只是一个演示,帮助你写你的一个代码,而不是一个最终的代码。。。
 
 
亨里克
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:05:02 | 显示全部楼层
只是一个简单的修正a逐层方法
 
  1. <p>(if (setq ss (ssget ":L" '((0 . "MTEXT")(8 . "yourlayername")))</p>
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:13:06 | 显示全部楼层
 
非常欢迎-
我很高兴你能想出如何使用我的功能
 
 
参数不需要硬编码(尽管对于重复使用相同的前缀/后缀,硬编码此类值可能比每次使用时提示更快);正如上面hmsilva所指出的,您可以很好地从另一个程序调用我的pstext函数,将前缀和后缀字符串作为参数传递。
 
作为一个非常简单的例子:
  1. (defun c:pstext ( / ans pre suf )
  2.    (initget "Prefix Suffix Both")
  3.    (setq ans (getkword "\nAdd [Prefix/Suffix/Both] <Prefix>: "))
  4.    (if (member ans '("Prefix" "Both" nil))
  5.        (setq pre (getstring t "\nSpecify prefix: "))
  6.        (setq pre "")
  7.    )
  8.    (if (member ans '("Suffix" "Both"))
  9.        (setq suf (getstring t "\nSpecify suffix: "))
  10.        (setq suf "")
  11.    )
  12.    (pstext pre suf 1)
  13.    (princ)
  14. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 14:24 , Processed in 4.469087 second(s), 71 queries .

© 2020-2025 乐筑天下

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