要访问 NWD/NWC 文件中保存的视点,请使用方法 OdResult OdNwDatabase::getSavedViewsElements(OdNwObjectIdArray& aSavedViewsElementIds) const:
//…
OdNwDatabasePtr pDb;
//…
OdNwObjectIdArray aSavedViewElements;
if (pDb->getSavedViewsElements(aSavedViewElements) == eOk)
//…
所有这些对象都派生自 OdNwSavedItem 类:
//…
for (OdInt32 i = 0; i < aSavedViewElements.size(); i++)
{
OdNwSavedItemPtr pSI = aSavedViewElements[i].openObject();
//…
每个保存的项目都有一组共同的属性:
//…
OdArray<OdNwComment> aComments = pSI->getCommentCollection();
for (OdInt32 i = 0; i < aComments.size(); i++)
{
OdNwComment& comment = aComments[i];
//comment author
OdString sAuthor = comment.getAuthor();
//comment's content
OdString sBody = comment.getBody();
//when this comment was created
tm createDate = comment.getCreateDate();
//is this comment – new, active, approved or resolved
NwCommentStatus::Enum status = comment.getStatus();
}
OdString sSIName = pSI->getDisplayName();
OdGUID guidSI = pSI->getGuID();
OdNwObjectId parentId = pSI->getParentId();
//…
- 注释列表 — 通过使用方法 OdArray<OdNwComment> getCommentCollection() const 获取。
- 保存的项目名称 — 通过使用方法 OdString getDisplayName() const 获取。
- 全局 GUID — 通过使用方法 OdGUID getGuID() const 获取。
- 当前项目的父级 — 通过使用方法 OdNwObjectId getParentId() const 获取,该方法访问保存的项目根树结构的层次结构。
保存的视点可以是以下任意一种:
- 文件夹项目,其中包含嵌套的保存项目作为子项:
//… if (pSI->isA() == OdNwSavedFolderItem::desc()) { OdNwSavedFolderItemPtr pFolder = OdNwSavedFolderItem::cast(pSI); OdNwObjectIdArray aChildren; if (pFolder->getChildren(aChildren) == eOk) { for (OdInt32 i = 0; i < aChildren.size(); i++) { OdNwSavedItem pChildSI = aChildren[i].openObject(); //… } //… - 从动画中剪切的一帧:
//… if (pSI->isA() == OdNwSavedViewpointAnimationCut::desc()) { OdNwSavedViewpointAnimationCutPtr pAnimCut = OdNwSavedViewpointAnimationCut::cast(pSI); double cutDelay = pAnimCut-> getDelay(); } //… - 动画,其中可以包含嵌套的保存项目作为子项:
//… if (pSI->isA() == OdNwSavedViewpointAnimation::desc()) { OdNwSavedViewpointAnimationPtr pAnim = OdNwSavedViewpointAnimation::cast(pSI); OdInt32 loopPlayback = pAnim->getLoopPlayback(); NwAnimationSmoothing::Enum smoothing = pAnim->getSmoothing(); OdNwObjectIdArray aChildren; if (pAnim->getChildren(aChildren) == eOk) { for (OdInt32 i = 0; i < aChildren.size(); i++) { OdNwSavedItem pChildSI = aChildren[i].openObject(); //… } //… - 检索到的保存视点,包含参数、切割平面、红线数据和覆盖外观信息:
//… if (pSI->isA() == OdNwSavedViewpoint::desc()) { OdNwSavedViewpointPtr pSavedViewpoint = OdNwSavedViewpoint::cast(pSI); // get viewpoint OdNwViewpoint pView = pSavedViewpoint->getViewpointId().openObject(); // get section data OdNwClipPlaneSetPtr pClipPlane = pSavedViewpoint->getClippingPlanesId().openObject(); // get redline data if saved viewpoints has OdNwObjectIdArray aRedLines; pSavedViewpoint->getRedLineList(aRedLines); // get override appearance info for this saved viewpoint OdNwObjectIdArray aHiddensMIs; pSavedViewpoint->getHiddens(aHiddensMIs); OdNwObjectIdArray aRequiredsMIs; pSavedViewpoint->getRequireds (aRequiredsMIs); OdUInt32 cntOfAppearanceOverride = pSavedViewpoint->getAppearanceOverrideCount(); OdNwObjectIdArray aOverrideAppearanceMIs; OdNwObjectId matId; pSavedViewpoint->getAppearanceOverride(0, aOverrideAppearanceMIs, matId); } //…
有关如何使用保存的视点的示例代码,请参见 Nw2Visualize 插件源代码。
例如,要从 NWD 文件导入保存的视点:
- 运行 OdVisualizeViewer,并在打开 NWD/NWC 文件时,勾选“导入已保存的视点”

- 所有未带批注的已保存视点都将作为 TvCamera 对象导入到 Database > Models > Service Models > Model <$ODA_TVVIEWER_SAVEDVIEWS>。

以下是 Autodesk® Navisworks® 中的已保存视点层次结构:

- 要将已保存的视点设置为活动视图,请在“可视化对象浏览器”中选择所需的相机,然后从“属性”窗口将其指定为活动视图:

- 请参阅 Navisworks 和 OdVisualizeViewer 中的视图比较:
- 内部
Navisworks 中的视图 OdVisualizeViewer 中的视图 - 后驱动
Navisworks 中的视图 OdVisualizeViewer 中的视图 - 概览


- 内部
- 内部
Navisworks 中的视图 OdVisualizeViewer 中的视图 - 后驱动
Navisworks 中的视图 OdVisualizeViewer 中的视图 - 概览


在我们的文档中了解更多信息: https://docs.opendesign.com/bimnv/bimnv_saving_viewpoints.html