明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3264|回复: 13

[已解答] 已知两个点和一条多段线(两点连线和多段线必有1个交点),跪求大神找交点的最快方法

[复制链接]
发表于 2016-5-21 11:41:14 | 显示全部楼层 |阅读模式
各位大神:
              如图,这根多段线是由多跟直线合并成的,目前我的办法是将Pt1和Pt2两个点画线,通过下面的程序求出交点,求出后保存画线到一个集合里,并保存此交点,后面删除画线集合。但是如果数量大的话计算机处理就会好慢(估计画线用时太多,我已经是用entmake语句画线了),还请各位大神不吝赐教,帮小弟想想用什么方法会快一些。

(defun jd(se sn)
  (setq sn_obj(vlax-ename->vla-object sn))
  (setq se_obj(vlax-ename->vla-object se))
  (setq pj(vlax-invoke sn_obj 'intersectwith se_obj 0))
)

本帖子中包含更多资源

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

x
发表于 2023-12-12 16:56:09 | 显示全部楼层
感谢大佬分享
发表于 2016-5-21 20:47:21 | 显示全部楼层
本帖最后由 kozmosovia 于 2016-5-21 20:48 编辑

数量大就需要忍受所谓的慢,我也不觉得会慢多少。
不需要把新画的线存成选择集,计算完成直接entdel
人操作行为本身的速度才叫真正的慢
发表于 2016-5-22 14:12:08 来自手机 | 显示全部楼层
纯数学方法肯定要快些。intersectwith考虑很多情况。如果多段线中没孤,情况就简单多了。已知两点与多段线求交点,可以不生成直线的
 楼主| 发表于 2016-5-23 14:22:27 | 显示全部楼层
自贡黄明儒 发表于 2016-5-22 14:12
纯数学方法肯定要快些。intersectwith考虑很多情况。如果多段线中没孤,情况就简单多了。已知两点与多段线求 ...

是的,多段线中的圆弧已经处理成直线了的,纯数学的方法是指什么什么方法,还请帮忙大神指点一下迷津
发表于 2016-5-23 14:50:06 | 显示全部楼层
取得多段线各点,然后用inters
 楼主| 发表于 2016-5-23 15:14:41 | 显示全部楼层
自贡黄明儒 发表于 2016-5-23 14:50
取得多段线各点,然后用inters

这个方法一开始我想过,但是和多段线相交的那两个相关的点不好找。我有一个想法,还是画线,只画一次然后每次循环的时候改变起始点和终点,这样应该会快一些吧
发表于 2016-5-23 15:26:41 | 显示全部楼层
如果多线段有很多段,inters的循环也会消耗大量时间,最后可能不一定有直接intersectiwith快。
画线修改和重新画线,如果你的多线段数量不是上万的,我感觉对速度影响不大。否则从理论上,修改比新建是要节省资源而速度更快
 楼主| 发表于 2016-5-23 15:28:29 | 显示全部楼层
kozmosovia 发表于 2016-5-23 15:26
如果多线段有很多段,inters的循环也会消耗大量时间,最后可能不一定有直接intersectiwith快。
画线修改和 ...

几十万。。。
发表于 2016-5-23 15:32:26 | 显示全部楼层
那你那个几十万对的直线端点是怎么生成的?
 楼主| 发表于 2016-5-23 15:54:58 | 显示全部楼层
kozmosovia 发表于 2016-5-23 15:32
那你那个几十万对的直线端点是怎么生成的?

将多段线按照一定的距离等分点的集合
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:43 , Processed in 0.184717 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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