(defun c:tt ();这是llsheng_73的程序,可以提取同心圆,就是没有对圆心rtos偏差,怎么改呢,刚学习几天还不会改
(setq ss (ssget '((0 . "circle"))))
(if ss
(progn
(setq m (sslength ss)
n 0
)
(while (< n m)
(setq e (ssname ss n)
n (1+ n)
l n
p (assoc 10 (entget e)) ;;用rtos设置容差
P (vl-princ-to-string (list (nth 1 p) (nth 2 p)))
a nil
)
(while (< l m)
(setq f (ssname ss l)
l (1+ l)
p1 (assoc 10 (entget f)) ;;用rtos设置容差
P1 (vl-princ-to-string (list (nth 1 p1) (nth 2 p1)))
)
(if (= p p1)
(progn
(ssdel f ss)
;(entdel f)
(command "layer" "m" 1 "" "change" f "" "p" "la" 1 "")
(setq l (1- l)
m (1- m)
a t
)
)
)
)
(if a
(progn
(ssdel e ss)
;(entdel e)
(command "layer" "m" 1 "" "change" e "" "p" "la" 1 "")
(setq n (1- n)
m (1- m)
)
)
)
)
)
)
)
;已解决。
(defun c:tt ()
(setq ss (ssget '((0 . "circle,arc"))))
(if ss
(progn
(setq m (sslength ss)
n 0
)
(while (< n m)
(setq e (ssname ss n)
n (1+ n)
l n
p (assoc 10 (entget e))
P (vl-princ-to-string (list (nth 1 p) (nth 2 p)))
a nil
)
(while (< l m)
(setq f (ssname ss l)
l (1+ l)
p1 (assoc 10 (entget f))
P1 (vl-princ-to-string (list (nth 1 p1) (nth 2 p1)))
)
(if (equal P P1 2) ;(< (distance P P1) 2)
(progn
(ssdel f ss)
;(entdel f)
(command "layer" "m" 1 "" "change" f "" "p" "la" 1 "")
(setq l (1- l)
m (1- m)
a t
)
)
)
)
(if a
(progn
(ssdel e ss)
;(entdel e)
(command "layer" "m" 1 "" "change" e "" "p" "la" 1 "")
(setq n (1- n)
m (1- m)
)
)
)
)
)
)
)
哪位大神帮忙看看哪里不对啊 我要批量把外圆改成蓝色 内圆改成红色
(defun c:tt1 ()
(setq ss (ssget '((0 . "circle"))))
(if ss
(progn
(setq m (sslength ss)
n 0
)
(while (< n m)
(setq e (ssname ss n)
n (1+ n)
l n
p (assoc 10 (entget e))
r (cdr (assoc 40 (entget e)))
P (vl-princ-to-string (list (nth 1 p) (nth 2 p)))
a nil
)
(while (< l m)
(setq f (ssname ss l)
l (1+ l)
p1 (assoc 10 (entget f))
rr (cdr (assoc 40 (entget f)))
P1 (vl-princ-to-string (list (nth 1 p1) (nth 2 p1)))
)
(if (equal P P1 20)
(progn
(ssdel f ss)
(if (> r rr )
(progn
(command "change" f "" "p" "c" 40 "")))
(if (< r rr )
(progn
(command "change" f "" "p" "c" 5 "")))
(setq l (1- l)
m (1- m)
a t
)
)
)
)
(if a
(progn
(ssdel e ss)
(if (> r rr )
(progn
(command "change" e "" "p" "c" 5 "")))
(if (< r rr )
(progn
(command "change" e "" "p" "c" 40 "")))
(setq n (1- n)
m (1- m)
)
)
)
)
)
)
)