;; | ---------------------------------------------------------------------------- ;; | GE_IntersectWith ;; | ---------------------------------------------------------------------------- ;; | Function : Returns the intersection points between two entities ;; | Arguments: 'ename1' - First entity ;; | 'ename2' - Second entity ;; | 'extFlag' - Extend Flag, can be either: ;; | acExtendNone - Does not extend either object. ;; | acExtendThisEntity - Extends the base object ;; | acExtendOtherEntity - Extends the object passed as ;; | an argument ;; | acExtendBoth - Extends both objects ;; | Returns : A list of points where 'ename1' intersects 'ename2' ;; | ;; | Comments: Valid objects for intersection checking 'ename1' and 'ename2' ;; | are LINE, ARC, CIRCLE, POLYLINE, LWPOLYLINE, SPLINE, ELLIPSE ;; | ActiveX function - requires AutoCAD 2000 or better ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun GE_IntersectWith ( ename1 ename2 extFlag / en1 en2 IPts oname1 oname2 ) (setq en1 (LI_item 0 (entget ename1)) en2 (LI_item 0 (entget ename2)) IPts nil ) (if (and (member en1 (list "LINE" "ARC" "CIRCLE" "POLYLINE" "LWPOLYLINE" "SPLINE" "ELLIPSE")) (member en2 (list "LINE" "ARC" "CIRCLE" "POLYLINE" "LWPOLYLINE" "SPLINE" "ELLIPSE")) ) (progn (setq oname1 (vlax-ename->vla-object ename1) oname2 (vlax-ename->vla-object ename2) IPts (vla-intersectWith oname1 oname2 extFlag) ) (if IPts (progn (if (AX_IsArray IPts) (setq IPts (AX_Array->List IPts 3)) (setq IPts nil) ) )) (vlax-release-object oname1) (vlax-release-object oname2) ) (setq IPts nil) ) IPts )