サーフェスは、無限に薄いシェルである3Dオブジェクトです。ODAソフトウェアには、いくつかの種類のサーフェスがあります。クラスの依存関係を以下に示します。
エンティティをサーフェスに変換する
以下のメソッドは、エンティティをサーフェスに変換します。
static OdResult createFrom ( const OdDbEntity* pFromEntity, OdDbSurfacePtr& pNewSurface );
このメソッドは、厚みを持つ2Dエンティティから押し出しサーフェス (OdDbExtrudedSurface) を作成するか、閉じた曲線または領域から平面サーフェス (OdDbPlanarSurface) を作成します。OdDb3dSolid の場合は、単にサーフェス (OdDbSurface) が作成されます。一般に、このメソッドは異なるエンティティからSpatial® ACIS® データをコピーし、そのデータをOdDbSurfaceに挿入します。パラメータは次のとおりです。
- pFromEntity — 入力エンティティ。OdDbCircle、OdDbEllipse、OdDb3dPolyline、OdDb2dPolyline、OdDbPolyline、OdDbSpline、OdDb3dSolid、OdDbSolid、またはOdDbRegion のいずれかです。
- pNewSurface — 結果のサーフェス。
サーフェスが正常に作成された場合はeOkを返し、それ以外の場合は適切なエラーコードを返します。
このメソッドは、SpaModeler および ModelerGeometry 用に実装されています。
2DエンティティからOdDbExtrudedSurfaceを作成できる厚みパラメータもあります。
コード例:
…
OdDbSurfacePtr pSurface; // resulting surface
OdDbEntityPtr pEntity = pDb->getObject… // input object
OdResult res = OdDbSurface::createFrom(pEntity, pSurface);
…
3Dソリッド変換の例
サーフェスに変換する前の3Dソリッドを次に示します。
サーフェスに変換された3Dソリッドを次に示します。
閉じたポリライン変換の例
厚さ2.0の閉じたポリラインを、押し出しサーフェスに変換する前と後の状態を次に示します。
閉じた領域変換の例
閉じた領域を、平面サーフェスに変換する前と後の状態を次に示します。
サンプルコマンドを使用した変換を試す
ExCommandsには、createSurfaceというサンプルコマンドがあります。このサンプルコマンドを使用すると、さまざまな種類のエンティティをサーフェスに変換できます。1つまたは複数のエンティティを選択すると、コマンドは変換のためにOdDbSurface::createFrom(…)メソッドを呼び出します。
以下は、OdDb3dSolid (雪だるま) をサーフェスに変換する様子を示す画像です。