在ModelSpace中,我有一个受某些曲线限制的区域(将它们连接到具有AcDbRegion)。如何检查线或点是在区域内还是在区域外
我也绘制了AcDbLine。
我需要的是拆分线以获得只在区域内的线。
我知道如何获得交点,但我怎么才能找到如果线连接两个交点是在里面?或外面的区域?
在ModelSpace中,我有一个受某些曲线限制的区域(将它们连接到具有AcDbRegion)。如何检查线或点是在区域内还是在区域外
我也绘制了AcDbLine。
我需要的是拆分线以获得只在区域内的线。
我知道如何获得交点,但我怎么才能找到如果线连接两个交点是在里面?或外面的区域?
如果你想要做手工(与算法,将与任何API工作),我会建议你用“卷数算法”为中心的宗旨在多边形计算。它没有考虑多边形中的凸起,但它的速度非常快,可以让我以2倍的倍数击败AutoCAD的API。
另一种可能性是绘制一条从您正在测试的点到无穷远的临时线,并测试它与多段线的交点。如果交叉点的数量是奇数,那么你在折线内;如果它是平坦的,那么你在折线之外。如果交叉点测试是使用应用程序的API完成的,则应考虑折线顶点中的布鲁姆。
您是否尝试过BREP API?试一下行这样的:
Autodesk.AutoCAD.BoundaryRepresentation.Brep brepEnt = new Brep(myRegion);
PointContainment pointCont;
brepEnt.GetPointContainment(thePoint, out pointCont);
if (pointCont == PointContainment.Inside)
{
}
看起来很有趣,但还有一个问题。我的应用程序在ZWCAD上运行。 据我所知(也许我错了),ZRX不包含BREP。 –
对不起,我现在没有关于他们的API ... –
获取定义的区域外的折线。
使用区域多段线顶点按多边形选择。或者,如果您想要一切内部或跨区域,请使用多段线顶点交叉多边形进行选择。
好吧我有线和交点,所以我可以将线分割成许多曲线,然后我可以通过顶点选择,但是: 1. acedSSGet仅适用于可见区域。但我不确定是否在ARX的可见区域绘制,我可以缩放,但它使应用程序“闪烁”,用户不会喜欢它,我想 2.我可以通过顶点选择,但凸起怎么办?穿过多边形让我选择弧段? –
但最终,奥古斯托冈萨尔维斯的答案是正确的一个AutoCAD的API ..... – JFTxJ
好主意。当然,我需要考虑膨胀段。我有区域和线路。他们相交可以说4分。所以我需要检查哪些点位于区域内(区域)内部或外部。两个点之间的直线总是与两个端点中的区域相交。 但是我可以使用StartPoint并将方向指向EndPoint,距离很远。如果这样的线相交区域偶数次,线在里面。这就是我需要的。 谢谢 –