已知两个点和一条多段线(两点连线和多段线必有1个交点),跪求大神找交点的最快方法
各位大神:如图,这根多段线是由多跟直线合并成的,目前我的办法是将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))
) 感谢大佬分享 本帖最后由 kozmosovia 于 2016-5-21 20:48 编辑
数量大就需要忍受所谓的慢,我也不觉得会慢多少。
不需要把新画的线存成选择集,计算完成直接entdel
人操作行为本身的速度才叫真正的慢 纯数学方法肯定要快些。intersectwith考虑很多情况。如果多段线中没孤,情况就简单多了。已知两点与多段线求交点,可以不生成直线的 自贡黄明儒 发表于 2016-5-22 14:12 static/image/common/back.gif
纯数学方法肯定要快些。intersectwith考虑很多情况。如果多段线中没孤,情况就简单多了。已知两点与多段线求 ...
是的,多段线中的圆弧已经处理成直线了的,纯数学的方法是指什么什么方法,还请帮忙大神指点一下迷津 取得多段线各点,然后用inters 自贡黄明儒 发表于 2016-5-23 14:50 static/image/common/back.gif
取得多段线各点,然后用inters
这个方法一开始我想过,但是和多段线相交的那两个相关的点不好找。我有一个想法,还是画线,只画一次然后每次循环的时候改变起始点和终点,这样应该会快一些吧 如果多线段有很多段,inters的循环也会消耗大量时间,最后可能不一定有直接intersectiwith快。
画线修改和重新画线,如果你的多线段数量不是上万的,我感觉对速度影响不大。否则从理论上,修改比新建是要节省资源而速度更快 kozmosovia 发表于 2016-5-23 15:26 static/image/common/back.gif
如果多线段有很多段,inters的循环也会消耗大量时间,最后可能不一定有直接intersectiwith快。
画线修改和 ...
几十万。。。 那你那个几十万对的直线端点是怎么生成的? kozmosovia 发表于 2016-5-23 15:32 static/image/common/back.gif
那你那个几十万对的直线端点是怎么生成的?
将多段线按照一定的距离等分点的集合
页:
[1]
2