我猜你不确定N或E之后的空格“”总是存在,因此需要while。。。。
仓促写成
-
- (defun c:SuBVal (/ ss i en prf v clr)
- (if (setq ss (ssget ":L" '((0 . "TEXT")(1 . [color=blue]"E. #*,EL. #*,N. #*"[color=black]))))[/color][b][color=black] [/color]
- [/b][/color] (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. ") [color=blue]210.50)
- [/color] ((eq prf "N. ") [color=blue]400.00[/color] )
- ((eq prf "EL.") [color=blue](setq str (substr str 2)
- prf (strcat prf " ")) 3.70[/color] )))
- )
- (progn
- (vla-put-textstring (setq en (vlax-ename->vla-object en))
- (strcat prf
- (rtos (- (distof (substr str 3) 2) [color=blue]v[/color]) 2 3)))
- [color=blue](vla-put-color en 1)[/color])
- )
- )
- )
- (princ)
- )
编辑:“E.#*,EL.#*,N.#*” |