Revit SDK: MaterialQuantities

前言

这个例子介绍了如何分类统计材质的和面积。用到的接口是 Element 的:

// 返回 Element 中用到的材质
ICollection<ElementId> GetMaterialIds(bool returnPaintMaterials);
// Element 获取某材质的体积
double GetMaterialVolume(ElementId materialId);
// Element 获取某材质的面积
double GetMaterialArea(ElementId materialId, bool usePaintMaterial);

相对于其它例子,在统计不同类型的元素的时候,在技术上使用了模板来对代码进行了简化。

内容

本例子内容简单明了。重点看一下这个模板。
在这里插入图片描述

  1. 计算屋顶、墙、楼板的材质面积和体积
  2. 使用了模板方法void ExecuteCalculationsWith() where T : MaterialQuantityCalculator, new(),要求T继承或者实现MaterialQuantityCalculator,并带有无参构造函数
  3. 对屋顶、墙、楼板分别调用ExecuteCalculationsWith,传入的类不同:
    ExecuteCalculationsWith();
    ExecuteCalculationsWith();
    ExecuteCalculationsWith();
  4. RoofMaterialQuantityCalculator、WallMaterialQuantityCalculator、FloorMaterialQuantityCalculator 的不同在于过滤出了不同构件
  5. MaterialQuantityCalculator 作为父类,它的核心逻辑是计算材质的净体积和毛体积。计算净体积的时候会过滤掉所有的附加构件,例如门窗造成的洞口;计算毛体积则不考虑这些剔除。
  6. 最终都会调用Element.GetMaterialVolume 和 Element.GetMaterialArea。

总结

Revit API 中的 Element 提供了一系列和材质相关的 API,有些零碎。虽然这些 API 对于 Element 是必须的,但确实导致了接口数量的增加。如果进行大规模的二次开发,可以考虑在它的接口的基础之上进行二次封装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客BIM工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值