(defun c:XDTB_DIMPL
( / ang ang1 e edim gap msg myerr olderr p1 p2 pos pts scl ss tf unit x)
(defun myerr (msg)
(princ (strcat "\n" msg))
(xdrx_end)
(setq *error* olderr)
(princ)
)
(defun _dim (e)
(setq pts (xdrx_getpropertyvalue e "vertices"))
(if (xdrx_curve_isclosed e)
(setq pts (xd::pnts:close pts))
)
(if (XD::Pnts:isClockWise pts)
(setq pts (reverse pts))
)
(setq pts (xd::list:snakepair pts))
(mapcar '(lambda (x)
(setq p1 (car x)
p2 (cadr x)
ang (angle p1 p2)
ang1 (- ang (/ pi 2.0))
pos (polar
p1
ang1
(* scl
(+ (xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap)
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianLength)
)
)
)
)
(setq edim (xdrx_dimension_makerotate p1 p2 pos ang))
(if (/= scl 1.0)
(xdrx_setpropertyvalue (entlast) "dimscale" scl)
)
(xdrx_setpropertyvalue
(entlast)
"dimexo"
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap)
)
)
pts
)
)
(xdrx_begin)
(xdrx_sysvar_push '("osmode" 33))
(setq olderr *error*)
(setq *error* myerr)
(setq tf t)
(setq unit (xd::var:getdrawingunit))
(if (not (xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianLength))
(if (= unit 0)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianLength 15)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianLength 1500)
)
)
(if (not (xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap))
(if (= unit 0)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianGap 15)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianGap 500)
)
)
(setq scl (XD::Var:GetScaleRatio))
(defun _keyword (keyword)
(if (setq
gap (getreal (xdrx_prompt
(xdrx-string-multilanguage "\n界线距离<" "\nExtension Distance<")
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap)
">:"
t
)
)
)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianGap gap)
)
(if (setq gap
(getreal (xdrx_prompt
(xdrx-string-multilanguage "\n界线长度<" "\nExtension Length<")
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianLength)
">:"
t
)
)
)
(xd::symbol:put '#XD_GLOBAL_VAR_DIMJieXianLength gap)
)
(xdrx_prompt
(xdrx-string-formatex
(xdrx-string-multilanguage
"\n** 当前设置:界线距离(%.1f) | 界线长度(%.1f) **"
"\n** Current settings: Extension Distance (%.1f) | Extension Length (%.1f) **"
)
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap)
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianLength)
)
)
)
(xd::dim:init)
(while (and (xdrx_prompt
(xdrx-string-formatex
(xdrx-string-multilanguage
"\n** 当前设置:界线距离(%.1f) | 界线长度(%.1f) **"
"\n** Current settings: Extension Distance (%.1f) | Extension Length (%.1f) **"
)
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianGap)
(xd::symbol:get '#XD_GLOBAL_VAR_DIMJieXianLength)
)
)
(xdrx_initssget
(xdrx-string-multilanguage "\n选取要标注的多段线[设置(BE)]<退出>:""\nSelect the polyline [Settings (BE)]<Exit>:")
"BE" ""
"_keyword" ""
)
(setq ss (xdrx_ssget '((0 . "*polyline"))))
)
(mapcar '(lambda (x) (_dim x)) (xdrx_pickset->ents ss))
)
(setq *error* olderr)
(xdrx_sysvar_pop)
(xdrx_end)
(princ)
)