(defun c:xdtb_zxx (/ #length _pi2 an box centroid dashlength dist1 dist2 e ep1 ep2 hxl hyl info majoraxis mid1 mid2 minor p p1 p2 p3 p4 pcen pts radius scl sp sp1 sp2 ss temp typ v1 v2 x xl yl ) (setq _pi2 (/ pi 2)) (defun mkmark (p an xl yl / hxl hyl p1 p2 p3 p4) (setq hxl (* 1.4 xl) hyl (* 1.4 yl) p1 (polar p an hxl) p2 (polar p (+ an pi) hxl) p3 (polar p (+ an _pi2) hyl) p4 (polar p (- an _pi2) hyl) ) (xdrx_line_make p1 p2) (xdrx_setpropertyvalue (entlast) "layer" "中心线" "linetypescale" scl ) (xdrx_line_make p3 p4) (xdrx_setpropertyvalue (entlast) "layer" "中心线" "linetypescale" scl ) ) (defun Polyline_center (e / info pts p1 p2 p3 p4 sp radius) (setq info (xdrx_curve_info e) pts (xd::list:removedup (xdrx_getpropertyvalue e "vertices")) ) (cond ((XD::Polyline:IsRectang e) (mapcar 'set '(p1 p2 p3 p4) pts) (setq dist1 (distance p1 p2) dist2 (distance p2 p3) scl (/ (* 0.4 (min dist1 dist2)) dashlength) ) (mkmark (cadr (assoc "Centroid" info)) (angle p1 p2) (* (distance p1 p2) 0.5) (* (distance p2 p3) 0.5) ) ) ((XD::Polyline:isRegularPolygon e) (setq pcen (cadr (assoc "Centroid" (xdrx_curve_info e))) sp (xdrx_curve_getstartpoint e) radius (distance sp pcen) scl (/ (* 0.8 radius) dashlength) ) (mkmark Pcen (angle pcen sp) radius radius) ) (t (other_center e)) ) ) (defun other_center (e / info centroid box) (setq info (xdrx_curve_info e) centroid (cadr (assoc "Centroid" info)) box (mapcar 'abs (apply 'mapcar (cons '- (cdr (assoc "Box" info))))