明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2039|回复: 8

【好难】按图层统计二维直线交点!

[复制链接]
发表于 2011-11-30 10:01 | 显示全部楼层 |阅读模式
本帖最后由 gcho 于 2011-12-4 09:20 编辑

如截图所描述,能到到按图层直线来统计交点个数吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-11-30 10:06 | 显示全部楼层
应该是做电路或者管路吧,搜索交点
 楼主| 发表于 2011-11-30 15:06 | 显示全部楼层
嗯,是管道方面的,搜素交点还有提出图层,不好弄!
发表于 2011-11-30 18:07 | 显示全部楼层
好弄,找个交点打断的程序修改一下吧
 楼主| 发表于 2011-11-30 19:37 | 显示全部楼层
恳请高手出手相助!
 楼主| 发表于 2011-12-1 11:33 | 显示全部楼层
汇总不好,只能统计出选择范围内的交点个数!
 楼主| 发表于 2011-12-2 09:30 | 显示全部楼层
;这是在网上看到meflying管理员统计交点个数的程序,但不知道怎么修改达到目的
;统计交点个数
(defun GetInterPoint (ent1 ent2 / ax_ent_1 ax_ent_2 intpoints points i)
  (setq ax_ent_1 (vlax-ename->vla-object ent1)
        ax_ent_2 (vlax-ename->vla-object ent2)
  )
  (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
  (setq intpoints (vlax-variant-value intpoints))
  (setq i 0)
  (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
    (repeat (/ (+ 1
              (- (vlax-safearray-get-u-bound intpoints 1)
                 (vlax-safearray-get-l-bound intpoints 1)
              )
           )
           3
        )
      (setq points (append points (list (list
                      (vlax-safearray-get-element intpoints i)
                      (vlax-safearray-get-element intpoints (+ i 1))
                      (vlax-safearray-get-element intpoints (+ i 2))
                    )))
      )
      (setq i (+ 3 i))
    )
  )
  points
)
(defun c:main( / ss n i j ent1 ent2 points)
  (setq ss (ssget))
  (if ss
    (setq n (sslength ss))
  )
  (setq i 0 j 0)
  (while (< i n)
    (setq j (1+ i))
    (setq ent1 (ssname ss i))
    (while (< j n)
      (setq ent2 (ssname ss j))
      (setq points (append points (getinterpoint ent1 ent2)))
      (setq j (1+ j))
    )
    (setq i (1+ i))
  )
  (Princ points)
  (princ (strcat "\n共有交点" (itoa (length points)) "个"))
  (princ)
)
 楼主| 发表于 2011-12-2 15:19 | 显示全部楼层
;判断交点在直线上不
(defun c:test()
    (setq cm (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (while (setq p1 (getpoint "\np1:"))
        (if (setq p2 (getpoint p1 "\np2:"))
     (while (setq p3 (getpoint p2 "\np3:"))
         (command "area" p1 p2 p3 "")
         (setq mj (getvar "area"))
                (if (<= mj 1e-6)
                    (princ "\n点P3在直线P1P2上")
                    (princ "\n点P3不在直线P1P2上")
                )
            )
        )
    )
    (setvar "cmdecho" cm)
    (princ)
)
 楼主| 发表于 2012-2-19 09:53 | 显示全部楼层
版主们忙不,恳请出手相助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 05:28 , Processed in 0.320666 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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