试试下面的程序,如果要放到特定的层,自己去加吧 (defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst) (setq rs (ssget '((0 . "arc,circle")))) (if rs (progn (setq n 0) (repeat (sslength rs) (setq rslst (entget (ssname rs n))) (setq po (cdr (assoc 10 rslst)));圆心 ;;; (princ " center is:") ;;; (princ po) (setq px (car po)) (setq py (cadr po)) (setq rv (cdr (assoc 40 rslst)));半径 ;;; (princ "radius is:") ;;; (princ rv) (cond ((= "ARC" (cdr (assoc 0 rslst))) ;;; (princ "\n") ;;; (princ "arc") (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)))) ;;; (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 "dimradius" (list (ssname rs n) (list cx cy 0)) "") (setq n (1+ n)) ) ) ) ) |