ODAファセットモデラー: ボディの面を分割する

この記事には、ボディの面を分割する方法に関する情報が含まれています。

ボディの面が、内側ループと外側ループの2つのループで構成されている場合があります。その面を2つに分割して、結果として得られる各面が1つのループで構成されるようにしたい場合があります。このような操作を実行するには、splitFace() メソッドを使用します。

void Body::splitFace(Face* pFace,
                     const OdGePlane& pPlane,
                     std::vector* pNewOuter = NULL,
                     std::vector* pNewInner = NULL);

このメソッドは、ボディの面をその平面で分割し、元のトポロジーを保持します。

下の図の立方体には中央に穴があるため、ボディ全体は10個の面で構成されています。

 

The cube

 

上面は、外部ループと内部ループの2つのループで構成されています。隣接するすべての面は、4つのエッジを持つ外部ループで構成されています。

 

The top face

 

下の画像にある赤い平面は分割平面であり、赤いベクトルはその法線です。

 

the splitting plane

 

分割後、ボディは11個の面を持ちます(元の上面は削除され、新しい2つの面が追加されます)。新しい各面には外部ループ(緑色のポリライン n1-n8 および s1-s8)があります。エッジ e4 と e5 はそれぞれエッジ n1 と s1 とペアになっています。そして、隣接する面は5つのエッジを持つ1つのループで構成されています。

 

It's possible to get the resulting faces according to their position relative to the splitting plane.

 

分割平面に対する位置に応じて、結果として得られる面を取得することが可能です。

pNewOuterオプションパラメータには、平面法線ベクトルが指す面(n1-n8ループで定義される面)が含まれます。

pNewInnerオプションパラメータには、反対ベクトルが指すすべての面(s1-s8ループで定義される面)が含まれます。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す