在 BimRv 中使用结构和热资产的辅助类

您可以在 ODA BimRv 中使用辅助类来创建和操作材料的物理和热属性。.rvt 文件中的标准方法是基于结构类或热类型之一创建结构或热资产,然后将其设置为材料对象。例如:

StructuralAsset sAsset = new StructuralAsset("Structural asset for concrete material", StructuralAssetClass.Concrete);
sAsset.Behavior = StructuralBehavior.Orthotropic;
sAsset.SetPoissonRatio(.5);
PropertySetElement propSetElem = PropertySetElement.Create(doc, sAsset);
material.StructuralAssetId = propSetElem.Id;

但在 .rvt 文件中,访问资产参数的唯一方法是通过 PropertySetElement 和内置参数枚举来访问它们。

Parameter paramPoissonRatioX = propSetElem.get_Parameter(BuiltInParameter.PHY_MATERIAL_PARAM_POISSON_MOD1);
paramPoissonRatioX.Set(.6);
辅助类

 

structure

 

ODA BimRv 提供了辅助类 OdBmStructuralAssetHelper,用于在数据库和材料中注册资产,然后访问和操作资产数据。

请注意,应使用事务来添加和修改数据库中的元素。要使用事务,请包含 Database/BmTransaction.h 头文件。

OdBmPropertySetElementPtr pPropSetElement = OdBmPropertySetElement::createObject();
  ODBM_TRANSACTION_BEGIN(t, pDbSrc)
    t.start();

    pDbSrc->addElement(pPropSetElement);
    OdBmStructuralAssetHelper structAssetHelper = OdBmStructuralAssetHelper(pPropSetElement);
    structAssetHelper.setStructuralAssetClass(OdBm::StructuralAssetClass::Metal);
    structAssetHelper.setName(L"Stainless Steel");
    structAssetHelper.setSubClass(L"Steel");
    structAssetHelper.setThermalExpansionCoefficient(OdGeVector3d(0.0000104, 0.0000104, 0.0000104));
    structAssetHelper.setBehavior(OdBm::StructuralBehavior::Isotropic);
    double dYoung = OdBmUnitUtils::convertToInternalUnits(193000., OdBm::DisplayUnitType::DUT_MEGAPASCALS);
    structAssetHelper.setYoungModulus(OdGeVector3d(dYoung, dYoung, dYoung));
    double dSheer = OdBmUnitUtils::convertToInternalUnits(86000., OdBm::DisplayUnitType::DUT_NEWTONS);
    structAssetHelper.setShearModulus(OdGeVector3d(dSheer, dSheer, dSheer));
    structAssetHelper.setPoissonModulus(OdGeVector3d(0.3, 0.3, 0.3));
    double dDensity = OdBmUnitUtils::convertToInternalUnits(8000., OdBm::DisplayUnitType::DUT_CUBIC_FEET);
    structAssetHelper.setDensity(dDensity);

    OdBmMaterialElemPtr pMaterialElem =
        pDbSrc->getObjectId(OdDbHandle(2349)).safeOpenObject();
    pMaterialElem->setStructuralAssetId(pPropSetElement->objectId());

  t.commit();
  ODBM_TRANSACTION_END();

热资产辅助类 OdBmThermalAssetHelper 的工作方式相同:

OdBmThermalAssetHelper thermalAssetHelper =
    OdBmThermalAssetHelper(pPropSetElement);
  thermalAssetHelper.setThermalClassType(OdBm::ThermalClassType::Solid);
  thermalAssetHelper.set…
  
  pMaterialElem->setThermalAssetId(objId);

辅助类还可以用于访问数据库中现有元素的属性。

OdBmDatabasePtr pDb = app->readFile(sTempFile);
    OdBmPropertySetElementPtr pMaterpPropSetElementialElem = pDbSrc->getObjectId(OdDbHandle(2350)).safeOpenObject();
    TEST_ASSERT(! pMaterpPropSetElementialElem.isNull());
    OdBmStructuralAssetHelper sAssetHelper = OdBmStructuralAssetHelper(pMaterpPropSetElementialElem);
OdString sName;
structAssetHelper.getName(sName);

今天就开始行动

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

免费试用