求将符合条件的圆半径变成一半,不符合条件的圆变红色
本帖最后由 品茗新秀 于 2013-1-6 17:45 编辑求将符合条件的圆半径变成一半,不符合条件的圆变红色
这个条件就是当两圆相交或重合是条件
这个条件图也太让人看不懂了,以自己的理解写了一个
圆内圆的时候可能会将内圆变红(defun x_ssn (ss / n lst)
(repeat (setq N (sslength ss))
(setq LST (cons (ssname SS (setq N (1- N))) LST))
)
)
(defun circle_lst (en n / ent pt ptc dist ang lst tmp)
(setq ent(entget en)
pt (cdr (assoc 10 ent))
dist (cdr (assoc 40 ent))
tmp0
ang(/ pi n 0.5)
lstnil
)
(repeat n
(setq ptc (polar pt tmp dist)
tmp (+ tmp ang)
lst (cons ptc lst)
)
)
lst
)
(defun c:test1 (/ ss lst en)
(setq ss (ssget '((0 . "circle"))))
(setq lst (x_ssn ss))
(while lst
(setq en (car lst))
(setq
ss (ssdel en (ssget "cp" (circle_lst en 64) '((0 . "circle"))))
)
(if (> (sslength ss) 0)
(progn
(mapcar '(lambda (cir)
(vla-put-Diameter
(vlax-ename->vla-object cir)
(cdr (assoc 40 (entget cir)))
)
)
(x_ssn ss)
)
(vla-put-Diameter
(vlax-ename->vla-object en)
(cdr (assoc 40 (entget en)))
)
(setq
lst (foreach n (x_ssn ss) (vl-remove n (vl-remove en lst)))
)
)
(progn
(vla-put-color (vlax-ename->vla-object en) 1)
(setq lst (cdr lst))
)
)
)
(princ)
) 用arx 调用intersectWith接口就解决问题了 请提供dwg测试图,并详细说明通过什么操作达到什么结果
页:
[1]