BimRv SDK:修改图形替代

本文介绍如何检索、修改和删除视图中定义的元素、类别和过滤器的图形替代。

检索覆盖

要检索图形覆盖,请使用 OdBmDBView 类中的相应方法:

  • 检索元素的覆盖:getElementOverrides()。
  • 检索类别的覆盖:getCategoryOverrides()。
  • 检索过滤器的覆盖:getFilterOverrides()。
修改覆盖

要修改图形覆盖,请使用 OdBmDBView 类中的以下方法。

要修改元素的覆盖,请使用 setElementOverrides() 方法。例如:

 OdBmObjectId elemId = pDb->getObjectId(iHandle);

      //Create an empty override and set it as a graphic override for an element
      OdBmOverrideGraphicSettingsPtr pEmptyOverrider = OdBmOverrideGraphicSettings::createObject();
      pActiveView->setElementOverrides(elemId, pEmptyOverrider);

要修改类别的覆盖,请使用 setCategoryOverrides() 方法。例如:

OdBmElementHeaderPtr pHeader = elemId.getHeader();
      OdInt64 iCategory = static_cast<OdInt64>(pHeader->getCategoryId().getHandle());
      
      OdBm::BuiltInCategory::Enum category = static_cast<OdBm::BuiltInCategory::Enum>(iCategory);
      pActiveView->setCategoryOverrides(category, pEmptyOverrider);

要修改过滤器的覆盖,请使用 setFilterOverrides() 方法。以下示例展示了如何使用其元素 ID 修改所需过滤器的覆盖。

OdBmFilterOverridesPtr pFilterOverrides = pActiveView->getFilterOverrides();
      OdBmFilterGraphicSettingsPtrArray aGraphicsSettings;
      pFilterOverrides->getFilterGraphicsSettings(aGraphicsSettings);

      for (auto pSetting : aGraphicsSettings)
      {
        OdBmFilterElementPtr pFilterElem = pSetting->getFilterElemId().safeOpenObject();
        if (pFilterElem->isMatched(elemId))
        {
          pActiveView->setFilterOverrides(pSetting->getFilterElementId(), pEmptyOverrider);
        }
      }

检索方法返回 OdBmOverrideGraphicSettings 类的一个对象,修改方法也需要相同类的对象。您可以使用此类的方***来控制图形设置。

 

移除覆盖

要从视图中移除所有图形覆盖,请调用 removeAllOverrides() 方法。此外,设置新创建的 OdBmOverrideGraphicSettings 对象也会移除旧的覆盖。

请参阅 BimRv/Examples/TB_Commands 目录中 BmRemoveOverridesCmd 命令的完整代码示例。

今天就开始行动

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

免费试用