写了一个,感觉不完善
用了grread,距离就不知道怎么用键盘输入
期待高人完善
 - (vl-load-com)
- (setvar "cmdecho" 0)
- (setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))
- (setq *MoSpace* (vla-get-ModelSpace *AcadDoc*))
- (defun c:tt (/ ent stpt enpt midpt lineang txt grpt pt templine)
- (if (not *txth*)
- (setq *txth* (cond ((getreal "\n输入标注文字高度:"))
- (2.0)
- )
- )
- )
- (if (and (setq ent (car (entsel "\n选择直线:")))
- (setq elst (entget ent))
- (equal (cdr (assoc 0 elst)) "LINE")
- )
- (progn
- (if (setq txt (getstring "\n输入标注文字:"))
- (progn
- (setq stpt (cdr (assoc 10 elst))
- enpt (cdr (assoc 11 elst))
- midpt (mapcar '(lambda (x y) (/ (+ x y) 2.)) stpt enpt)
- lineang (angle stpt enpt)
- )
- (setq grpt (cadr (grread 5)))
- (setq
- grdist (distance (vlax-curve-getclosestpointto ent grpt)
- grpt
- )
- )
- (if (LM:Clockwise-p stpt enpt grpt)
- (setq temppt (polar midpt (- lineang (* pi 0.5)) grdist)
- txtang (+ lineang pi)
- )
- (setq temppt (polar midpt (+ lineang (* pi 0.5)) grdist)
- txtang lineang
- )
- )
- (setq txtobj (Xr:drawtext txt temppt *txth*))
- (vla-put-rotation txtobj txtang)
- (prompt "\n选择方向和距离:")
- (while (and (setq gr (grread 5))
- (= (car gr) 5)
- )
- (setq grpt (cadr gr))
- (setq
- grdist (distance (vlax-curve-getclosestpointto ent grpt)
- grpt
- )
- )
- (if (LM:Clockwise-p stpt enpt grpt)
- (setq temppt (polar midpt (- lineang (* pi 0.5)) grdist)
- txtang (+ lineang pi)
- )
- (setq temppt (polar midpt (+ lineang (* pi 0.5)) grdist)
- txtang lineang
- )
- )
- (vlax-put-property
- txtobj
- 'TextAlignmentPoint
- (vlax-3d-point temppt)
- )
- (vla-put-rotation txtobj txtang)
- (redraw)
- ) ;_ while
- )
- )
- )
- (progn
- (princ "\n选择的不是直线或者取消选择")
- (princ)
- )
- )
- )
- (defun LM:Clockwise-p (p1 p2 p3)
- ((lambda (n) (< (car (trans p2 0 n)) (car (trans p1 0 n))))
- (mapcar '- p1 p3)
- )
- )
- ;;;绘制文字
- (defun Xr:Drawtext (txtstring txtpt txtheight / otext textpt)
- (setq textpt (vlax-3d-point txtpt))
- (setq
- otext (vla-addtext *MoSpace* txtstring textpt txtheight)
- )
- (vlax-put-property otext 'Alignment 10)
- (vlax-put-property otext 'TextAlignmentPoint textpt)
- otext
- )
|