置顶的帖子就有,你自己找吧 以下这个程序,你参考一下吧 (defun intersections (SS1 SS2 ;ss1: 选择集1, ss2: 选择集2 / SSL ;length of SS1 SSL2 ;length of ss2 PTS ;returning list AOBJ1 ;Object 1 AOBJ2 ;Object 2 N1 ;Loop counter N2 ;Loop counter IPTS ;intersects RTIPTS ;返回值 ) (vl-load-com) ;使用VLISP扩展函数 (setq N1 0 ;index for outer loop SSL (sslength SS1) ) (setq ;index for outer loop SSL2 (sslength SS2) ) ; Outer loop, first through second to last (while (< N1 SSL) ; Get object 1, convert to VLA object type (setq AOBJ1 (ssname SS1 N1) AOBJ1 (vlax-ename->vla-object AOBJ1) ) ;index for inner loop ; Inner loop, go through remaining objects (setq N2 0) (while (< N2 SSL2) ; Get object 2, convert to VLA object (setq AOBJ2 (ssname SS2 N2) AOBJ2 (vlax-ename->vla-object AOBJ2) ;将acad 的句柄转换为 VLISP 的句柄 ;Find intersections of Objects IPTS (vla-intersectwith ;求交点 AOBJ1 AOBJ2 0 ) ; variant result IPTS (vlax-variant-value IPTS) ) ;Variant array has values? (if (> (vlax-safearray-get-u-bound IPTS 1) 0) (progn ;array holds values, convert it (setq IPTS ;to a list. (vlax-safearray->list IPTS) ) ;Loop through list constructing points (while (> (length IPTS) 0) (setq PTS (cons (list (car IPTS) (cadr IPTS) (caddr IPTS) ) PTS ) IPTS (cdddr IPTS) ) ) ) ) (setq N2 (1+ N2)) ) ;inner loop end (setq N1 (1+ N1)) ) ;outer loop end (setq rtipts pts) ;返回 ) |