1

ModelSpaceには、いくつかの曲線によって制限された領域があります(それらを結合してAcDbRegionを持っています)。

AcDbLine も描いています。

私が必要とするのは、ラインを分割してエリア内のみのラインを取得することです。

交点の取り方はわかったのですが、2つの交点を結んだ線が内側にあるかどうかを調べるにはどうすればよいでしょうか? それともエリア外?

4

3 に答える 3

5

BREP API を試しましたか? これを試してみてください:

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

}
于 2016-03-15T17:02:24.453 に答える
3

手動で (任意の API で動作するアルゴリズムを使用して) 実行する場合は、Point In Polygon 計算の目的で「ワインディング ナンバー アルゴリズム」を使用することをお勧めします。ポリゴンの膨らみは考慮されていませんが、非常に高速で適切に実装されているため、AutoCAD の API を 2 倍上回ることができます。

別の可能性は、テストしているポイントから無限に一時的な線を引き、ポリラインとの交点がいくつあるかをテストすることです。交点の数が奇数の場合は、ポリラインの内側にいます。偶数の場合は、ポリラインの外側にあります。アプリケーションの API を使用して交差テストを行う場合は、ポリラインの頂点のブリュージを考慮する必要があります。

于 2016-11-15T13:34:18.343 に答える
0
  1. 領域の外側を定義するポリラインを取得します。

  2. リージョン ポリラインの頂点を使用してポリゴンで選択します。または、すべてを領域内または交差させたい場合は、ポリラインの頂点を使用してポリゴンを交差させて選択します。

于 2016-03-16T14:52:37.270 に答える