slljs 发表于 2003-6-10 18:33:00

[求助]在LISP中,怎样编程求所有线的交点,并且输出到一个文本文件中。

meflying 发表于 2003-6-10 18:41:00

所有线?都包括那些线,LINE还是PLINE,是否有圆弧或别的,能否说详细点?

shicai 发表于 2003-6-11 05:48:00

请看"求所有线的交点"的程序:

(defun c:test ()
(vl-load-com)
(setq ss (ssget "X" '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))
      m 0)
(while (< m (1- (sslength ss)))
    (setq e1 (ssname ss m)
          e1 (vlax-ename->vla-object e1)
              n (1+ m))
    (while (< n (sslength ss))
      (setq e2 (ssname ss n)
          e2 (vlax-ename->vla-object e2)
                 pts (vla-intersectwith e1 e2 0)
           pts (vlax-variant-value pts))
      (if (> (vlax-safearray-get-u-bound pts 1) 0)
        (progn
          (setq pts (vlax-safearray->list pts))
          (while (> (length pts) 0)
          (setq pl (cons (list (car pts)
                          (cadr pts)
                          (caddr pts))
                             pl)
                  pts (cdddr pts))
          )
        )
      )
      (setq n (1+ n))
    )
    (setq m (1+ m))
)
pl
);defun

slljs 发表于 2003-6-11 08:45:00

谢谢你的提问,我所说的线,包含CAD中的所有的直线和曲线类型。

slljs 发表于 2003-6-11 08:49:00

谢谢你的解答,我调试一下试一试,有事我会向你请教的。

slljs 发表于 2003-6-11 09:01:00

您编的这程序怎样调试,我怎么没有调试出来,能不能告诉我一下具体的操作方法。

meflying 发表于 2003-6-11 09:37:00

在一张空图上画一些相交的直线、圆、圆弧、样条曲线,直接加载运行,注意使用局部变

在一张空图上画一些相交的直线、圆、圆弧、样条曲线,直接加载运行,注意使用局部变量,否则交点列表会累加

slljs 发表于 2003-6-11 11:22:00

我按照你说的做了,但是还是不行,现把画面发给你,请你看一看什么问题。

meflying 发表于 2003-6-11 11:33:00

说说看你是怎么加载的?

slljs 发表于 2003-6-11 13:36:00

在COMMAND命令下输入:(LOAD"C:\\AA.LSP")

页: [1] 2
查看完整版本: [求助]在LISP中,怎样编程求所有线的交点,并且输出到一个文本文件中。