 - (defun c:XDTB_PLSegLen (/ _process val)
- (defun _process (e / segs inx g v #angle #length #midpoint p1)
- (setq segs (xdrx_polyline_numverts e))
- (setq inx 0)
- (repeat segs
- (if (setq g (xdrx_polyline_getlinesegat e inx t))
- (progn
- (xdge::getpropertyvalue g "length" "midpoint" "angle")
- )
- (progn
- (setq g (xdrx_polyline_getarcsegat e inx t))
- (xdge::getpropertyvalue g "length" "midpoint")
- (setq v (xdrx_curve_getfirstderiv e #midpoint)
- #angle (xdrx_vector_angle v)
- )
- )
- )
- (setq #angle1 (xd::geom:angleformat #angle)
- p1 (trans (polar #midpoint (- #angle (/ pi 2.0))
- (* 3 (/ #txt_height 2.0))
- ) e 0
- )
- )
- (if (xdrx_point_isinside p1 e)
- (setq p1 (trans (polar #midpoint (+ #angle (/ pi 2.0)) (/ #txt_height 2.0)) e 0))
- )
- (xdrx_text_make p1 (rtos #length 2 #txt_bit) (getvar "textstyle")
- #txt_height #angle
- )
- (xd::text:setalignment (entlast) p1 "BC")
- (xd::text:adjust (entlast))
- (setq inx (1+ inx))
- )
- (xdge::free g)
- )
- (if (not #txt_height)
- (setq #txt_height 3.5)
- )
- (if (not #txt_bit)
- (setq #txt_bit 1)
- )
- (if (setq val (getint (xdrx_prompt "\n保留位数<" #txt_bit ">:" t)))
- (setq #txt_bit val)
- )
- (if (setq val (getreal (xdrx_prompt "\n字高<" #txt_height ">:" t)))
- (setq #txt_height val)
- )
- (xdrx_begin)
- (xdrx_sysvar_push '("dimzin" 0))
- (if (and
- (xdrx_initssget "\n选择多段线<退出>:")
- (setq ss (xdrx_ssget '((0 . "LWPOLYLINE"))))
- )
- (progn
- (xd::text:init 1)
- (mapcar
- '(lambda (x)
- (_process x)
- )
- (xdrx_pickset->ents ss)
- )
- )
- )
- (xdrx_sysvar_pop)
- (xdrx_end)
- (princ)
- )
|