其实没啥,就是先生成文字: [Actionscript3] 纯文本查看 复制代码 (defun c:plLen (/ cEnt tStr tBox tHgt tWid gr sPt cPt lAng bPt tPt pt1
pt2 pt3 pt4 e)
(vl-load-com)
(if (and (setq cEnt (car (entsel "\n选择对象: ")))
(member (cdr (assoc 0 (entget cEnt)))
'("LWPOLYLINE" "POLYLINE" "LINE")
) ;_ end of member
) ;_ end of and
(progn
(setq tStr (rtos (/ (vla-get-length
(vlax-ename->vla-object cEnt)
) 1000.0) ;_ end of vla-get-length
2
3
) ;_ end of rtos
tBox (textbox (list (cons 1 tStr) (cons 40 (getvar "TEXTSIZE")))
) ;_ end of textbox
tHgt (- (cadadr tBox) (cadar tBox))
twid (- (caadr tBox) (caar tBox))
) ;_ end of setq
;(Make_Text '(0.0 0.0 0.0) tStr 0.0);写入文字
;(setq e (vlax-ename->vla-object (entlast)))
(princ "\n文字插入点...")
(while (eq 5 (car (setq gr (grread t 5 0))))
(redraw)
(if (listp (setq sPt (cadr gr)))
(progn
(setq cPt (vlax-curve-getClosestPointto cEnt sPt)
lAng (angle cPt sPt)
bpt (polar cPt lAng (/ (getvar "TEXTSIZE") 2.))
tpt (polar bpt lAng tHgt)
mPt (polar bPt lAng (/ tHgt 2.))
pt1 (polar bpt (+ lAng (/ pi 2.)) (/ tWid 2.))
pt2 (polar bPt (- lAng (/ pi 2.)) (/ tWid 2.))
pt3 (polar tpt (+ lAng (/ pi 2.)) (/ tWid 2.))
pt4 (polar tPt (- lAng (/ pi 2.)) (/ tWid 2.))
) ;_ end of setq
;(grvecs (list -3 pt1 pt2 pt3 pt4 pt1 pt3 pt2 pt4))
;(vla-put-insertionPoint e (vlax-3d-point mPt));修改文字插入点
;(vla-put-TextAlignmentPoint e (vlax-3d-point mPt));修改文字对齐点
(setq lAng (- lAng (/ pi 2.)))
(cond ((and (> lAng (/ pi 2)) (<= lAng pi))
(setq lAng (- lAng pi))
)
((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
(setq lAng (+ lAng pi))
)
) ;_ end of cond
;(vla-put-rotation e lAng);修改文字旋转角
(if e
(progn
(vla-put-insertionPoint e (vlax-3d-point mPt));修改文字插入点
(vla-put-TextAlignmentPoint e (vlax-3d-point mPt));修改文字对齐点
(vla-put-rotation e lAng);修改文字旋转角
)
(progn
(Make_Text mPt tStr lAng);写入文字
(setq e (vlax-ename->vla-object (entlast)))
)
)
) ;_ end of progn
) ;_ end of if
) ;_ end of while
(if (eq 3 (car gr))
(progn
;|(setq lAng (- lAng (/ pi 2.)))
(cond ((and (> lAng (/ pi 2)) (<= lAng pi))
(setq lAng (- lAng pi))
)
((and (> lAng pi) (<= lAng (/ (* 3 pi) 2)))
(setq lAng (+ lAng pi))
)
) ;_ end of cond|;
;(Make_Text mPt tStr lAng);写入文字
(vla-put-insertionPoint e (vlax-3d-point mPt));修改文字插入点
(vla-put-TextAlignmentPoint e (vlax-3d-point mPt));修改文字对齐点
(vla-put-rotation e lAng);修改文字旋转角
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
(princ "\n<!> 不正确的选择 <!>")
) ;_ end of if
(redraw)
(princ)
) ;_ end of defun
(defun Make_Text (pt val rot)
(entmake
(list
(cons 0 "TEXT")
(cons 8 (getvar "CLAYER"))
(cons 62 2)
(cons 10 pt)
(cons 40 (getvar "TEXTSIZE"))
(cons 1 val)
(cons 50 rot)
(cons 7 (getvar "TEXTSTYLE"))
(cons 71 0)
(cons 72 1)
(cons 73 2)
(cons 11 pt)
) ;_ end of list
) ;_ end of entmake
) ;_ end of defun
|