@javeed4teen hi,
check DMR command.
The dimension leader (for the radius) is 0.7 * radius long
if overlapping arcs exist, the arc in question may not found.
dimension style settings is on you 😀
enjoy
Moshe
; custom dimradius
(defun c:dmr (/ data_filter ; local function
LEADER_FACTOR ss ename elist m0 m1 m2 sa ea r0 item p0 p1 blg a0 ax)
(defun data_filter (xdata / i)
(setq i -1)
(vl-remove-if
'not
(mapcar
(function
(lambda (item)
(setq i (1+ i))
(if (and
(= (car item) 10)
(= (car (nth (+ i 3) xdata)) 42)
(/= (cdr (nth (+ i 3) xdata)) 0.0)
(= (car (nth (+ i 5) xdata)) 10)
)
(list (cdr item) (cdr (nth (+ i 3) xdata)) (cdr (nth (+ i 5) xdata)))
); if
); lambda
); function
xdata
); mapcar
); vl-remove-if
); data_filter
; here start c:dmr
(setvar "cmdecho" 0)
(command "._undo" "_begin")
(setq LEADER_FACTOR 0.7) ; const
(if (setq ss (ssget '((0 . "arc,lwpolyline"))))
(foreach ename (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq elist (entget ename))
(cond
((eq (cdr (assoc ' 0 elist)) "ARC")
(setq m1 (cdr (assoc '10 elist)))
(setq sa (cdr (assoc '50 elist)))
(setq ea (cdr (assoc '51 elist)))
(setq r0 (cdr (assoc '40 elist)))
(if (< sa ea)
(setq m2 (polar m1 (+ sa (/ (- ea sa) 2)) r0))
(setq m2 (polar m1 (+ ea (/ (- sa ea) 2)) r0))
)
); case
( t
(foreach item (data_filter elist)
(setq p0 (car item))
(setq blg (cadr item))
(setq p1 (caddr item))
(setq a0 (* (atan (abs blg)) 2))
(setq ax (* (distance p0 p1) 0.5))
(setq m0 (polar p0 (angle p0 p1) ax))
(setq r0 (/ ax (sin a0)))
(if (minusp blg)
(setq m1 (polar p0 (- (angle p0 p1) (- (* pi 0.5) a0)) r0))
(setq m1 (polar p0 (+ (angle p0 p1) (- (* pi 0.5) a0)) r0))
)
(setq m2 (polar m1 (angle m1 m0) r0))
); foreach
); case
); cond
; execute command
(if (ssget m2 '((0 . "arc,lwpolyline"))) ; make sure the arc is there
(command "._dimradius" m2 (polar m1 (angle m1 m2) (* r0 LEADER_FACTOR)))
)
); foreach
); if
(command "._undo" "_end")
(setvar "cmdecho" 1)
(princ)
); c:dmr