如何检查线或点是否在区域内部或外部

时间:2016-03-15 13:20:52

标签: autocad-plugin objectarx

在ModelSpace中,我有一个受某些曲线限制的区域(加入它们以获得AcDbRegion)。

我也画了AcDbLine。

我需要的是分割线以仅在区域内获取线条。

我知道如何获得交叉点,但是如何找到连接两个交叉点的线?还是在外面?

3 个答案:

答案 0 :(得分:4)

您是否尝试过BREP API?尝试一下这个:

Autodesk.AutoCAD.BoundaryRepresentation.Brep brepEnt = new Brep(myRegion);
PointContainment pointCont;
brepEnt.GetPointContainment(thePoint, out pointCont);
if (pointCont == PointContainment.Inside)
{

}

答案 1 :(得分:2)

如果你想手动完成(使用适用于任何API的算法),我建议你使用“绕线数算法”来计算Point In Polygon。它没有考虑多边形中的凸起,但实现得非常快,使我能够以2倍的倍数击败AutoCAD的API。

另一种可能性是从您测试的点到无穷远处绘制一条临时线,并测试它与折线的交点数。如果交点的数量是奇数,那么你就在折线内;如果它是偶数,那么你就在折线之外。如果使用应用程序的API完成相交测试,则应考虑折线顶点中的蓝线。

答案 2 :(得分:0)

  1. 获取定义您所在地区外部的折线。

  2. 使用区域折线顶点按多边形选择。或者如果您想要所有内部或跨越该区域,请使用折线顶点交叉多边形进行选择。