[ブログに戻る](/ja/blog) # Autodesk® Navisworks® ファイルの簡単な編集と保存を実行する

Vadim Asandiy 7月 10, 2020 [\#BimNv](/ja/blog/tag/bimnv) [\#getting started](/ja/blog/tag/getting-started)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

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

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

より詳細な情報は、[docs.opendesign.com](https://docs.opendesign.com/bimnv/OdNwModel.html) で説明されている 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日間無料でお試しください。  
リスクなし、クレジットカード不要。**

[無料で試す](https://www.opendesign.com/ja/free-trial)
