Question: How can I identify the core structural layer in a Revit host element such as a floor or a wall?
Answer: A heuristic method for this might be searching for the thickest layer. Here is a VB example of searching for the thickest layer of a given floor type and identifying its material, using its CompoundStructureLayerArray layers:
Dim m As Material = Nothing Dim layers as CompoundStructureLayerArray = floorType.CompoundStructure.Layers Dim thicknesses(layers.Size) As Single For i As Integer = 1 To layers.Size thicknesses(i) = layers.Item(i - 1).Thickness Next Dim maxIndex As Integer Dim maxV As Single MaxValOfIntArray(thicknesses, maxIndex, maxV) m = layers.Item(maxIndex - 1).Material
Unfortunately, the core structure layer may not always be the thickest. Sometimes some other layer such as an insulation of type ThermalOrAir or similar may be thicker.
A more reliable method is to use the CompoundStructureLayer.Function property, which indicates the actual usage of the layer. The core structure layer’s property value is CompoundStructureLayerFunction.Structure. You can go through the wall type or floor type layers as in the example above and determine the layer whose CompoundStructureLayer.Function equals CompoundStructureLayerFunction.Structure.