martinzyly 发表于 2011-5-5 15:44:22

[求助]如何确定一点在闭合多段线的哪条边上?

本帖最后由 martinzyly 于 2011-5-5 15:44 编辑

已知闭合多段线上一点坐标,在DXP中对应LWPOLYLINE的说明,可已知图中第一个图形的三顶点坐标和第二个图形的亮点坐标。下面对第一个图形来说,取得三顶点的坐标,可以组成点表((x1y10.0)(x2y20.0)(x3y30.0)),现在已知闭合多段线上一点,怎样确定它在多段线三条边中的哪条边上?第二个图的情况下又如何判断?

martinzyly 发表于 2011-5-6 17:04:25

不是吧,这问题有这么难吗,自己顶一下

mandala 发表于 2011-5-7 00:07:26

这个……恐怕不是太难,而是太简单了,所以大佬们不屑回答……我来说说吧,
首先如果你指的“哪条边”是指“第几条边”的话,那么首先要确定这个pline的走向是顺时针还是逆时针,不然这个“哪条边”就失去了意义。我的思路是先判断该pline的时针方向,然后统一改成顺时针的并指定起点,这两个步骤本版已经有很多例子;然后undo+be开始,explode打散pline,用(setq l (car (nentselp pt)))来取得该点所在的那条边,用(ssget "p")来取得打散后所有图元的列表,用(vl-position)来取得l是第几条边。最后undo+e结束undo,再undo。

如果“哪条边”仅仅是指“标示出在哪条边上”,那么更简单,打散后直接用(nentselp pt)来取得点在哪条边上,然后……基本上你想干嘛就可以干嘛。
页: [1]
查看完整版本: [求助]如何确定一点在闭合多段线的哪条边上?