Revit API: 材质- 参考官方文档(三)

前言

自己研究了一圈材质之后,在官方文档里面翻了一下,发现也有一些介绍,整理一下。
我研究的参考:
Revit API: Material 材质
Revit API: 材质- 参考官方文档(一)
Revit API: 材质- 参考官方文档(二)

内容

参考:
Material quantities
Painting the Face of an Element

获取材质(体积、面积)

如果构件所属的类别,它的属性 Category.HasMaterialQuantities 有效,那么这些 Element 中的函数可以使用:

// 得到当前构件所用的材质
public ICollection<ElementId> GetMaterialIds(bool returnPaintMaterials);
// 得到指定材质的面积
public double GetMaterialArea(ElementId materialId, bool usePaintMaterial);
// 得到指定材质的体积
public double GetMaterialVolume(ElementId materialId);

Category.HasMaterialQuantities 有效,对应的构件有限,包括几类:
使用了 compound structure 的构件,比如 walls, roofs, floors, ceilings, 一些基于三维的构件比如 stairs, 另外还有一些三维的族,它们的材质也可以被应用到几何上,比如 windows, doors, columns, MEP equipment, fixtures, 和 generic model families

另外,获取的面积和体积在某些情况下可能会有偏差,比如某些情况下的墙连接,或者在墙上加了 sweep 或者 reveal。

填色

Revit API:

// Document::Paint 
public void Paint(
	ElementId elementId,
	Face face,
	ElementId materialId
)

UI 入口:
在这里插入图片描述
例子:

public void PaintWallFaces(Wall wall, ElementId matId)
{
    Document doc = wall.Document;
    GeometryElement geometryElement = wall.get_Geometry(new Options());
    foreach (GeometryObject geometryObject in geometryElement)
    {
        if (geometryObject is Solid)
        {
            Solid solid = geometryObject as Solid;
            foreach (Face face in solid.Faces)
            {
                if (doc.IsPainted(wall.Id, face) == false)
                {
                    doc.Paint(wall.Id, face, matId);
                }
            }
        }
    }
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客BIM工作室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值