Id of the material assigned to this layer.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.1.0.0 (26.1.0.34)
Syntax
C#
public ElementId MaterialId { get; set; }
Property Value
ElementIdThe default is InvalidElementId.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | When setting this property: A non-optional argument was null |
Example
C#
public void GetWallLayerMaterial(Autodesk.Revit.DB.Document document, Wall wall) { // get WallType of wall WallType aWallType = wall.WallType; // Only Basic Wall has compoundStructure if (WallKind.Basic == aWallType.Kind) { // Get CompoundStructure CompoundStructure comStruct = aWallType.GetCompoundStructure(); Categories allCategories = document.Settings.Categories; // Get the category OST_Walls default Material; // use if that layer's default Material is <By Category> Category wallCategory = allCategories.get_Item(BuiltInCategory.OST_Walls); Autodesk.Revit.DB.Material wallMaterial = wallCategory.Material; foreach (CompoundStructureLayer structLayer in comStruct.GetLayers()) { Autodesk.Revit.DB.Material layerMaterial = document.GetElement(structLayer.MaterialId) as Material; // If CompoundStructureLayer's Material is specified, use default // Material of its Category if (null == layerMaterial) { switch (structLayer.Function) { case MaterialFunctionAssignment.Finish1: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsFinish1).Material; break; case MaterialFunctionAssignment.Finish2: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsFinish2).Material; break; case MaterialFunctionAssignment.Membrane: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsMembrane).Material; break; case MaterialFunctionAssignment.Structure: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsStructure).Material; break; case MaterialFunctionAssignment.Substrate: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsSubstrate).Material; break; case MaterialFunctionAssignment.Insulation: layerMaterial = allCategories.get_Item(BuiltInCategory.OST_WallsInsulation).Material; break; default: // It is impossible to reach here break; } if (null == layerMaterial) { // CompoundStructureLayer's default Material is its SubCategory layerMaterial = wallMaterial; } } TaskDialog.Show("Revit","Layer Material: " + layerMaterial); } } }
VB
Public Sub GetWallLayerMaterial(document As Autodesk.Revit.DB.Document, wall As Wall) ' get WallType of wall Dim aWallType As WallType = wall.WallType ' Only Basic Wall has compoundStructure If WallKind.Basic = aWallType.Kind Then ' Get CompoundStructure Dim comStruct As CompoundStructure = aWallType.GetCompoundStructure() Dim allCategories As Categories = document.Settings.Categories ' Get the category OST_Walls default Material; ' use if that layer's default Material is <By Category> Dim wallCategory As Category = allCategories.Item(BuiltInCategory.OST_Walls) Dim wallMaterial As Autodesk.Revit.DB.Material = wallCategory.Material For Each structLayer As CompoundStructureLayer In comStruct.GetLayers() Dim layerMaterial As Autodesk.Revit.DB.Material = TryCast(document.GetElement(structLayer.MaterialId), Material) ' If CompoundStructureLayer's Material is specified, use default ' Material of its Category If layerMaterial Is Nothing Then Select Case structLayer.[Function] Case MaterialFunctionAssignment.Finish1 layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsFinish1).Material Exit Select Case MaterialFunctionAssignment.Finish2 layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsFinish2).Material Exit Select Case MaterialFunctionAssignment.Membrane layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsMembrane).Material Exit Select Case MaterialFunctionAssignment.[Structure] layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsStructure).Material Exit Select Case MaterialFunctionAssignment.Substrate layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsSubstrate).Material Exit Select Case MaterialFunctionAssignment.Insulation layerMaterial = allCategories.Item(BuiltInCategory.OST_WallsInsulation).Material Exit Select Case Else ' It is impossible to reach here Exit Select End Select If layerMaterial Is Nothing Then ' CompoundStructureLayer's default Material is its SubCategory layerMaterial = wallMaterial End If End If TaskDialog.Show("Revit", "Layer Material: " & layerMaterial.ToString()) Next End If End Sub