在ModelSpace中,我有一个受某些曲线限制的区域(加入它们以获得AcDbRegion)。
我也画了AcDbLine。
我需要的是分割线以仅在区域内获取线条。
我知道如何获得交叉点,但是如何找到连接两个交叉点的线?还是在外面?
答案 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)
获取定义您所在地区外部的折线。
使用区域折线顶点按多边形选择。或者如果您想要所有内部或跨越该区域,请使用折线顶点交叉多边形进行选择。