zhelindaxues 发表于 2010-1-21 19:38:00

选择集的问题求助

例如图里有一个正方形和一个三角形。能不能通过判断线是否相连或者几条线是否构成封闭区域,来把正方形和三角形定义成2个选择集呢?

ZZXXQQ 发表于 2010-1-21 20:00:00

可以。

zhelindaxues 发表于 2010-1-21 20:51:00

能告诉我方法不

zhelindaxues 发表于 2010-1-21 21:08:00

<p>思路已经知道 能告诉我下 如何判断2个图元是否有交点吗? 例如一个直线X1跟圆弧X2是否有交点</p><p></p>

wwwliuyu 发表于 2010-1-21 22:09:00

vla-intersectwith

客人 发表于 2010-1-23 05:13:00

<p>你试试这个,得到实体交点列表</p><p>(defun c:get_int0( / ent1 ent2 ps)<br/>&nbsp; (setq ent1 (car (entsel "选择第一实体:")))<br/>&nbsp; (setq ent2 (car (entsel "选择第二实体:")))<br/>&nbsp; (print)<br/>&nbsp; (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/>&nbsp;&nbsp; (setq ax_ent_1 (vlax-ename-&gt;vla-object ent1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ax_ent_2 (vlax-ename-&gt;vla-object ent2)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/>&nbsp;&nbsp; (setq intpoints (vlax-variant-value intpoints))<br/>&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp; (if (&gt; (vlax-safearray-get-u-bound intpoints 1) 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (repeat (/ (+ 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (vlax-safearray-get-u-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-l-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq points (append points (list (list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ 3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; points<br/>)</p>

客人 发表于 2010-1-23 05:24:00

<p></p><p>(defun c:get_int0( / ent1 ent2 ps)<br/>&nbsp; (setq ent1 (car (entsel "选择第一实体:")))<br/>&nbsp; (setq ent2 (car (entsel "选择第二实体:")))<br/>&nbsp; (print)<br/>&nbsp; (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/>&nbsp;&nbsp; (setq ax_ent_1 (vlax-ename-&gt;vla-object ent1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ax_ent_2 (vlax-ename-&gt;vla-object ent2)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/>&nbsp;&nbsp; (setq intpoints (vlax-variant-value intpoints))<br/>&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp; (if (&gt; (vlax-safearray-get-u-bound intpoints 1) 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (repeat (/ (+ 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (vlax-safearray-get-u-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-l-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq points (append points (list (list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ 3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; points<br/>)</p>

hnjzzbb 发表于 2010-1-23 16:52:00

我怎么没有理解楼主说的什么啊

李龙山 发表于 2010-1-24 20:40:00

<p>(defun c:get_int0( / ent1 ent2 ps)<br/>&nbsp; (setq ent1 (car (entsel "选择第一实体:")))<br/>&nbsp; (setq ent2 (car (entsel "选择第二实体:")))<br/>&nbsp; (print)<br/>&nbsp; (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/>&nbsp;&nbsp; (setq ax_ent_1 (vlax-ename-&gt;vla-object ent1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ax_ent_2 (vlax-ename-&gt;vla-object ent2)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))<br/>&nbsp;&nbsp; (setq intpoints (vlax-variant-value intpoints))<br/>&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp; (if (&gt; (vlax-safearray-get-u-bound intpoints 1) 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (repeat (/ (+ 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (- (vlax-safearray-get-u-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-l-bound intpoints 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq points (append points (list (list<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-get-element intpoints (+ i 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ 3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; points<br/>)</p>
页: [1]
查看完整版本: 选择集的问题求助