批量将相同后缀附加到mu
我有近1000个独特的MText。我想一次在它们上面加上第二行同样的文字。所有当前的多行文字都不同,字符长度不同,因此我不能使用“查找和替换”。然而,它们都在同一层上,很容易作为一个组进行选择。有没有简单的方法?Lisp程序还是其他?
即
原件:
"12345"
“abcde”
"..."
预期结果:
"12345
房子“
“abcde
房子“
"...
房子“
谢谢 也许是这样
未经测试。。。
(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公司
亨里克 我可能错了,因为我不能完全阅读lisp编码,但“12345”,“abcde”只是样本,不能用于选择。目前所有的多行文字都完全不同。我可能应该从一开始就这么说,但它们都是不同的街道地址,我想添加第二行,其中的描述将是相同的。如果我不太懂代码,请随时纠正我。 这可能有帮助:前缀/后缀文本 正如你所说,“然而,它们都在同一层上,很容易作为一个组进行选择。”
在代码处,将“\\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公司
亨里克
我花了一分钟的时间来理解代码,但我明白了。我在论坛上搜索了“附加后缀”,但没有得到你的帖子结果。
我最终使用了李的代码,因为我知道我将来也会用到其他部分。然而,你回答了我在他的代码中提出的如何启动的新问题。我试过“\”(失败),你的建议“\\P”解决了它。
谢谢你们!耶,团队合作!英雄联盟
好奇问题:
为什么要将变量编码到中,而不是一系列提示?
i、 e.[前缀/后缀/两者]:,指定后缀:
不客气!
李的代码是为了从其他函数调用而编写的函数。。。
我的,只是一个演示,帮助你写你的一个代码,而不是一个最终的代码。。。
亨里克 只是一个简单的修正a逐层方法
<p>(if (setq ss (ssget ":L" '((0 . "MTEXT")(8 . "yourlayername")))</p>
非常欢迎-
我很高兴你能想出如何使用我的功能
参数不需要硬编码(尽管对于重复使用相同的前缀/后缀,硬编码此类值可能比每次使用时提示更快);正如上面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]