明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1123|回复: 0

[基础] 一个求交点程式的问题

[复制链接]
发表于 2010-12-25 16:10:03 | 显示全部楼层 |阅读模式

Uploaded with ImageShack.us




        底下有一个部份
  (setq p0(inters p10 p11 pa pb))

  (setq pt(osnap p0 "int"))

  (if(= (member pt ptlist) nil)

    (setq ptlist(cons pt ptlist))
要是这段程式没有红色那一段,那么if判断式就会判断不出ptlsit中是不是已经有了pt的点,最后的结果就是重复判断同一点。红色两一段的作用是什么p0不是就已经把交点给求出来了吗?
如下图。

Uploaded with ImageShack.us






(defun C:262();;求框選交點
  (setq ss(ssget '((0 . "line"))))
  (setq ptlist '() )
  (setq i 0)
  (repeat(sslength ss)
    (setq en(ssname ss i))
    (setq j 0)
    (setq p10(cdr(assoc 10 (entget en))))
    (setq p11(cdr(assoc 11 (entget en))))
    (setq ss_2(ssget "F"  (list p10 p11)))
    (setq ss_2(ssdel en ss_2))
    (repeat (sslength ss_2)
      (setq en_x(ssname ss_2 j))
      (if(ssmemb en_x ss)

(progn

  (setq pa(cdr(assoc 10 (entget en_x))))

  (setq pb(cdr(assoc 11 (entget en_x))))

  (setq p0(inters p10 p11 pa pb))

  (setq pt(osnap p0 "int"))

  (if(= (member pt ptlist) nil)

    (setq ptlist(cons pt ptlist))

  );if

);p
      );if
      (setq j(+ j 1))
    );r
    (setq i(+ i 1))
  );r
  (foreach pt ptlist(command"circle" pt 10))
  (alert(strcat "交點共" (itoa (length ptlist)) "個"))
(prin1)
)



您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 18:25 , Processed in 0.166777 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表