帮助查找距离GetEntity选定点最近的pline端点
本人';我肯定我';我不是第一个问这个问题的人,但我可以#039;经过几个小时的搜索,似乎找不到这个简单问题的答案 ;我有一个子例程,我用它来创建道路条纹,具体来说是虚线 ;它基本上要求用户输入单个条纹的长度和宽度以及条纹之间的间隙 ;为单个条带创建块 ;然后,它使用GetEntity要求用户选择一条多段线,该多段线是根据我们的实地调查得出的基础地形创建的 ;最后,sub使用SendCommand方法调用;“测量”;根据用户输入的间隙和条纹长度,以适当的间隔使用条纹块测量选定多段线的命令我遇到的问题是measure命令的固有限制,即它不会在拾取的行的开始处插入块 ;目前,在运行例程后,我必须在多段线的端点手动插入块,然后通过拾取点确定其方向 ;如果我可以自动化整个过程,避免在多段线的端点(起点)手动插入单个条纹,那就太好了
因为点本身通常不在实体上,所以我找不到一种方法来传递最靠近拾取点的选定多段线的端点 ;寻找最近的顶点也不可靠,因为多段线可以有许多线段(直线和圆弧),并且我不知道';我不希望程序在某个中间顶点插入条纹 ;使用第一组坐标也不会#039;t工作可靠,因为有时这是从中选择GetEntity点的多段线的另一端
我发现一个模糊的引用使用GetPoint,它将遵循osnap设置,然后在图形实体中循环,找到可以使用该点作为GetEntity选择点的实体,但帖子中没有任何代码和I';我不确定如何格式化for each循环,以找到GetEntity将处理的实体
有人知道如何找到距离GetEntity选取点最近的多段线的端点吗 ;我想我可以计算从点到第一个顶点和最后一个顶点的距离并比较它们,但如果有其他更简单的方法,我洗耳恭听
谢谢你的帮助,如果你需要我的代码,我可以发布 ;我不知道';我不认为这会让你深入了解这个问题,但如果你认为这会有所帮助,我会这么做。
不确定VBA,但可能可以翻译为:(defun c:foo (/ e p)
(cond ((and (setq e (entsel "\nPick polyline near an end: "))
(= "LWPOLYLINE" (cdr (assoc 0 (entget (car e)))))
(setq p (vlax-curve-getclosestpointto (car e) (cadr e)))
)
(if (= 0 (fix (vlax-curve-getparamatpoint (setq e (car e)) p)))
(vlax-curve-getstartpoint e)
(vlax-curve-getendpoint e)
)
)
)
)
页:
[1]