- (defun c:tt ( / ss sss i ent box linedis boxcenter pt DrawingName DrawingNum ShortNum)
- (if (setq ss (ssget (list '(0 . "INSERT") '(66 . 1) '(2 . "A*_LZTK_*"))))
- (repeat (setq i (sslength ss))
- (setq ent (ssname ss (setq i (1- i)))
- box (GetBoundingBox ent)
- linedis (distance (car box) (cadr box))
- boxcenter (polar (car box) (angle (car box) (cadr box)) (* 0.5 linedis))
- pt (polar boxcenter (* 0.5 PI) (* 0.65 (abs (- (cadar box) (cadadr box)))));文字距离图框距离
- )
- (if (setq sss (ssget "_w" (car box) (cadr box) (list '(0 . "INSERT") '(66 . 1) '(2 . "12号线-标准图签_LZ_1_1"))))
- (setq ent (ssname sss 0)
- DrawingName (GetAttributeValue (vlax-ename->vla-object ent) "图名")
- DrawingNum (GetAttributeValue (vlax-ename->vla-object ent) "图号")
- ShortNum (substr DrawingNum (- (strlen DrawingNum) 2))
- )
- )
- (entmake (list '(0 . "TEXT")
- (cons 1 (strcat ShortNum " " DrawingName))
- (cons 10 pt)
- (cons 7 "STANDARD");文字样式
- (cons 40 (* 0.1 linedis));文字高度
- (cons 41 0.7)
- (cons 72 1)
- (cons 73 2)
- (cons 11 pt))
- )
- )
- )
- (princ)
- )
- ;;获取图块的属性值
- (defun GetAttributeValue ( blk tag )
- (setq tag (strcase tag))
- (vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (vla-get-textstring att)))
- (vlax-invoke blk 'getattributes)
- )
- )
- ;;物体包围盒
- (defun GetBoundingBox (ent / ll ur)
- (vla-getboundingbox (vlax-ename->vla-object ent) 'll 'ur)
- (mapcar 'vlax-safearray->list (list ll ur))
- )
- (vl-load-com)
- (princ "\n命令: tt")
- (princ)
|