选择集的问题求助
例如图里有一个正方形和一个三角形。能不能通过判断线是否相连或者几条线是否构成封闭区域,来把正方形和三角形定义成2个选择集呢? 可以。 能告诉我方法不 <p>思路已经知道 能告诉我下 如何判断2个图元是否有交点吗? 例如一个直线X1跟圆弧X2是否有交点</p><p></p> vla-intersectwith <p>你试试这个,得到实体交点列表</p><p>(defun c:get_int0( / ent1 ent2 ps)<br/> (setq ent1 (car (entsel "选择第一实体:")))<br/> (setq ent2 (car (entsel "选择第二实体:")))<br/> (print)<br/> (setq ps (obj_int ent1 ent2))<br/>)<br/>;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br/>;功能:返回两个对象的所有交点<br/>;参数: ent1、ent2 均为ename对象<br/>(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)<br/> (setq ax_ent_1 (vlax-ename->vla-object ent1)<br/> ax_ent_2 (vlax-ename->vla-object ent2)<br/> )<br/> (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/> (setq intpoints (vlax-variant-value intpoints))<br/> (setq i 0)<br/> (if (> (vlax-safearray-get-u-bound intpoints 1) 0)<br/> (repeat (/ (+ 1<br/> (- (vlax-safearray-get-u-bound intpoints 1)<br/> (vlax-safearray-get-l-bound intpoints 1)<br/> )<br/> )<br/> 3<br/> )<br/> (setq points (append points (list (list<br/> (vlax-safearray-get-element intpoints i)<br/> (vlax-safearray-get-element intpoints (+ i 1))<br/> (vlax-safearray-get-element intpoints (+ i 2))<br/> )))<br/> )<br/> (setq i (+ 3 i))<br/> )<br/> )<br/> points<br/>)</p> <p></p><p>(defun c:get_int0( / ent1 ent2 ps)<br/> (setq ent1 (car (entsel "选择第一实体:")))<br/> (setq ent2 (car (entsel "选择第二实体:")))<br/> (print)<br/> (setq ps (obj_int ent1 ent2))<br/>)<br/>;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br/>;功能:返回两个对象的所有交点<br/>;参数: ent1、ent2 均为ename对象<br/>(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)<br/> (setq ax_ent_1 (vlax-ename->vla-object ent1)<br/> ax_ent_2 (vlax-ename->vla-object ent2)<br/> )<br/> (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/> (setq intpoints (vlax-variant-value intpoints))<br/> (setq i 0)<br/> (if (> (vlax-safearray-get-u-bound intpoints 1) 0)<br/> (repeat (/ (+ 1<br/> (- (vlax-safearray-get-u-bound intpoints 1)<br/> (vlax-safearray-get-l-bound intpoints 1)<br/> )<br/> )<br/> 3<br/> )<br/> (setq points (append points (list (list<br/> (vlax-safearray-get-element intpoints i)<br/> (vlax-safearray-get-element intpoints (+ i 1))<br/> (vlax-safearray-get-element intpoints (+ i 2))<br/> )))<br/> )<br/> (setq i (+ 3 i))<br/> )<br/> )<br/> points<br/>)</p> 我怎么没有理解楼主说的什么啊 <p>(defun c:get_int0( / ent1 ent2 ps)<br/> (setq ent1 (car (entsel "选择第一实体:")))<br/> (setq ent2 (car (entsel "选择第二实体:")))<br/> (print)<br/> (setq ps (obj_int ent1 ent2))<br/>)<br/>;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br/>;功能:返回两个对象的所有交点<br/>;参数: ent1、ent2 均为ename对象<br/>(defun obj_int (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)<br/> (setq ax_ent_1 (vlax-ename->vla-object ent1)<br/> ax_ent_2 (vlax-ename->vla-object ent2)<br/> )<br/> (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/> (setq intpoints (vlax-variant-value intpoints))<br/> (setq i 0)<br/> (if (> (vlax-safearray-get-u-bound intpoints 1) 0)<br/> (repeat (/ (+ 1<br/> (- (vlax-safearray-get-u-bound intpoints 1)<br/> (vlax-safearray-get-l-bound intpoints 1)<br/> )<br/> )<br/> 3<br/> )<br/> (setq points (append points (list (list<br/> (vlax-safearray-get-element intpoints i)<br/> (vlax-safearray-get-element intpoints (+ i 1))<br/> (vlax-safearray-get-element intpoints (+ i 2))<br/> )))<br/> )<br/> (setq i (+ 3 i))<br/> )<br/> )<br/> points<br/>)</p>
页:
[1]