- 积分
 - 15351
 
- 明经币
 -  个
 
- 注册时间
 - 2002-2-4
 
- 在线时间
 -  小时
 
- 威望
 -  
 
- 金钱
 -  个
 
- 贡献
 -  
 
- 激情
 -  
 
 
 
 
 
 
 | 
 
 
发表于 2003-6-12 08:08:00
|
显示全部楼层
 
 
 
设成局部变量,並去除重覆交點
;;求所有线的交点 
(defun C:TT (/ SS M E1 N E2 PTS PL PT1) 
  (vl-load-com) 
  (setq        SS (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE"))) 
        M  0 
  ) 
  (while (< M (1- (sslength SS))) 
    (setq E1 (vlax-ename->vla-object (ssname SS M)) 
          N  (1+ M) 
    ) 
    (while (< N (sslength SS)) 
      (setq E2        (vlax-ename->vla-object (ssname SS N)) 
            PTS        (vlax-variant-value (vla-intersectwith E1 E2 0)) 
      ) 
      (if (> (vlax-safearray-get-u-bound PTS 1) 0) 
        (progn 
          (setq PTS (vlax-safearray->list PTS)) 
          (while (> (length PTS) 0) 
            (setq PT1 (list (car PTS) (cadr PTS) (caddr PTS))) 
            (if        (not (member PT1 PL)) 
              (setq PL (cons PT1 PL)) 
              (setq PTS (cdddr PTS)) 
            ) 
          ) 
        ) 
      ) 
      (setq N (1+ N)) 
    ) 
    (setq M (1+ M)) 
  ) 
  PL 
) |   
 
 
 
 |