使用全局编辑文本字符串
你好有谁能帮我想出一个自动化的方法,通过宏或Lisp编辑文本字符串的常数。因为我有一个需要更改很多坐标的图形,用lisp可以帮助我全局或单个地进行操作,仍然很有帮助。例如,如果原始文本是N 35800.578,我必须手动减去210.5,然后将文本编辑为N35590.078。同样,东距坐标必须减去400.0,高程必须减去3.700。
有了这些常量值,如果我可以自动更改文本而不需要手动编辑,那么它将大大减少时间消耗。
提前非常感谢。
请注意。让我知道你需要的任何其他信息,以实现这一常规。Thnks公司 我猜你不确定N或E之后的空格“”总是存在,因此需要while。。。。
仓促写成
(defun c:SuBVal (/ ss i en prf v clr)
(if (setq ss (ssget ":L" '((0 . "TEXT")(1 . "E. #*,EL. #*,N. #*"))))
(repeat (setq i (sslength ss))
(setq en (ssname ss (setq i (1- i))))
(if (and(setq prf (substr (setq str (cdr (assoc 1 (entget en)))) 1 3))
(setq v(cond ((eq prf "E. ")210.50)
((eq prf "N. ") 400.00 )
((eq prf "EL.") (setq str (substr str 2)
prf (strcat prf " ")) 3.70 )))
)
(progn
(vla-put-textstring (setq en (vlax-ename->vla-object en))
(strcat prf
(rtos (- (distof (substr str 3)2) v) 2 3)))
(vla-put-color en 1))
)
)
)
(princ)
)
编辑:“E.#*,EL.#*,N.#*” 你好
不知何故,也许我没有正确地执行它,因为加载它并键入@command line Test后,它会提示“错误:错误的参数类型:numberp:nil”。
顺便说一句,你是绝对正确的,那是在N和E之后的一个空格。
EL的常数。为3.7,N.为210.5,E.为400.0。
非常感谢您的努力,
达金 我想我错过了那里的EL部分。
发布有问题字符串的样例绘图或快照 试试Lee的批量查找和替换文本。
http://t1.gstatic.com/images?q=tbn:ANd9GcRjAAWcfXLCj6Cg6yjr4iCZLdWwNE1FwEkyUsZKG6EYejX1ljltyghttp://t3.gstatic.com/images?q=tbn:ANd9GcTxbd9KL_4JenhzoJbTNVOQPFNE_uIHC8A7UH3TBUH3T3k2ZTFL 哦,是的。。。那也是 Mahalo pBe和Renderman,
我做得很好,谢谢你的有用想法和专业知识。它激励我学习更多关于Lisp的知识。
pBe,请问您是否可以修改它,在编辑后将颜色更改为红色,以便知道哪个是哪个。
再次感谢您的努力和时间,
祝龙年新年快乐。
和平 pBe,
此外,编辑文本后,N、E和EL之后的周期应保持不变。
尝试将图像与dwg文件一起发布,但不知何故将其附加。
将重试。
谢谢
你是说目标字符串包含一个“”在N/E/EL之后?而不仅仅是一个“”(空格)?
所以“N.5800.578”而不是“N.35800.578”? PBe,
那是正确的,我的过错至今没有表现清楚。
它最初看起来像N.XXXXX。三十、 E.XXXXX。三十、 EL。XXX。XXX。
前一个仍然有效,我所要做的就是找到N并替换为N,同样对于E和El。如果它为所有人做一次拍摄,并将颜色改为红色,那就太好了。
提前感谢,
页:
[1]
2