ODA BimNv SDK:保存视点

要访问 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 文件导入保存的视点:

  1. 运行 OdVisualizeViewer,并在打开 NWD/NWC 文件时,勾选“导入已保存的视点”


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


  3. 以下是 Autodesk® Navisworks® 中的已保存视点层次结构:
  4. 要将已保存的视点设置为活动视图,请在“可视化对象浏览器”中选择所需的相机,然后从“属性”窗口将其指定为活动视图:

  5. 请参阅 Navisworks 和 OdVisualizeViewer 中的视图比较:
    • 内部

      Navisworks 中的视图 OdVisualizeViewer 中的视图

    • 后驱动
      Navisworks 中的视图 OdVisualizeViewer 中的视图

    • 概览
  6. 内部

    Navisworks 中的视图 OdVisualizeViewer 中的视图
  7. 后驱动
    Navisworks 中的视图 OdVisualizeViewer 中的视图
  8. 概览

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

今天就开始行动

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

免费试用