Dakine 发表于 2022-7-6 07:40:04

使用全局编辑文本字符串

你好
有谁能帮我想出一个自动化的方法,通过宏或Lisp编辑文本字符串的常数。因为我有一个需要更改很多坐标的图形,用lisp可以帮助我全局或单个地进行操作,仍然很有帮助。例如,如果原始文本是N 35800.578,我必须手动减去210.5,然后将文本编辑为N35590.078。同样,东距坐标必须减去400.0,高程必须减去3.700。
有了这些常量值,如果我可以自动更改文本而不需要手动编辑,那么它将大大减少时间消耗。
提前非常感谢。
请注意。让我知道你需要的任何其他信息,以实现这一常规。Thnks公司

pBe 发表于 2022-7-6 07:45:11

我猜你不确定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.#*”

Dakine 发表于 2022-7-6 07:47:06

你好
不知何故,也许我没有正确地执行它,因为加载它并键入@command line Test后,它会提示“错误:错误的参数类型:numberp:nil”。
顺便说一句,你是绝对正确的,那是在N和E之后的一个空格。
EL的常数。为3.7,N.为210.5,E.为400.0。
非常感谢您的努力,
达金

pBe 发表于 2022-7-6 07:51:51

我想我错过了那里的EL部分。
发布有问题字符串的样例绘图或快照

BlackBox 发表于 2022-7-6 07:53:42

试试Lee的批量查找和替换文本。
 
 
 
http://t1.gstatic.com/images?q=tbn:ANd9GcRjAAWcfXLCj6Cg6yjr4iCZLdWwNE1FwEkyUsZKG6EYejX1ljltyghttp://t3.gstatic.com/images?q=tbn:ANd9GcTxbd9KL_4JenhzoJbTNVOQPFNE_uIHC8A7UH3TBUH3T3k2ZTFL

pBe 发表于 2022-7-6 07:57:12

哦,是的。。。那也是

Dakine 发表于 2022-7-6 08:00:05

Mahalo pBe和Renderman,
我做得很好,谢谢你的有用想法和专业知识。它激励我学习更多关于Lisp的知识。
pBe,请问您是否可以修改它,在编辑后将颜色更改为红色,以便知道哪个是哪个。
再次感谢您的努力和时间,
祝龙年新年快乐。
和平

Dakine 发表于 2022-7-6 08:03:31

pBe,
此外,编辑文本后,N、E和EL之后的周期应保持不变。
尝试将图像与dwg文件一起发布,但不知何故将其附加。
将重试。
谢谢

pBe 发表于 2022-7-6 08:07:52

 
你是说目标字符串包含一个“”在N/E/EL之后?而不仅仅是一个“”(空格)?
所以“N.5800.578”而不是“N.35800.578”?

Dakine 发表于 2022-7-6 08:10:14

PBe,
那是正确的,我的过错至今没有表现清楚。
它最初看起来像N.XXXXX。三十、 E.XXXXX。三十、 EL。XXX。XXX。
前一个仍然有效,我所要做的就是找到N并替换为N,同样对于E和El。如果它为所有人做一次拍摄,并将颜色改为红色,那就太好了。
提前感谢,
页: [1] 2
查看完整版本: 使用全局编辑文本字符串