两多段线相交的交点坐标问题
<p>最近遇到难题,想标出线相交处的位置,在论坛上看也有不少,但是还是不够理想,有个程序是这样:</p><p>;求两实体交点<br/>(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> 判断obj_int的返回值,如果为nil,有可能没有相交或者重合,如果有值,用length判断有多少个点 呵呵,我也遇到这种问题了,不过有点不同。知道两点,不画直线,求其与多义线的交点 靠在一起(如一角点搭在另一多边形的边上),也返回,我要的是交叉的点数 vla-intersectwith 是个什么东东?能指示下么?
页:
[1]