如果我能看看你的图表是什么样子的,那会有帮助的。
Anyhoo试试这个:
- (defun c:SuBVal (/ ss i en prf v clr)
- [color=blue](if (not opt) (setq opt "A"))[/color]
- [color=blue](initget "A C")[/color]
- [color=blue](setq opt[/color]
- [color=blue] (cond ( (getkword[/color]
- [color=blue] (strcat "\nChoose [Annotations/Chart] <" opt ">: ")[/color]
- [color=blue] )[/color]
- [color=blue] )[/color]
- [color=blue] ( opt )[/color]
- [color=blue] )[/color]
- [color=blue])[/color]
- (if (setq ss (ssget ":L" [color=blue](list '(0 . "TEXT")[/color]
- [color=blue] (cons 1 (if (eq opt "A") "E. #*,EL. #*,N. #*" "#*")))))[/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. ") 400.00 )
- ((eq prf "N. ") 210.50)
- ((eq prf "EL.") (setq str (substr str 2)
- prf (strcat prf " ")) 3.70 )
- [color=blue]((wcmatch prf "35*") 3.70 )[/color]
- [color=blue] ((wcmatch prf "3*") 400.00 )[/color]
- [color=blue] ((wcmatch prf "2*") 210.50 )[/color]
- )
- )
- )
- (progn
- (vla-put-textstring (setq en (vlax-ename->vla-object en))
- [color=blue](if (eq opt "A")[/color]
- (strcat prf (rtos (- (distof (substr str 3) 2) v) 2 3))
- [color=blue](rtos (- (distof str 2) v) 2 3)[/color]
- )
- )
- (vla-put-color en 1))
- )
- )
- )
- (princ)
- )
|