protected override void Process(IFCAnyHandle ifcMaterialLayerSet) { base.Process(ifcMaterialLayerSet); IList <IFCAnyHandle> ifcMaterialLayers = IFCAnyHandleUtil.GetAggregateInstanceAttribute <List <IFCAnyHandle> >(ifcMaterialLayerSet, "MaterialLayers"); if (ifcMaterialLayers == null) { Importer.TheLog.LogError(ifcMaterialLayerSet.Id, "Expected at least 1 IfcMaterialLayer, found none.", false); return; } foreach (IFCAnyHandle ifcMaterialLayer in ifcMaterialLayers) { IFCMaterialLayer materialLayer = null; if (materialLayer is IFCMaterialLayerWithOffsets) { materialLayer = IFCMaterialLayerWithOffsets.ProcessIFCMaterialLayerWithOffsets(ifcMaterialLayer); } else { materialLayer = IFCMaterialLayer.ProcessIFCMaterialLayer(ifcMaterialLayer); } if (materialLayer != null) { MaterialLayers.Add(materialLayer); } } LayerSetName = IFCImportHandleUtil.GetOptionalStringAttribute(ifcMaterialLayerSet, "LayerSetName", null); }
/// <summary> /// Processes IfcRelAssociatesMaterial. /// </summary> /// <param name="ifcRelAssociatesMaterial">The IfcRelAssociatesMaterial handle.</param> void ProcessIFCRelAssociatesMaterial(IFCAnyHandle ifcRelAssociatesMaterial) { IFCAnyHandle ifcMaterialSelect = IFCAnyHandleUtil.GetInstanceAttribute(ifcRelAssociatesMaterial, "RelatingMaterial"); if (IFCAnyHandleUtil.IsNullOrHasNoValue(ifcMaterialSelect)) { IFCImportFile.TheLog.LogNullError(IFCEntityType.IfcRelAssociatesMaterial); return; } // Deal with various types of IFCMaterialSelect. if (IFCAnyHandleUtil.IsSubTypeOf(ifcMaterialSelect, IFCEntityType.IfcMaterial)) { MaterialSelect = IFCMaterial.ProcessIFCMaterial(ifcMaterialSelect); } else if (IFCAnyHandleUtil.IsSubTypeOf(ifcMaterialSelect, IFCEntityType.IfcMaterialLayer)) { MaterialSelect = IFCMaterialLayer.ProcessIFCMaterialLayer(ifcMaterialSelect); } else if (IFCAnyHandleUtil.IsSubTypeOf(ifcMaterialSelect, IFCEntityType.IfcMaterialLayerSet)) { MaterialSelect = IFCMaterialLayerSet.ProcessIFCMaterialLayerSet(ifcMaterialSelect); } else if (IFCAnyHandleUtil.IsSubTypeOf(ifcMaterialSelect, IFCEntityType.IfcMaterialLayerSetUsage)) { MaterialSelect = IFCMaterialLayerSetUsage.ProcessIFCMaterialLayerSetUsage(ifcMaterialSelect); } else if (IFCAnyHandleUtil.IsSubTypeOf(ifcMaterialSelect, IFCEntityType.IfcMaterialList)) { MaterialSelect = IFCMaterialList.ProcessIFCMaterialList(ifcMaterialSelect); } else { IFCImportFile.TheLog.LogUnhandledSubTypeError(ifcMaterialSelect, "IfcMaterialSelect", false); } }