这是我刚刚为你写的,我希望它能满足你的需要。
您的图形应具有Dim样式Dims-96,以使例程按需工作,否则例程将考虑当前活动的Dim样式。
试试看。。。
- (defun c:Test (/ *error* acdoc p1 dir str p2 p3 e)
- ;; == Tharwat 29. 08. 2011 == ;;
- (vl-load-com)
- (defun *error* (msg)
- (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
- (princ (strcat "\n** Error: " msg " **"))
- )
- (princ)
- )
- (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
- (if
- (and
- (setq p1 (getpoint "\n Specify Ledaer start Point :"))
- (progn (initget 1 "Right Left")
- (setq dir (getkword "\n Specify the direction <Right/Left> :"))
- )
- (setq str (getstring T "\n Enter Your Text :"))
- )
- (progn
- (vla-StartUndoMark acdoc)
- (cond
- ((eq dir "Right")
- (progn (setq p2 (list (+ (car p1) 34.5) (+ (cadr p1) 128.7) 0.))
- (setq p3 (polar p2 0. 165.)
- )
- )
- ((eq dir "Left")
- (progn (setq p2 (list (- (car p1) 34.5) (+ (cadr p1) 128.7) 0.))
- (setq p3 (polar p2 pi 165.)
- )
- )
- )
- (if str
- (setq e (entmakex (list '(0 . "TEXT")
- '(100 . "AcDbEntity")
- '(100 . "AcDbText")
- '(410 . "Model")
- (cons 10 (trans p3 1 0))
- '(40 . 10.5)
- (cons 1 str)
- '(50 . 0.)
- '(210 0.0 0.0 1.0)
- )
- )
- )
- )
- (entmakex (list '(0 . "LEADER")
- '(100 . "AcDbEntity")
- '(100 . "AcDbLeader")
- '(410 . "Model")
- '(8 . "ANNO-TEXT")
- '(3 . "Dims-96")
- (cons 10 (trans p1 1 0))
- (cons 10 (trans p2 1 0))
- (cons 10 (trans p3 1 0))
- '(71 . 1)
- '(72 . 0)
- '(73 . 0)
- '(74 . 0)
- '(75 . 0)
- '(40 . 10.5)
- '(41 . 7.6)
- '(76 . 3)
- (cons 340 e)
- )
- )
- )
- (princ)
- )
- (vla-EndUndoMark acdoc)
- (princ)
- )
Tharwat |