BimNv SDK:使用具有多个图纸的数据库

您可以处理包含多个图纸的 .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& 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& sheetId),并指定图纸 ID:

pDb->setActiveSheet(newSheetId);

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

  • OdNwObjectId OdNwDatabase::getCurrentViewId() const;
  • OdNwObjectId OdNwDatabase::getCurrrentViewClippingPlanesId() const;
  • OdResult OdNwDatabase::getSavedViewsElements(OdNwObjectIdArray& aSavedViewsElementIds) const;
  • OdNwObjectId OdNwDatabase::getBackgroundElementId() const;
  • OdNwObjectId OdNwDatabase::getClashElementId() const;
  • OdResult OdNwDatabase::getModels(OdNwObjectIdArray& arrModels) const;
  • OdNwObjectId OdNwDatabase::getModelItemRootId() const;
  • OdGeMatrix3d OdNwDatabase::getModelTransform() const;
  • NwModelUnits::Enum OdNwDatabase::getUnits() const;
  • OdResult OdNwDatabase::getLightElements(OdNwObjectIdArray& arrLights) const;
  • OdNwGridSystemElementPtr OdNwDatabase::getGridSystemElement() const;
  • OdNwObjectId OdNwDatabase::getSelectionSetsElementId() const;
  • OdNwObjectId OdNwDatabase::getSavedAnimationElementId() const;
对于 .nwf 文件,您还可以使用方法 OdNwObjectId OdNwDatabase::addModel(const OdString& sourcePath, OdResult* pResCode = NULL); 将模型添加到当前活动工作表。

今天就开始行动

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

免费试用