// This function is static to make sure that no properties are used directly from the entry. private static IFCAnyHandle CreatePropertyFromElementBase(IFCFile file, ExporterIFC exporterIFC, Element element, string revitParamNameToUse, string ifcPropertyName, BuiltInParameter builtInParameter, PropertyType propertyType, PropertyValueType valueType, Type propertyEnumerationType) { IFCAnyHandle propHnd = null; switch (propertyType) { case PropertyType.Text: { propHnd = PropertyUtil.CreateTextPropertyFromElement(file, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType, propertyEnumerationType); break; } case PropertyType.Label: { propHnd = PropertyUtil.CreateLabelPropertyFromElement(file, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType, propertyEnumerationType); break; } case PropertyType.Identifier: { propHnd = PropertyUtil.CreateIdentifierPropertyFromElement(file, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Boolean: { propHnd = PropertyUtil.CreateBooleanPropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Logical: { propHnd = PropertyUtil.CreateLogicalPropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Integer: { propHnd = PropertyUtil.CreateIntegerPropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Real: { propHnd = PropertyUtil.CreateRealPropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Length: { propHnd = PropertyUtil.CreateLengthMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.PositiveLength: { propHnd = PropertyUtil.CreatePositiveLengthMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.NormalisedRatio: { propHnd = PropertyUtil.CreateNormalisedRatioPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.PositiveRatio: { propHnd = PropertyUtil.CreatePositiveRatioPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Ratio: { propHnd = PropertyUtil.CreateRatioPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.PlaneAngle: { propHnd = PropertyUtil.CreatePlaneAngleMeasurePropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.PositivePlaneAngle: { propHnd = PositivePlaneAnglePropertyUtil.CreatePositivePlaneAngleMeasurePropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.Area: { propHnd = PropertyUtil.CreateAreaMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Volume: { propHnd = PropertyUtil.CreateVolumeMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Count: { propHnd = PropertyUtil.CreateCountMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Frequency: { propHnd = FrequencyPropertyUtil.CreateFrequencyPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ElectricCurrent: { propHnd = ElectricalCurrentPropertyUtil.CreateElectricalCurrentMeasurePropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.ElectricVoltage: { propHnd = ElectricVoltagePropertyUtil.CreateElectricVoltageMeasurePropertyFromElement(file, element, revitParamNameToUse, ifcPropertyName, valueType); break; } case PropertyType.LuminousFlux: { propHnd = PropertyUtil.CreateLuminousFluxMeasurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Force: { propHnd = FrequencyPropertyUtil.CreateForcePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.LinearForce: { propHnd = PropertyUtil.CreateLinearForcePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.PlanarForce: { propHnd = PropertyUtil.CreatePlanarForcePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Pressure: { propHnd = FrequencyPropertyUtil.CreatePressurePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ColorTemperature: { propHnd = PropertyUtil.CreateColorTemperaturePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Currency: { propHnd = PropertyUtil.CreateCurrencyPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ElectricalEfficacy: { propHnd = PropertyUtil.CreateElectricalEfficacyPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.LuminousIntensity: { propHnd = PropertyUtil.CreateLuminousIntensityPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.MassDensity: { propHnd = PropertyUtil.CreateMassDensityPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Illuminance: { propHnd = PropertyUtil.CreateIlluminancePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.Power: { propHnd = PropertyUtil.CreatePowerPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ThermodynamicTemperature: { propHnd = PropertyUtil.CreateThermodynamicTemperaturePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ThermalTransmittance: { propHnd = PropertyUtil.CreateThermalTransmittancePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.VolumetricFlowRate: { propHnd = PropertyUtil.CreateVolumetricFlowRatePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName, valueType); break; } case PropertyType.ClassificationReference: { propHnd = PropertyUtil.CreateClassificationReferencePropertyFromElement(file, exporterIFC, element, revitParamNameToUse, builtInParameter, ifcPropertyName); break; } case PropertyType.LinearVelocity: { propHnd = PropertyUtil.CreateLinearVelocityPropertyFromElement(file, exporterIFC, element, revitParamNameToUse, ifcPropertyName, valueType); break; } default: // Unhandled cases. return(null); } return(propHnd); }