.dwgファイルに3Dモデルが保存される仕組み パート3

ODA SDKを活用した3Dモデルの変更

前回の記事では、コンストラクティブソリッドジオメトリ(CSG)を使用して3Dボディを記述すると、ボディの形状を変更するのが非常に難しいと説明しました。しかし、デザインは反復的なプロセスであるため、変更の必要性が生じます。モデル改訂の理由は多岐にわたります。新しい計算、プロトタイプテストの結果、顧客からのフィードバック、設計改善などです。実際、異なる製造方法への移行でさえ、部品の形状変更が必要になることがあります。これらの理由から、モデラーとCADアプリケーションは、ボディ形状の変更を容易に行えるようにすべきです。

CSGにおける構造化ジオメトリの弱点は、ブール演算のすべての元のオペランドのすべてのプロパティ、または少なくともその一部の相互依存性を考慮する必要があることです。これは、市販製品が利用可能な特殊なタスクです。(これらはパラメトリックカーネルとして知られていますが、通常は異なる設計問題を解決するために使用されます。)さらに、元のボディのパラメータとセット自体の相互依存性を考慮する必要がある場合があります。

フィレット、面取り、および薄肉ボディ

平行六面体の角をフィレットする操作は、多くのボディのパラメータを一貫した方法で変更する必要がある問題の一例です。

figure8

フィレットは、ボディの変更が選択されたエッジの近くで発生するという意味で、局所的な操作と見なすことができます。面取りや薄肉ボディを作成するために使用される操作も局所的と見なすことができます。面取り操作はフィレット操作に似ていますが、エッジに隣接する面間の表面が接線方向に結合されるのではなく、指定された角度で結合される点が異なります。

figure9

薄肉ボディを作成する操作は、エッジではなく面にに基づいています。シェルから1つの面が削除され、残りの面は指定された距離だけオフセットされます。その後、オフセットされた面は、オフセットされた距離に応じて元の面に「接着」されます。

figure10

ODA SDKは、ローカルな変更のために以下のメソッドを提供します:

OdResult filletEdges( const OdArray<OdDbSubentId>& edgeSubentIds,
                      const OdGeDoubleArray&         radius, 
                      const OdGeDoubleArray&         startSetback, 
                      const OdGeDoubleArray&         endSetback);
OdResult chamferEdges(const OdArray<OdDbSubentId>& edgeSubentIds,
                      const OdDbSubentId&            baseFaceSubentId, 
                      double                         baseDist, 
                      double                         otherDist);
OdResult shellBody(const OdArray<OdDbSubentId>& faceSubentIds, 
                   double                         offsetDistance);

これは、幾何モデリング操作の不完全なリストであることに注意してください。

ODA SDKにおける幾何モデリング操作の実装

モデリング自体はODAプラットフォームの主要な目的ではありません。これは.dwgファイルと連携するように設計されています。そのため、ODAプラットフォームには基本的なボディを作成するための機能のみが含まれています。その他のすべての操作はサードパーティから提供される必要があり、「アダプター」と呼ばれるモジュールを介してプラットフォームに接続されます。

3Dソリッドモデリングに関して言えば、アダプターの役割は、ファイルからSATストリームを取得し、ソースボディを作成し、指定されたパラメータで操作を実行し、その結果のSATストリームを生成することです。

最近まで、ODA SDKにおける3Dモデリング操作は、Dassault Systemes SpatialのACISジオメトリックカーネルのみで実行可能でした。Open Design AllianceはODA SDKをACISカーネルに接続するモジュールをサポートしていますが、ACISモデラー自体は各ODAメンバーが個別にライセンスを取得する必要があります。

ACISの代替として、C3D Labsのモデリングモジュールを使用する方法があります。これはODAから直接、メンバーポータルからワンクリックでライセンスを取得できます。C3D Labsと契約を結ぶ必要はなく、ロイヤリティも発生せず、年会費のみです。ODA SDK用のC3D Modelerの機能は、元のC3D Toolkitから削減されていますが、開発者のほとんどのタスクには十分であり、お客様の要望に応じて機能を増やす準備ができています。

SAT形式はC3Dジオメトリックカーネルのネイティブではないため(ACISとは異なり)、モデラーと一緒にコンバーターを使用する必要があります。幸いなことに、入力データとモデリング結果の変換プロセスはODA SDKユーザーからは隠されており、C3D ModelerをODAモジュールにアタッチするだけで、非自明なモデリング操作が可能になります。さらに、完全なC3D ToolkitライブラリはOpen Design Allianceのサーバーからダウンロードでき、個人ODAアカウントを通じてワンクリックでライセンスキーをリクエストできます。C3D Labsは、ODASDKで3Dモデリングにアクセスするためのこの統合された手順が、ACISカーネルを個別にライセンス供与するよりも優れていると考えています。

実用的な例

いくつかの実用的な例を選択した背景にある考えは、任意のCADシステムで設計されたモデルの構築履歴を再現することです。しかし、私は2つの困難に遭遇しました。

まず、ODAのAPIには存在しない構築操作を使用せずに作成された、十分に古いモデルを見つける必要がありました。あるいは、少なくとも可能な限り少ない操作で作成されたモデルです。製品の新しいバージョンをリリースするCAD開発者は、新機能や関数を紹介するサンプルファイルを提供するのが当然と予想されます。この点で、私が遭遇した最も印象的な例は、「オブジェクトへの押し出し」に関連していました。

2つ目の困難は純粋に技術的なものでした。構築プロセスにおける各操作の「前」と「後」の状態をどのように明確に図示するかということです。私が克服しなければならなかった主な矛盾は、モデルの向きとスケールが標準ではないにもかかわらず、各操作の前後で同じでなければならないということでした。同時に、ブーリアン演算のオペランドや、例えばエッジを選択するためには、モデルを拡大縮小または回転させる必要があります。これは、ODAプラットフォームのテストアプリケーションの機能に対する不完全な理解からのみ生じる複雑さを誇張している可能性があります。

それにもかかわらず、2つのデモンストレーションと例のために、モデル構築の履歴を実装することができました。

figure11

モデリング操作自体に加えて、モデル構築のために、トポロジーオブジェクトを検索し、それらのジオメトリを取得する機能が実装されました。テストシステムの開発と実用的なアプリケーションの範囲の拡大に伴い、この機能はさらに改善されました。

今すぐ始める

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

無料で試す