增加一句就可以了.
(vla-put-VerticalTextPosition Leader 1) - (defun c:test (/ ent mspace i m wenzi a b c d aa bb cc dd ee ff gg leader)
- (setq ent (car (entsel))) ;;选择对象
- (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
- (setq i T)
- (while i
- (setq a (grread T 4 0) b (car a) c (cadr a)) ;;b=5移动,b=3左键,c=0右键,;;c=13回车,c=32空格
- (cond ((= b 5) ;当鼠标移动时
- (setq a (trans (cadr a) 1 0)) ;;鼠标移动点
- (setq d (vlax-curve-getclosestpointto ent a)) ;;a到对象ent的最近点
- (setq aa (car a) bb (cadr a) cc (caddr a)) ;;提取 a 的x,y,z
- (setq dd (car d) ee (cadr d) ff (caddr d)) ;;提取 d 的x,y,z
- ;;★创建引线★
- (setq gg (vlax-make-safearray vlax-vbDouble '(0 . 5)))
- (vlax-safearray-fill gg (list dd ee ff aa (- (cadr a) 2) cc)) ;;填满gg
- (if (not Leader) ;;如果leader为空
- (progn
- (setq m (vla-AddMText mspace (vlax-3d-point (list aa (- (cadr a) 1.5))) 0 "A")) ;;创建文字A
- (setq wenzi (vlax-make-safearray vlax-vbString '(1 . 9)))
- (vlax-safearray-fill wenzi '("TopLeft" "TopCenter" "TopRight" "MiddleLeft"
- "MiddleCenter" "MiddleRight" "BottomLeft" "BottomCenter" "BottomRight")) ;;填满wenzi
- (setq Leader (vla-AddLeader mspace gg m acLineWithArrow)) ;;创建有箭头的引线
- ) ;;end_progn
- );;end_if
- (if (<= aa dd) ;;如果鼠标移动点的x坐标值小于等于最近点的X坐标值
- (vla-put-AttachmentPoint m 9) ;;更改文字的贴附点为9(右下角)
- (vla-put-AttachmentPoint m 7) ;;更改文字的贴附点为7(左下角)
- );;end_if
- (vla-put-InsertionPoint m (vlax-3d-point (list aa (- (cadr a) 1.5)))) ;;更新文字插入点
- (vla-put-Coordinates Leader gg) ;;更新引线插入点
- (vla-put-VerticalTextPosition Leader 1)
-
- ) ;;end_cond第一个括号
- ((= b 3) (setq i nil)) ;;左键结束while(cond第二个括号)
- ) ;;end_cond
- ) ;;end_while
- (princ)
- )
-
|