Autodesk® Navisworks® ファイルの簡単な編集と保存を実行する

NWF 形式のファイルは、BimNv データベース内で OdNwModel オブジェクトへのポインタのコンテナを持つ OdNwDatabase オブジェクトとして表現されます。各 OdNwModel オブジェクトには、.nwf ファイルからのモデルに関する情報が含まれています。

  • ファイルへのパス
  • 変換行列
  • 線形単位
  • その他

より詳細な情報は、docs.opendesign.com で説明されている OdNwModel クラスの公開 API から取得できます (ログインが必要です)。

Examples/OdNwfResaver/OdNwfResaver.cpp にある OdNwfResaver プロジェクトの以下の例を使用して、次のことができます。

  • OdNwDatabase オブジェクトを作成する。
  • モデルの変換行列を変更する。
  • モデルの線形単位を変更する。
  • 現在の .nwf モデルのリストに新しいモデルを追加する。

OdNwDatabase オブジェクトを作成する

.nwf ファイルに対応する OdNwDatabase オブジェクトを作成します。


	 //need to read file by path from szSource
OdNwDatabasePtr pNwDb = svcs.readFile(szSource);

次に、OdNwDatabase オブジェクトに NWF が含まれていることを確認します。この形式の場合、OdNwDatabase::isComposite メソッドは true を返します。

if (pNwDb->isComposite())

モデルのプロパティを変更するには、データベースからオブジェクトを取得します。これには、OdNwDatabase::getModels メソッドを使用します。成功した場合、OdNwDatabase::getModels メソッドは eOk を返します。

OdArray<OdNwModelPtr> m_aModels;
if (pNwDb->getModels(m_aModels) == eOk)

たとえば、既知のインデックスに従って、目的のモデルを選択します。

pCurrentModel = m_aModels[modelIndex]

モデルの変換行列を変更する

行列を変更するには、OdGeMatrix3d オブジェクトをパラメータとして OdNwModel::setTransform メソッドを呼び出します (OdNwfResaver では単位行列が渡されますが、OdNwModel::getTransform メソッドを使用して行列オブジェクトを取得することもできます)。目的の変換を実行し、それをパラメータとして渡します。

pCurrentModel->setTransform(OdGeMatrix3d::kIdentity);

モデルの線形単位を変更する

単位を変更するには、NwModelUnits::Enum オブジェクトをパラメータとして OdNwModel::setUnits メソッドを呼び出します。

pCurrentModel->setUnits(NwModelUnits::UNITS_METERS);

現在の NWF モデルのリストに新しいモデルを追加する

モデルを追加するには、OdNwDatabase::addModel メソッドを呼び出します。このメソッドには、事前に作成された OdNwModel オブジェクトへのポインタをパラメータとして渡す必要があります。OdNwModel オブジェクトには、空でないファイルパス値が含まれている必要があります (現在、次の形式のファイルを追加できます: .dwg、.dgn、.rfa/.rvt、.nwc/.nwd):

pCurrentModel = OdRxObjectImpl<OdNwModel>::createObject();
if (pCurrentModel->setSourcePath(path) == eOk)
{
  if (pNwDb->addModel(pCurrentModel) == eOk)

今すぐ始める

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

無料で試す