[返回博客](/cn/blog) # BimNv SDK：使用具有多个图纸的数据库

Vadim Asandiy 二月 18, 2022 [\#BimNv](/cn/blog/tag/bimnv) [\#getting started](/cn/blog/tag/getting-started)

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

您可以处理包含多个图纸的 .nwd、.nwc 和 .nwf 文件。使用图纸类似于处理多个彼此不相关的文件，但所有更改都保存在一个位置。本节解释了使用图纸的基础知识。

要获取文件中现有图纸的信息，请读取 .nwd、.nwc 或 .nwf 文件数据库：

```
OdString szSource;//path to file
OdNwDatabasePtr pDb = svcs.readFile(szSource);
```

打开文件后，数据库会有一个当前活动图纸，该图纸是文件中保存为活动的图纸。如果文件只包含一个图纸，则打开文件后该图纸即为活动图纸。要获取当前活动图纸，请使用方法 OdNwObjectId getActiveSheetId() const：

```
OdNwObjectId activeSheetId = pDb->getActiveSheetId();
OdNwSheetInfoPtr pActiveSheet = activeSheetId.openObject();
```

要获取文件中存在的图纸列表，请使用方法 OdResult OdNwDatabase::getSheets(OdNwObjectIdArray&amp; aSheets) const：

```
OdNwObjectIdArray aSheets;
pDb->getSheets(aSheets);
```

aSheets 数组的每个元素都是图纸对象的 OdNwObjectId 元素。例如，要获取索引为 1 的图纸的数据：

```
//Required index must be in the range of the array, otherwise an exception is thrown.
OdNwSheetInfoPtr pSheet = aSheets[1].openObject();
//Get the type of the sheet: 2D or 3D
NwSheetType::Enum sheetType = pSheet->getSheetType();
//Get the ID of the selected sheet info object
OdString newSheetId = pSheet->getSheetId();
```

要在数据库中激活选定的图纸，请使用方法 OdResult OdNwDatabase::setActiveSheet(const OdString&amp; sheetId)，并指定图纸 ID：

```
pDb->setActiveSheet(newSheetId);
```

一旦图纸设置为活动状态，数据库将指向该当前图纸。使用以下方法从当前图纸获取数据：

- OdNwObjectId OdNwDatabase::getCurrentViewId() const;
- OdNwObjectId OdNwDatabase::getCurrrentViewClippingPlanesId() const;
- OdResult OdNwDatabase::getSavedViewsElements(OdNwObjectIdArray&amp; aSavedViewsElementIds) const;
- OdNwObjectId OdNwDatabase::getBackgroundElementId() const;
- OdNwObjectId OdNwDatabase::getClashElementId() const;
- OdResult OdNwDatabase::getModels(OdNwObjectIdArray&amp; arrModels) const;
- OdNwObjectId OdNwDatabase::getModelItemRootId() const;
- OdGeMatrix3d OdNwDatabase::getModelTransform() const;
- NwModelUnits::Enum OdNwDatabase::getUnits() const;
- OdResult OdNwDatabase::getLightElements(OdNwObjectIdArray&amp; arrLights) const;
- OdNwGridSystemElementPtr OdNwDatabase::getGridSystemElement() const;
- OdNwObjectId OdNwDatabase::getSelectionSetsElementId() const;
- OdNwObjectId OdNwDatabase::getSavedAnimationElementId() const;

对于 .nwf 文件，您还可以使用方法 OdNwObjectId OdNwDatabase::addModel(const OdString&amp; sourcePath, OdResult* pResCode = NULL); 将模型添加到当前活动工作表。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
