オブジェクトをファセットメッシュに変換する必要がある場合があります。たとえば、複雑なサーフェスを削除したり、別の形式にエクスポートしたりするためです。OdDbSubDMesh クラスと関数 oddbGetObjectMesh を使用して、OdDb3dSolid、OdDbSurface、OdDbRegion、OdDbPolyline オブジェクトをファセットメッシュデータに変換できます。
OdResult oddbGetObjectMesh(
OdDbObject *pObj,
const OdDbFaceterSettings *faceter,
OdGePoint3dArray& vertexArray,
OdInt32Array& faceArray,
OdGiFaceData*& faceData);
このメソッドの入力パラメータは次のとおりです。
- オブジェクトへのポインタ。
- 面の分割パラメータへのポインタ。
出力には、vertexArray、faceArray、および faceData 配列が含まれます。
オブジェクトには、滑らかまたは大きな面とエッジが含まれる場合があります。これらのオブジェクトがどのように変換されるかを制御するために、結果に影響を与えるパラメータがあります。簡単な説明を次に示します。
struct MeshFaceterSettings
{
/** Maximum surface deviation. */
double faceterDevSurface;
/** Maximum normal deviation. */
double faceterDevNormal;
/** Grid ratio. */
double faceterGridRatio;
/** Maximum edge length. */
double faceterMaxEdgeLength;
/** Maximum aspect ratio for the grid quads. */
OdUInt16 faceterMaxGrid;
/** Minimum number of U parameter grid lines. */
OdUInt16 faceterMinUGrid;
/** Minimum number of V parameter grid lines. */
OdUInt16 faceterMinVGrid;
/** Facet mesh type.
* 0 - quad type,
* 1 - hybrid (triangle & quad) type,
* 2 - triangle type. */
OdInt16 faceterMeshType;
};
この関数の結果は、現在のモデラーと、それがファセッター設定をどのように使用するかに依存することに注意することが重要です。この機能を迅速にテストしたり、自分で実験したりするには、Drawing/Examples インストールフォルダにある ExCommands モジュールの CONVTOMESH コマンドを使用できます。CONVTOMESH コマンドは、可能であれば選択したオブジェクトを OdDbSubDMesh オブジェクトに変換します。