[求助]有关批量标注圆
www.dimcax.com
[求助]有关批量标注圆
有人知道批量标注,就是图形内有多个不等直径的圆,如何一次性框选后自动标出所选对象的是半径的就标半径,是直径的就标直径
d
使用命令qdim就搞定
d
qdim是连续标注,不是批量标圆的半径啊
d
(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)
(setq rs (ssget "c" pt1 pt2 '((0 . "circle"))))
(if rs
(progn
(setq n 0)
(repeat (sslength rs)
(setq rslst (entget (ssname rs n)))
(setq po (cdr (assoc 10 rslst)));圆心
(setq px (car po))
(setq py (cadr po))
(setq rv (cdr (assoc 40 rslst)));半径
(cond
((= "arc" (cdr (assoc 0 rslst)))
(setq ang1 (cdr (assoc 50 rslst)))
(setq ang2 (cdr (assoc 51 rslst)))
(setq angc (/ (+ ang2 ang1) 2.0))
(setq cx (+ px (* rv (cos angc))))
(setq cy (+ py (* rv (sin angc))))
;(command "dimradius" (list (ssname rs n) (list cx cy 0)))
;;; (princ "\n poic is")
;;; (princ (list cx cy))
)
((= "circle" (cdr (assoc 0 rslst)))
;;; (princ "\n")
;;; (princ "circle")
(setq angc (/ pi 4.0))
(setq cx (+ px (* rv (cos angc))))
(setq cy (+ py (* rv (sin angc))))
;;; (princ "\n poic is")
;;; (princ (list cx cy))
)
)
(command "dimdiameter" (list (ssname rs n ) (list cx cy 0)) "")
(setq n (1+ n))
)
)
)
此代码即可解决了
d