WindowsIHateYou 发表于 2022-7-5 23:07:06

批量将相同后缀附加到mu

我有近1000个独特的MText。我想一次在它们上面加上第二行同样的文字。所有当前的多行文字都不同,字符长度不同,因此我不能使用“查找和替换”。然而,它们都在同一层上,很容易作为一个组进行选择。
 
有没有简单的方法?Lisp程序还是其他?
 

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

hmsilva 发表于 2022-7-5 23:18:14

也许是这样
未经测试。。。

(defun c:test (/ en i ss st)
(if (setq ss (ssget ":L" '((0 . "MTEXT"))))
   (repeat (setq i (sslength ss))
   (setq en (entget (ssname ss (setq i (1- i))))
    st (cdr (assoc 1 en))
   )
   (if (wcmatch st "*12345*,*abcde*")
(progn
(setq st (strcat st "\\PHOUSE"))
(entmod (subst (cons 1 st) (assoc 1 en) en))
)
   )
   )
)
(princ)
)

 
HTH公司
亨里克

WindowsIHateYou 发表于 2022-7-5 23:27:43

我可能错了,因为我不能完全阅读lisp编码,但“12345”,“abcde”只是样本,不能用于选择。目前所有的多行文字都完全不同。我可能应该从一开始就这么说,但它们都是不同的街道地址,我想添加第二行,其中的描述将是相同的。如果我不太懂代码,请随时纠正我。

Lee Mac 发表于 2022-7-5 23:36:32

这可能有帮助:前缀/后缀文本

hmsilva 发表于 2022-7-5 23:44:09

正如你所说,“然而,它们都在同一层上,很容易作为一个组进行选择。”
在代码处,将“\\PHOUSE”处的房屋更改为“每个房屋的描述都相同”,用街道名称隔离图层,运行代码并仅选择要更改的多行文字。

(defun c:test (/ en i ss st)
(if (setq ss (ssget ":L" '((0 . "MTEXT"))))
   (repeat (setq i (sslength ss))
   (setq en (entget (ssname ss (setq i (1- i))))
    st (cdr (assoc 1 en))
    st (strcat st "\\PHOUSE")
   )
   (entmod (subst (cons 1 st) (assoc 1 en) en))
   )
)
(princ)
)

 
HTH公司
亨里克

WindowsIHateYou 发表于 2022-7-5 23:46:54

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

hmsilva 发表于 2022-7-5 23:53:12

 
 
 
不客气!
 
 
李的代码是为了从其他函数调用而编写的函数。。。
我的,只是一个演示,帮助你写你的一个代码,而不是一个最终的代码。。。
 
 
亨里克

BIGAL 发表于 2022-7-6 00:05:02

只是一个简单的修正a逐层方法
 
<p>(if (setq ss (ssget ":L" '((0 . "MTEXT")(8 . "yourlayername")))</p>

Lee Mac 发表于 2022-7-6 00:13:06

 
非常欢迎-
我很高兴你能想出如何使用我的功能
 
 
参数不需要硬编码(尽管对于重复使用相同的前缀/后缀,硬编码此类值可能比每次使用时提示更快);正如上面hmsilva所指出的,您可以很好地从另一个程序调用我的pstext函数,将前缀和后缀字符串作为参数传递。
 
作为一个非常简单的例子:
(defun c:pstext ( / ans pre suf )
   (initget "Prefix Suffix Both")
   (setq ans (getkword "\nAdd <Prefix>: "))
   (if (member ans '("Prefix" "Both" nil))
       (setq pre (getstring t "\nSpecify prefix: "))
       (setq pre "")
   )
   (if (member ans '("Suffix" "Both"))
       (setq suf (getstring t "\nSpecify suffix: "))
       (setq suf "")
   )
   (pstext pre suf 1)
   (princ)
)
页: [1]
查看完整版本: 批量将相同后缀附加到mu