仅编辑mu的第一位数字
你好首先,我要感谢在座的伟人分享他们的知识经验和宝贵的时间。我在这里学到了很多东西,这是一个很棒的论坛。
我的问题是我在一个图形中插入了多个块,块包含一个属性,任务是显示我所做的地面标高(请参见附图),但现在我需要将所有标高更新1米,例如,如果ts为6.250,我需要将其设置为7.250,则所有块属性中只有第一个数字会更改。
如果有人能为我提供一个lisp例程,或者我必须逐个更新所有900个插入的块,我将不胜感激。
谢谢
请帮忙 这是我们用来提高或降低道路标高的文本,它是说街区的起点。我看看是否有时间重写。
;Adds a fixed amount to a number
(PRINC "TO USE JUST TYPE A2LM")
(DEFUN c:A2LM ()
(setvar "cmdecho" 1)
(setq olddimzin (getvar "Dimzin"))
(setvar "dimzin" 0)
(setq v2 (getreal "\nEnter ht adjustment "))
(setq ss (ssget (list (cons 0 "Text"))))
(setq len (sslength ss))
(setq x 0)
(repeat len
(setq en1 (ssname ss x))
(setq el1 (entget en1))
(setq v1 (atof (cdr (assoc 1 el1))))
(setq a (+ v1 v2))
(setq b (rtos a 2 3))
(setq el (subst (cons 1 b) (assoc 1 el1) el1))
(entmod el)
(setq x (+ x 1))
) ; repeat
(setq el nil)
(setq en nil)
(setq a nil)
(setq v1 nil)
(setq ss nil)
(setvar "cmdecho" 1)
(setvar "dimzin" olddimzin)
(princ)
); END DEFUN
试试这个,你需要做两个更改块名和标记名。注意,由于我没有您的图纸,因此未对其进行测试。
;Adds a fixed amount to a number
(vl-load-com)
(PRINC "TO USE JUST TYPE A2LB")
(DEFUN c:A2LB ( / SS v2 val lev)
(setq tag1 "POINT") ;attribute tag name
(setq v2 (getreal "\nEnter ht adjustment "))
(setq ss (ssget (list (cons 0 "Insert"))))
(setq len (sslength ss))
(setq x 0)
(repeat len
(setq lev (vlax-ename->vla-object (ssname ss x)))
(foreach att (vlax-invoke lev 'getattributes)
(if (= tag1 (strcase (vla-get-tagstring att)))
(progn
(setq val (atof (vla-get-textstring att)))
(vla-put-textstring att (rtos (+ val v2) 2 3))
)
)
) ;foreach
(setq x (+ x 1))
) ; repeat
(princ)
); END DEFUN
早上好BIGAL
第一个用于多文本编辑的lisp工作正常,因为第二个lisp Autocad无法识别命令A2LM。
谢谢。。。。 我的第二个帖子现在有一个2磅的附加到关卡。您必须编辑红色值!
还固定了整数v的实itof 谢谢你的回复
它仍显示为未知命令
我附上了一个样本图纸,标签名称是点,块名称是水平标签
图纸3.dwg 我已经修改了上面的代码,但需要稍作修改,以便它能够识别您正在使用的动态块。我确实有几个拼写错误。但它对我来说效果很好,如果你选错了,它会尝试改变任何一个方块。 效果很好。。。非常感谢你 不用担心,这很容易,因为已经有代码可以破解了。
页:
[1]