(* Copyright by: International Alliance for Interoperability, 1996-2007 All rights reserved. No part of this documentation may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the owner. Contents: full IFC object model EXPRESS definitions for the IFC2x Edition 3 Technical Corrigendum 1 release - express longform distribution - compiled for EXPRESS version 1 technical corrigendum 2 Issue date: July 10, 2007 Development Team: Modeling Support Group of the International Alliance for Interoperability compiled by Thomas Liebich tl@aec3.com *) SCHEMA IFC2X3; TYPE IfcAbsorbedDoseMeasure = REAL; END_TYPE; TYPE IfcAccelerationMeasure = REAL; END_TYPE; TYPE IfcAmountOfSubstanceMeasure = REAL; END_TYPE; TYPE IfcAngularVelocityMeasure = REAL; END_TYPE; TYPE IfcAreaMeasure = REAL; END_TYPE; TYPE IfcBoolean = BOOLEAN; END_TYPE; TYPE IfcBoxAlignment = IfcLabel; WHERE WR1 : SELF IN ['top-left', 'top-middle', 'top-right', 'middle-left', 'center', 'middle-right', 'bottom-left', 'bottom-middle', 'bottom-right']; END_TYPE; TYPE IfcComplexNumber = ARRAY [1:2] OF REAL; END_TYPE; TYPE IfcCompoundPlaneAngleMeasure = LIST [3:4] OF INTEGER; WHERE WR1 : { -360 <= SELF[1] < 360 }; WR2 : { -60 <= SELF[2] < 60 }; WR3 : { -60 <= SELF[3] < 60 }; WR4 : ((SELF[1] >= 0) AND (SELF[2] >= 0) AND (SELF[3] >= 0)) OR ((SELF[1] <= 0) AND (SELF[2] <= 0) AND (SELF[3] <= 0)); END_TYPE; TYPE IfcContextDependentMeasure = REAL; END_TYPE; TYPE IfcCountMeasure = NUMBER; END_TYPE; TYPE IfcCurvatureMeasure = REAL; END_TYPE; TYPE IfcDayInMonthNumber = INTEGER; END_TYPE; TYPE IfcDaylightSavingHour = INTEGER; WHERE WR1 : { 0 <= SELF <= 2 }; END_TYPE; TYPE IfcDescriptiveMeasure = STRING; END_TYPE; TYPE IfcDimensionCount = INTEGER; WHERE WR1 : { 0 < SELF <= 3 }; END_TYPE; TYPE IfcDoseEquivalentMeasure = REAL; END_TYPE; TYPE IfcDynamicViscosityMeasure = REAL; END_TYPE; TYPE IfcElectricCapacitanceMeasure = REAL; END_TYPE; TYPE IfcElectricChargeMeasure = REAL; END_TYPE; TYPE IfcElectricConductanceMeasure = REAL; END_TYPE; TYPE IfcElectricCurrentMeasure = REAL; END_TYPE; TYPE IfcElectricResistanceMeasure = REAL; END_TYPE; TYPE IfcElectricVoltageMeasure = REAL; END_TYPE; TYPE IfcEnergyMeasure = REAL; END_TYPE; TYPE IfcFontStyle = STRING; WHERE WR1 : SELF IN ['normal','italic','oblique']; END_TYPE; TYPE IfcFontVariant = STRING; WHERE WR1 : SELF IN ['normal','small-caps']; END_TYPE; TYPE IfcFontWeight = STRING; WHERE WR1 : SELF IN ['normal','small-caps','100','200','300','400','500','600','700','800','900']; END_TYPE; TYPE IfcForceMeasure = REAL; END_TYPE; TYPE IfcFrequencyMeasure = REAL; END_TYPE; TYPE IfcGloballyUniqueId = STRING(22) FIXED; END_TYPE; TYPE IfcHeatFluxDensityMeasure = REAL; END_TYPE; TYPE IfcHeatingValueMeasure = REAL; WHERE WR1 : SELF > 0.; END_TYPE; TYPE IfcHourInDay = INTEGER; WHERE WR1 : { 0 <= SELF < 24 }; END_TYPE; TYPE IfcIdentifier = STRING; END_TYPE; TYPE IfcIlluminanceMeasure = REAL; END_TYPE; TYPE IfcInductanceMeasure = REAL; END_TYPE; TYPE IfcInteger = INTEGER; END_TYPE; TYPE IfcIntegerCountRateMeasure = INTEGER; END_TYPE; TYPE IfcIonConcentrationMeasure = REAL; END_TYPE; TYPE IfcIsothermalMoistureCapacityMeasure = REAL; END_TYPE; TYPE IfcKinematicViscosityMeasure = REAL; END_TYPE; TYPE IfcLabel = STRING; END_TYPE; TYPE IfcLengthMeasure = REAL; END_TYPE; TYPE IfcLinearForceMeasure = REAL; END_TYPE; TYPE IfcLinearMomentMeasure = REAL; END_TYPE; TYPE IfcLinearStiffnessMeasure = REAL; END_TYPE; TYPE IfcLinearVelocityMeasure = REAL; END_TYPE; TYPE IfcLogical = LOGICAL; END_TYPE; TYPE IfcLuminousFluxMeasure = REAL; END_TYPE; TYPE IfcLuminousIntensityDistributionMeasure = REAL; END_TYPE; TYPE IfcLuminousIntensityMeasure = REAL; END_TYPE; TYPE IfcMagneticFluxDensityMeasure = REAL; END_TYPE; TYPE IfcMagneticFluxMeasure = REAL; END_TYPE; TYPE IfcMassDensityMeasure = REAL; END_TYPE; TYPE IfcMassFlowRateMeasure = REAL; END_TYPE; TYPE IfcMassMeasure = REAL; END_TYPE; TYPE IfcMassPerLengthMeasure = REAL; END_TYPE; TYPE IfcMinuteInHour = INTEGER; WHERE WR1 : {0 <= SELF <= 59 }; END_TYPE; TYPE IfcModulusOfElasticityMeasure = REAL; END_TYPE; TYPE IfcModulusOfLinearSubgradeReactionMeasure = REAL; END_TYPE; TYPE IfcModulusOfRotationalSubgradeReactionMeasure = REAL; END_TYPE; TYPE IfcModulusOfSubgradeReactionMeasure = REAL; END_TYPE; TYPE IfcMoistureDiffusivityMeasure = REAL; END_TYPE; TYPE IfcMolecularWeightMeasure = REAL; END_TYPE; TYPE IfcMomentOfInertiaMeasure = REAL; END_TYPE; TYPE IfcMonetaryMeasure = REAL; END_TYPE; TYPE IfcMonthInYearNumber = INTEGER; WHERE WR1 : { 1<= SELF <= 12 }; END_TYPE; TYPE IfcNormalisedRatioMeasure = IfcRatioMeasure; WHERE WR1 : {0.0 <= SELF <= 1.0}; END_TYPE; TYPE IfcNumericMeasure = NUMBER; END_TYPE; TYPE IfcPHMeasure = REAL; WHERE WR21 : {0.0 <= SELF <= 14.0}; END_TYPE; TYPE IfcParameterValue = REAL; END_TYPE; TYPE IfcPlanarForceMeasure = REAL; END_TYPE; TYPE IfcPlaneAngleMeasure = REAL; END_TYPE; TYPE IfcPositiveLengthMeasure = IfcLengthMeasure; WHERE WR1 : SELF > 0.; END_TYPE; TYPE IfcPositivePlaneAngleMeasure = IfcPlaneAngleMeasure; WHERE WR1 : SELF > 0.; END_TYPE; TYPE IfcPositiveRatioMeasure = IfcRatioMeasure; WHERE WR1 : SELF > 0.; END_TYPE; TYPE IfcPowerMeasure = REAL; END_TYPE; TYPE IfcPresentableText = STRING; END_TYPE; TYPE IfcPressureMeasure = REAL; END_TYPE; TYPE IfcRadioActivityMeasure = REAL; END_TYPE; TYPE IfcRatioMeasure = REAL; END_TYPE; TYPE IfcReal = REAL; END_TYPE; TYPE IfcRotationalFrequencyMeasure = REAL; END_TYPE; TYPE IfcRotationalMassMeasure = REAL; END_TYPE; TYPE IfcRotationalStiffnessMeasure = REAL; END_TYPE; TYPE IfcSecondInMinute = REAL; WHERE WR1 : { 0. <= SELF < 60. }; END_TYPE; TYPE IfcSectionModulusMeasure = REAL; END_TYPE; TYPE IfcSectionalAreaIntegralMeasure = REAL; END_TYPE; TYPE IfcShearModulusMeasure = REAL; END_TYPE; TYPE IfcSolidAngleMeasure = REAL; END_TYPE; TYPE IfcSoundPowerMeasure = REAL; END_TYPE; TYPE IfcSoundPressureMeasure = REAL; END_TYPE; TYPE IfcSpecificHeatCapacityMeasure = REAL; END_TYPE; TYPE IfcSpecularExponent = REAL; END_TYPE; TYPE IfcSpecularRoughness = REAL; WHERE WR1 : {0.0 <= SELF <= 1.0}; END_TYPE; TYPE IfcTemperatureGradientMeasure = REAL; END_TYPE; TYPE IfcText = STRING; END_TYPE; TYPE IfcTextAlignment = STRING; WHERE WR1 : SELF IN ['left', 'right', 'center', 'justify']; END_TYPE; TYPE IfcTextDecoration = STRING; WHERE WR1 : SELF IN ['none', 'underline', 'overline', 'line-through', 'blink']; END_TYPE; TYPE IfcTextFontName = STRING; END_TYPE; TYPE IfcTextTransformation = STRING; WHERE WR1 : SELF IN ['capitalize', 'uppercase', 'lowercase', 'none']; END_TYPE; TYPE IfcThermalAdmittanceMeasure = REAL; END_TYPE; TYPE IfcThermalConductivityMeasure = REAL; END_TYPE; TYPE IfcThermalExpansionCoefficientMeasure = REAL; END_TYPE; TYPE IfcThermalResistanceMeasure = REAL; END_TYPE; TYPE IfcThermalTransmittanceMeasure = REAL; END_TYPE; TYPE IfcThermodynamicTemperatureMeasure = REAL; END_TYPE; TYPE IfcTimeMeasure = REAL; END_TYPE; TYPE IfcTimeStamp = INTEGER; END_TYPE; TYPE IfcTorqueMeasure = REAL; END_TYPE; TYPE IfcVaporPermeabilityMeasure = REAL; END_TYPE; TYPE IfcVolumeMeasure = REAL; END_TYPE; TYPE IfcVolumetricFlowRateMeasure = REAL; END_TYPE; TYPE IfcWarpingConstantMeasure = REAL; END_TYPE; TYPE IfcWarpingMomentMeasure = REAL; END_TYPE; TYPE IfcYearNumber = INTEGER; END_TYPE; TYPE IfcActionSourceTypeEnum = ENUMERATION OF (DEAD_LOAD_G ,COMPLETION_G1 ,LIVE_LOAD_Q ,SNOW_S ,WIND_W ,PRESTRESSING_P ,SETTLEMENT_U ,TEMPERATURE_T ,EARTHQUAKE_E ,FIRE ,IMPULSE ,IMPACT ,TRANSPORT ,ERECTION ,PROPPING ,SYSTEM_IMPERFECTION ,SHRINKAGE ,CREEP ,LACK_OF_FIT ,BUOYANCY ,ICE ,CURRENT ,WAVE ,RAIN ,BRAKES ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcActionTypeEnum = ENUMERATION OF (PERMANENT_G ,VARIABLE_Q ,EXTRAORDINARY_A ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcActuatorTypeEnum = ENUMERATION OF (ELECTRICACTUATOR ,HANDOPERATEDACTUATOR ,HYDRAULICACTUATOR ,PNEUMATICACTUATOR ,THERMOSTATICACTUATOR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAddressTypeEnum = ENUMERATION OF (OFFICE ,SITE ,HOME ,DISTRIBUTIONPOINT ,USERDEFINED); END_TYPE; TYPE IfcAheadOrBehind = ENUMERATION OF (AHEAD ,BEHIND); END_TYPE; TYPE IfcAirTerminalBoxTypeEnum = ENUMERATION OF (CONSTANTFLOW ,VARIABLEFLOWPRESSUREDEPENDANT ,VARIABLEFLOWPRESSUREINDEPENDANT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAirTerminalTypeEnum = ENUMERATION OF (GRILLE ,REGISTER ,DIFFUSER ,EYEBALL ,IRIS ,LINEARGRILLE ,LINEARDIFFUSER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAirToAirHeatRecoveryTypeEnum = ENUMERATION OF (FIXEDPLATECOUNTERFLOWEXCHANGER ,FIXEDPLATECROSSFLOWEXCHANGER ,FIXEDPLATEPARALLELFLOWEXCHANGER ,ROTARYWHEEL ,RUNAROUNDCOILLOOP ,HEATPIPE ,TWINTOWERENTHALPYRECOVERYLOOPS ,THERMOSIPHONSEALEDTUBEHEATEXCHANGERS ,THERMOSIPHONCOILTYPEHEATEXCHANGERS ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAlarmTypeEnum = ENUMERATION OF (BELL ,BREAKGLASSBUTTON ,LIGHT ,MANUALPULLBOX ,SIREN ,WHISTLE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAnalysisModelTypeEnum = ENUMERATION OF (IN_PLANE_LOADING_2D ,OUT_PLANE_LOADING_2D ,LOADING_3D ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcAnalysisTheoryTypeEnum = ENUMERATION OF (FIRST_ORDER_THEORY ,SECOND_ORDER_THEORY ,THIRD_ORDER_THEORY ,FULL_NONLINEAR_THEORY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcArithmeticOperatorEnum = ENUMERATION OF (ADD ,DIVIDE ,MULTIPLY ,SUBTRACT); END_TYPE; TYPE IfcAssemblyPlaceEnum = ENUMERATION OF (SITE ,FACTORY ,NOTDEFINED); END_TYPE; TYPE IfcBSplineCurveForm = ENUMERATION OF (POLYLINE_FORM ,CIRCULAR_ARC ,ELLIPTIC_ARC ,PARABOLIC_ARC ,HYPERBOLIC_ARC ,UNSPECIFIED); END_TYPE; TYPE IfcBeamTypeEnum = ENUMERATION OF (BEAM ,JOIST ,LINTEL ,T_BEAM ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcBenchmarkEnum = ENUMERATION OF (GREATERTHAN ,GREATERTHANOREQUALTO ,LESSTHAN ,LESSTHANOREQUALTO ,EQUALTO ,NOTEQUALTO); END_TYPE; TYPE IfcBoilerTypeEnum = ENUMERATION OF (WATER ,STEAM ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcBooleanOperator = ENUMERATION OF (UNION ,INTERSECTION ,DIFFERENCE); END_TYPE; TYPE IfcBuildingElementProxyTypeEnum = ENUMERATION OF (USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCableCarrierFittingTypeEnum = ENUMERATION OF (BEND ,CROSS ,REDUCER ,TEE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCableCarrierSegmentTypeEnum = ENUMERATION OF (CABLELADDERSEGMENT ,CABLETRAYSEGMENT ,CABLETRUNKINGSEGMENT ,CONDUITSEGMENT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCableSegmentTypeEnum = ENUMERATION OF (CABLESEGMENT ,CONDUCTORSEGMENT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcChangeActionEnum = ENUMERATION OF (NOCHANGE ,MODIFIED ,ADDED ,DELETED ,MODIFIEDADDED ,MODIFIEDDELETED); END_TYPE; TYPE IfcChillerTypeEnum = ENUMERATION OF (AIRCOOLED ,WATERCOOLED ,HEATRECOVERY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCoilTypeEnum = ENUMERATION OF (DXCOOLINGCOIL ,WATERCOOLINGCOIL ,STEAMHEATINGCOIL ,WATERHEATINGCOIL ,ELECTRICHEATINGCOIL ,GASHEATINGCOIL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcColumnTypeEnum = ENUMERATION OF (COLUMN ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCompressorTypeEnum = ENUMERATION OF (DYNAMIC ,RECIPROCATING ,ROTARY ,SCROLL ,TROCHOIDAL ,SINGLESTAGE ,BOOSTER ,OPENTYPE ,HERMETIC ,SEMIHERMETIC ,WELDEDSHELLHERMETIC ,ROLLINGPISTON ,ROTARYVANE ,SINGLESCREW ,TWINSCREW ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCondenserTypeEnum = ENUMERATION OF (WATERCOOLEDSHELLTUBE ,WATERCOOLEDSHELLCOIL ,WATERCOOLEDTUBEINTUBE ,WATERCOOLEDBRAZEDPLATE ,AIRCOOLED ,EVAPORATIVECOOLED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcConnectionTypeEnum = ENUMERATION OF (ATPATH ,ATSTART ,ATEND ,NOTDEFINED); END_TYPE; TYPE IfcConstraintEnum = ENUMERATION OF (HARD ,SOFT ,ADVISORY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcControllerTypeEnum = ENUMERATION OF (FLOATING ,PROPORTIONAL ,PROPORTIONALINTEGRAL ,PROPORTIONALINTEGRALDERIVATIVE ,TIMEDTWOPOSITION ,TWOPOSITION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCooledBeamTypeEnum = ENUMERATION OF (ACTIVE ,PASSIVE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCoolingTowerTypeEnum = ENUMERATION OF (NATURALDRAFT ,MECHANICALINDUCEDDRAFT ,MECHANICALFORCEDDRAFT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCostScheduleTypeEnum = ENUMERATION OF (BUDGET ,COSTPLAN ,ESTIMATE ,TENDER ,PRICEDBILLOFQUANTITIES ,UNPRICEDBILLOFQUANTITIES ,SCHEDULEOFRATES ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCoveringTypeEnum = ENUMERATION OF (CEILING ,FLOORING ,CLADDING ,ROOFING ,INSULATION ,MEMBRANE ,SLEEVING ,WRAPPING ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcCurrencyEnum = ENUMERATION OF (AED ,AES ,ATS ,AUD ,BBD ,BEG ,BGL ,BHD ,BMD ,BND ,BRL ,BSD ,BWP ,BZD ,CAD ,CBD ,CHF ,CLP ,CNY ,CYS ,CZK ,DDP ,DEM ,DKK ,EGL ,EST ,EUR ,FAK ,FIM ,FJD ,FKP ,FRF ,GBP ,GIP ,GMD ,GRX ,HKD ,HUF ,ICK ,IDR ,ILS ,INR ,IRP ,ITL ,JMD ,JOD ,JPY ,KES ,KRW ,KWD ,KYD ,LKR ,LUF ,MTL ,MUR ,MXN ,MYR ,NLG ,NZD ,OMR ,PGK ,PHP ,PKR ,PLN ,PTN ,QAR ,RUR ,SAR ,SCR ,SEK ,SGD ,SKP ,THB ,TRL ,TTD ,TWD ,USD ,VEB ,VND ,XEU ,ZAR ,ZWD ,NOK); END_TYPE; TYPE IfcCurtainWallTypeEnum = ENUMERATION OF (USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDamperTypeEnum = ENUMERATION OF (CONTROLDAMPER ,FIREDAMPER ,SMOKEDAMPER ,FIRESMOKEDAMPER ,BACKDRAFTDAMPER ,RELIEFDAMPER ,BLASTDAMPER ,GRAVITYDAMPER ,GRAVITYRELIEFDAMPER ,BALANCINGDAMPER ,FUMEHOODEXHAUST ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDataOriginEnum = ENUMERATION OF (MEASURED ,PREDICTED ,SIMULATED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDerivedUnitEnum = ENUMERATION OF (ANGULARVELOCITYUNIT ,COMPOUNDPLANEANGLEUNIT ,DYNAMICVISCOSITYUNIT ,HEATFLUXDENSITYUNIT ,INTEGERCOUNTRATEUNIT ,ISOTHERMALMOISTURECAPACITYUNIT ,KINEMATICVISCOSITYUNIT ,LINEARVELOCITYUNIT ,MASSDENSITYUNIT ,MASSFLOWRATEUNIT ,MOISTUREDIFFUSIVITYUNIT ,MOLECULARWEIGHTUNIT ,SPECIFICHEATCAPACITYUNIT ,THERMALADMITTANCEUNIT ,THERMALCONDUCTANCEUNIT ,THERMALRESISTANCEUNIT ,THERMALTRANSMITTANCEUNIT ,VAPORPERMEABILITYUNIT ,VOLUMETRICFLOWRATEUNIT ,ROTATIONALFREQUENCYUNIT ,TORQUEUNIT ,MOMENTOFINERTIAUNIT ,LINEARMOMENTUNIT ,LINEARFORCEUNIT ,PLANARFORCEUNIT ,MODULUSOFELASTICITYUNIT ,SHEARMODULUSUNIT ,LINEARSTIFFNESSUNIT ,ROTATIONALSTIFFNESSUNIT ,MODULUSOFSUBGRADEREACTIONUNIT ,ACCELERATIONUNIT ,CURVATUREUNIT ,HEATINGVALUEUNIT ,IONCONCENTRATIONUNIT ,LUMINOUSINTENSITYDISTRIBUTIONUNIT ,MASSPERLENGTHUNIT ,MODULUSOFLINEARSUBGRADEREACTIONUNIT ,MODULUSOFROTATIONALSUBGRADEREACTIONUNIT ,PHUNIT ,ROTATIONALMASSUNIT ,SECTIONAREAINTEGRALUNIT ,SECTIONMODULUSUNIT ,SOUNDPOWERUNIT ,SOUNDPRESSUREUNIT ,TEMPERATUREGRADIENTUNIT ,THERMALEXPANSIONCOEFFICIENTUNIT ,WARPINGCONSTANTUNIT ,WARPINGMOMENTUNIT ,USERDEFINED); END_TYPE; TYPE IfcDimensionExtentUsage = ENUMERATION OF (ORIGIN ,TARGET); END_TYPE; TYPE IfcDirectionSenseEnum = ENUMERATION OF (POSITIVE ,NEGATIVE); END_TYPE; TYPE IfcDistributionChamberElementTypeEnum = ENUMERATION OF (FORMEDDUCT ,INSPECTIONCHAMBER ,INSPECTIONPIT ,MANHOLE ,METERCHAMBER ,SUMP ,TRENCH ,VALVECHAMBER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDocumentConfidentialityEnum = ENUMERATION OF (PUBLIC ,RESTRICTED ,CONFIDENTIAL ,PERSONAL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDocumentStatusEnum = ENUMERATION OF (DRAFT ,FINALDRAFT ,FINAL ,REVISION ,NOTDEFINED); END_TYPE; TYPE IfcDoorPanelOperationEnum = ENUMERATION OF (SWINGING ,DOUBLE_ACTING ,SLIDING ,FOLDING ,REVOLVING ,ROLLINGUP ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDoorPanelPositionEnum = ENUMERATION OF (LEFT ,MIDDLE ,RIGHT ,NOTDEFINED); END_TYPE; TYPE IfcDoorStyleConstructionEnum = ENUMERATION OF (ALUMINIUM ,HIGH_GRADE_STEEL ,STEEL ,WOOD ,ALUMINIUM_WOOD ,ALUMINIUM_PLASTIC ,PLASTIC ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDoorStyleOperationEnum = ENUMERATION OF (SINGLE_SWING_LEFT ,SINGLE_SWING_RIGHT ,DOUBLE_DOOR_SINGLE_SWING ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT ,DOUBLE_SWING_LEFT ,DOUBLE_SWING_RIGHT ,DOUBLE_DOOR_DOUBLE_SWING ,SLIDING_TO_LEFT ,SLIDING_TO_RIGHT ,DOUBLE_DOOR_SLIDING ,FOLDING_TO_LEFT ,FOLDING_TO_RIGHT ,DOUBLE_DOOR_FOLDING ,REVOLVING ,ROLLINGUP ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDuctFittingTypeEnum = ENUMERATION OF (BEND ,CONNECTOR ,ENTRY ,EXIT ,JUNCTION ,OBSTRUCTION ,TRANSITION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDuctSegmentTypeEnum = ENUMERATION OF (RIGIDSEGMENT ,FLEXIBLESEGMENT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcDuctSilencerTypeEnum = ENUMERATION OF (FLATOVAL ,RECTANGULAR ,ROUND ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricApplianceTypeEnum = ENUMERATION OF (COMPUTER ,DIRECTWATERHEATER ,DISHWASHER ,ELECTRICCOOKER ,ELECTRICHEATER ,FACSIMILE ,FREESTANDINGFAN ,FREEZER ,FRIDGE_FREEZER ,HANDDRYER ,INDIRECTWATERHEATER ,MICROWAVE ,PHOTOCOPIER ,PRINTER ,REFRIGERATOR ,RADIANTHEATER ,SCANNER ,TELEPHONE ,TUMBLEDRYER ,TV ,VENDINGMACHINE ,WASHINGMACHINE ,WATERHEATER ,WATERCOOLER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricCurrentEnum = ENUMERATION OF (ALTERNATING ,DIRECT ,NOTDEFINED); END_TYPE; TYPE IfcElectricDistributionPointFunctionEnum = ENUMERATION OF (ALARMPANEL ,CONSUMERUNIT ,CONTROLPANEL ,DISTRIBUTIONBOARD ,GASDETECTORPANEL ,INDICATORPANEL ,MIMICPANEL ,MOTORCONTROLCENTRE ,SWITCHBOARD ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricFlowStorageDeviceTypeEnum = ENUMERATION OF (BATTERY ,CAPACITORBANK ,HARMONICFILTER ,INDUCTORBANK ,UPS ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricGeneratorTypeEnum = ENUMERATION OF (USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricHeaterTypeEnum = ENUMERATION OF (ELECTRICPOINTHEATER ,ELECTRICCABLEHEATER ,ELECTRICMATHEATER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricMotorTypeEnum = ENUMERATION OF (DC ,INDUCTION ,POLYPHASE ,RELUCTANCESYNCHRONOUS ,SYNCHRONOUS ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElectricTimeControlTypeEnum = ENUMERATION OF (TIMECLOCK ,TIMEDELAY ,RELAY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElementAssemblyTypeEnum = ENUMERATION OF (ACCESSORY_ASSEMBLY ,ARCH ,BEAM_GRID ,BRACED_FRAME ,GIRDER ,REINFORCEMENT_UNIT ,RIGID_FRAME ,SLAB_FIELD ,TRUSS ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcElementCompositionEnum = ENUMERATION OF (COMPLEX ,ELEMENT ,PARTIAL); END_TYPE; TYPE IfcEnergySequenceEnum = ENUMERATION OF (PRIMARY ,SECONDARY ,TERTIARY ,AUXILIARY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcEnvironmentalImpactCategoryEnum = ENUMERATION OF (COMBINEDVALUE ,DISPOSAL ,EXTRACTION ,INSTALLATION ,MANUFACTURE ,TRANSPORTATION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcEvaporativeCoolerTypeEnum = ENUMERATION OF (DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER ,DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER ,DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER ,DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER ,DIRECTEVAPORATIVEAIRWASHER ,INDIRECTEVAPORATIVEPACKAGEAIRCOOLER ,INDIRECTEVAPORATIVEWETCOIL ,INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER ,INDIRECTDIRECTCOMBINATION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcEvaporatorTypeEnum = ENUMERATION OF (DIRECTEXPANSIONSHELLANDTUBE ,DIRECTEXPANSIONTUBEINTUBE ,DIRECTEXPANSIONBRAZEDPLATE ,FLOODEDSHELLANDTUBE ,SHELLANDCOIL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFanTypeEnum = ENUMERATION OF (CENTRIFUGALFORWARDCURVED ,CENTRIFUGALRADIAL ,CENTRIFUGALBACKWARDINCLINEDCURVED ,CENTRIFUGALAIRFOIL ,TUBEAXIAL ,VANEAXIAL ,PROPELLORAXIAL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFilterTypeEnum = ENUMERATION OF (AIRPARTICLEFILTER ,ODORFILTER ,OILFILTER ,STRAINER ,WATERFILTER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFireSuppressionTerminalTypeEnum = ENUMERATION OF (BREECHINGINLET ,FIREHYDRANT ,HOSEREEL ,SPRINKLER ,SPRINKLERDEFLECTOR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFlowDirectionEnum = ENUMERATION OF (SOURCE ,SINK ,SOURCEANDSINK ,NOTDEFINED); END_TYPE; TYPE IfcFlowInstrumentTypeEnum = ENUMERATION OF (PRESSUREGAUGE ,THERMOMETER ,AMMETER ,FREQUENCYMETER ,POWERFACTORMETER ,PHASEANGLEMETER ,VOLTMETER_PEAK ,VOLTMETER_RMS ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFlowMeterTypeEnum = ENUMERATION OF (ELECTRICMETER ,ENERGYMETER ,FLOWMETER ,GASMETER ,OILMETER ,WATERMETER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcFootingTypeEnum = ENUMERATION OF (FOOTING_BEAM ,PAD_FOOTING ,PILE_CAP ,STRIP_FOOTING ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcGasTerminalTypeEnum = ENUMERATION OF (GASAPPLIANCE ,GASBOOSTER ,GASBURNER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcGeometricProjectionEnum = ENUMERATION OF (GRAPH_VIEW ,SKETCH_VIEW ,MODEL_VIEW ,PLAN_VIEW ,REFLECTED_PLAN_VIEW ,SECTION_VIEW ,ELEVATION_VIEW ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcGlobalOrLocalEnum = ENUMERATION OF (GLOBAL_COORDS ,LOCAL_COORDS); END_TYPE; TYPE IfcHeatExchangerTypeEnum = ENUMERATION OF (PLATE ,SHELLANDTUBE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcHumidifierTypeEnum = ENUMERATION OF (STEAMINJECTION ,ADIABATICAIRWASHER ,ADIABATICPAN ,ADIABATICWETTEDELEMENT ,ADIABATICATOMIZING ,ADIABATICULTRASONIC ,ADIABATICRIGIDMEDIA ,ADIABATICCOMPRESSEDAIRNOZZLE ,ASSISTEDELECTRIC ,ASSISTEDNATURALGAS ,ASSISTEDPROPANE ,ASSISTEDBUTANE ,ASSISTEDSTEAM ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcInternalOrExternalEnum = ENUMERATION OF (INTERNAL ,EXTERNAL ,NOTDEFINED); END_TYPE; TYPE IfcInventoryTypeEnum = ENUMERATION OF (ASSETINVENTORY ,SPACEINVENTORY ,FURNITUREINVENTORY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcJunctionBoxTypeEnum = ENUMERATION OF (USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcLampTypeEnum = ENUMERATION OF (COMPACTFLUORESCENT ,FLUORESCENT ,HIGHPRESSUREMERCURY ,HIGHPRESSURESODIUM ,METALHALIDE ,TUNGSTENFILAMENT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcLayerSetDirectionEnum = ENUMERATION OF (AXIS1 ,AXIS2 ,AXIS3); END_TYPE; TYPE IfcLightDistributionCurveEnum = ENUMERATION OF (TYPE_A ,TYPE_B ,TYPE_C ,NOTDEFINED); END_TYPE; TYPE IfcLightEmissionSourceEnum = ENUMERATION OF (COMPACTFLUORESCENT ,FLUORESCENT ,HIGHPRESSUREMERCURY ,HIGHPRESSURESODIUM ,LIGHTEMITTINGDIODE ,LOWPRESSURESODIUM ,LOWVOLTAGEHALOGEN ,MAINVOLTAGEHALOGEN ,METALHALIDE ,TUNGSTENFILAMENT ,NOTDEFINED); END_TYPE; TYPE IfcLightFixtureTypeEnum = ENUMERATION OF (POINTSOURCE ,DIRECTIONSOURCE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcLoadGroupTypeEnum = ENUMERATION OF (LOAD_GROUP ,LOAD_CASE ,LOAD_COMBINATION_GROUP ,LOAD_COMBINATION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcLogicalOperatorEnum = ENUMERATION OF (LOGICALAND ,LOGICALOR); END_TYPE; TYPE IfcMemberTypeEnum = ENUMERATION OF (BRACE ,CHORD ,COLLAR ,MEMBER ,MULLION ,PLATE ,POST ,PURLIN ,RAFTER ,STRINGER ,STRUT ,STUD ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcMotorConnectionTypeEnum = ENUMERATION OF (BELTDRIVE ,COUPLING ,DIRECTDRIVE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcNullStyle = ENUMERATION OF (NULL); END_TYPE; TYPE IfcObjectTypeEnum = ENUMERATION OF (PRODUCT ,PROCESS ,CONTROL ,RESOURCE ,ACTOR ,GROUP ,PROJECT ,NOTDEFINED); END_TYPE; TYPE IfcObjectiveEnum = ENUMERATION OF (CODECOMPLIANCE ,DESIGNINTENT ,HEALTHANDSAFETY ,REQUIREMENT ,SPECIFICATION ,TRIGGERCONDITION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcOccupantTypeEnum = ENUMERATION OF (ASSIGNEE ,ASSIGNOR ,LESSEE ,LESSOR ,LETTINGAGENT ,OWNER ,TENANT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcOutletTypeEnum = ENUMERATION OF (AUDIOVISUALOUTLET ,COMMUNICATIONSOUTLET ,POWEROUTLET ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPermeableCoveringOperationEnum = ENUMERATION OF (GRILL ,LOUVER ,SCREEN ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF (PHYSICAL ,VIRTUAL ,NOTDEFINED); END_TYPE; TYPE IfcPileConstructionEnum = ENUMERATION OF (CAST_IN_PLACE ,COMPOSITE ,PRECAST_CONCRETE ,PREFAB_STEEL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPileTypeEnum = ENUMERATION OF (COHESION ,FRICTION ,SUPPORT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPipeFittingTypeEnum = ENUMERATION OF (BEND ,CONNECTOR ,ENTRY ,EXIT ,JUNCTION ,OBSTRUCTION ,TRANSITION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPipeSegmentTypeEnum = ENUMERATION OF (FLEXIBLESEGMENT ,RIGIDSEGMENT ,GUTTER ,SPOOL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPlateTypeEnum = ENUMERATION OF (CURTAIN_PANEL ,SHEET ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcProcedureTypeEnum = ENUMERATION OF (ADVICE_CAUTION ,ADVICE_NOTE ,ADVICE_WARNING ,CALIBRATION ,DIAGNOSTIC ,SHUTDOWN ,STARTUP ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcProfileTypeEnum = ENUMERATION OF (CURVE ,AREA); END_TYPE; TYPE IfcProjectOrderRecordTypeEnum = ENUMERATION OF (CHANGE ,MAINTENANCE ,MOVE ,PURCHASE ,WORK ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcProjectOrderTypeEnum = ENUMERATION OF (CHANGEORDER ,MAINTENANCEWORKORDER ,MOVEORDER ,PURCHASEORDER ,WORKORDER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcProjectedOrTrueLengthEnum = ENUMERATION OF (PROJECTED_LENGTH ,TRUE_LENGTH); END_TYPE; TYPE IfcPropertySourceEnum = ENUMERATION OF (DESIGN ,DESIGNMAXIMUM ,DESIGNMINIMUM ,SIMULATED ,ASBUILT ,COMMISSIONING ,MEASURED ,USERDEFINED ,NOTKNOWN); END_TYPE; TYPE IfcProtectiveDeviceTypeEnum = ENUMERATION OF (FUSEDISCONNECTOR ,CIRCUITBREAKER ,EARTHFAILUREDEVICE ,RESIDUALCURRENTCIRCUITBREAKER ,RESIDUALCURRENTSWITCH ,VARISTOR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcPumpTypeEnum = ENUMERATION OF (CIRCULATOR ,ENDSUCTION ,SPLITCASE ,VERTICALINLINE ,VERTICALTURBINE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcRailingTypeEnum = ENUMERATION OF (HANDRAIL ,GUARDRAIL ,BALUSTRADE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcRampFlightTypeEnum = ENUMERATION OF (STRAIGHT ,SPIRAL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcRampTypeEnum = ENUMERATION OF (STRAIGHT_RUN_RAMP ,TWO_STRAIGHT_RUN_RAMP ,QUARTER_TURN_RAMP ,TWO_QUARTER_TURN_RAMP ,HALF_TURN_RAMP ,SPIRAL_RAMP ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcReflectanceMethodEnum = ENUMERATION OF (BLINN ,FLAT ,GLASS ,MATT ,METAL ,MIRROR ,PHONG ,PLASTIC ,STRAUSS ,NOTDEFINED); END_TYPE; TYPE IfcReinforcingBarRoleEnum = ENUMERATION OF (MAIN ,SHEAR ,LIGATURE ,STUD ,PUNCHING ,EDGE ,RING ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcReinforcingBarSurfaceEnum = ENUMERATION OF (PLAIN ,TEXTURED); END_TYPE; TYPE IfcResourceConsumptionEnum = ENUMERATION OF (CONSUMED ,PARTIALLYCONSUMED ,NOTCONSUMED ,OCCUPIED ,PARTIALLYOCCUPIED ,NOTOCCUPIED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcRibPlateDirectionEnum = ENUMERATION OF (DIRECTION_X ,DIRECTION_Y); END_TYPE; TYPE IfcRoleEnum = ENUMERATION OF (SUPPLIER ,MANUFACTURER ,CONTRACTOR ,SUBCONTRACTOR ,ARCHITECT ,STRUCTURALENGINEER ,COSTENGINEER ,CLIENT ,BUILDINGOWNER ,BUILDINGOPERATOR ,MECHANICALENGINEER ,ELECTRICALENGINEER ,PROJECTMANAGER ,FACILITIESMANAGER ,CIVILENGINEER ,COMISSIONINGENGINEER ,ENGINEER ,OWNER ,CONSULTANT ,CONSTRUCTIONMANAGER ,FIELDCONSTRUCTIONMANAGER ,RESELLER ,USERDEFINED); END_TYPE; TYPE IfcRoofTypeEnum = ENUMERATION OF (FLAT_ROOF ,SHED_ROOF ,GABLE_ROOF ,HIP_ROOF ,HIPPED_GABLE_ROOF ,GAMBREL_ROOF ,MANSARD_ROOF ,BARREL_ROOF ,RAINBOW_ROOF ,BUTTERFLY_ROOF ,PAVILION_ROOF ,DOME_ROOF ,FREEFORM ,NOTDEFINED); END_TYPE; TYPE IfcSIPrefix = ENUMERATION OF (EXA ,PETA ,TERA ,GIGA ,MEGA ,KILO ,HECTO ,DECA ,DECI ,CENTI ,MILLI ,MICRO ,NANO ,PICO ,FEMTO ,ATTO); END_TYPE; TYPE IfcSIUnitName = ENUMERATION OF (AMPERE ,BECQUEREL ,CANDELA ,COULOMB ,CUBIC_METRE ,DEGREE_CELSIUS ,FARAD ,GRAM ,GRAY ,HENRY ,HERTZ ,JOULE ,KELVIN ,LUMEN ,LUX ,METRE ,MOLE ,NEWTON ,OHM ,PASCAL ,RADIAN ,SECOND ,SIEMENS ,SIEVERT ,SQUARE_METRE ,STERADIAN ,TESLA ,VOLT ,WATT ,WEBER); END_TYPE; TYPE IfcSanitaryTerminalTypeEnum = ENUMERATION OF (BATH ,BIDET ,CISTERN ,SHOWER ,SINK ,SANITARYFOUNTAIN ,TOILETPAN ,URINAL ,WASHHANDBASIN ,WCSEAT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSectionTypeEnum = ENUMERATION OF (UNIFORM ,TAPERED); END_TYPE; TYPE IfcSensorTypeEnum = ENUMERATION OF (CO2SENSOR ,FIRESENSOR ,FLOWSENSOR ,GASSENSOR ,HEATSENSOR ,HUMIDITYSENSOR ,LIGHTSENSOR ,MOISTURESENSOR ,MOVEMENTSENSOR ,PRESSURESENSOR ,SMOKESENSOR ,SOUNDSENSOR ,TEMPERATURESENSOR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSequenceEnum = ENUMERATION OF (START_START ,START_FINISH ,FINISH_START ,FINISH_FINISH ,NOTDEFINED); END_TYPE; TYPE IfcServiceLifeFactorTypeEnum = ENUMERATION OF (A_QUALITYOFCOMPONENTS ,B_DESIGNLEVEL ,C_WORKEXECUTIONLEVEL ,D_INDOORENVIRONMENT ,E_OUTDOORENVIRONMENT ,F_INUSECONDITIONS ,G_MAINTENANCELEVEL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcServiceLifeTypeEnum = ENUMERATION OF (ACTUALSERVICELIFE ,EXPECTEDSERVICELIFE ,OPTIMISTICREFERENCESERVICELIFE ,PESSIMISTICREFERENCESERVICELIFE ,REFERENCESERVICELIFE); END_TYPE; TYPE IfcSlabTypeEnum = ENUMERATION OF (FLOOR ,ROOF ,LANDING ,BASESLAB ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSoundScaleEnum = ENUMERATION OF (DBA ,DBB ,DBC ,NC ,NR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSpaceHeaterTypeEnum = ENUMERATION OF (SECTIONALRADIATOR ,PANELRADIATOR ,TUBULARRADIATOR ,CONVECTOR ,BASEBOARDHEATER ,FINNEDTUBEUNIT ,UNITHEATER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSpaceTypeEnum = ENUMERATION OF (USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcStackTerminalTypeEnum = ENUMERATION OF (BIRDCAGE ,COWL ,RAINWATERHOPPER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcStairFlightTypeEnum = ENUMERATION OF (STRAIGHT ,WINDER ,SPIRAL ,CURVED ,FREEFORM ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcStairTypeEnum = ENUMERATION OF (STRAIGHT_RUN_STAIR ,TWO_STRAIGHT_RUN_STAIR ,QUARTER_WINDING_STAIR ,QUARTER_TURN_STAIR ,HALF_WINDING_STAIR ,HALF_TURN_STAIR ,TWO_QUARTER_WINDING_STAIR ,TWO_QUARTER_TURN_STAIR ,THREE_QUARTER_WINDING_STAIR ,THREE_QUARTER_TURN_STAIR ,SPIRAL_STAIR ,DOUBLE_RETURN_STAIR ,CURVED_RUN_STAIR ,TWO_CURVED_RUN_STAIR ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcStateEnum = ENUMERATION OF (READWRITE ,READONLY ,LOCKED ,READWRITELOCKED ,READONLYLOCKED); END_TYPE; TYPE IfcStructuralCurveTypeEnum = ENUMERATION OF (RIGID_JOINED_MEMBER ,PIN_JOINED_MEMBER ,CABLE ,TENSION_MEMBER ,COMPRESSION_MEMBER ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcStructuralSurfaceTypeEnum = ENUMERATION OF (BENDING_ELEMENT ,MEMBRANE_ELEMENT ,SHELL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcSurfaceSide = ENUMERATION OF (POSITIVE ,NEGATIVE ,BOTH); END_TYPE; TYPE IfcSurfaceTextureEnum = ENUMERATION OF (BUMP ,OPACITY ,REFLECTION ,SELFILLUMINATION ,SHININESS ,SPECULAR ,TEXTURE ,TRANSPARENCYMAP ,NOTDEFINED); END_TYPE; TYPE IfcSwitchingDeviceTypeEnum = ENUMERATION OF (CONTACTOR ,EMERGENCYSTOP ,STARTER ,SWITCHDISCONNECTOR ,TOGGLESWITCH ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTankTypeEnum = ENUMERATION OF (PREFORMED ,SECTIONAL ,EXPANSION ,PRESSUREVESSEL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTendonTypeEnum = ENUMERATION OF (STRAND ,WIRE ,BAR ,COATED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTextPath = ENUMERATION OF (LEFT ,RIGHT ,UP ,DOWN); END_TYPE; TYPE IfcThermalLoadSourceEnum = ENUMERATION OF (PEOPLE ,LIGHTING ,EQUIPMENT ,VENTILATIONINDOORAIR ,VENTILATIONOUTSIDEAIR ,RECIRCULATEDAIR ,EXHAUSTAIR ,AIREXCHANGERATE ,DRYBULBTEMPERATURE ,RELATIVEHUMIDITY ,INFILTRATION ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcThermalLoadTypeEnum = ENUMERATION OF (SENSIBLE ,LATENT ,RADIANT ,NOTDEFINED); END_TYPE; TYPE IfcTimeSeriesDataTypeEnum = ENUMERATION OF (CONTINUOUS ,DISCRETE ,DISCRETEBINARY ,PIECEWISEBINARY ,PIECEWISECONSTANT ,PIECEWISECONTINUOUS ,NOTDEFINED); END_TYPE; TYPE IfcTimeSeriesScheduleTypeEnum = ENUMERATION OF (ANNUAL ,MONTHLY ,WEEKLY ,DAILY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTransformerTypeEnum = ENUMERATION OF (CURRENT ,FREQUENCY ,VOLTAGE ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTransitionCode = ENUMERATION OF (DISCONTINUOUS ,CONTINUOUS ,CONTSAMEGRADIENT ,CONTSAMEGRADIENTSAMECURVATURE); END_TYPE; TYPE IfcTransportElementTypeEnum = ENUMERATION OF (ELEVATOR ,ESCALATOR ,MOVINGWALKWAY ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcTrimmingPreference = ENUMERATION OF (CARTESIAN ,PARAMETER ,UNSPECIFIED); END_TYPE; TYPE IfcTubeBundleTypeEnum = ENUMERATION OF (FINNED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcUnitEnum = ENUMERATION OF (ABSORBEDDOSEUNIT ,AMOUNTOFSUBSTANCEUNIT ,AREAUNIT ,DOSEEQUIVALENTUNIT ,ELECTRICCAPACITANCEUNIT ,ELECTRICCHARGEUNIT ,ELECTRICCONDUCTANCEUNIT ,ELECTRICCURRENTUNIT ,ELECTRICRESISTANCEUNIT ,ELECTRICVOLTAGEUNIT ,ENERGYUNIT ,FORCEUNIT ,FREQUENCYUNIT ,ILLUMINANCEUNIT ,INDUCTANCEUNIT ,LENGTHUNIT ,LUMINOUSFLUXUNIT ,LUMINOUSINTENSITYUNIT ,MAGNETICFLUXDENSITYUNIT ,MAGNETICFLUXUNIT ,MASSUNIT ,PLANEANGLEUNIT ,POWERUNIT ,PRESSUREUNIT ,RADIOACTIVITYUNIT ,SOLIDANGLEUNIT ,THERMODYNAMICTEMPERATUREUNIT ,TIMEUNIT ,VOLUMEUNIT ,USERDEFINED); END_TYPE; TYPE IfcUnitaryEquipmentTypeEnum = ENUMERATION OF (AIRHANDLER ,AIRCONDITIONINGUNIT ,SPLITSYSTEM ,ROOFTOPUNIT ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcValveTypeEnum = ENUMERATION OF (AIRRELEASE ,ANTIVACUUM ,CHANGEOVER ,CHECK ,COMMISSIONING ,DIVERTING ,DRAWOFFCOCK ,DOUBLECHECK ,DOUBLEREGULATING ,FAUCET ,FLUSHING ,GASCOCK ,GASTAP ,ISOLATING ,MIXING ,PRESSUREREDUCING ,PRESSURERELIEF ,REGULATING ,SAFETYCUTOFF ,STEAMTRAP ,STOPCOCK ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcVibrationIsolatorTypeEnum = ENUMERATION OF (COMPRESSION ,SPRING ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcWallTypeEnum = ENUMERATION OF (STANDARD ,POLYGONAL ,SHEAR ,ELEMENTEDWALL ,PLUMBINGWALL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcWasteTerminalTypeEnum = ENUMERATION OF (FLOORTRAP ,FLOORWASTE ,GULLYSUMP ,GULLYTRAP ,GREASEINTERCEPTOR ,OILINTERCEPTOR ,PETROLINTERCEPTOR ,ROOFDRAIN ,WASTEDISPOSALUNIT ,WASTETRAP ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcWindowPanelOperationEnum = ENUMERATION OF (SIDEHUNGRIGHTHAND ,SIDEHUNGLEFTHAND ,TILTANDTURNRIGHTHAND ,TILTANDTURNLEFTHAND ,TOPHUNG ,BOTTOMHUNG ,PIVOTHORIZONTAL ,PIVOTVERTICAL ,SLIDINGHORIZONTAL ,SLIDINGVERTICAL ,REMOVABLECASEMENT ,FIXEDCASEMENT ,OTHEROPERATION ,NOTDEFINED); END_TYPE; TYPE IfcWindowPanelPositionEnum = ENUMERATION OF (LEFT ,MIDDLE ,RIGHT ,BOTTOM ,TOP ,NOTDEFINED); END_TYPE; TYPE IfcWindowStyleConstructionEnum = ENUMERATION OF (ALUMINIUM ,HIGH_GRADE_STEEL ,STEEL ,WOOD ,ALUMINIUM_WOOD ,PLASTIC ,OTHER_CONSTRUCTION ,NOTDEFINED); END_TYPE; TYPE IfcWindowStyleOperationEnum = ENUMERATION OF (SINGLE_PANEL ,DOUBLE_PANEL_VERTICAL ,DOUBLE_PANEL_HORIZONTAL ,TRIPLE_PANEL_VERTICAL ,TRIPLE_PANEL_BOTTOM ,TRIPLE_PANEL_TOP ,TRIPLE_PANEL_LEFT ,TRIPLE_PANEL_RIGHT ,TRIPLE_PANEL_HORIZONTAL ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcWorkControlTypeEnum = ENUMERATION OF (ACTUAL ,BASELINE ,PLANNED ,USERDEFINED ,NOTDEFINED); END_TYPE; TYPE IfcActorSelect = SELECT (IfcOrganization ,IfcPerson ,IfcPersonAndOrganization); END_TYPE; TYPE IfcAppliedValueSelect = SELECT (IfcRatioMeasure ,IfcMeasureWithUnit ,IfcMonetaryMeasure); END_TYPE; TYPE IfcAxis2Placement = SELECT (IfcAxis2Placement2D ,IfcAxis2Placement3D); END_TYPE; TYPE IfcBooleanOperand = SELECT (IfcSolidModel ,IfcHalfSpaceSolid ,IfcBooleanResult ,IfcCsgPrimitive3D); END_TYPE; TYPE IfcCharacterStyleSelect = SELECT (IfcTextStyleForDefinedFont); END_TYPE; TYPE IfcClassificationNotationSelect = SELECT (IfcClassificationNotation ,IfcClassificationReference); END_TYPE; TYPE IfcColour = SELECT (IfcColourSpecification ,IfcPreDefinedColour); END_TYPE; TYPE IfcColourOrFactor = SELECT (IfcColourRgb ,IfcNormalisedRatioMeasure); END_TYPE; TYPE IfcConditionCriterionSelect = SELECT (IfcLabel ,IfcMeasureWithUnit); END_TYPE; TYPE IfcCsgSelect = SELECT (IfcBooleanResult ,IfcCsgPrimitive3D); END_TYPE; TYPE IfcCurveFontOrScaledCurveFontSelect = SELECT (IfcCurveStyleFontSelect ,IfcCurveStyleFontAndScaling); END_TYPE; TYPE IfcCurveOrEdgeCurve = SELECT (IfcBoundedCurve ,IfcEdgeCurve); END_TYPE; TYPE IfcCurveStyleFontSelect = SELECT (IfcPreDefinedCurveFont ,IfcCurveStyleFont); END_TYPE; TYPE IfcDateTimeSelect = SELECT (IfcCalendarDate ,IfcLocalTime ,IfcDateAndTime); END_TYPE; TYPE IfcDefinedSymbolSelect = SELECT (IfcPreDefinedSymbol ,IfcExternallyDefinedSymbol); END_TYPE; TYPE IfcDerivedMeasureValue = SELECT (IfcVolumetricFlowRateMeasure ,IfcTimeStamp ,IfcThermalTransmittanceMeasure ,IfcThermalResistanceMeasure ,IfcThermalAdmittanceMeasure ,IfcPressureMeasure ,IfcPowerMeasure ,IfcMassFlowRateMeasure ,IfcMassDensityMeasure ,IfcLinearVelocityMeasure ,IfcKinematicViscosityMeasure ,IfcIntegerCountRateMeasure ,IfcHeatFluxDensityMeasure ,IfcFrequencyMeasure ,IfcEnergyMeasure ,IfcElectricVoltageMeasure ,IfcDynamicViscosityMeasure ,IfcCompoundPlaneAngleMeasure ,IfcAngularVelocityMeasure ,IfcThermalConductivityMeasure ,IfcMolecularWeightMeasure ,IfcVaporPermeabilityMeasure ,IfcMoistureDiffusivityMeasure ,IfcIsothermalMoistureCapacityMeasure ,IfcSpecificHeatCapacityMeasure ,IfcMonetaryMeasure ,IfcMagneticFluxDensityMeasure ,IfcMagneticFluxMeasure ,IfcLuminousFluxMeasure ,IfcForceMeasure ,IfcInductanceMeasure ,IfcIlluminanceMeasure ,IfcElectricResistanceMeasure ,IfcElectricConductanceMeasure ,IfcElectricChargeMeasure ,IfcDoseEquivalentMeasure ,IfcElectricCapacitanceMeasure ,IfcAbsorbedDoseMeasure ,IfcRadioActivityMeasure ,IfcRotationalFrequencyMeasure ,IfcTorqueMeasure ,IfcAccelerationMeasure ,IfcLinearForceMeasure ,IfcLinearStiffnessMeasure ,IfcModulusOfSubgradeReactionMeasure ,IfcModulusOfElasticityMeasure ,IfcMomentOfInertiaMeasure ,IfcPlanarForceMeasure ,IfcRotationalStiffnessMeasure ,IfcShearModulusMeasure ,IfcLinearMomentMeasure ,IfcLuminousIntensityDistributionMeasure ,IfcCurvatureMeasure ,IfcMassPerLengthMeasure ,IfcModulusOfLinearSubgradeReactionMeasure ,IfcModulusOfRotationalSubgradeReactionMeasure ,IfcRotationalMassMeasure ,IfcSectionalAreaIntegralMeasure ,IfcSectionModulusMeasure ,IfcTemperatureGradientMeasure ,IfcThermalExpansionCoefficientMeasure ,IfcWarpingConstantMeasure ,IfcWarpingMomentMeasure ,IfcSoundPowerMeasure ,IfcSoundPressureMeasure ,IfcHeatingValueMeasure ,IfcPHMeasure ,IfcIonConcentrationMeasure); END_TYPE; TYPE IfcDocumentSelect = SELECT (IfcDocumentReference ,IfcDocumentInformation); END_TYPE; TYPE IfcDraughtingCalloutElement = SELECT (IfcAnnotationCurveOccurrence ,IfcAnnotationTextOccurrence ,IfcAnnotationSymbolOccurrence); END_TYPE; TYPE IfcFillAreaStyleTileShapeSelect = SELECT (IfcFillAreaStyleTileSymbolWithStyle); END_TYPE; TYPE IfcFillStyleSelect = SELECT (IfcFillAreaStyleHatching ,IfcFillAreaStyleTiles ,IfcColour ,IfcExternallyDefinedHatchStyle); END_TYPE; TYPE IfcGeometricSetSelect = SELECT (IfcPoint ,IfcCurve ,IfcSurface); END_TYPE; TYPE IfcHatchLineDistanceSelect = SELECT (IfcOneDirectionRepeatFactor ,IfcPositiveLengthMeasure); END_TYPE; TYPE IfcLayeredItem = SELECT (IfcRepresentationItem ,IfcRepresentation); END_TYPE; TYPE IfcLibrarySelect = SELECT (IfcLibraryReference ,IfcLibraryInformation); END_TYPE; TYPE IfcLightDistributionDataSourceSelect = SELECT (IfcExternalReference ,IfcLightIntensityDistribution); END_TYPE; TYPE IfcMaterialSelect = SELECT (IfcMaterial ,IfcMaterialList ,IfcMaterialLayerSetUsage ,IfcMaterialLayerSet ,IfcMaterialLayer); END_TYPE; TYPE IfcMeasureValue = SELECT (IfcVolumeMeasure ,IfcTimeMeasure ,IfcThermodynamicTemperatureMeasure ,IfcSolidAngleMeasure ,IfcPositiveRatioMeasure ,IfcRatioMeasure ,IfcPositivePlaneAngleMeasure ,IfcPlaneAngleMeasure ,IfcParameterValue ,IfcNumericMeasure ,IfcMassMeasure ,IfcPositiveLengthMeasure ,IfcLengthMeasure ,IfcElectricCurrentMeasure ,IfcDescriptiveMeasure ,IfcCountMeasure ,IfcContextDependentMeasure ,IfcAreaMeasure ,IfcAmountOfSubstanceMeasure ,IfcLuminousIntensityMeasure ,IfcNormalisedRatioMeasure ,IfcComplexNumber); END_TYPE; TYPE IfcMetricValueSelect = SELECT (IfcDateTimeSelect ,IfcMeasureWithUnit ,IfcTable ,IfcText ,IfcTimeSeries ,IfcCostValue); END_TYPE; TYPE IfcObjectReferenceSelect = SELECT (IfcMaterial ,IfcPerson ,IfcDateAndTime ,IfcMaterialList ,IfcOrganization ,IfcCalendarDate ,IfcLocalTime ,IfcPersonAndOrganization ,IfcMaterialLayer ,IfcExternalReference ,IfcTimeSeries ,IfcAddress ,IfcAppliedValue); END_TYPE; TYPE IfcOrientationSelect = SELECT (IfcPlaneAngleMeasure ,IfcDirection); END_TYPE; TYPE IfcPointOrVertexPoint = SELECT (IfcPoint ,IfcVertexPoint); END_TYPE; TYPE IfcPresentationStyleSelect = SELECT (IfcNullStyle ,IfcCurveStyle ,IfcSymbolStyle ,IfcFillAreaStyle ,IfcTextStyle ,IfcSurfaceStyle); END_TYPE; TYPE IfcShell = SELECT (IfcClosedShell ,IfcOpenShell); END_TYPE; TYPE IfcSimpleValue = SELECT (IfcInteger ,IfcReal ,IfcBoolean ,IfcIdentifier ,IfcText ,IfcLabel ,IfcLogical); END_TYPE; TYPE IfcSizeSelect = SELECT (IfcRatioMeasure ,IfcLengthMeasure ,IfcDescriptiveMeasure ,IfcPositiveLengthMeasure ,IfcNormalisedRatioMeasure ,IfcPositiveRatioMeasure); END_TYPE; TYPE IfcSpecularHighlightSelect = SELECT (IfcSpecularExponent ,IfcSpecularRoughness); END_TYPE; TYPE IfcStructuralActivityAssignmentSelect = SELECT (IfcStructuralItem ,IfcElement); END_TYPE; TYPE IfcSurfaceOrFaceSurface = SELECT (IfcSurface ,IfcFaceSurface ,IfcFaceBasedSurfaceModel); END_TYPE; TYPE IfcSurfaceStyleElementSelect = SELECT (IfcSurfaceStyleShading ,IfcSurfaceStyleLighting ,IfcSurfaceStyleWithTextures ,IfcExternallyDefinedSurfaceStyle ,IfcSurfaceStyleRefraction); END_TYPE; TYPE IfcSymbolStyleSelect = SELECT (IfcColour); END_TYPE; TYPE IfcTextFontSelect = SELECT (IfcPreDefinedTextFont ,IfcExternallyDefinedTextFont); END_TYPE; TYPE IfcTextStyleSelect = SELECT (IfcTextStyleWithBoxCharacteristics ,IfcTextStyleTextModel); END_TYPE; TYPE IfcTrimmingSelect = SELECT (IfcCartesianPoint ,IfcParameterValue); END_TYPE; TYPE IfcUnit = SELECT (IfcDerivedUnit ,IfcNamedUnit ,IfcMonetaryUnit); END_TYPE; TYPE IfcValue = SELECT (IfcMeasureValue ,IfcSimpleValue ,IfcDerivedMeasureValue); END_TYPE; TYPE IfcVectorOrDirection = SELECT (IfcDirection ,IfcVector); END_TYPE; ENTITY Ifc2DCompositeCurve SUBTYPE OF (IfcCompositeCurve); WHERE WR1 : SELF\IfcCompositeCurve.ClosedCurve; WR2 : SELF\IfcCurve.Dim = 2; END_ENTITY; ENTITY IfcActionRequest SUBTYPE OF (IfcControl); RequestID : IfcIdentifier; UNIQUE UR2 : RequestID; END_ENTITY; ENTITY IfcActor SUPERTYPE OF (ONEOF (IfcOccupant)) SUBTYPE OF (IfcObject); TheActor : IfcActorSelect; INVERSE IsActingUpon : SET [0:?] OF IfcRelAssignsToActor FOR RelatingActor; END_ENTITY; ENTITY IfcActorRole; Role : IfcRoleEnum; UserDefinedRole : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; WHERE WR1 : (Role <> IfcRoleEnum.USERDEFINED) OR ((Role = IfcRoleEnum.USERDEFINED) AND EXISTS(SELF.UserDefinedRole)); END_ENTITY; ENTITY IfcActuatorType SUBTYPE OF (IfcDistributionControlElementType); PredefinedType : IfcActuatorTypeEnum; END_ENTITY; ENTITY IfcAddress ABSTRACT SUPERTYPE OF (ONEOF (IfcPostalAddress ,IfcTelecomAddress)); Purpose : OPTIONAL IfcAddressTypeEnum; Description : OPTIONAL IfcText; UserDefinedPurpose : OPTIONAL IfcLabel; INVERSE OfPerson : SET [0:?] OF IfcPerson FOR Addresses; OfOrganization : SET [0:?] OF IfcOrganization FOR Addresses; WHERE WR1 : (NOT(EXISTS(Purpose))) OR ((Purpose <> IfcAddressTypeEnum.USERDEFINED) OR ((Purpose = IfcAddressTypeEnum.USERDEFINED) AND EXISTS(SELF.UserDefinedPurpose))); END_ENTITY; ENTITY IfcAirTerminalBoxType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcAirTerminalBoxTypeEnum; WHERE WR1 : (PredefinedType <> IfcAirTerminalBoxTypeEnum.USERDEFINED) OR ((PredefinedType = IfcAirTerminalBoxTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcAirTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcAirTerminalTypeEnum; WHERE WR1 : (PredefinedType <> IfcAirTerminalTypeEnum.USERDEFINED) OR ((PredefinedType = IfcAirTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcAirToAirHeatRecoveryType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcAirToAirHeatRecoveryTypeEnum; WHERE WR1 : (PredefinedType <> IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) OR ((PredefinedType = IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcAlarmType SUBTYPE OF (IfcDistributionControlElementType); PredefinedType : IfcAlarmTypeEnum; END_ENTITY; ENTITY IfcAngularDimension SUBTYPE OF (IfcDimensionCurveDirectedCallout); END_ENTITY; ENTITY IfcAnnotation SUBTYPE OF (IfcProduct); INVERSE ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; END_ENTITY; ENTITY IfcAnnotationCurveOccurrence SUPERTYPE OF (ONEOF (IfcDimensionCurve ,IfcProjectionCurve)) SUBTYPE OF (IfcAnnotationOccurrence); WHERE WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR ('IFC2X3.IFCCURVE' IN TYPEOF (SELF\IfcStyledItem.Item)); END_ENTITY; ENTITY IfcAnnotationFillArea SUBTYPE OF (IfcGeometricRepresentationItem); OuterBoundary : IfcCurve; InnerBoundaries : OPTIONAL SET [1:?] OF IfcCurve; END_ENTITY; ENTITY IfcAnnotationFillAreaOccurrence SUBTYPE OF (IfcAnnotationOccurrence); FillStyleTarget : OPTIONAL IfcPoint; GlobalOrLocal : OPTIONAL IfcGlobalOrLocalEnum; WHERE WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR ('IFC2X3.IFCANNOTATIONFILLAREA' IN TYPEOF (SELF\IfcStyledItem.Item)); END_ENTITY; ENTITY IfcAnnotationOccurrence ABSTRACT SUPERTYPE OF (ONEOF (IfcAnnotationCurveOccurrence ,IfcAnnotationFillAreaOccurrence ,IfcAnnotationSurfaceOccurrence ,IfcAnnotationSymbolOccurrence ,IfcAnnotationTextOccurrence)) SUBTYPE OF (IfcStyledItem); END_ENTITY; ENTITY IfcAnnotationSurface SUBTYPE OF (IfcGeometricRepresentationItem); Item : IfcGeometricRepresentationItem; TextureCoordinates : OPTIONAL IfcTextureCoordinate; WHERE WR01 : SIZEOF([ 'IFC2X3.IFCSURFACE', 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', 'IFC2X3.IFCFACEBASEDSURFACEMODEL', 'IFC2X3.IFCSOLIDMODEL', 'IFC2X3.IFCBOOLEANRESULT', 'IFC2X3.IFCCSGPRIMITIVE3D'] * TYPEOF(Item) ) >= 1; END_ENTITY; ENTITY IfcAnnotationSurfaceOccurrence SUBTYPE OF (IfcAnnotationOccurrence); WHERE WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR (SIZEOF( ['IFC2X3.IFCSURFACE', 'IFC2X3.IFCFACEBASEDSURFACEMODEL', 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', 'IFC2X3.IFCSOLIDMODEL'] * TYPEOF(SELF\IfcStyledItem.Item)) > 0); END_ENTITY; ENTITY IfcAnnotationSymbolOccurrence SUPERTYPE OF (ONEOF (IfcTerminatorSymbol)) SUBTYPE OF (IfcAnnotationOccurrence); WHERE WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR ('IFC2X3.IFCDEFINEDSYMBOL' IN TYPEOF (SELF\IfcStyledItem.Item)); END_ENTITY; ENTITY IfcAnnotationTextOccurrence SUBTYPE OF (IfcAnnotationOccurrence); WHERE WR31 : NOT(EXISTS(SELF\IfcStyledItem.Item)) OR ('IFC2X3.IFCTEXTLITERAL' IN TYPEOF (SELF\IfcStyledItem.Item)); END_ENTITY; ENTITY IfcApplication; ApplicationDeveloper : IfcOrganization; Version : IfcLabel; ApplicationFullName : IfcLabel; ApplicationIdentifier : IfcIdentifier; UNIQUE UR1 : ApplicationIdentifier; UR2 : ApplicationFullName, Version; END_ENTITY; ENTITY IfcAppliedValue ABSTRACT SUPERTYPE OF (ONEOF (IfcCostValue ,IfcEnvironmentalImpactValue)); Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; AppliedValue : OPTIONAL IfcAppliedValueSelect; UnitBasis : OPTIONAL IfcMeasureWithUnit; ApplicableDate : OPTIONAL IfcDateTimeSelect; FixedUntilDate : OPTIONAL IfcDateTimeSelect; INVERSE ValuesReferenced : SET [0:?] OF IfcReferencesValueDocument FOR ReferencingValues; ValueOfComponents : SET [0:?] OF IfcAppliedValueRelationship FOR ComponentOfTotal; IsComponentIn : SET [0:?] OF IfcAppliedValueRelationship FOR Components; WHERE WR1 : EXISTS (AppliedValue) OR EXISTS (ValueOfComponents); END_ENTITY; ENTITY IfcAppliedValueRelationship; ComponentOfTotal : IfcAppliedValue; Components : SET [1:?] OF IfcAppliedValue; ArithmeticOperator : IfcArithmeticOperatorEnum; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; END_ENTITY; ENTITY IfcApproval; Description : OPTIONAL IfcText; ApprovalDateTime : IfcDateTimeSelect; ApprovalStatus : OPTIONAL IfcLabel; ApprovalLevel : OPTIONAL IfcLabel; ApprovalQualifier : OPTIONAL IfcText; Name : IfcLabel; Identifier : IfcIdentifier; INVERSE Actors : SET [0:?] OF IfcApprovalActorRelationship FOR Approval; IsRelatedWith : SET [0:?] OF IfcApprovalRelationship FOR RelatedApproval; Relates : SET [0:?] OF IfcApprovalRelationship FOR RelatingApproval; END_ENTITY; ENTITY IfcApprovalActorRelationship; Actor : IfcActorSelect; Approval : IfcApproval; Role : IfcActorRole; END_ENTITY; ENTITY IfcApprovalPropertyRelationship; ApprovedProperties : SET [1:?] OF IfcProperty; Approval : IfcApproval; END_ENTITY; ENTITY IfcApprovalRelationship; RelatedApproval : IfcApproval; RelatingApproval : IfcApproval; Description : OPTIONAL IfcText; Name : IfcLabel; END_ENTITY; ENTITY IfcArbitraryClosedProfileDef SUPERTYPE OF (ONEOF (IfcArbitraryProfileDefWithVoids)) SUBTYPE OF (IfcProfileDef); OuterCurve : IfcCurve; WHERE WR1 : OuterCurve.Dim = 2; WR2 : NOT('IFC2X3.IFCLINE' IN TYPEOF(OuterCurve)); WR3 : NOT('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(OuterCurve)); END_ENTITY; ENTITY IfcArbitraryOpenProfileDef SUPERTYPE OF (ONEOF (IfcCenterLineProfileDef)) SUBTYPE OF (IfcProfileDef); Curve : IfcBoundedCurve; WHERE WR11 : ('IFC2X3.IFCCENTERLINEPROFILEDEF' IN TYPEOF(SELF)) OR (SELF\IfcProfileDef.ProfileType = IfcProfileTypeEnum.CURVE); WR12 : Curve.Dim = 2; END_ENTITY; ENTITY IfcArbitraryProfileDefWithVoids SUBTYPE OF (IfcArbitraryClosedProfileDef); InnerCurves : SET [1:?] OF IfcCurve; WHERE WR1 : SELF\IfcProfileDef.ProfileType = AREA; WR2 : SIZEOF(QUERY(temp <* InnerCurves | temp.Dim <> 2)) = 0; WR3 : SIZEOF(QUERY(temp <* InnerCurves | 'IFC2X3.IFCLINE' IN TYPEOF(temp))) = 0; END_ENTITY; ENTITY IfcAsset SUBTYPE OF (IfcGroup); AssetID : IfcIdentifier; OriginalValue : IfcCostValue; CurrentValue : IfcCostValue; TotalReplacementCost : IfcCostValue; Owner : IfcActorSelect; User : IfcActorSelect; ResponsiblePerson : IfcPerson; IncorporationDate : IfcCalendarDate; DepreciatedValue : IfcCostValue; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT('IFC2X3.IFCELEMENT' IN TYPEOF(Temp)))) = 0; END_ENTITY; ENTITY IfcAsymmetricIShapeProfileDef SUBTYPE OF (IfcIShapeProfileDef); TopFlangeWidth : IfcPositiveLengthMeasure; TopFlangeThickness : OPTIONAL IfcPositiveLengthMeasure; TopFlangeFilletRadius : OPTIONAL IfcPositiveLengthMeasure; CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcAxis1Placement SUBTYPE OF (IfcPlacement); Axis : OPTIONAL IfcDirection; DERIVE Z : IfcDirection := NVL (IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); WHERE WR1 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); WR2 : SELF\IfcPlacement.Location.Dim = 3; END_ENTITY; ENTITY IfcAxis2Placement2D SUBTYPE OF (IfcPlacement); RefDirection : OPTIONAL IfcDirection; DERIVE P : LIST [2:2] OF IfcDirection := IfcBuild2Axes(RefDirection); WHERE WR1 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 2); WR2 : SELF\IfcPlacement.Location.Dim = 2; END_ENTITY; ENTITY IfcAxis2Placement3D SUBTYPE OF (IfcPlacement); Axis : OPTIONAL IfcDirection; RefDirection : OPTIONAL IfcDirection; DERIVE P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection); WHERE WR1 : SELF\IfcPlacement.Location.Dim = 3; WR2 : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); WR3 : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3); WR4 : (NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0); WR5 : NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection))); END_ENTITY; ENTITY IfcBSplineCurve ABSTRACT SUPERTYPE OF (ONEOF (IfcBezierCurve)) SUBTYPE OF (IfcBoundedCurve); Degree : INTEGER; ControlPointsList : LIST [2:?] OF IfcCartesianPoint; CurveForm : IfcBSplineCurveForm; ClosedCurve : LOGICAL; SelfIntersect : LOGICAL; DERIVE ControlPoints : ARRAY [0:255] OF IfcCartesianPoint := IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints); UpperIndexOnControlPoints : INTEGER := (SIZEOF(ControlPointsList) - 1); WHERE WR41 : SIZEOF(QUERY(Temp <* ControlPointsList | Temp.Dim <> ControlPointsList[1].Dim)) = 0; END_ENTITY; ENTITY IfcBeam SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcBeamType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcBeamTypeEnum; END_ENTITY; ENTITY IfcBezierCurve SUPERTYPE OF (ONEOF (IfcRationalBezierCurve)) SUBTYPE OF (IfcBSplineCurve); END_ENTITY; ENTITY IfcBlobTexture SUBTYPE OF (IfcSurfaceTexture); RasterFormat : IfcIdentifier; RasterCode : BOOLEAN; WHERE WR11 : SELF.RasterFormat IN ['BMP', 'JPG', 'GIF', 'PNG']; END_ENTITY; ENTITY IfcBlock SUBTYPE OF (IfcCsgPrimitive3D); XLength : IfcPositiveLengthMeasure; YLength : IfcPositiveLengthMeasure; ZLength : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcBoilerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcBoilerTypeEnum; WHERE WR1 : (PredefinedType <> IfcBoilerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcBoilerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcBooleanClippingResult SUBTYPE OF (IfcBooleanResult); WHERE WR1 : ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(FirstOperand)) OR ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(FirstOperand)); WR2 : ('IFC2X3.IFCHALFSPACESOLID' IN TYPEOF(SecondOperand)); WR3 : Operator = DIFFERENCE; END_ENTITY; ENTITY IfcBooleanResult SUPERTYPE OF (ONEOF (IfcBooleanClippingResult)) SUBTYPE OF (IfcGeometricRepresentationItem); Operator : IfcBooleanOperator; FirstOperand : IfcBooleanOperand; SecondOperand : IfcBooleanOperand; DERIVE Dim : IfcDimensionCount := FirstOperand.Dim; WHERE WR1 : FirstOperand.Dim = SecondOperand.Dim; END_ENTITY; ENTITY IfcBoundaryCondition ABSTRACT SUPERTYPE OF (ONEOF (IfcBoundaryEdgeCondition ,IfcBoundaryFaceCondition ,IfcBoundaryNodeCondition)); Name : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcBoundaryEdgeCondition SUBTYPE OF (IfcBoundaryCondition); LinearStiffnessByLengthX : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; LinearStiffnessByLengthY : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; LinearStiffnessByLengthZ : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure; RotationalStiffnessByLengthX : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; RotationalStiffnessByLengthY : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; RotationalStiffnessByLengthZ : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure; END_ENTITY; ENTITY IfcBoundaryFaceCondition SUBTYPE OF (IfcBoundaryCondition); LinearStiffnessByAreaX : OPTIONAL IfcModulusOfSubgradeReactionMeasure; LinearStiffnessByAreaY : OPTIONAL IfcModulusOfSubgradeReactionMeasure; LinearStiffnessByAreaZ : OPTIONAL IfcModulusOfSubgradeReactionMeasure; END_ENTITY; ENTITY IfcBoundaryNodeCondition SUPERTYPE OF (ONEOF (IfcBoundaryNodeConditionWarping)) SUBTYPE OF (IfcBoundaryCondition); LinearStiffnessX : OPTIONAL IfcLinearStiffnessMeasure; LinearStiffnessY : OPTIONAL IfcLinearStiffnessMeasure; LinearStiffnessZ : OPTIONAL IfcLinearStiffnessMeasure; RotationalStiffnessX : OPTIONAL IfcRotationalStiffnessMeasure; RotationalStiffnessY : OPTIONAL IfcRotationalStiffnessMeasure; RotationalStiffnessZ : OPTIONAL IfcRotationalStiffnessMeasure; END_ENTITY; ENTITY IfcBoundaryNodeConditionWarping SUBTYPE OF (IfcBoundaryNodeCondition); WarpingStiffness : OPTIONAL IfcWarpingMomentMeasure; END_ENTITY; ENTITY IfcBoundedCurve ABSTRACT SUPERTYPE OF (ONEOF (IfcBSplineCurve ,IfcCompositeCurve ,IfcPolyline ,IfcTrimmedCurve)) SUBTYPE OF (IfcCurve); END_ENTITY; ENTITY IfcBoundedSurface SUPERTYPE OF (ONEOF (IfcCurveBoundedPlane ,IfcRectangularTrimmedSurface)) SUBTYPE OF (IfcSurface); END_ENTITY; ENTITY IfcBoundingBox SUBTYPE OF (IfcGeometricRepresentationItem); Corner : IfcCartesianPoint; XDim : IfcPositiveLengthMeasure; YDim : IfcPositiveLengthMeasure; ZDim : IfcPositiveLengthMeasure; DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcBoxedHalfSpace SUBTYPE OF (IfcHalfSpaceSolid); Enclosure : IfcBoundingBox; WHERE WR1 : NOT ('IFC2X3.IFCCURVEBOUNDEDPLANE' IN TYPEOF(SELF\IfcHalfSpaceSolid.BaseSurface)); END_ENTITY; ENTITY IfcBuilding SUBTYPE OF (IfcSpatialStructureElement); ElevationOfRefHeight : OPTIONAL IfcLengthMeasure; ElevationOfTerrain : OPTIONAL IfcLengthMeasure; BuildingAddress : OPTIONAL IfcPostalAddress; END_ENTITY; ENTITY IfcBuildingElement ABSTRACT SUPERTYPE OF (ONEOF (IfcBeam ,IfcBuildingElementComponent ,IfcBuildingElementProxy ,IfcColumn ,IfcCovering ,IfcCurtainWall ,IfcDoor ,IfcFooting ,IfcMember ,IfcPile ,IfcPlate ,IfcRailing ,IfcRamp ,IfcRampFlight ,IfcRoof ,IfcSlab ,IfcStair ,IfcStairFlight ,IfcWall ,IfcWindow)) SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcBuildingElementComponent ABSTRACT SUPERTYPE OF (ONEOF (IfcBuildingElementPart ,IfcReinforcingElement)) SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcBuildingElementPart SUBTYPE OF (IfcBuildingElementComponent); END_ENTITY; ENTITY IfcBuildingElementProxy SUBTYPE OF (IfcBuildingElement); CompositionType : OPTIONAL IfcElementCompositionEnum; WHERE WR1 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcBuildingElementProxyType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcBuildingElementProxyTypeEnum; END_ENTITY; ENTITY IfcBuildingElementType ABSTRACT SUPERTYPE OF (ONEOF (IfcBeamType ,IfcBuildingElementProxyType ,IfcColumnType ,IfcCoveringType ,IfcCurtainWallType ,IfcMemberType ,IfcPlateType ,IfcRailingType ,IfcRampFlightType ,IfcSlabType ,IfcStairFlightType ,IfcWallType)) SUBTYPE OF (IfcElementType); END_ENTITY; ENTITY IfcBuildingStorey SUBTYPE OF (IfcSpatialStructureElement); Elevation : OPTIONAL IfcLengthMeasure; END_ENTITY; ENTITY IfcCShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); Depth : IfcPositiveLengthMeasure; Width : IfcPositiveLengthMeasure; WallThickness : IfcPositiveLengthMeasure; Girth : IfcPositiveLengthMeasure; InternalFilletRadius : OPTIONAL IfcPositiveLengthMeasure; CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; WHERE WR1 : Girth < (Depth / 2.); WR2 : NOT(EXISTS(InternalFilletRadius)) OR ((InternalFilletRadius <= Width/2.) AND (InternalFilletRadius <= Depth/2.)); WR3 : (WallThickness < Width/2.) AND (WallThickness < Depth/2.); END_ENTITY; ENTITY IfcCableCarrierFittingType SUBTYPE OF (IfcFlowFittingType); PredefinedType : IfcCableCarrierFittingTypeEnum; WHERE WR1 : (PredefinedType <> IfcCableCarrierFittingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCableCarrierFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCableCarrierSegmentType SUBTYPE OF (IfcFlowSegmentType); PredefinedType : IfcCableCarrierSegmentTypeEnum; END_ENTITY; ENTITY IfcCableSegmentType SUBTYPE OF (IfcFlowSegmentType); PredefinedType : IfcCableSegmentTypeEnum; END_ENTITY; ENTITY IfcCalendarDate; DayComponent : IfcDayInMonthNumber; MonthComponent : IfcMonthInYearNumber; YearComponent : IfcYearNumber; WHERE WR21 : IfcValidCalendarDate (SELF); END_ENTITY; ENTITY IfcCartesianPoint SUBTYPE OF (IfcPoint); Coordinates : LIST [1:3] OF IfcLengthMeasure; DERIVE Dim : IfcDimensionCount := HIINDEX(Coordinates); WHERE WR1 : HIINDEX(Coordinates) >= 2; END_ENTITY; ENTITY IfcCartesianTransformationOperator ABSTRACT SUPERTYPE OF (ONEOF (IfcCartesianTransformationOperator2D ,IfcCartesianTransformationOperator3D)) SUBTYPE OF (IfcGeometricRepresentationItem); Axis1 : OPTIONAL IfcDirection; Axis2 : OPTIONAL IfcDirection; LocalOrigin : IfcCartesianPoint; Scale : OPTIONAL REAL; DERIVE Scl : REAL := NVL(Scale, 1.0); Dim : IfcDimensionCount := LocalOrigin.Dim; WHERE WR1 : Scl > 0.0; END_ENTITY; ENTITY IfcCartesianTransformationOperator2D SUPERTYPE OF (ONEOF (IfcCartesianTransformationOperator2DnonUniform)) SUBTYPE OF (IfcCartesianTransformationOperator); DERIVE U : LIST [2:2] OF IfcDirection := IfcBaseAxis(2,SELF\IfcCartesianTransformationOperator.Axis1, SELF\IfcCartesianTransformationOperator.Axis2,?); WHERE WR1 : SELF\IfcCartesianTransformationOperator.Dim = 2; WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 2); WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 2); END_ENTITY; ENTITY IfcCartesianTransformationOperator2DnonUniform SUBTYPE OF (IfcCartesianTransformationOperator2D); Scale2 : OPTIONAL REAL; DERIVE Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); WHERE WR1 : Scl2 > 0.0; END_ENTITY; ENTITY IfcCartesianTransformationOperator3D SUPERTYPE OF (ONEOF (IfcCartesianTransformationOperator3DnonUniform)) SUBTYPE OF (IfcCartesianTransformationOperator); Axis3 : OPTIONAL IfcDirection; DERIVE U : LIST [3:3] OF IfcDirection := IfcBaseAxis(3,SELF\IfcCartesianTransformationOperator.Axis1, SELF\IfcCartesianTransformationOperator.Axis2,Axis3); WHERE WR1 : SELF\IfcCartesianTransformationOperator.Dim = 3; WR2 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR (SELF\IfcCartesianTransformationOperator.Axis1.Dim = 3); WR3 : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR (SELF\IfcCartesianTransformationOperator.Axis2.Dim = 3); WR4 : NOT(EXISTS(Axis3)) OR (Axis3.Dim = 3); END_ENTITY; ENTITY IfcCartesianTransformationOperator3DnonUniform SUBTYPE OF (IfcCartesianTransformationOperator3D); Scale2 : OPTIONAL REAL; Scale3 : OPTIONAL REAL; DERIVE Scl2 : REAL := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); Scl3 : REAL := NVL(Scale3, SELF\IfcCartesianTransformationOperator.Scl); WHERE WR1 : Scl2 > 0.0; WR2 : Scl3 > 0.0; END_ENTITY; ENTITY IfcCenterLineProfileDef SUBTYPE OF (IfcArbitraryOpenProfileDef); Thickness : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcChamferEdgeFeature SUBTYPE OF (IfcEdgeFeature); Width : OPTIONAL IfcPositiveLengthMeasure; Height : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcChillerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcChillerTypeEnum; WHERE WR1 : (PredefinedType <> IfcChillerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcChillerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCircle SUBTYPE OF (IfcConic); Radius : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcCircleHollowProfileDef SUBTYPE OF (IfcCircleProfileDef); WallThickness : IfcPositiveLengthMeasure; WHERE WR1 : WallThickness < SELF\IfcCircleProfileDef.Radius; END_ENTITY; ENTITY IfcCircleProfileDef SUPERTYPE OF (ONEOF (IfcCircleHollowProfileDef)) SUBTYPE OF (IfcParameterizedProfileDef); Radius : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcClassification; Source : IfcLabel; Edition : IfcLabel; EditionDate : OPTIONAL IfcCalendarDate; Name : IfcLabel; INVERSE Contains : SET [0:?] OF IfcClassificationItem FOR ItemOf; END_ENTITY; ENTITY IfcClassificationItem; Notation : IfcClassificationNotationFacet; ItemOf : OPTIONAL IfcClassification; Title : IfcLabel; INVERSE IsClassifiedItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatedItems; IsClassifyingItemIn : SET [0:1] OF IfcClassificationItemRelationship FOR RelatingItem; END_ENTITY; ENTITY IfcClassificationItemRelationship; RelatingItem : IfcClassificationItem; RelatedItems : SET [1:?] OF IfcClassificationItem; END_ENTITY; ENTITY IfcClassificationNotation; NotationFacets : SET [1:?] OF IfcClassificationNotationFacet; END_ENTITY; ENTITY IfcClassificationNotationFacet; NotationValue : IfcLabel; END_ENTITY; ENTITY IfcClassificationReference SUBTYPE OF (IfcExternalReference); ReferencedSource : OPTIONAL IfcClassification; END_ENTITY; ENTITY IfcClosedShell SUBTYPE OF (IfcConnectedFaceSet); END_ENTITY; ENTITY IfcCoilType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcCoilTypeEnum; WHERE WR1 : (PredefinedType <> IfcCoilTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCoilTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcColourRgb SUBTYPE OF (IfcColourSpecification); Red : IfcNormalisedRatioMeasure; Green : IfcNormalisedRatioMeasure; Blue : IfcNormalisedRatioMeasure; END_ENTITY; ENTITY IfcColourSpecification ABSTRACT SUPERTYPE OF (ONEOF (IfcColourRgb)); Name : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcColumn SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcColumnType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcColumnTypeEnum; END_ENTITY; ENTITY IfcComplexProperty SUBTYPE OF (IfcProperty); UsageName : IfcIdentifier; HasProperties : SET [1:?] OF IfcProperty; WHERE WR21 : SIZEOF(QUERY(temp <* HasProperties | SELF :=: temp)) = 0; WR22 : IfcUniquePropertyName(HasProperties); END_ENTITY; ENTITY IfcCompositeCurve SUPERTYPE OF (ONEOF (Ifc2DCompositeCurve)) SUBTYPE OF (IfcBoundedCurve); Segments : LIST [1:?] OF IfcCompositeCurveSegment; SelfIntersect : LOGICAL; DERIVE NSegments : INTEGER := SIZEOF(Segments); ClosedCurve : LOGICAL := Segments[NSegments].Transition <> Discontinuous; WHERE WR41 : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0)); WR42 : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0; END_ENTITY; ENTITY IfcCompositeCurveSegment SUBTYPE OF (IfcGeometricRepresentationItem); Transition : IfcTransitionCode; SameSense : BOOLEAN; ParentCurve : IfcCurve; DERIVE Dim : IfcDimensionCount := ParentCurve.Dim; INVERSE UsingCurves : SET [1:?] OF IfcCompositeCurve FOR Segments; WHERE WR1 : ('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(ParentCurve)); END_ENTITY; ENTITY IfcCompositeProfileDef SUBTYPE OF (IfcProfileDef); Profiles : SET [2:?] OF IfcProfileDef; Label : OPTIONAL IfcLabel; WHERE WR1 : SIZEOF(QUERY(temp <* Profiles | temp.ProfileType <> Profiles[1].ProfileType)) = 0; WR2 : SIZEOF(QUERY(temp <* Profiles | 'IFC2X3.IFCCOMPOSITEPROFILEDEF' IN TYPEOF(temp))) = 0; END_ENTITY; ENTITY IfcCompressorType SUBTYPE OF (IfcFlowMovingDeviceType); PredefinedType : IfcCompressorTypeEnum; WHERE WR1 : (PredefinedType <> IfcCompressorTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCompressorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCondenserType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcCondenserTypeEnum; WHERE WR1 : (PredefinedType <> IfcCondenserTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCondenserTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCondition SUBTYPE OF (IfcGroup); END_ENTITY; ENTITY IfcConditionCriterion SUBTYPE OF (IfcControl); Criterion : IfcConditionCriterionSelect; CriterionDateTime : IfcDateTimeSelect; WHERE WR1 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcConic ABSTRACT SUPERTYPE OF (ONEOF (IfcCircle ,IfcEllipse)) SUBTYPE OF (IfcCurve); Position : IfcAxis2Placement; END_ENTITY; ENTITY IfcConnectedFaceSet SUPERTYPE OF (ONEOF (IfcClosedShell ,IfcOpenShell)) SUBTYPE OF (IfcTopologicalRepresentationItem); CfsFaces : SET [1:?] OF IfcFace; END_ENTITY; ENTITY IfcConnectionCurveGeometry SUBTYPE OF (IfcConnectionGeometry); CurveOnRelatingElement : IfcCurveOrEdgeCurve; CurveOnRelatedElement : OPTIONAL IfcCurveOrEdgeCurve; END_ENTITY; ENTITY IfcConnectionGeometry ABSTRACT SUPERTYPE OF (ONEOF (IfcConnectionCurveGeometry ,IfcConnectionPointGeometry ,IfcConnectionPortGeometry ,IfcConnectionSurfaceGeometry)); END_ENTITY; ENTITY IfcConnectionPointEccentricity SUBTYPE OF (IfcConnectionPointGeometry); EccentricityInX : OPTIONAL IfcLengthMeasure; EccentricityInY : OPTIONAL IfcLengthMeasure; EccentricityInZ : OPTIONAL IfcLengthMeasure; END_ENTITY; ENTITY IfcConnectionPointGeometry SUPERTYPE OF (ONEOF (IfcConnectionPointEccentricity)) SUBTYPE OF (IfcConnectionGeometry); PointOnRelatingElement : IfcPointOrVertexPoint; PointOnRelatedElement : OPTIONAL IfcPointOrVertexPoint; END_ENTITY; ENTITY IfcConnectionPortGeometry SUBTYPE OF (IfcConnectionGeometry); LocationAtRelatingElement : IfcAxis2Placement; LocationAtRelatedElement : OPTIONAL IfcAxis2Placement; ProfileOfPort : IfcProfileDef; END_ENTITY; ENTITY IfcConnectionSurfaceGeometry SUBTYPE OF (IfcConnectionGeometry); SurfaceOnRelatingElement : IfcSurfaceOrFaceSurface; SurfaceOnRelatedElement : OPTIONAL IfcSurfaceOrFaceSurface; END_ENTITY; ENTITY IfcConstraint ABSTRACT SUPERTYPE OF (ONEOF (IfcMetric ,IfcObjective)); Name : IfcLabel; Description : OPTIONAL IfcText; ConstraintGrade : IfcConstraintEnum; ConstraintSource : OPTIONAL IfcLabel; CreatingActor : OPTIONAL IfcActorSelect; CreationTime : OPTIONAL IfcDateTimeSelect; UserDefinedGrade : OPTIONAL IfcLabel; INVERSE ClassifiedAs : SET [0:?] OF IfcConstraintClassificationRelationship FOR ClassifiedConstraint; RelatesConstraints : SET [0:?] OF IfcConstraintRelationship FOR RelatingConstraint; IsRelatedWith : SET [0:?] OF IfcConstraintRelationship FOR RelatedConstraints; PropertiesForConstraint : SET [0:?] OF IfcPropertyConstraintRelationship FOR RelatingConstraint; Aggregates : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatingConstraint; IsAggregatedIn : SET [0:?] OF IfcConstraintAggregationRelationship FOR RelatedConstraints; WHERE WR11 : (ConstraintGrade <> IfcConstraintEnum.USERDEFINED) OR ((ConstraintGrade = IfcConstraintEnum.USERDEFINED) AND EXISTS(SELF\IfcConstraint.UserDefinedGrade)); END_ENTITY; ENTITY IfcConstraintAggregationRelationship; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; RelatingConstraint : IfcConstraint; RelatedConstraints : LIST [1:?] OF UNIQUE IfcConstraint; LogicalAggregator : IfcLogicalOperatorEnum; WHERE WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | temp :=: RelatingConstraint )) = 0; END_ENTITY; ENTITY IfcConstraintClassificationRelationship; ClassifiedConstraint : IfcConstraint; RelatedClassifications : SET [1:?] OF IfcClassificationNotationSelect; END_ENTITY; ENTITY IfcConstraintRelationship; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; RelatingConstraint : IfcConstraint; RelatedConstraints : SET [1:?] OF IfcConstraint; WHERE WR11 : SIZEOF(QUERY(temp <* RelatedConstraints | temp :=: RelatingConstraint )) = 0; END_ENTITY; ENTITY IfcConstructionEquipmentResource SUBTYPE OF (IfcConstructionResource); END_ENTITY; ENTITY IfcConstructionMaterialResource SUBTYPE OF (IfcConstructionResource); Suppliers : OPTIONAL SET [1:?] OF IfcActorSelect; UsageRatio : OPTIONAL IfcRatioMeasure; WHERE WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); END_ENTITY; ENTITY IfcConstructionProductResource SUBTYPE OF (IfcConstructionResource); WHERE WR1 : SIZEOF(SELF\IfcResource.ResourceOf) <=1; WR2 : NOT(EXISTS(SELF\IfcResource.ResourceOf[1])) OR (SELF\IfcResource.ResourceOf[1].RelatedObjectsType = IfcObjectTypeEnum.PRODUCT); END_ENTITY; ENTITY IfcConstructionResource ABSTRACT SUPERTYPE OF (ONEOF (IfcConstructionEquipmentResource ,IfcConstructionMaterialResource ,IfcConstructionProductResource ,IfcCrewResource ,IfcLaborResource ,IfcSubContractResource)) SUBTYPE OF (IfcResource); ResourceIdentifier : OPTIONAL IfcIdentifier; ResourceGroup : OPTIONAL IfcLabel; ResourceConsumption : OPTIONAL IfcResourceConsumptionEnum; BaseQuantity : OPTIONAL IfcMeasureWithUnit; END_ENTITY; ENTITY IfcContextDependentUnit SUBTYPE OF (IfcNamedUnit); Name : IfcLabel; END_ENTITY; ENTITY IfcControl ABSTRACT SUPERTYPE OF (ONEOF (IfcActionRequest ,IfcConditionCriterion ,IfcCostItem ,IfcCostSchedule ,IfcEquipmentStandard ,IfcFurnitureStandard ,IfcPerformanceHistory ,IfcPermit ,IfcProjectOrder ,IfcProjectOrderRecord ,IfcScheduleTimeControl ,IfcServiceLife ,IfcSpaceProgram ,IfcTimeSeriesSchedule ,IfcWorkControl)) SUBTYPE OF (IfcObject); INVERSE Controls : SET [0:?] OF IfcRelAssignsToControl FOR RelatingControl; END_ENTITY; ENTITY IfcControllerType SUBTYPE OF (IfcDistributionControlElementType); PredefinedType : IfcControllerTypeEnum; END_ENTITY; ENTITY IfcConversionBasedUnit SUBTYPE OF (IfcNamedUnit); Name : IfcLabel; ConversionFactor : IfcMeasureWithUnit; END_ENTITY; ENTITY IfcCooledBeamType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcCooledBeamTypeEnum; WHERE WR1 : (PredefinedType <> IfcCooledBeamTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCooledBeamTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCoolingTowerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcCoolingTowerTypeEnum; WHERE WR1 : (PredefinedType <> IfcCoolingTowerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCoolingTowerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcCoordinatedUniversalTimeOffset; HourOffset : IfcHourInDay; MinuteOffset : OPTIONAL IfcMinuteInHour; Sense : IfcAheadOrBehind; END_ENTITY; ENTITY IfcCostItem SUBTYPE OF (IfcControl); END_ENTITY; ENTITY IfcCostSchedule SUBTYPE OF (IfcControl); SubmittedBy : OPTIONAL IfcActorSelect; PreparedBy : OPTIONAL IfcActorSelect; SubmittedOn : OPTIONAL IfcDateTimeSelect; Status : OPTIONAL IfcLabel; TargetUsers : OPTIONAL SET [1:?] OF IfcActorSelect; UpdateDate : OPTIONAL IfcDateTimeSelect; ID : IfcIdentifier; PredefinedType : IfcCostScheduleTypeEnum; UNIQUE UR2 : ID; END_ENTITY; ENTITY IfcCostValue SUBTYPE OF (IfcAppliedValue); CostType : IfcLabel; Condition : OPTIONAL IfcText; END_ENTITY; ENTITY IfcCovering SUBTYPE OF (IfcBuildingElement); PredefinedType : OPTIONAL IfcCoveringTypeEnum; INVERSE CoversSpaces : SET [0:1] OF IfcRelCoversSpaces FOR RelatedCoverings; Covers : SET [0:1] OF IfcRelCoversBldgElements FOR RelatedCoverings; WHERE WR61 : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcCoveringTypeEnum.USERDEFINED) OR ((PredefinedType = IfcCoveringTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcCoveringType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcCoveringTypeEnum; END_ENTITY; ENTITY IfcCraneRailAShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); OverallHeight : IfcPositiveLengthMeasure; BaseWidth2 : IfcPositiveLengthMeasure; Radius : OPTIONAL IfcPositiveLengthMeasure; HeadWidth : IfcPositiveLengthMeasure; HeadDepth2 : IfcPositiveLengthMeasure; HeadDepth3 : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; BaseWidth4 : IfcPositiveLengthMeasure; BaseDepth1 : IfcPositiveLengthMeasure; BaseDepth2 : IfcPositiveLengthMeasure; BaseDepth3 : IfcPositiveLengthMeasure; CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcCraneRailFShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); OverallHeight : IfcPositiveLengthMeasure; HeadWidth : IfcPositiveLengthMeasure; Radius : OPTIONAL IfcPositiveLengthMeasure; HeadDepth2 : IfcPositiveLengthMeasure; HeadDepth3 : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; BaseDepth1 : IfcPositiveLengthMeasure; BaseDepth2 : IfcPositiveLengthMeasure; CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcCrewResource SUBTYPE OF (IfcConstructionResource); END_ENTITY; ENTITY IfcCsgPrimitive3D ABSTRACT SUPERTYPE OF (ONEOF (IfcBlock ,IfcRectangularPyramid ,IfcRightCircularCone ,IfcRightCircularCylinder ,IfcSphere)) SUBTYPE OF (IfcGeometricRepresentationItem); Position : IfcAxis2Placement3D; DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcCsgSolid SUBTYPE OF (IfcSolidModel); TreeRootExpression : IfcCsgSelect; END_ENTITY; ENTITY IfcCurrencyRelationship; RelatingMonetaryUnit : IfcMonetaryUnit; RelatedMonetaryUnit : IfcMonetaryUnit; ExchangeRate : IfcPositiveRatioMeasure; RateDateTime : IfcDateAndTime; RateSource : OPTIONAL IfcLibraryInformation; END_ENTITY; ENTITY IfcCurtainWall SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcCurtainWallType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcCurtainWallTypeEnum; END_ENTITY; ENTITY IfcCurve ABSTRACT SUPERTYPE OF (ONEOF (IfcBoundedCurve ,IfcConic ,IfcLine ,IfcOffsetCurve2D ,IfcOffsetCurve3D)) SUBTYPE OF (IfcGeometricRepresentationItem); DERIVE Dim : IfcDimensionCount := IfcCurveDim(SELF); END_ENTITY; ENTITY IfcCurveBoundedPlane SUBTYPE OF (IfcBoundedSurface); BasisSurface : IfcPlane; OuterBoundary : IfcCurve; InnerBoundaries : SET [0:?] OF IfcCurve; DERIVE Dim : IfcDimensionCount := BasisSurface.Dim; END_ENTITY; ENTITY IfcCurveStyle SUBTYPE OF (IfcPresentationStyle); CurveFont : OPTIONAL IfcCurveFontOrScaledCurveFontSelect; CurveWidth : OPTIONAL IfcSizeSelect; CurveColour : OPTIONAL IfcColour; WHERE WR11 : (NOT(EXISTS(CurveWidth))) OR ('IFC2X3.IFCPOSITIVELENGTHMEASURE' IN TYPEOF(CurveWidth)) OR (('IFC2X3.IFCDESCRIPTIVEMEASURE' IN TYPEOF(CurveWidth)) AND (CurveWidth = 'by layer')); END_ENTITY; ENTITY IfcCurveStyleFont; Name : OPTIONAL IfcLabel; PatternList : LIST [1:?] OF IfcCurveStyleFontPattern; END_ENTITY; ENTITY IfcCurveStyleFontAndScaling; Name : OPTIONAL IfcLabel; CurveFont : IfcCurveStyleFontSelect; CurveFontScaling : IfcPositiveRatioMeasure; END_ENTITY; ENTITY IfcCurveStyleFontPattern; VisibleSegmentLength : IfcLengthMeasure; InvisibleSegmentLength : IfcPositiveLengthMeasure; WHERE WR01 : VisibleSegmentLength >= 0.; END_ENTITY; ENTITY IfcDamperType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcDamperTypeEnum; WHERE WR1 : (PredefinedType <> IfcDamperTypeEnum.USERDEFINED) OR ((PredefinedType = IfcDamperTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcDateAndTime; DateComponent : IfcCalendarDate; TimeComponent : IfcLocalTime; END_ENTITY; ENTITY IfcDefinedSymbol SUBTYPE OF (IfcGeometricRepresentationItem); Definition : IfcDefinedSymbolSelect; Target : IfcCartesianTransformationOperator2D; END_ENTITY; ENTITY IfcDerivedProfileDef SUBTYPE OF (IfcProfileDef); ParentProfile : IfcProfileDef; Operator : IfcCartesianTransformationOperator2D; Label : OPTIONAL IfcLabel; WHERE WR1 : SELF\IfcProfileDef.ProfileType = ParentProfile.ProfileType; END_ENTITY; ENTITY IfcDerivedUnit; Elements : SET [1:?] OF IfcDerivedUnitElement; UnitType : IfcDerivedUnitEnum; UserDefinedType : OPTIONAL IfcLabel; DERIVE Dimensions : IfcDimensionalExponents := IfcDeriveDimensionalExponents(Elements); WHERE WR1 : (SIZEOF (Elements) > 1) OR ((SIZEOF (Elements) = 1) AND (Elements[1].Exponent <> 1 )); WR2 : (UnitType <> IfcDerivedUnitEnum.USERDEFINED) OR ((UnitType = IfcDerivedUnitEnum.USERDEFINED) AND (EXISTS(SELF.UserDefinedType))); END_ENTITY; ENTITY IfcDerivedUnitElement; Unit : IfcNamedUnit; Exponent : INTEGER; END_ENTITY; ENTITY IfcDiameterDimension SUBTYPE OF (IfcDimensionCurveDirectedCallout); END_ENTITY; ENTITY IfcDimensionCalloutRelationship SUBTYPE OF (IfcDraughtingCalloutRelationship); WHERE WR11 : SELF\IfcDraughtingCalloutRelationship.Name IN ['primary','secondary']; WR12 : SIZEOF(TYPEOF(SELF\IfcDraughtingCalloutRelationship.RelatingDraughtingCallout) * [ 'IFC2X3.IFCANGULARDIMENSION', 'IFC2X3.IFCDIAMETERDIMENSION', 'IFC2X3.IFCLINEARDIMENSION', 'IFC2X3.IFCRADIUSDIMENSION']) = 1; WR13 : NOT ('IFC2X3.IFCDIMENSIONCURVEDIRECTEDCALLOUT' IN TYPEOF (SELF\IfcDraughtingCalloutRelationship.RelatedDraughtingCallout)); END_ENTITY; ENTITY IfcDimensionCurve SUBTYPE OF (IfcAnnotationCurveOccurrence); INVERSE AnnotatedBySymbols : SET [0:2] OF IfcTerminatorSymbol FOR AnnotatedCurve; WHERE WR51 : SIZEOF(USEDIN(SELF,'IFC2X3.IFCDRAUGHTINGCALLOUT.CONTENTS')) >= 1; WR52 : (SIZEOF(QUERY (Dct1 <* USEDIN(SELF,'IFC2X3.' + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct1.Role = IfcDimensionExtentUsage.ORIGIN))) <= 1) AND (SIZEOF(QUERY (Dct2 <* USEDIN(SELF,'IFC2X3.' + 'IFCTERMINATORSYMBOL.ANNOTATEDCURVE') | (Dct2.Role = IfcDimensionExtentUsage.TARGET))) <= 1); WR53 : SIZEOF(QUERY (Dct <* AnnotatedBySymbols | NOT('IFC2X3.IFCDIMENSIONCURVETERMINATOR' IN TYPEOF(Dct)))) = 0; END_ENTITY; ENTITY IfcDimensionCurveDirectedCallout SUPERTYPE OF (ONEOF (IfcAngularDimension ,IfcDiameterDimension ,IfcLinearDimension ,IfcRadiusDimension)) SUBTYPE OF (IfcDraughtingCallout); WHERE WR41 : SIZEOF(QUERY (Dc <* SELF\IfcDraughtingCallout.Contents | ( 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF(Dc)))) = 1; WR42 : SIZEOF (QUERY (Dc <* SELF.contents | ('IFC2X3.IFCPROJECTIONCURVE' IN TYPEOF (Dc)))) <= 2; END_ENTITY; ENTITY IfcDimensionCurveTerminator SUBTYPE OF (IfcTerminatorSymbol); Role : IfcDimensionExtentUsage; WHERE WR61 : 'IFC2X3.IFCDIMENSIONCURVE' IN TYPEOF (SELF\IfcTerminatorSymbol.AnnotatedCurve); END_ENTITY; ENTITY IfcDimensionPair SUBTYPE OF (IfcDraughtingCalloutRelationship); WHERE WR11 : SELF.Name IN ['chained','parallel']; WR12 : SIZEOF(TYPEOF(SELF.RelatingDraughtingCallout) * [ 'IFC2X3.IFCANGULARDIMENSION', 'IFC2X3.IFCDIAMETERDIMENSION', 'IFC2X3.IFCLINEARDIMENSION', 'IFC2X3.IFCRADIUSDIMENSION']) = 1; WR13 : SIZEOF(TYPEOF(SELF.RelatedDraughtingCallout) * [ 'IFC2X3.IFCANGULARDIMENSION', 'IFC2X3.IFCDIAMETERDIMENSION', 'IFC2X3.IFCLINEARDIMENSION', 'IFC2X3.IFCRADIUSDIMENSION']) = 1; END_ENTITY; ENTITY IfcDimensionalExponents; LengthExponent : INTEGER; MassExponent : INTEGER; TimeExponent : INTEGER; ElectricCurrentExponent : INTEGER; ThermodynamicTemperatureExponent : INTEGER; AmountOfSubstanceExponent : INTEGER; LuminousIntensityExponent : INTEGER; END_ENTITY; ENTITY IfcDirection SUBTYPE OF (IfcGeometricRepresentationItem); DirectionRatios : LIST [2:3] OF REAL; DERIVE Dim : IfcDimensionCount := HIINDEX(DirectionRatios); END_ENTITY; ENTITY IfcDiscreteAccessory SUBTYPE OF (IfcElementComponent); END_ENTITY; ENTITY IfcDiscreteAccessoryType SUPERTYPE OF (ONEOF (IfcVibrationIsolatorType)) SUBTYPE OF (IfcElementComponentType); END_ENTITY; ENTITY IfcDistributionChamberElement SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcDistributionChamberElementType SUBTYPE OF (IfcDistributionFlowElementType); PredefinedType : IfcDistributionChamberElementTypeEnum; END_ENTITY; ENTITY IfcDistributionControlElement SUBTYPE OF (IfcDistributionElement); ControlElementId : OPTIONAL IfcIdentifier; INVERSE AssignedToFlowElement : SET [0:1] OF IfcRelFlowControlElements FOR RelatedControlElements; END_ENTITY; ENTITY IfcDistributionControlElementType ABSTRACT SUPERTYPE OF (ONEOF (IfcActuatorType ,IfcAlarmType ,IfcControllerType ,IfcFlowInstrumentType ,IfcSensorType)) SUBTYPE OF (IfcDistributionElementType); END_ENTITY; ENTITY IfcDistributionElement SUPERTYPE OF (ONEOF (IfcDistributionControlElement ,IfcDistributionFlowElement)) SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcDistributionElementType SUPERTYPE OF (ONEOF (IfcDistributionControlElementType ,IfcDistributionFlowElementType)) SUBTYPE OF (IfcElementType); END_ENTITY; ENTITY IfcDistributionFlowElement SUPERTYPE OF (ONEOF (IfcDistributionChamberElement ,IfcEnergyConversionDevice ,IfcFlowController ,IfcFlowFitting ,IfcFlowMovingDevice ,IfcFlowSegment ,IfcFlowStorageDevice ,IfcFlowTerminal ,IfcFlowTreatmentDevice)) SUBTYPE OF (IfcDistributionElement); INVERSE HasControlElements : SET [0:1] OF IfcRelFlowControlElements FOR RelatingFlowElement; END_ENTITY; ENTITY IfcDistributionFlowElementType ABSTRACT SUPERTYPE OF (ONEOF (IfcDistributionChamberElementType ,IfcEnergyConversionDeviceType ,IfcFlowControllerType ,IfcFlowFittingType ,IfcFlowMovingDeviceType ,IfcFlowSegmentType ,IfcFlowStorageDeviceType ,IfcFlowTerminalType ,IfcFlowTreatmentDeviceType)) SUBTYPE OF (IfcDistributionElementType); END_ENTITY; ENTITY IfcDistributionPort SUBTYPE OF (IfcPort); FlowDirection : OPTIONAL IfcFlowDirectionEnum; END_ENTITY; ENTITY IfcDocumentElectronicFormat; FileExtension : OPTIONAL IfcLabel; MimeContentType : OPTIONAL IfcLabel; MimeSubtype : OPTIONAL IfcLabel; WHERE WR1 : EXISTS(FileExtension) OR EXISTS(MimeContentType); END_ENTITY; ENTITY IfcDocumentInformation; DocumentId : IfcIdentifier; Name : IfcLabel; Description : OPTIONAL IfcText; DocumentReferences : OPTIONAL SET [1:?] OF IfcDocumentReference; Purpose : OPTIONAL IfcText; IntendedUse : OPTIONAL IfcText; Scope : OPTIONAL IfcText; Revision : OPTIONAL IfcLabel; DocumentOwner : OPTIONAL IfcActorSelect; Editors : OPTIONAL SET [1:?] OF IfcActorSelect; CreationTime : OPTIONAL IfcDateAndTime; LastRevisionTime : OPTIONAL IfcDateAndTime; ElectronicFormat : OPTIONAL IfcDocumentElectronicFormat; ValidFrom : OPTIONAL IfcCalendarDate; ValidUntil : OPTIONAL IfcCalendarDate; Confidentiality : OPTIONAL IfcDocumentConfidentialityEnum; Status : OPTIONAL IfcDocumentStatusEnum; INVERSE IsPointedTo : SET [0:?] OF IfcDocumentInformationRelationship FOR RelatedDocuments; IsPointer : SET [0:1] OF IfcDocumentInformationRelationship FOR RelatingDocument; END_ENTITY; ENTITY IfcDocumentInformationRelationship; RelatingDocument : IfcDocumentInformation; RelatedDocuments : SET [1:?] OF IfcDocumentInformation; RelationshipType : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcDocumentReference SUBTYPE OF (IfcExternalReference); INVERSE ReferenceToDocument : SET [0:1] OF IfcDocumentInformation FOR DocumentReferences; WHERE WR1 : EXISTS(Name) XOR EXISTS(ReferenceToDocument[1]); END_ENTITY; ENTITY IfcDoor SUBTYPE OF (IfcBuildingElement); OverallHeight : OPTIONAL IfcPositiveLengthMeasure; OverallWidth : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcDoorLiningProperties SUBTYPE OF (IfcPropertySetDefinition); LiningDepth : OPTIONAL IfcPositiveLengthMeasure; LiningThickness : OPTIONAL IfcPositiveLengthMeasure; ThresholdDepth : OPTIONAL IfcPositiveLengthMeasure; ThresholdThickness : OPTIONAL IfcPositiveLengthMeasure; TransomThickness : OPTIONAL IfcPositiveLengthMeasure; TransomOffset : OPTIONAL IfcLengthMeasure; LiningOffset : OPTIONAL IfcLengthMeasure; ThresholdOffset : OPTIONAL IfcLengthMeasure; CasingThickness : OPTIONAL IfcPositiveLengthMeasure; CasingDepth : OPTIONAL IfcPositiveLengthMeasure; ShapeAspectStyle : OPTIONAL IfcShapeAspect; WHERE WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); WR32 : NOT(NOT(EXISTS(ThresholdDepth)) AND EXISTS(ThresholdThickness)); WR33 : (EXISTS(TransomOffset) AND EXISTS(TransomThickness)) XOR (NOT(EXISTS(TransomOffset)) AND NOT(EXISTS(TransomThickness))); WR34 : (EXISTS(CasingDepth) AND EXISTS(CasingThickness)) XOR (NOT(EXISTS(CasingDepth)) AND NOT(EXISTS(CasingThickness))); WR35 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); END_ENTITY; ENTITY IfcDoorPanelProperties SUBTYPE OF (IfcPropertySetDefinition); PanelDepth : OPTIONAL IfcPositiveLengthMeasure; PanelOperation : IfcDoorPanelOperationEnum; PanelWidth : OPTIONAL IfcNormalisedRatioMeasure; PanelPosition : IfcDoorPanelPositionEnum; ShapeAspectStyle : OPTIONAL IfcShapeAspect; WHERE WR31 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND ('IFC2X3.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); END_ENTITY; ENTITY IfcDoorStyle SUBTYPE OF (IfcTypeProduct); OperationType : IfcDoorStyleOperationEnum; ConstructionType : IfcDoorStyleConstructionEnum; ParameterTakesPrecedence : BOOLEAN; Sizeable : BOOLEAN; END_ENTITY; ENTITY IfcDraughtingCallout SUPERTYPE OF (ONEOF (IfcDimensionCurveDirectedCallout ,IfcStructuredDimensionCallout)) SUBTYPE OF (IfcGeometricRepresentationItem); Contents : SET [1:?] OF IfcDraughtingCalloutElement; INVERSE IsRelatedFromCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatedDraughtingCallout; IsRelatedToCallout : SET [0:?] OF IfcDraughtingCalloutRelationship FOR RelatingDraughtingCallout; END_ENTITY; ENTITY IfcDraughtingCalloutRelationship SUPERTYPE OF (ONEOF (IfcDimensionCalloutRelationship ,IfcDimensionPair)); Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; RelatingDraughtingCallout : IfcDraughtingCallout; RelatedDraughtingCallout : IfcDraughtingCallout; END_ENTITY; ENTITY IfcDraughtingPreDefinedColour SUBTYPE OF (IfcPreDefinedColour); WHERE WR31 : SELF\IfcPreDefinedItem.Name IN ['black','red','green','blue','yellow', 'magenta','cyan','white','by layer']; END_ENTITY; ENTITY IfcDraughtingPreDefinedCurveFont SUBTYPE OF (IfcPreDefinedCurveFont); WHERE WR31 : SELF\IfcPredefinedItem.Name IN ['continuous', 'chain', 'chain double dash', 'dashed', 'dotted', 'by layer']; END_ENTITY; ENTITY IfcDraughtingPreDefinedTextFont SUBTYPE OF (IfcPreDefinedTextFont); WHERE WR31 : SELF\IfcPreDefinedItem.Name IN ['ISO 3098-1 font A','ISO 3098-1 font B']; END_ENTITY; ENTITY IfcDuctFittingType SUBTYPE OF (IfcFlowFittingType); PredefinedType : IfcDuctFittingTypeEnum; WHERE WR2 : (PredefinedType <> IfcDuctFittingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcDuctFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcDuctSegmentType SUBTYPE OF (IfcFlowSegmentType); PredefinedType : IfcDuctSegmentTypeEnum; WHERE WR1 : (PredefinedType <> IfcDuctSegmentTypeEnum.USERDEFINED) OR ((PredefinedType = IfcDuctSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcDuctSilencerType SUBTYPE OF (IfcFlowTreatmentDeviceType); PredefinedType : IfcDuctSilencerTypeEnum; WHERE WR1 : (PredefinedType <> IfcDuctSilencerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcDuctSilencerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcEdge SUPERTYPE OF (ONEOF (IfcEdgeCurve ,IfcOrientedEdge ,IfcSubedge)) SUBTYPE OF (IfcTopologicalRepresentationItem); EdgeStart : IfcVertex; EdgeEnd : IfcVertex; END_ENTITY; ENTITY IfcEdgeCurve SUBTYPE OF (IfcEdge); EdgeGeometry : IfcCurve; SameSense : BOOLEAN; END_ENTITY; ENTITY IfcEdgeFeature ABSTRACT SUPERTYPE OF (ONEOF (IfcChamferEdgeFeature ,IfcRoundedEdgeFeature)) SUBTYPE OF (IfcFeatureElementSubtraction); FeatureLength : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcEdgeLoop SUBTYPE OF (IfcLoop); EdgeList : LIST [1:?] OF IfcOrientedEdge; DERIVE Ne : INTEGER := SIZEOF(EdgeList); WHERE WR1 : (EdgeList[1].EdgeStart) :=: (EdgeList[Ne].EdgeEnd); WR2 : IfcLoopHeadToTail(SELF); END_ENTITY; ENTITY IfcElectricApplianceType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcElectricApplianceTypeEnum; END_ENTITY; ENTITY IfcElectricDistributionPoint SUBTYPE OF (IfcFlowController); DistributionPointFunction : IfcElectricDistributionPointFunctionEnum; UserDefinedFunction : OPTIONAL IfcLabel; WHERE WR31 : (DistributionPointFunction <> IfcElectricDistributionPointFunctionEnum.USERDEFINED) OR ((DistributionPointFunction = IfcElectricDistributionPointFunctionEnum.USERDEFINED) AND EXISTS(SELF\IfcElectricDistributionPoint.UserDefinedFunction)); END_ENTITY; ENTITY IfcElectricFlowStorageDeviceType SUBTYPE OF (IfcFlowStorageDeviceType); PredefinedType : IfcElectricFlowStorageDeviceTypeEnum; END_ENTITY; ENTITY IfcElectricGeneratorType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcElectricGeneratorTypeEnum; END_ENTITY; ENTITY IfcElectricHeaterType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcElectricHeaterTypeEnum; END_ENTITY; ENTITY IfcElectricMotorType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcElectricMotorTypeEnum; END_ENTITY; ENTITY IfcElectricTimeControlType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcElectricTimeControlTypeEnum; END_ENTITY; ENTITY IfcElectricalBaseProperties SUBTYPE OF (IfcEnergyProperties); ElectricCurrentType : OPTIONAL IfcElectricCurrentEnum; InputVoltage : IfcElectricVoltageMeasure; InputFrequency : IfcFrequencyMeasure; FullLoadCurrent : OPTIONAL IfcElectricCurrentMeasure; MinimumCircuitCurrent : OPTIONAL IfcElectricCurrentMeasure; MaximumPowerInput : OPTIONAL IfcPowerMeasure; RatedPowerInput : OPTIONAL IfcPowerMeasure; InputPhase : INTEGER; END_ENTITY; ENTITY IfcElectricalCircuit SUBTYPE OF (IfcSystem); END_ENTITY; ENTITY IfcElectricalElement SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcElement ABSTRACT SUPERTYPE OF (ONEOF (IfcBuildingElement ,IfcDistributionElement ,IfcElectricalElement ,IfcElementAssembly ,IfcElementComponent ,IfcEquipmentElement ,IfcFeatureElement ,IfcFurnishingElement ,IfcTransportElement ,IfcVirtualElement)) SUBTYPE OF (IfcProduct); Tag : OPTIONAL IfcIdentifier; INVERSE HasStructuralMember : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatingElement; FillsVoids : SET [0:1] OF IfcRelFillsElement FOR RelatedBuildingElement; ConnectedTo : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement; HasCoverings : SET [0:?] OF IfcRelCoversBldgElements FOR RelatingBuildingElement; HasProjections : SET [0:?] OF IfcRelProjectsElement FOR RelatingElement; ReferencedInStructures : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatedElements; HasPorts : SET [0:?] OF IfcRelConnectsPortToElement FOR RelatedElement; HasOpenings : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement; IsConnectionRealization : SET [0:?] OF IfcRelConnectsWithRealizingElements FOR RealizingElements; ProvidesBoundaries : SET [0:?] OF IfcRelSpaceBoundary FOR RelatedBuildingElement; ConnectedFrom : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement; ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; END_ENTITY; ENTITY IfcElementAssembly SUBTYPE OF (IfcElement); AssemblyPlace : OPTIONAL IfcAssemblyPlaceEnum; PredefinedType : IfcElementAssemblyTypeEnum; WHERE WR1 : (PredefinedType <> IfcElementAssemblyTypeEnum.USERDEFINED) OR ((PredefinedType = IfcElementAssemblyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcElementComponent ABSTRACT SUPERTYPE OF (ONEOF (IfcDiscreteAccessory ,IfcFastener)) SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcElementComponentType ABSTRACT SUPERTYPE OF (ONEOF (IfcDiscreteAccessoryType ,IfcFastenerType)) SUBTYPE OF (IfcElementType); END_ENTITY; ENTITY IfcElementQuantity SUBTYPE OF (IfcPropertySetDefinition); MethodOfMeasurement : OPTIONAL IfcLabel; Quantities : SET [1:?] OF IfcPhysicalQuantity; END_ENTITY; ENTITY IfcElementType ABSTRACT SUPERTYPE OF (ONEOF (IfcBuildingElementType ,IfcDistributionElementType ,IfcElementComponentType ,IfcFurnishingElementType ,IfcSpatialStructureElementType ,IfcTransportElementType)) SUBTYPE OF (IfcTypeProduct); ElementType : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcElementarySurface ABSTRACT SUPERTYPE OF (ONEOF (IfcPlane)) SUBTYPE OF (IfcSurface); Position : IfcAxis2Placement3D; DERIVE Dim : IfcDimensionCount := Position.Dim; END_ENTITY; ENTITY IfcEllipse SUBTYPE OF (IfcConic); SemiAxis1 : IfcPositiveLengthMeasure; SemiAxis2 : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcEllipseProfileDef SUBTYPE OF (IfcParameterizedProfileDef); SemiAxis1 : IfcPositiveLengthMeasure; SemiAxis2 : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcEnergyConversionDevice SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcEnergyConversionDeviceType ABSTRACT SUPERTYPE OF (ONEOF (IfcAirToAirHeatRecoveryType ,IfcBoilerType ,IfcChillerType ,IfcCoilType ,IfcCondenserType ,IfcCooledBeamType ,IfcCoolingTowerType ,IfcElectricGeneratorType ,IfcElectricMotorType ,IfcEvaporativeCoolerType ,IfcEvaporatorType ,IfcHeatExchangerType ,IfcHumidifierType ,IfcMotorConnectionType ,IfcSpaceHeaterType ,IfcTransformerType ,IfcTubeBundleType ,IfcUnitaryEquipmentType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcEnergyProperties SUPERTYPE OF (ONEOF (IfcElectricalBaseProperties)) SUBTYPE OF (IfcPropertySetDefinition); EnergySequence : OPTIONAL IfcEnergySequenceEnum; UserDefinedEnergySequence : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcEnvironmentalImpactValue SUBTYPE OF (IfcAppliedValue); ImpactType : IfcLabel; Category : IfcEnvironmentalImpactCategoryEnum; UserDefinedCategory : OPTIONAL IfcLabel; WHERE WR1 : (Category <> IfcEnvironmentalImpactCategoryEnum.USERDEFINED) OR ((Category = IfcEnvironmentalImpactCategoryEnum.USERDEFINED) AND EXISTS(SELF\IfcEnvironmentalImpactValue.UserDefinedCategory)); END_ENTITY; ENTITY IfcEquipmentElement SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcEquipmentStandard SUBTYPE OF (IfcControl); END_ENTITY; ENTITY IfcEvaporativeCoolerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcEvaporativeCoolerTypeEnum; WHERE WR1 : (PredefinedType <> IfcEvaporativeCoolerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcEvaporativeCoolerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcEvaporatorType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcEvaporatorTypeEnum; WHERE WR1 : (PredefinedType <> IfcEvaporatorTypeEnum.USERDEFINED) OR ((PredefinedType = IfcEvaporatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcExtendedMaterialProperties SUBTYPE OF (IfcMaterialProperties); ExtendedProperties : SET [1:?] OF IfcProperty; Description : OPTIONAL IfcText; Name : IfcLabel; END_ENTITY; ENTITY IfcExternalReference ABSTRACT SUPERTYPE OF (ONEOF (IfcClassificationReference ,IfcDocumentReference ,IfcExternallyDefinedHatchStyle ,IfcExternallyDefinedSurfaceStyle ,IfcExternallyDefinedSymbol ,IfcExternallyDefinedTextFont ,IfcLibraryReference)); Location : OPTIONAL IfcLabel; ItemReference : OPTIONAL IfcIdentifier; Name : OPTIONAL IfcLabel; WHERE WR1 : EXISTS(ItemReference) OR EXISTS(Location) OR EXISTS(Name); END_ENTITY; ENTITY IfcExternallyDefinedHatchStyle SUBTYPE OF (IfcExternalReference); END_ENTITY; ENTITY IfcExternallyDefinedSurfaceStyle SUBTYPE OF (IfcExternalReference); END_ENTITY; ENTITY IfcExternallyDefinedSymbol SUBTYPE OF (IfcExternalReference); END_ENTITY; ENTITY IfcExternallyDefinedTextFont SUBTYPE OF (IfcExternalReference); END_ENTITY; ENTITY IfcExtrudedAreaSolid SUBTYPE OF (IfcSweptAreaSolid); ExtrudedDirection : IfcDirection; Depth : IfcPositiveLengthMeasure; WHERE WR31 : IfcDotProduct(IfcRepresentationItem() || IfcGeometricRepresentationItem() || IfcDirection([0.0,0.0,1.0]), SELF.ExtrudedDirection) <> 0.0; END_ENTITY; ENTITY IfcFace SUPERTYPE OF (ONEOF (IfcFaceSurface)) SUBTYPE OF (IfcTopologicalRepresentationItem); Bounds : SET [1:?] OF IfcFaceBound; WHERE WR1 : SIZEOF(QUERY(temp <* Bounds | 'IFC2X3.IFCFACEOUTERBOUND' IN TYPEOF(temp))) <= 1; END_ENTITY; ENTITY IfcFaceBasedSurfaceModel SUBTYPE OF (IfcGeometricRepresentationItem); FbsmFaces : SET [1:?] OF IfcConnectedFaceSet; DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcFaceBound SUPERTYPE OF (ONEOF (IfcFaceOuterBound)) SUBTYPE OF (IfcTopologicalRepresentationItem); Bound : IfcLoop; Orientation : BOOLEAN; END_ENTITY; ENTITY IfcFaceOuterBound SUBTYPE OF (IfcFaceBound); END_ENTITY; ENTITY IfcFaceSurface SUBTYPE OF (IfcFace); FaceSurface : IfcSurface; SameSense : BOOLEAN; END_ENTITY; ENTITY IfcFacetedBrep SUBTYPE OF (IfcManifoldSolidBrep); END_ENTITY; ENTITY IfcFacetedBrepWithVoids SUBTYPE OF (IfcManifoldSolidBrep); Voids : SET [1:?] OF IfcClosedShell; END_ENTITY; ENTITY IfcFailureConnectionCondition SUBTYPE OF (IfcStructuralConnectionCondition); TensionFailureX : OPTIONAL IfcForceMeasure; TensionFailureY : OPTIONAL IfcForceMeasure; TensionFailureZ : OPTIONAL IfcForceMeasure; CompressionFailureX : OPTIONAL IfcForceMeasure; CompressionFailureY : OPTIONAL IfcForceMeasure; CompressionFailureZ : OPTIONAL IfcForceMeasure; END_ENTITY; ENTITY IfcFanType SUBTYPE OF (IfcFlowMovingDeviceType); PredefinedType : IfcFanTypeEnum; WHERE WR1 : (PredefinedType <> IfcFanTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFanTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcFastener SUPERTYPE OF (ONEOF (IfcMechanicalFastener)) SUBTYPE OF (IfcElementComponent); END_ENTITY; ENTITY IfcFastenerType SUPERTYPE OF (ONEOF (IfcMechanicalFastenerType)) SUBTYPE OF (IfcElementComponentType); END_ENTITY; ENTITY IfcFeatureElement ABSTRACT SUPERTYPE OF (ONEOF (IfcFeatureElementAddition ,IfcFeatureElementSubtraction)) SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcFeatureElementAddition ABSTRACT SUPERTYPE OF (ONEOF (IfcProjectionElement)) SUBTYPE OF (IfcFeatureElement); INVERSE ProjectsElements : IfcRelProjectsElement FOR RelatedFeatureElement; END_ENTITY; ENTITY IfcFeatureElementSubtraction ABSTRACT SUPERTYPE OF (ONEOF (IfcEdgeFeature ,IfcOpeningElement)) SUBTYPE OF (IfcFeatureElement); INVERSE VoidsElements : IfcRelVoidsElement FOR RelatedOpeningElement; END_ENTITY; ENTITY IfcFillAreaStyle SUBTYPE OF (IfcPresentationStyle); FillStyles : SET [1:?] OF IfcFillStyleSelect; WHERE WR11 : SIZEOF(QUERY(Style <* SELF.FillStyles | 'IFC2X3.IFCCOLOUR' IN TYPEOF(Style) )) <= 1; WR12 : SIZEOF(QUERY(Style <* SELF.FillStyles | 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN TYPEOF(Style) )) <= 1; WR13 : IfcCorrectFillAreaStyle(SELF.FillStyles); END_ENTITY; ENTITY IfcFillAreaStyleHatching SUBTYPE OF (IfcGeometricRepresentationItem); HatchLineAppearance : IfcCurveStyle; StartOfNextHatchLine : IfcHatchLineDistanceSelect; PointOfReferenceHatchLine : OPTIONAL IfcCartesianPoint; PatternStart : OPTIONAL IfcCartesianPoint; HatchLineAngle : IfcPlaneAngleMeasure; WHERE WR21 : NOT( 'IFC2X3.IFCTWODIRECTIONREPEATFACTOR' IN TYPEOF(StartOfNextHatchLine) ); WR22 : NOT(EXISTS(PatternStart)) OR (PatternStart.Dim = 2); WR23 : NOT(EXISTS(PointOfReferenceHatchLine)) OR (PointOfReferenceHatchLine.Dim = 2); END_ENTITY; ENTITY IfcFillAreaStyleTileSymbolWithStyle SUBTYPE OF (IfcGeometricRepresentationItem); Symbol : IfcAnnotationSymbolOccurrence; END_ENTITY; ENTITY IfcFillAreaStyleTiles SUBTYPE OF (IfcGeometricRepresentationItem); TilingPattern : IfcOneDirectionRepeatFactor; Tiles : SET [1:?] OF IfcFillAreaStyleTileShapeSelect; TilingScale : IfcPositiveRatioMeasure; END_ENTITY; ENTITY IfcFilterType SUBTYPE OF (IfcFlowTreatmentDeviceType); PredefinedType : IfcFilterTypeEnum; WHERE WR1 : (PredefinedType <> IfcFilterTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFilterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcFireSuppressionTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcFireSuppressionTerminalTypeEnum; END_ENTITY; ENTITY IfcFlowController SUPERTYPE OF (ONEOF (IfcElectricDistributionPoint)) SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowControllerType ABSTRACT SUPERTYPE OF (ONEOF (IfcAirTerminalBoxType ,IfcDamperType ,IfcElectricTimeControlType ,IfcFlowMeterType ,IfcProtectiveDeviceType ,IfcSwitchingDeviceType ,IfcValveType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowFitting SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowFittingType ABSTRACT SUPERTYPE OF (ONEOF (IfcCableCarrierFittingType ,IfcDuctFittingType ,IfcJunctionBoxType ,IfcPipeFittingType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowInstrumentType SUBTYPE OF (IfcDistributionControlElementType); PredefinedType : IfcFlowInstrumentTypeEnum; END_ENTITY; ENTITY IfcFlowMeterType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcFlowMeterTypeEnum; WHERE WR1 : (PredefinedType <> IfcFlowMeterTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFlowMeterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcFlowMovingDevice SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowMovingDeviceType ABSTRACT SUPERTYPE OF (ONEOF (IfcCompressorType ,IfcFanType ,IfcPumpType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowSegment SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowSegmentType ABSTRACT SUPERTYPE OF (ONEOF (IfcCableCarrierSegmentType ,IfcCableSegmentType ,IfcDuctSegmentType ,IfcPipeSegmentType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowStorageDevice SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowStorageDeviceType ABSTRACT SUPERTYPE OF (ONEOF (IfcElectricFlowStorageDeviceType ,IfcTankType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowTerminal SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowTerminalType ABSTRACT SUPERTYPE OF (ONEOF (IfcAirTerminalType ,IfcElectricApplianceType ,IfcElectricHeaterType ,IfcFireSuppressionTerminalType ,IfcGasTerminalType ,IfcLampType ,IfcLightFixtureType ,IfcOutletType ,IfcSanitaryTerminalType ,IfcStackTerminalType ,IfcWasteTerminalType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFlowTreatmentDevice SUBTYPE OF (IfcDistributionFlowElement); END_ENTITY; ENTITY IfcFlowTreatmentDeviceType ABSTRACT SUPERTYPE OF (ONEOF (IfcDuctSilencerType ,IfcFilterType)) SUBTYPE OF (IfcDistributionFlowElementType); END_ENTITY; ENTITY IfcFluidFlowProperties SUBTYPE OF (IfcPropertySetDefinition); PropertySource : IfcPropertySourceEnum; FlowConditionTimeSeries : OPTIONAL IfcTimeSeries; VelocityTimeSeries : OPTIONAL IfcTimeSeries; FlowrateTimeSeries : OPTIONAL IfcTimeSeries; Fluid : IfcMaterial; PressureTimeSeries : OPTIONAL IfcTimeSeries; UserDefinedPropertySource : OPTIONAL IfcLabel; TemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; WetBulbTemperatureSingleValue : OPTIONAL IfcThermodynamicTemperatureMeasure; WetBulbTemperatureTimeSeries : OPTIONAL IfcTimeSeries; TemperatureTimeSeries : OPTIONAL IfcTimeSeries; FlowrateSingleValue : OPTIONAL IfcDerivedMeasureValue; FlowConditionSingleValue : OPTIONAL IfcPositiveRatioMeasure; VelocitySingleValue : OPTIONAL IfcLinearVelocityMeasure; PressureSingleValue : OPTIONAL IfcPressureMeasure; END_ENTITY; ENTITY IfcFooting SUBTYPE OF (IfcBuildingElement); PredefinedType : IfcFootingTypeEnum; WHERE WR1 : (PredefinedType <> IfcFootingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcFootingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcFuelProperties SUBTYPE OF (IfcMaterialProperties); CombustionTemperature : OPTIONAL IfcThermodynamicTemperatureMeasure; CarbonContent : OPTIONAL IfcPositiveRatioMeasure; LowerHeatingValue : OPTIONAL IfcHeatingValueMeasure; HigherHeatingValue : OPTIONAL IfcHeatingValueMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcFurnishingElement SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcFurnishingElementType SUPERTYPE OF (ONEOF (IfcFurnitureType ,IfcSystemFurnitureElementType)) SUBTYPE OF (IfcElementType); END_ENTITY; ENTITY IfcFurnitureStandard SUBTYPE OF (IfcControl); END_ENTITY; ENTITY IfcFurnitureType SUBTYPE OF (IfcFurnishingElementType); AssemblyPlace : IfcAssemblyPlaceEnum; END_ENTITY; ENTITY IfcGasTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcGasTerminalTypeEnum; WHERE WR1 : (PredefinedType <> IfcGasTerminalTypeEnum.USERDEFINED) OR ((PredefinedType = IfcGasTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcGeneralMaterialProperties SUBTYPE OF (IfcMaterialProperties); MolecularWeight : OPTIONAL IfcMolecularWeightMeasure; Porosity : OPTIONAL IfcNormalisedRatioMeasure; MassDensity : OPTIONAL IfcMassDensityMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcGeneralProfileProperties SUPERTYPE OF (ONEOF (IfcStructuralProfileProperties)) SUBTYPE OF (IfcProfileProperties); PhysicalWeight : OPTIONAL IfcMassPerLengthMeasure; Perimeter : OPTIONAL IfcPositiveLengthMeasure; MinimumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; MaximumPlateThickness : OPTIONAL IfcPositiveLengthMeasure; CrossSectionArea : OPTIONAL IfcAreaMeasure; WHERE WR1 : NOT(EXISTS(CrossSectionArea)) OR (CrossSectionArea > 0.); END_ENTITY; ENTITY IfcGeometricCurveSet SUBTYPE OF (IfcGeometricSet); WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcGeometricSet.Elements | 'IFC2X3.IFCSURFACE' IN TYPEOF(Temp))) = 0; END_ENTITY; ENTITY IfcGeometricRepresentationContext SUPERTYPE OF (ONEOF (IfcGeometricRepresentationSubContext)) SUBTYPE OF (IfcRepresentationContext); CoordinateSpaceDimension : IfcDimensionCount; Precision : OPTIONAL REAL; WorldCoordinateSystem : IfcAxis2Placement; TrueNorth : OPTIONAL IfcDirection; INVERSE HasSubContexts : SET [0:?] OF IfcGeometricRepresentationSubContext FOR ParentContext; END_ENTITY; ENTITY IfcGeometricRepresentationItem ABSTRACT SUPERTYPE OF (ONEOF (IfcAnnotationFillArea ,IfcAnnotationSurface ,IfcBooleanResult ,IfcBoundingBox ,IfcCartesianTransformationOperator ,IfcCompositeCurveSegment ,IfcCsgPrimitive3D ,IfcCurve ,IfcDefinedSymbol ,IfcDirection ,IfcDraughtingCallout ,IfcFaceBasedSurfaceModel ,IfcFillAreaStyleHatching ,IfcFillAreaStyleTileSymbolWithStyle ,IfcFillAreaStyleTiles ,IfcGeometricSet ,IfcHalfSpaceSolid ,IfcLightSource ,IfcOneDirectionRepeatFactor ,IfcPlacement ,IfcPlanarExtent ,IfcPoint ,IfcSectionedSpine ,IfcShellBasedSurfaceModel ,IfcSolidModel ,IfcSurface ,IfcTextLiteral ,IfcVector)) SUBTYPE OF (IfcRepresentationItem); END_ENTITY; ENTITY IfcGeometricRepresentationSubContext SUBTYPE OF (IfcGeometricRepresentationContext); ParentContext : IfcGeometricRepresentationContext; TargetScale : OPTIONAL IfcPositiveRatioMeasure; TargetView : IfcGeometricProjectionEnum; UserDefinedTargetView : OPTIONAL IfcLabel; DERIVE SELF\IfcGeometricRepresentationContext.WorldCoordinateSystem : IfcAxis2Placement := ParentContext.WorldCoordinateSystem; SELF\IfcGeometricRepresentationContext.CoordinateSpaceDimension : IfcDimensionCount := ParentContext.CoordinateSpaceDimension; SELF\IfcGeometricRepresentationContext.TrueNorth : IfcDirection := NVL(ParentContext.TrueNorth,SELF.WorldCoordinateSystem.P[2]); SELF\IfcGeometricRepresentationContext.Precision : REAL := NVL(ParentContext.Precision,1.E-5); WHERE WR31 : NOT('IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(ParentContext)); WR32 : (TargetView <> IfcGeometricProjectionEnum.USERDEFINED) OR ((TargetView = IfcGeometricProjectionEnum.USERDEFINED) AND EXISTS(UserDefinedTargetView)); END_ENTITY; ENTITY IfcGeometricSet SUPERTYPE OF (ONEOF (IfcGeometricCurveSet)) SUBTYPE OF (IfcGeometricRepresentationItem); Elements : SET [1:?] OF IfcGeometricSetSelect; DERIVE Dim : IfcDimensionCount := Elements[1].Dim; WHERE WR21 : SIZEOF(QUERY(Temp <* Elements | Temp.Dim <> Elements[1].Dim)) = 0; END_ENTITY; ENTITY IfcGrid SUBTYPE OF (IfcProduct); UAxes : LIST [1:?] OF UNIQUE IfcGridAxis; VAxes : LIST [1:?] OF UNIQUE IfcGridAxis; WAxes : OPTIONAL LIST [1:?] OF UNIQUE IfcGridAxis; INVERSE ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; WHERE WR41 : EXISTS(SELF\IfcProduct.ObjectPlacement); END_ENTITY; ENTITY IfcGridAxis; AxisTag : OPTIONAL IfcLabel; AxisCurve : IfcCurve; SameSense : IfcBoolean; INVERSE PartOfW : SET [0:1] OF IfcGrid FOR WAxes; PartOfV : SET [0:1] OF IfcGrid FOR VAxes; PartOfU : SET [0:1] OF IfcGrid FOR UAxes; HasIntersections : SET [0:?] OF IfcVirtualGridIntersection FOR IntersectingAxes; WHERE WR1 : AxisCurve.Dim = 2; WR2 : (SIZEOF(PartOfU) = 1) XOR (SIZEOF(PartOfV) = 1) XOR (SIZEOF(PartOfW) = 1); END_ENTITY; ENTITY IfcGridPlacement SUBTYPE OF (IfcObjectPlacement); PlacementLocation : IfcVirtualGridIntersection; PlacementRefDirection : OPTIONAL IfcVirtualGridIntersection; END_ENTITY; ENTITY IfcGroup SUPERTYPE OF (ONEOF (IfcAsset ,IfcCondition ,IfcInventory ,IfcStructuralLoadGroup ,IfcStructuralResultGroup ,IfcSystem ,IfcZone)) SUBTYPE OF (IfcObject); INVERSE IsGroupedBy : IfcRelAssignsToGroup FOR RelatingGroup; END_ENTITY; ENTITY IfcHalfSpaceSolid SUPERTYPE OF (ONEOF (IfcBoxedHalfSpace ,IfcPolygonalBoundedHalfSpace)) SUBTYPE OF (IfcGeometricRepresentationItem); BaseSurface : IfcSurface; AgreementFlag : BOOLEAN; DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcHeatExchangerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcHeatExchangerTypeEnum; WHERE WR1 : (PredefinedType <> IfcHeatExchangerTypeEnum.USERDEFINED) OR ((PredefinedType = IfcHeatExchangerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcHumidifierType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcHumidifierTypeEnum; WHERE WR1 : (PredefinedType <> IfcHumidifierTypeEnum.USERDEFINED) OR ((PredefinedType = IfcHumidifierTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcHygroscopicMaterialProperties SUBTYPE OF (IfcMaterialProperties); UpperVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; LowerVaporResistanceFactor : OPTIONAL IfcPositiveRatioMeasure; IsothermalMoistureCapacity : OPTIONAL IfcIsothermalMoistureCapacityMeasure; VaporPermeability : OPTIONAL IfcVaporPermeabilityMeasure; MoistureDiffusivity : OPTIONAL IfcMoistureDiffusivityMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcIShapeProfileDef SUPERTYPE OF (ONEOF (IfcAsymmetricIShapeProfileDef)) SUBTYPE OF (IfcParameterizedProfileDef); OverallWidth : IfcPositiveLengthMeasure; OverallDepth : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; FlangeThickness : IfcPositiveLengthMeasure; FilletRadius : OPTIONAL IfcPositiveLengthMeasure; WHERE WR1 : FlangeThickness < (OverallDepth / 2.); WR2 : WebThickness < OverallWidth; WR3 : NOT(EXISTS(FilletRadius)) OR ((FilletRadius <= (OverallWidth - WebThickness)/2.) AND (FilletRadius <= (OverallDepth - (2. * FlangeThickness))/2.)); END_ENTITY; ENTITY IfcImageTexture SUBTYPE OF (IfcSurfaceTexture); UrlReference : IfcIdentifier; END_ENTITY; ENTITY IfcInventory SUBTYPE OF (IfcGroup); InventoryType : IfcInventoryTypeEnum; Jurisdiction : IfcActorSelect; ResponsiblePersons : SET [1:?] OF IfcPerson; LastUpdateDate : IfcCalendarDate; CurrentValue : OPTIONAL IfcCostValue; OriginalValue : OPTIONAL IfcCostValue; WHERE WR41 : SIZEOF(QUERY(temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT( ('IFC2X3.IFCSPACE' IN TYPEOF (temp)) OR ('IFC2X3.IFCASSET' IN TYPEOF (temp)) OR ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp)) ))) = 0; END_ENTITY; ENTITY IfcIrregularTimeSeries SUBTYPE OF (IfcTimeSeries); Values : LIST [1:?] OF IfcIrregularTimeSeriesValue; END_ENTITY; ENTITY IfcIrregularTimeSeriesValue; TimeStamp : IfcDateTimeSelect; ListValues : LIST [1:?] OF IfcValue; END_ENTITY; ENTITY IfcJunctionBoxType SUBTYPE OF (IfcFlowFittingType); PredefinedType : IfcJunctionBoxTypeEnum; END_ENTITY; ENTITY IfcLShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); Depth : IfcPositiveLengthMeasure; Width : OPTIONAL IfcPositiveLengthMeasure; Thickness : IfcPositiveLengthMeasure; FilletRadius : OPTIONAL IfcPositiveLengthMeasure; EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; LegSlope : OPTIONAL IfcPlaneAngleMeasure; CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; WHERE WR21 : Thickness < Depth; WR22 : NOT(EXISTS(Width)) OR (Thickness < Width); END_ENTITY; ENTITY IfcLaborResource SUBTYPE OF (IfcConstructionResource); SkillSet : OPTIONAL IfcText; END_ENTITY; ENTITY IfcLampType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcLampTypeEnum; END_ENTITY; ENTITY IfcLibraryInformation; Name : IfcLabel; Version : OPTIONAL IfcLabel; Publisher : OPTIONAL IfcOrganization; VersionDate : OPTIONAL IfcCalendarDate; LibraryReference : OPTIONAL SET [1:?] OF IfcLibraryReference; END_ENTITY; ENTITY IfcLibraryReference SUBTYPE OF (IfcExternalReference); INVERSE ReferenceIntoLibrary : SET [0:1] OF IfcLibraryInformation FOR LibraryReference; END_ENTITY; ENTITY IfcLightDistributionData; MainPlaneAngle : IfcPlaneAngleMeasure; SecondaryPlaneAngle : LIST [1:?] OF IfcPlaneAngleMeasure; LuminousIntensity : LIST [1:?] OF IfcLuminousIntensityDistributionMeasure; END_ENTITY; ENTITY IfcLightFixtureType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcLightFixtureTypeEnum; END_ENTITY; ENTITY IfcLightIntensityDistribution; LightDistributionCurve : IfcLightDistributionCurveEnum; DistributionData : LIST [1:?] OF IfcLightDistributionData; END_ENTITY; ENTITY IfcLightSource ABSTRACT SUPERTYPE OF (ONEOF (IfcLightSourceAmbient ,IfcLightSourceDirectional ,IfcLightSourceGoniometric ,IfcLightSourcePositional)) SUBTYPE OF (IfcGeometricRepresentationItem); Name : OPTIONAL IfcLabel; LightColour : IfcColourRgb; AmbientIntensity : OPTIONAL IfcNormalisedRatioMeasure; Intensity : OPTIONAL IfcNormalisedRatioMeasure; END_ENTITY; ENTITY IfcLightSourceAmbient SUBTYPE OF (IfcLightSource); END_ENTITY; ENTITY IfcLightSourceDirectional SUBTYPE OF (IfcLightSource); Orientation : IfcDirection; END_ENTITY; ENTITY IfcLightSourceGoniometric SUBTYPE OF (IfcLightSource); Position : IfcAxis2Placement3D; ColourAppearance : OPTIONAL IfcColourRgb; ColourTemperature : IfcThermodynamicTemperatureMeasure; LuminousFlux : IfcLuminousFluxMeasure; LightEmissionSource : IfcLightEmissionSourceEnum; LightDistributionDataSource : IfcLightDistributionDataSourceSelect; END_ENTITY; ENTITY IfcLightSourcePositional SUPERTYPE OF (ONEOF (IfcLightSourceSpot)) SUBTYPE OF (IfcLightSource); Position : IfcCartesianPoint; Radius : IfcPositiveLengthMeasure; ConstantAttenuation : IfcReal; DistanceAttenuation : IfcReal; QuadricAttenuation : IfcReal; END_ENTITY; ENTITY IfcLightSourceSpot SUBTYPE OF (IfcLightSourcePositional); Orientation : IfcDirection; ConcentrationExponent : OPTIONAL IfcReal; SpreadAngle : IfcPositivePlaneAngleMeasure; BeamWidthAngle : IfcPositivePlaneAngleMeasure; END_ENTITY; ENTITY IfcLine SUBTYPE OF (IfcCurve); Pnt : IfcCartesianPoint; Dir : IfcVector; WHERE WR1 : Dir.Dim = Pnt.Dim; END_ENTITY; ENTITY IfcLinearDimension SUBTYPE OF (IfcDimensionCurveDirectedCallout); END_ENTITY; ENTITY IfcLocalPlacement SUBTYPE OF (IfcObjectPlacement); PlacementRelTo : OPTIONAL IfcObjectPlacement; RelativePlacement : IfcAxis2Placement; WHERE WR21 : IfcCorrectLocalPlacement(RelativePlacement, PlacementRelTo); END_ENTITY; ENTITY IfcLocalTime; HourComponent : IfcHourInDay; MinuteComponent : OPTIONAL IfcMinuteInHour; SecondComponent : OPTIONAL IfcSecondInMinute; Zone : OPTIONAL IfcCoordinatedUniversalTimeOffset; DaylightSavingOffset : OPTIONAL IfcDaylightSavingHour; WHERE WR21 : IfcValidTime (SELF); END_ENTITY; ENTITY IfcLoop SUPERTYPE OF (ONEOF (IfcEdgeLoop ,IfcPolyLoop ,IfcVertexLoop)) SUBTYPE OF (IfcTopologicalRepresentationItem); END_ENTITY; ENTITY IfcManifoldSolidBrep ABSTRACT SUPERTYPE OF (ONEOF (IfcFacetedBrep ,IfcFacetedBrepWithVoids)) SUBTYPE OF (IfcSolidModel); Outer : IfcClosedShell; END_ENTITY; ENTITY IfcMappedItem SUBTYPE OF (IfcRepresentationItem); MappingSource : IfcRepresentationMap; MappingTarget : IfcCartesianTransformationOperator; END_ENTITY; ENTITY IfcMaterial; Name : IfcLabel; INVERSE HasRepresentation : SET [0:1] OF IfcMaterialDefinitionRepresentation FOR RepresentedMaterial; ClassifiedAs : SET [0:1] OF IfcMaterialClassificationRelationship FOR ClassifiedMaterial; END_ENTITY; ENTITY IfcMaterialClassificationRelationship; MaterialClassifications : SET [1:?] OF IfcClassificationNotationSelect; ClassifiedMaterial : IfcMaterial; END_ENTITY; ENTITY IfcMaterialDefinitionRepresentation SUBTYPE OF (IfcProductRepresentation); RepresentedMaterial : IfcMaterial; WHERE WR11 : SIZEOF(QUERY(temp <* Representations | (NOT('IFC2X3.IFCSTYLEDREPRESENTATION' IN TYPEOF(temp))) )) = 0; END_ENTITY; ENTITY IfcMaterialLayer; Material : OPTIONAL IfcMaterial; LayerThickness : IfcPositiveLengthMeasure; IsVentilated : OPTIONAL IfcLogical; INVERSE ToMaterialLayerSet : IfcMaterialLayerSet FOR MaterialLayers; END_ENTITY; ENTITY IfcMaterialLayerSet; MaterialLayers : LIST [1:?] OF IfcMaterialLayer; LayerSetName : OPTIONAL IfcLabel; DERIVE TotalThickness : IfcLengthMeasure := IfcMlsTotalThickness(SELF); END_ENTITY; ENTITY IfcMaterialLayerSetUsage; ForLayerSet : IfcMaterialLayerSet; LayerSetDirection : IfcLayerSetDirectionEnum; DirectionSense : IfcDirectionSenseEnum; OffsetFromReferenceLine : IfcLengthMeasure; END_ENTITY; ENTITY IfcMaterialList; Materials : LIST [1:?] OF IfcMaterial; END_ENTITY; ENTITY IfcMaterialProperties ABSTRACT SUPERTYPE OF (ONEOF (IfcExtendedMaterialProperties ,IfcFuelProperties ,IfcGeneralMaterialProperties ,IfcHygroscopicMaterialProperties ,IfcMechanicalMaterialProperties ,IfcOpticalMaterialProperties ,IfcProductsOfCombustionProperties ,IfcThermalMaterialProperties ,IfcWaterProperties)); Material : IfcMaterial; END_ENTITY; ENTITY IfcMeasureWithUnit; ValueComponent : IfcValue; UnitComponent : IfcUnit; END_ENTITY; ENTITY IfcMechanicalConcreteMaterialProperties SUBTYPE OF (IfcMechanicalMaterialProperties); CompressiveStrength : OPTIONAL IfcPressureMeasure; MaxAggregateSize : OPTIONAL IfcPositiveLengthMeasure; AdmixturesDescription : OPTIONAL IfcText; Workability : OPTIONAL IfcText; ProtectivePoreRatio : OPTIONAL IfcNormalisedRatioMeasure; WaterImpermeability : OPTIONAL IfcText; END_ENTITY; ENTITY IfcMechanicalFastener SUBTYPE OF (IfcFastener); NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; NominalLength : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcMechanicalFastenerType SUBTYPE OF (IfcFastenerType); END_ENTITY; ENTITY IfcMechanicalMaterialProperties SUPERTYPE OF (ONEOF (IfcMechanicalConcreteMaterialProperties ,IfcMechanicalSteelMaterialProperties)) SUBTYPE OF (IfcMaterialProperties); DynamicViscosity : OPTIONAL IfcDynamicViscosityMeasure; YoungModulus : OPTIONAL IfcModulusOfElasticityMeasure; ShearModulus : OPTIONAL IfcModulusOfElasticityMeasure; PoissonRatio : OPTIONAL IfcPositiveRatioMeasure; ThermalExpansionCoefficient : OPTIONAL IfcThermalExpansionCoefficientMeasure; UNIQUE UR11 : Material; WHERE WR21 : NOT(EXISTS(YoungModulus)) OR (YoungModulus >= 0.0); WR22 : NOT(EXISTS(ShearModulus)) OR (ShearModulus >= 0.0); END_ENTITY; ENTITY IfcMechanicalSteelMaterialProperties SUBTYPE OF (IfcMechanicalMaterialProperties); YieldStress : OPTIONAL IfcPressureMeasure; UltimateStress : OPTIONAL IfcPressureMeasure; UltimateStrain : OPTIONAL IfcPositiveRatioMeasure; HardeningModule : OPTIONAL IfcModulusOfElasticityMeasure; ProportionalStress : OPTIONAL IfcPressureMeasure; PlasticStrain : OPTIONAL IfcPositiveRatioMeasure; Relaxations : OPTIONAL SET [1:?] OF IfcRelaxation; WHERE WR31 : NOT(EXISTS(YieldStress)) OR (YieldStress >= 0.); WR32 : NOT(EXISTS(UltimateStress)) OR (UltimateStress >= 0.); WR33 : NOT(EXISTS(HardeningModule)) OR (HardeningModule >= 0.); WR34 : NOT(EXISTS(ProportionalStress)) OR (ProportionalStress >= 0.); END_ENTITY; ENTITY IfcMember SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcMemberType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcMemberTypeEnum; END_ENTITY; ENTITY IfcMetric SUBTYPE OF (IfcConstraint); Benchmark : IfcBenchmarkEnum; ValueSource : OPTIONAL IfcLabel; DataValue : IfcMetricValueSelect; END_ENTITY; ENTITY IfcMonetaryUnit; Currency : IfcCurrencyEnum; END_ENTITY; ENTITY IfcMotorConnectionType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcMotorConnectionTypeEnum; END_ENTITY; ENTITY IfcMove SUBTYPE OF (IfcTask); MoveFrom : IfcSpatialStructureElement; MoveTo : IfcSpatialStructureElement; PunchList : OPTIONAL LIST [1:?] OF UNIQUE IfcText; WHERE WR1 : SIZEOF(SELF\IfcProcess.OperatesOn) >= 1; WR2 : SIZEOF(QUERY(temp <* OperatesOn | SIZEOF(QUERY(temp2 <* temp.RelatedObjects | ('IFC2X3.IFCACTOR' IN TYPEOF (temp2)) OR ('IFC2X3.IFCEQUIPMENTELEMENT' IN TYPEOF (temp2)) OR ('IFC2X3.IFCFURNISHINGELEMENT' IN TYPEOF (temp2)) )) >=1 )) >= 1; WR3 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcNamedUnit ABSTRACT SUPERTYPE OF (ONEOF (IfcContextDependentUnit ,IfcConversionBasedUnit ,IfcSIUnit)); Dimensions : IfcDimensionalExponents; UnitType : IfcUnitEnum; WHERE WR1 : IfcCorrectDimensions (SELF.UnitType, SELF.Dimensions); END_ENTITY; ENTITY IfcObject ABSTRACT SUPERTYPE OF (ONEOF (IfcActor ,IfcControl ,IfcGroup ,IfcProcess ,IfcProduct ,IfcProject ,IfcResource)) SUBTYPE OF (IfcObjectDefinition); ObjectType : OPTIONAL IfcLabel; INVERSE IsDefinedBy : SET [0:?] OF IfcRelDefines FOR RelatedObjects; WHERE WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X3.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1; END_ENTITY; ENTITY IfcObjectDefinition ABSTRACT SUPERTYPE OF (ONEOF (IfcObject ,IfcTypeObject)) SUBTYPE OF (IfcRoot); INVERSE HasAssignments : SET [0:?] OF IfcRelAssigns FOR RelatedObjects; IsDecomposedBy : SET [0:?] OF IfcRelDecomposes FOR RelatingObject; Decomposes : SET [0:1] OF IfcRelDecomposes FOR RelatedObjects; HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; END_ENTITY; ENTITY IfcObjectPlacement ABSTRACT SUPERTYPE OF (ONEOF (IfcGridPlacement ,IfcLocalPlacement)); INVERSE PlacesObject : SET [1:1] OF IfcProduct FOR ObjectPlacement; ReferencedByPlacements : SET [0:?] OF IfcLocalPlacement FOR PlacementRelTo; END_ENTITY; ENTITY IfcObjective SUBTYPE OF (IfcConstraint); BenchmarkValues : OPTIONAL IfcMetric; ResultValues : OPTIONAL IfcMetric; ObjectiveQualifier : IfcObjectiveEnum; UserDefinedQualifier : OPTIONAL IfcLabel; WHERE WR21 : (ObjectiveQualifier <> IfcObjectiveEnum.USERDEFINED) OR ((ObjectiveQualifier = IfcObjectiveEnum.USERDEFINED) AND EXISTS(SELF\IfcObjective.UserDefinedQualifier)); END_ENTITY; ENTITY IfcOccupant SUBTYPE OF (IfcActor); PredefinedType : IfcOccupantTypeEnum; WHERE WR31 : NOT(PredefinedType = IfcOccupantTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); END_ENTITY; ENTITY IfcOffsetCurve2D SUBTYPE OF (IfcCurve); BasisCurve : IfcCurve; Distance : IfcLengthMeasure; SelfIntersect : LOGICAL; WHERE WR1 : BasisCurve.Dim = 2; END_ENTITY; ENTITY IfcOffsetCurve3D SUBTYPE OF (IfcCurve); BasisCurve : IfcCurve; Distance : IfcLengthMeasure; SelfIntersect : LOGICAL; RefDirection : IfcDirection; WHERE WR1 : BasisCurve.Dim = 3; END_ENTITY; ENTITY IfcOneDirectionRepeatFactor SUPERTYPE OF (ONEOF (IfcTwoDirectionRepeatFactor)) SUBTYPE OF (IfcGeometricRepresentationItem); RepeatFactor : IfcVector; END_ENTITY; ENTITY IfcOpenShell SUBTYPE OF (IfcConnectedFaceSet); END_ENTITY; ENTITY IfcOpeningElement SUBTYPE OF (IfcFeatureElementSubtraction); INVERSE HasFillings : SET [0:?] OF IfcRelFillsElement FOR RelatingOpeningElement; END_ENTITY; ENTITY IfcOpticalMaterialProperties SUBTYPE OF (IfcMaterialProperties); VisibleTransmittance : OPTIONAL IfcPositiveRatioMeasure; SolarTransmittance : OPTIONAL IfcPositiveRatioMeasure; ThermalIrTransmittance : OPTIONAL IfcPositiveRatioMeasure; ThermalIrEmissivityBack : OPTIONAL IfcPositiveRatioMeasure; ThermalIrEmissivityFront : OPTIONAL IfcPositiveRatioMeasure; VisibleReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; VisibleReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; SolarReflectanceFront : OPTIONAL IfcPositiveRatioMeasure; SolarReflectanceBack : OPTIONAL IfcPositiveRatioMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcOrderAction SUBTYPE OF (IfcTask); ActionID : IfcIdentifier; UNIQUE UR2 : ActionID; END_ENTITY; ENTITY IfcOrganization; Id : OPTIONAL IfcIdentifier; Name : IfcLabel; Description : OPTIONAL IfcText; Roles : OPTIONAL LIST [1:?] OF IfcActorRole; Addresses : OPTIONAL LIST [1:?] OF IfcAddress; INVERSE IsRelatedBy : SET [0:?] OF IfcOrganizationRelationship FOR RelatedOrganizations; Relates : SET [0:?] OF IfcOrganizationRelationship FOR RelatingOrganization; Engages : SET [0:?] OF IfcPersonAndOrganization FOR TheOrganization; END_ENTITY; ENTITY IfcOrganizationRelationship; Name : IfcLabel; Description : OPTIONAL IfcText; RelatingOrganization : IfcOrganization; RelatedOrganizations : SET [1:?] OF IfcOrganization; END_ENTITY; ENTITY IfcOrientedEdge SUBTYPE OF (IfcEdge); EdgeElement : IfcEdge; Orientation : BOOLEAN; DERIVE SELF\IfcEdge.EdgeStart : IfcVertex := IfcBooleanChoose (Orientation, EdgeElement.EdgeStart, EdgeElement.EdgeEnd); SELF\IfcEdge.EdgeEnd : IfcVertex := IfcBooleanChoose (Orientation, EdgeElement.EdgeEnd, EdgeElement.EdgeStart); WHERE WR1 : NOT('IFC2X3.IFCORIENTEDEDGE' IN TYPEOF(EdgeElement)); END_ENTITY; ENTITY IfcOutletType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcOutletTypeEnum; END_ENTITY; ENTITY IfcOwnerHistory; OwningUser : IfcPersonAndOrganization; OwningApplication : IfcApplication; State : OPTIONAL IfcStateEnum; ChangeAction : IfcChangeActionEnum; LastModifiedDate : OPTIONAL IfcTimeStamp; LastModifyingUser : OPTIONAL IfcPersonAndOrganization; LastModifyingApplication : OPTIONAL IfcApplication; CreationDate : IfcTimeStamp; END_ENTITY; ENTITY IfcParameterizedProfileDef ABSTRACT SUPERTYPE OF (ONEOF (IfcCShapeProfileDef ,IfcCircleProfileDef ,IfcCraneRailAShapeProfileDef ,IfcCraneRailFShapeProfileDef ,IfcEllipseProfileDef ,IfcIShapeProfileDef ,IfcLShapeProfileDef ,IfcRectangleProfileDef ,IfcTShapeProfileDef ,IfcTrapeziumProfileDef ,IfcUShapeProfileDef ,IfcZShapeProfileDef)) SUBTYPE OF (IfcProfileDef); Position : IfcAxis2Placement2D; END_ENTITY; ENTITY IfcPath SUBTYPE OF (IfcTopologicalRepresentationItem); EdgeList : LIST [1:?] OF UNIQUE IfcOrientedEdge; WHERE WR1 : IfcPathHeadToTail(SELF); END_ENTITY; ENTITY IfcPerformanceHistory SUBTYPE OF (IfcControl); LifeCyclePhase : IfcLabel; END_ENTITY; ENTITY IfcPermeableCoveringProperties SUBTYPE OF (IfcPropertySetDefinition); OperationType : IfcPermeableCoveringOperationEnum; PanelPosition : IfcWindowPanelPositionEnum; FrameDepth : OPTIONAL IfcPositiveLengthMeasure; FrameThickness : OPTIONAL IfcPositiveLengthMeasure; ShapeAspectStyle : OPTIONAL IfcShapeAspect; END_ENTITY; ENTITY IfcPermit SUBTYPE OF (IfcControl); PermitID : IfcIdentifier; UNIQUE UR2 : PermitID; END_ENTITY; ENTITY IfcPerson; Id : OPTIONAL IfcIdentifier; FamilyName : OPTIONAL IfcLabel; GivenName : OPTIONAL IfcLabel; MiddleNames : OPTIONAL LIST [1:?] OF IfcLabel; PrefixTitles : OPTIONAL LIST [1:?] OF IfcLabel; SuffixTitles : OPTIONAL LIST [1:?] OF IfcLabel; Roles : OPTIONAL LIST [1:?] OF IfcActorRole; Addresses : OPTIONAL LIST [1:?] OF IfcAddress; INVERSE EngagedIn : SET [0:?] OF IfcPersonAndOrganization FOR ThePerson; WHERE WR1 : EXISTS(FamilyName) OR EXISTS(GivenName); END_ENTITY; ENTITY IfcPersonAndOrganization; ThePerson : IfcPerson; TheOrganization : IfcOrganization; Roles : OPTIONAL LIST [1:?] OF IfcActorRole; END_ENTITY; ENTITY IfcPhysicalComplexQuantity SUBTYPE OF (IfcPhysicalQuantity); HasQuantities : SET [1:?] OF IfcPhysicalQuantity; Discrimination : IfcLabel; Quality : OPTIONAL IfcLabel; Usage : OPTIONAL IfcLabel; WHERE WR21 : SIZEOF(QUERY(temp <* HasQuantities | SELF :=: temp)) = 0; END_ENTITY; ENTITY IfcPhysicalQuantity ABSTRACT SUPERTYPE OF (ONEOF (IfcPhysicalComplexQuantity ,IfcPhysicalSimpleQuantity)); Name : IfcLabel; Description : OPTIONAL IfcText; INVERSE PartOfComplex : SET [0:1] OF IfcPhysicalComplexQuantity FOR HasQuantities; END_ENTITY; ENTITY IfcPhysicalSimpleQuantity ABSTRACT SUPERTYPE OF (ONEOF (IfcQuantityArea ,IfcQuantityCount ,IfcQuantityLength ,IfcQuantityTime ,IfcQuantityVolume ,IfcQuantityWeight)) SUBTYPE OF (IfcPhysicalQuantity); Unit : OPTIONAL IfcNamedUnit; END_ENTITY; ENTITY IfcPile SUBTYPE OF (IfcBuildingElement); PredefinedType : IfcPileTypeEnum; ConstructionType : OPTIONAL IfcPileConstructionEnum; WHERE WR1 : (PredefinedType <> IfcPileTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPileTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcPipeFittingType SUBTYPE OF (IfcFlowFittingType); PredefinedType : IfcPipeFittingTypeEnum; WHERE WR1 : (PredefinedType <> IfcPipeFittingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPipeFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcPipeSegmentType SUBTYPE OF (IfcFlowSegmentType); PredefinedType : IfcPipeSegmentTypeEnum; WHERE WR1 : (PredefinedType <> IfcPipeSegmentTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPipeSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcPixelTexture SUBTYPE OF (IfcSurfaceTexture); Width : IfcInteger; Height : IfcInteger; ColourComponents : IfcInteger; Pixel : LIST [1:?] OF BINARY(32); WHERE WR21 : Width >= 1; WR22 : Height >= 1; WR23 : {1 <= ColourComponents <= 4}; WR24 : SIZEOF(Pixel) = (Width * Height); END_ENTITY; ENTITY IfcPlacement ABSTRACT SUPERTYPE OF (ONEOF (IfcAxis1Placement ,IfcAxis2Placement2D ,IfcAxis2Placement3D)) SUBTYPE OF (IfcGeometricRepresentationItem); Location : IfcCartesianPoint; DERIVE Dim : IfcDimensionCount := Location.Dim; END_ENTITY; ENTITY IfcPlanarBox SUBTYPE OF (IfcPlanarExtent); Placement : IfcAxis2Placement; END_ENTITY; ENTITY IfcPlanarExtent SUPERTYPE OF (ONEOF (IfcPlanarBox)) SUBTYPE OF (IfcGeometricRepresentationItem); SizeInX : IfcLengthMeasure; SizeInY : IfcLengthMeasure; END_ENTITY; ENTITY IfcPlane SUBTYPE OF (IfcElementarySurface); END_ENTITY; ENTITY IfcPlate SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcPlateType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcPlateTypeEnum; END_ENTITY; ENTITY IfcPoint ABSTRACT SUPERTYPE OF (ONEOF (IfcCartesianPoint ,IfcPointOnCurve ,IfcPointOnSurface)) SUBTYPE OF (IfcGeometricRepresentationItem); END_ENTITY; ENTITY IfcPointOnCurve SUBTYPE OF (IfcPoint); BasisCurve : IfcCurve; PointParameter : IfcParameterValue; DERIVE Dim : IfcDimensionCount := BasisCurve.Dim; END_ENTITY; ENTITY IfcPointOnSurface SUBTYPE OF (IfcPoint); BasisSurface : IfcSurface; PointParameterU : IfcParameterValue; PointParameterV : IfcParameterValue; DERIVE Dim : IfcDimensionCount := BasisSurface.Dim; END_ENTITY; ENTITY IfcPolyLoop SUBTYPE OF (IfcLoop); Polygon : LIST [3:?] OF UNIQUE IfcCartesianPoint; WHERE WR21 : SIZEOF(QUERY(Temp <* Polygon | Temp.Dim <> Polygon[1].Dim)) = 0; END_ENTITY; ENTITY IfcPolygonalBoundedHalfSpace SUBTYPE OF (IfcHalfSpaceSolid); Position : IfcAxis2Placement3D; PolygonalBoundary : IfcBoundedCurve; WHERE WR41 : PolygonalBoundary.Dim = 2; WR42 : SIZEOF(TYPEOF(PolygonalBoundary) * [ 'IFC2X3.IFCPOLYLINE', 'IFC2X3.IFCCOMPOSITECURVE'] ) = 1; END_ENTITY; ENTITY IfcPolyline SUBTYPE OF (IfcBoundedCurve); Points : LIST [2:?] OF IfcCartesianPoint; WHERE WR41 : SIZEOF(QUERY(Temp <* Points | Temp.Dim <> Points[1].Dim)) = 0; END_ENTITY; ENTITY IfcPort ABSTRACT SUPERTYPE OF (ONEOF (IfcDistributionPort)) SUBTYPE OF (IfcProduct); INVERSE ContainedIn : IfcRelConnectsPortToElement FOR RelatingPort; ConnectedFrom : SET [0:1] OF IfcRelConnectsPorts FOR RelatedPort; ConnectedTo : SET [0:1] OF IfcRelConnectsPorts FOR RelatingPort; END_ENTITY; ENTITY IfcPostalAddress SUBTYPE OF (IfcAddress); InternalLocation : OPTIONAL IfcLabel; AddressLines : OPTIONAL LIST [1:?] OF IfcLabel; PostalBox : OPTIONAL IfcLabel; Town : OPTIONAL IfcLabel; Region : OPTIONAL IfcLabel; PostalCode : OPTIONAL IfcLabel; Country : OPTIONAL IfcLabel; WHERE WR1 : EXISTS (InternalLocation) OR EXISTS (AddressLines) OR EXISTS (PostalBox) OR EXISTS (PostalCode) OR EXISTS (Town) OR EXISTS (Region) OR EXISTS (Country); END_ENTITY; ENTITY IfcPreDefinedColour ABSTRACT SUPERTYPE OF (ONEOF (IfcDraughtingPreDefinedColour)) SUBTYPE OF (IfcPreDefinedItem); END_ENTITY; ENTITY IfcPreDefinedCurveFont ABSTRACT SUPERTYPE OF (ONEOF (IfcDraughtingPreDefinedCurveFont)) SUBTYPE OF (IfcPreDefinedItem); END_ENTITY; ENTITY IfcPreDefinedDimensionSymbol SUBTYPE OF (IfcPreDefinedSymbol); WHERE WR31 : SELF\IfcPreDefinedItem.Name IN ['arc length','conical taper','counterbore', 'countersink','depth','diameter','plus minus','radius', 'slope','spherical diameter','spherical radius','square']; END_ENTITY; ENTITY IfcPreDefinedItem ABSTRACT SUPERTYPE OF (ONEOF (IfcPreDefinedColour ,IfcPreDefinedCurveFont ,IfcPreDefinedSymbol ,IfcPreDefinedTextFont)); Name : IfcLabel; END_ENTITY; ENTITY IfcPreDefinedPointMarkerSymbol SUBTYPE OF (IfcPreDefinedSymbol); WHERE WR31 : SELF\IfcPreDefinedItem.Name IN ['asterisk','circle','dot','plus','square','triangle','x']; END_ENTITY; ENTITY IfcPreDefinedSymbol ABSTRACT SUPERTYPE OF (ONEOF (IfcPreDefinedDimensionSymbol ,IfcPreDefinedPointMarkerSymbol ,IfcPreDefinedTerminatorSymbol)) SUBTYPE OF (IfcPreDefinedItem); END_ENTITY; ENTITY IfcPreDefinedTerminatorSymbol SUBTYPE OF (IfcPreDefinedSymbol); WHERE WR31 : SELF\IfcPreDefinedItem.Name IN ['blanked arrow','blanked box', 'blanked dot','dimension origin','filled arrow','filled box', 'filled dot','integral symbol','open arrow','slash','unfilled arrow']; END_ENTITY; ENTITY IfcPreDefinedTextFont ABSTRACT SUPERTYPE OF (ONEOF (IfcDraughtingPreDefinedTextFont ,IfcTextStyleFontModel)) SUBTYPE OF (IfcPreDefinedItem); END_ENTITY; ENTITY IfcPresentationLayerAssignment SUPERTYPE OF (ONEOF (IfcPresentationLayerWithStyle)); Name : IfcLabel; Description : OPTIONAL IfcText; AssignedItems : SET [1:?] OF IfcLayeredItem; Identifier : OPTIONAL IfcIdentifier; END_ENTITY; ENTITY IfcPresentationLayerWithStyle SUBTYPE OF (IfcPresentationLayerAssignment); LayerOn : LOGICAL; LayerFrozen : LOGICAL; LayerBlocked : LOGICAL; LayerStyles : SET [0:?] OF IfcPresentationStyleSelect; END_ENTITY; ENTITY IfcPresentationStyle ABSTRACT SUPERTYPE OF (ONEOF (IfcCurveStyle ,IfcFillAreaStyle ,IfcSurfaceStyle ,IfcSymbolStyle ,IfcTextStyle)); Name : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcPresentationStyleAssignment; Styles : SET [1:?] OF IfcPresentationStyleSelect; END_ENTITY; ENTITY IfcProcedure SUBTYPE OF (IfcProcess); ProcedureID : IfcIdentifier; ProcedureType : IfcProcedureTypeEnum; UserDefinedProcedureType : OPTIONAL IfcLabel; WHERE WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; WR3 : EXISTS(SELF\IfcRoot.Name); WR4 : (ProcedureType <> IfcProcedureTypeEnum.USERDEFINED) OR ((ProcedureType = IfcProcedureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcProcedure.UserDefinedProcedureType)); END_ENTITY; ENTITY IfcProcess ABSTRACT SUPERTYPE OF (ONEOF (IfcProcedure ,IfcTask)) SUBTYPE OF (IfcObject); INVERSE OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess; IsSuccessorFrom : SET [0:?] OF IfcRelSequence FOR RelatedProcess; IsPredecessorTo : SET [0:?] OF IfcRelSequence FOR RelatingProcess; END_ENTITY; ENTITY IfcProduct ABSTRACT SUPERTYPE OF (ONEOF (IfcAnnotation ,IfcElement ,IfcGrid ,IfcPort ,IfcProxy ,IfcSpatialStructureElement ,IfcStructuralActivity ,IfcStructuralItem)) SUBTYPE OF (IfcObject); ObjectPlacement : OPTIONAL IfcObjectPlacement; Representation : OPTIONAL IfcProductRepresentation; INVERSE ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct; WHERE WR1 : (EXISTS(Representation) AND EXISTS(ObjectPlacement)) OR (EXISTS(Representation) AND (NOT('IFC2X3.IFCPRODUCTDEFINITIONSHAPE' IN TYPEOF(Representation)))) OR (NOT(EXISTS(Representation))); END_ENTITY; ENTITY IfcProductDefinitionShape SUBTYPE OF (IfcProductRepresentation); INVERSE ShapeOfProduct : SET [1:1] OF IfcProduct FOR Representation; HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape; WHERE WR11 : SIZEOF(QUERY(temp <* Representations | (NOT('IFC2X3.IFCSHAPEMODEL' IN TYPEOF(temp))) )) = 0; END_ENTITY; ENTITY IfcProductRepresentation SUPERTYPE OF (ONEOF (IfcMaterialDefinitionRepresentation ,IfcProductDefinitionShape)); Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; Representations : LIST [1:?] OF IfcRepresentation; END_ENTITY; ENTITY IfcProductsOfCombustionProperties SUBTYPE OF (IfcMaterialProperties); SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; N20Content : OPTIONAL IfcPositiveRatioMeasure; COContent : OPTIONAL IfcPositiveRatioMeasure; CO2Content : OPTIONAL IfcPositiveRatioMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcProfileDef ABSTRACT SUPERTYPE OF (ONEOF (IfcArbitraryClosedProfileDef ,IfcArbitraryOpenProfileDef ,IfcCompositeProfileDef ,IfcDerivedProfileDef ,IfcParameterizedProfileDef)); ProfileType : IfcProfileTypeEnum; ProfileName : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcProfileProperties ABSTRACT SUPERTYPE OF (ONEOF (IfcGeneralProfileProperties ,IfcRibPlateProfileProperties)); ProfileName : OPTIONAL IfcLabel; ProfileDefinition : OPTIONAL IfcProfileDef; END_ENTITY; ENTITY IfcProject SUBTYPE OF (IfcObject); LongName : OPTIONAL IfcLabel; Phase : OPTIONAL IfcLabel; RepresentationContexts : SET [1:?] OF IfcRepresentationContext; UnitsInContext : IfcUnitAssignment; WHERE WR31 : EXISTS(SELF\IfcRoot.Name); WR32 : SIZEOF(QUERY(Temp <* RepresentationContexts | 'IFC2X3.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(Temp) )) = 0; WR33 : SIZEOF(SELF\IfcObjectDefinition.Decomposes) = 0; END_ENTITY; ENTITY IfcProjectOrder SUBTYPE OF (IfcControl); ID : IfcIdentifier; PredefinedType : IfcProjectOrderTypeEnum; Status : OPTIONAL IfcLabel; UNIQUE UR2 : ID; END_ENTITY; ENTITY IfcProjectOrderRecord SUBTYPE OF (IfcControl); Records : LIST [1:?] OF UNIQUE IfcRelAssignsToProjectOrder; PredefinedType : IfcProjectOrderRecordTypeEnum; END_ENTITY; ENTITY IfcProjectionCurve SUBTYPE OF (IfcAnnotationCurveOccurrence); END_ENTITY; ENTITY IfcProjectionElement SUBTYPE OF (IfcFeatureElementAddition); END_ENTITY; ENTITY IfcProperty ABSTRACT SUPERTYPE OF (ONEOF (IfcComplexProperty ,IfcSimpleProperty)); Name : IfcIdentifier; Description : OPTIONAL IfcText; INVERSE PropertyForDependance : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependingProperty; PropertyDependsOn : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependantProperty; PartOfComplex : SET [0:1] OF IfcComplexProperty FOR HasProperties; END_ENTITY; ENTITY IfcPropertyBoundedValue SUBTYPE OF (IfcSimpleProperty); UpperBoundValue : OPTIONAL IfcValue; LowerBoundValue : OPTIONAL IfcValue; Unit : OPTIONAL IfcUnit; WHERE WR21 : NOT(EXISTS(UpperBoundValue)) OR NOT(EXISTS(LowerBoundValue)) OR (TYPEOF(UpperBoundValue) = TYPEOF(LowerBoundValue)); WR22 : EXISTS(UpperBoundValue) OR EXISTS(LowerBoundValue); END_ENTITY; ENTITY IfcPropertyConstraintRelationship; RelatingConstraint : IfcConstraint; RelatedProperties : SET [1:?] OF IfcProperty; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; END_ENTITY; ENTITY IfcPropertyDefinition ABSTRACT SUPERTYPE OF (ONEOF (IfcPropertySetDefinition)) SUBTYPE OF (IfcRoot); INVERSE HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; END_ENTITY; ENTITY IfcPropertyDependencyRelationship; DependingProperty : IfcProperty; DependantProperty : IfcProperty; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; Expression : OPTIONAL IfcText; WHERE WR1 : DependingProperty :<>: DependantProperty; END_ENTITY; ENTITY IfcPropertyEnumeratedValue SUBTYPE OF (IfcSimpleProperty); EnumerationValues : LIST [1:?] OF IfcValue; EnumerationReference : OPTIONAL IfcPropertyEnumeration; WHERE WR1 : NOT(EXISTS(EnumerationReference)) OR (SIZEOF(QUERY(temp <* EnumerationValues | temp IN EnumerationReference.EnumerationValues)) = SIZEOF(EnumerationValues)); END_ENTITY; ENTITY IfcPropertyEnumeration; Name : IfcLabel; EnumerationValues : LIST [1:?] OF UNIQUE IfcValue; Unit : OPTIONAL IfcUnit; UNIQUE UR1 : Name; WHERE WR01 : SIZEOF(QUERY(temp <* SELF.EnumerationValues | NOT(TYPEOF(SELF.EnumerationValues[1]) = TYPEOF(temp)) )) = 0; END_ENTITY; ENTITY IfcPropertyListValue SUBTYPE OF (IfcSimpleProperty); ListValues : LIST [1:?] OF IfcValue; Unit : OPTIONAL IfcUnit; WHERE WR31 : SIZEOF(QUERY(temp <* SELF.ListValues | NOT(TYPEOF(SELF.ListValues[1]) = TYPEOF(temp)) )) = 0; END_ENTITY; ENTITY IfcPropertyReferenceValue SUBTYPE OF (IfcSimpleProperty); UsageName : OPTIONAL IfcLabel; PropertyReference : IfcObjectReferenceSelect; END_ENTITY; ENTITY IfcPropertySet SUBTYPE OF (IfcPropertySetDefinition); HasProperties : SET [1:?] OF IfcProperty; WHERE WR31 : EXISTS(SELF\IfcRoot.Name); WR32 : IfcUniquePropertyName(HasProperties); END_ENTITY; ENTITY IfcPropertySetDefinition ABSTRACT SUPERTYPE OF (ONEOF (IfcDoorLiningProperties ,IfcDoorPanelProperties ,IfcElementQuantity ,IfcEnergyProperties ,IfcFluidFlowProperties ,IfcPermeableCoveringProperties ,IfcPropertySet ,IfcReinforcementDefinitionProperties ,IfcServiceLifeFactor ,IfcSoundProperties ,IfcSoundValue ,IfcSpaceThermalLoadProperties ,IfcWindowLiningProperties ,IfcWindowPanelProperties)) SUBTYPE OF (IfcPropertyDefinition); INVERSE PropertyDefinitionOf : SET [0:1] OF IfcRelDefinesByProperties FOR RelatingPropertyDefinition; DefinesType : SET [0:1] OF IfcTypeObject FOR HasPropertySets; END_ENTITY; ENTITY IfcPropertySingleValue SUBTYPE OF (IfcSimpleProperty); NominalValue : OPTIONAL IfcValue; Unit : OPTIONAL IfcUnit; END_ENTITY; ENTITY IfcPropertyTableValue SUBTYPE OF (IfcSimpleProperty); DefiningValues : LIST [1:?] OF UNIQUE IfcValue; DefinedValues : LIST [1:?] OF IfcValue; Expression : OPTIONAL IfcText; DefiningUnit : OPTIONAL IfcUnit; DefinedUnit : OPTIONAL IfcUnit; WHERE WR1 : SIZEOF(DefiningValues) = SIZEOF(DefinedValues); WR2 : SIZEOF(QUERY(temp <* SELF.DefiningValues | TYPEOF(temp) <> TYPEOF(SELF.DefiningValues[1])))=0; WR3 : SIZEOF(QUERY(temp <* SELF.DefinedValues | TYPEOF(temp) <> TYPEOF(SELF.DefinedValues[1])))=0; END_ENTITY; ENTITY IfcProtectiveDeviceType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcProtectiveDeviceTypeEnum; END_ENTITY; ENTITY IfcProxy SUBTYPE OF (IfcProduct); ProxyType : IfcObjectTypeEnum; Tag : OPTIONAL IfcLabel; WHERE WR1 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcPumpType SUBTYPE OF (IfcFlowMovingDeviceType); PredefinedType : IfcPumpTypeEnum; WHERE WR1 : (PredefinedType <> IfcPumpTypeEnum.USERDEFINED) OR ((PredefinedType = IfcPumpTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcQuantityArea SUBTYPE OF (IfcPhysicalSimpleQuantity); AreaValue : IfcAreaMeasure; WHERE WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.AREAUNIT); WR22 : AreaValue >= 0.; END_ENTITY; ENTITY IfcQuantityCount SUBTYPE OF (IfcPhysicalSimpleQuantity); CountValue : IfcCountMeasure; WHERE WR21 : CountValue >= 0.; END_ENTITY; ENTITY IfcQuantityLength SUBTYPE OF (IfcPhysicalSimpleQuantity); LengthValue : IfcLengthMeasure; WHERE WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.LENGTHUNIT); WR22 : LengthValue >= 0.; END_ENTITY; ENTITY IfcQuantityTime SUBTYPE OF (IfcPhysicalSimpleQuantity); TimeValue : IfcTimeMeasure; WHERE WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.TIMEUNIT); WR22 : TimeValue >= 0.; END_ENTITY; ENTITY IfcQuantityVolume SUBTYPE OF (IfcPhysicalSimpleQuantity); VolumeValue : IfcVolumeMeasure; WHERE WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.VOLUMEUNIT); WR22 : VolumeValue >= 0.; END_ENTITY; ENTITY IfcQuantityWeight SUBTYPE OF (IfcPhysicalSimpleQuantity); WeightValue : IfcMassMeasure; WHERE WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.MASSUNIT); WR22 : WeightValue >= 0.; END_ENTITY; ENTITY IfcRadiusDimension SUBTYPE OF (IfcDimensionCurveDirectedCallout); END_ENTITY; ENTITY IfcRailing SUBTYPE OF (IfcBuildingElement); PredefinedType : OPTIONAL IfcRailingTypeEnum; WHERE WR61 : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcRailingTypeEnum.USERDEFINED) OR ((PredefinedType = IfcRailingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcRailingType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcRailingTypeEnum; END_ENTITY; ENTITY IfcRamp SUBTYPE OF (IfcBuildingElement); ShapeType : IfcRampTypeEnum; WHERE WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); END_ENTITY; ENTITY IfcRampFlight SUBTYPE OF (IfcBuildingElement); END_ENTITY; ENTITY IfcRampFlightType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcRampFlightTypeEnum; END_ENTITY; ENTITY IfcRationalBezierCurve SUBTYPE OF (IfcBezierCurve); WeightsData : LIST [2:?] OF REAL; DERIVE Weights : ARRAY [0:255] OF REAL := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); WHERE WR1 : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); WR2 : IfcCurveWeightsPositive(SELF); END_ENTITY; ENTITY IfcRectangleHollowProfileDef SUBTYPE OF (IfcRectangleProfileDef); WallThickness : IfcPositiveLengthMeasure; InnerFilletRadius : OPTIONAL IfcPositiveLengthMeasure; OuterFilletRadius : OPTIONAL IfcPositiveLengthMeasure; WHERE WR31 : (WallThickness < (SELF\IfcRectangleProfileDef.XDim/2.)) AND (WallThickness < (SELF\IfcRectangleProfileDef.YDim/2.)); WR32 : NOT(EXISTS(OuterFilletRadius)) OR ((OuterFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND (OuterFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); WR33 : NOT(EXISTS(InnerFilletRadius)) OR ((InnerFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2. - WallThickness)) AND (InnerFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2. - WallThickness))); END_ENTITY; ENTITY IfcRectangleProfileDef SUPERTYPE OF (ONEOF (IfcRectangleHollowProfileDef ,IfcRoundedRectangleProfileDef)) SUBTYPE OF (IfcParameterizedProfileDef); XDim : IfcPositiveLengthMeasure; YDim : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRectangularPyramid SUBTYPE OF (IfcCsgPrimitive3D); XLength : IfcPositiveLengthMeasure; YLength : IfcPositiveLengthMeasure; Height : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRectangularTrimmedSurface SUBTYPE OF (IfcBoundedSurface); BasisSurface : IfcSurface; U1 : IfcParameterValue; V1 : IfcParameterValue; U2 : IfcParameterValue; V2 : IfcParameterValue; Usense : BOOLEAN; Vsense : BOOLEAN; DERIVE Dim : IfcDimensionCount := BasisSurface.Dim; WHERE WR1 : U1 <> U2; WR2 : V1 <> V2; WR3 : (('IFC2X3.IFCELEMENTARYSURFACE' IN TYPEOF(BasisSurface)) AND (NOT ('IFC2X3.IFCPLANE' IN TYPEOF(BasisSurface)))) OR ('IFC2X3.IFCSURFACEOFREVOLUTION' IN TYPEOF(BasisSurface)) OR (Usense = (U2 > U1)); WR4 : Vsense = (V2 > V1); END_ENTITY; ENTITY IfcReferencesValueDocument; ReferencedDocument : IfcDocumentSelect; ReferencingValues : SET [1:?] OF IfcAppliedValue; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; END_ENTITY; ENTITY IfcRegularTimeSeries SUBTYPE OF (IfcTimeSeries); TimeStep : IfcTimeMeasure; Values : LIST [1:?] OF IfcTimeSeriesValue; END_ENTITY; ENTITY IfcReinforcementBarProperties; TotalCrossSectionArea : IfcAreaMeasure; SteelGrade : IfcLabel; BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; EffectiveDepth : OPTIONAL IfcLengthMeasure; NominalBarDiameter : OPTIONAL IfcPositiveLengthMeasure; BarCount : OPTIONAL IfcCountMeasure; END_ENTITY; ENTITY IfcReinforcementDefinitionProperties SUBTYPE OF (IfcPropertySetDefinition); DefinitionType : OPTIONAL IfcLabel; ReinforcementSectionDefinitions : LIST [1:?] OF IfcSectionReinforcementProperties; END_ENTITY; ENTITY IfcReinforcingBar SUBTYPE OF (IfcReinforcingElement); NominalDiameter : IfcPositiveLengthMeasure; CrossSectionArea : IfcAreaMeasure; BarLength : OPTIONAL IfcPositiveLengthMeasure; BarRole : IfcReinforcingBarRoleEnum; BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; WHERE WR1 : (BarRole <> IfcReinforcingBarRoleEnum.USERDEFINED) OR ((BarRole = IfcReinforcingBarRoleEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcReinforcingElement ABSTRACT SUPERTYPE OF (ONEOF (IfcReinforcingBar ,IfcReinforcingMesh ,IfcTendon ,IfcTendonAnchor)) SUBTYPE OF (IfcBuildingElementComponent); SteelGrade : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcReinforcingMesh SUBTYPE OF (IfcReinforcingElement); MeshLength : OPTIONAL IfcPositiveLengthMeasure; MeshWidth : OPTIONAL IfcPositiveLengthMeasure; LongitudinalBarNominalDiameter : IfcPositiveLengthMeasure; TransverseBarNominalDiameter : IfcPositiveLengthMeasure; LongitudinalBarCrossSectionArea : IfcAreaMeasure; TransverseBarCrossSectionArea : IfcAreaMeasure; LongitudinalBarSpacing : IfcPositiveLengthMeasure; TransverseBarSpacing : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRelAggregates SUBTYPE OF (IfcRelDecomposes); END_ENTITY; ENTITY IfcRelAssigns ABSTRACT SUPERTYPE OF (ONEOF (IfcRelAssignsToActor ,IfcRelAssignsToControl ,IfcRelAssignsToGroup ,IfcRelAssignsToProcess ,IfcRelAssignsToProduct ,IfcRelAssignsToResource)) SUBTYPE OF (IfcRelationship); RelatedObjects : SET [1:?] OF IfcObjectDefinition; RelatedObjectsType : OPTIONAL IfcObjectTypeEnum; WHERE WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects); END_ENTITY; ENTITY IfcRelAssignsTasks SUBTYPE OF (IfcRelAssignsToControl); TimeForTask : OPTIONAL IfcScheduleTimeControl; WHERE WR1 : HIINDEX(SELF\IfcRelAssigns.RelatedObjects) = 1; WR2 : 'IFC2X3.IFCTASK' IN TYPEOF(SELF\IfcRelAssigns.RelatedObjects[1]); WR3 : 'IFC2X3.IFCWORKCONTROL' IN TYPEOF(SELF\IfcRelAssignsToControl.RelatingControl); END_ENTITY; ENTITY IfcRelAssignsToActor SUPERTYPE OF (ONEOF (IfcRelOccupiesSpaces)) SUBTYPE OF (IfcRelAssigns); RelatingActor : IfcActor; ActingRole : OPTIONAL IfcActorRole; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingActor :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssignsToControl SUPERTYPE OF (ONEOF (IfcRelAssignsTasks ,IfcRelAssignsToProjectOrder ,IfcRelSchedulesCostItems)) SUBTYPE OF (IfcRelAssigns); RelatingControl : IfcControl; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingControl :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssignsToGroup SUBTYPE OF (IfcRelAssigns); RelatingGroup : IfcGroup; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingGroup :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssignsToProcess SUBTYPE OF (IfcRelAssigns); RelatingProcess : IfcProcess; QuantityInProcess : OPTIONAL IfcMeasureWithUnit; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProcess :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssignsToProduct SUBTYPE OF (IfcRelAssigns); RelatingProduct : IfcProduct; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProduct :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssignsToProjectOrder SUBTYPE OF (IfcRelAssignsToControl); END_ENTITY; ENTITY IfcRelAssignsToResource SUBTYPE OF (IfcRelAssigns); RelatingResource : IfcResource; WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingResource :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelAssociates SUPERTYPE OF (ONEOF (IfcRelAssociatesAppliedValue ,IfcRelAssociatesApproval ,IfcRelAssociatesClassification ,IfcRelAssociatesConstraint ,IfcRelAssociatesDocument ,IfcRelAssociatesLibrary ,IfcRelAssociatesMaterial ,IfcRelAssociatesProfileProperties)) SUBTYPE OF (IfcRelationship); RelatedObjects : SET [1:?] OF IfcRoot; WHERE WR21 : SIZEOF(QUERY(temp <* RelatedObjects | NOT(('IFC2X3.IFCOBJECTDEFINITION' IN TYPEOF(temp)) OR ('IFC2X3.IFCPROPERTYDEFINITION' IN TYPEOF(temp))) )) = 0; END_ENTITY; ENTITY IfcRelAssociatesAppliedValue SUBTYPE OF (IfcRelAssociates); RelatingAppliedValue : IfcAppliedValue; END_ENTITY; ENTITY IfcRelAssociatesApproval SUBTYPE OF (IfcRelAssociates); RelatingApproval : IfcApproval; END_ENTITY; ENTITY IfcRelAssociatesClassification SUBTYPE OF (IfcRelAssociates); RelatingClassification : IfcClassificationNotationSelect; END_ENTITY; ENTITY IfcRelAssociatesConstraint SUBTYPE OF (IfcRelAssociates); Intent : IfcLabel; RelatingConstraint : IfcConstraint; END_ENTITY; ENTITY IfcRelAssociatesDocument SUBTYPE OF (IfcRelAssociates); RelatingDocument : IfcDocumentSelect; END_ENTITY; ENTITY IfcRelAssociatesLibrary SUBTYPE OF (IfcRelAssociates); RelatingLibrary : IfcLibrarySelect; END_ENTITY; ENTITY IfcRelAssociatesMaterial SUBTYPE OF (IfcRelAssociates); RelatingMaterial : IfcMaterialSelect; WHERE WR21 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | ('IFC2X3.IFCFEATUREELEMENTSUBTRACTION' IN TYPEOF(temp)) OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(temp)) )) = 0; WR22 : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | (NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)) AND NOT('IFC2X3.IFCTYPEPRODUCT' IN TYPEOF(temp))) )) = 0; END_ENTITY; ENTITY IfcRelAssociatesProfileProperties SUBTYPE OF (IfcRelAssociates); RelatingProfileProperties : IfcProfileProperties; ProfileSectionLocation : OPTIONAL IfcShapeAspect; ProfileOrientation : OPTIONAL IfcOrientationSelect; END_ENTITY; ENTITY IfcRelConnects ABSTRACT SUPERTYPE OF (ONEOF (IfcRelConnectsElements ,IfcRelConnectsPortToElement ,IfcRelConnectsPorts ,IfcRelConnectsStructuralActivity ,IfcRelConnectsStructuralElement ,IfcRelConnectsStructuralMember ,IfcRelContainedInSpatialStructure ,IfcRelCoversBldgElements ,IfcRelCoversSpaces ,IfcRelFillsElement ,IfcRelFlowControlElements ,IfcRelInteractionRequirements ,IfcRelProjectsElement ,IfcRelReferencedInSpatialStructure ,IfcRelSequence ,IfcRelServicesBuildings ,IfcRelSpaceBoundary ,IfcRelVoidsElement)) SUBTYPE OF (IfcRelationship); END_ENTITY; ENTITY IfcRelConnectsElements SUPERTYPE OF (ONEOF (IfcRelConnectsPathElements ,IfcRelConnectsWithRealizingElements)) SUBTYPE OF (IfcRelConnects); ConnectionGeometry : OPTIONAL IfcConnectionGeometry; RelatingElement : IfcElement; RelatedElement : IfcElement; WHERE WR31 : RelatingElement :<>: RelatedElement; END_ENTITY; ENTITY IfcRelConnectsPathElements SUBTYPE OF (IfcRelConnectsElements); RelatingPriorities : LIST [0:?] OF INTEGER; RelatedPriorities : LIST [0:?] OF INTEGER; RelatedConnectionType : IfcConnectionTypeEnum; RelatingConnectionType : IfcConnectionTypeEnum; END_ENTITY; ENTITY IfcRelConnectsPortToElement SUBTYPE OF (IfcRelConnects); RelatingPort : IfcPort; RelatedElement : IfcElement; END_ENTITY; ENTITY IfcRelConnectsPorts SUBTYPE OF (IfcRelConnects); RelatingPort : IfcPort; RelatedPort : IfcPort; RealizingElement : OPTIONAL IfcElement; END_ENTITY; ENTITY IfcRelConnectsStructuralActivity SUBTYPE OF (IfcRelConnects); RelatingElement : IfcStructuralActivityAssignmentSelect; RelatedStructuralActivity : IfcStructuralActivity; END_ENTITY; ENTITY IfcRelConnectsStructuralElement SUBTYPE OF (IfcRelConnects); RelatingElement : IfcElement; RelatedStructuralMember : IfcStructuralMember; END_ENTITY; ENTITY IfcRelConnectsStructuralMember SUPERTYPE OF (ONEOF (IfcRelConnectsWithEccentricity)) SUBTYPE OF (IfcRelConnects); RelatingStructuralMember : IfcStructuralMember; RelatedStructuralConnection : IfcStructuralConnection; AppliedCondition : OPTIONAL IfcBoundaryCondition; AdditionalConditions : OPTIONAL IfcStructuralConnectionCondition; SupportedLength : OPTIONAL IfcLengthMeasure; ConditionCoordinateSystem : OPTIONAL IfcAxis2Placement3D; END_ENTITY; ENTITY IfcRelConnectsWithEccentricity SUBTYPE OF (IfcRelConnectsStructuralMember); ConnectionConstraint : IfcConnectionGeometry; END_ENTITY; ENTITY IfcRelConnectsWithRealizingElements SUBTYPE OF (IfcRelConnectsElements); RealizingElements : SET [1:?] OF IfcElement; ConnectionType : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcRelContainedInSpatialStructure SUBTYPE OF (IfcRelConnects); RelatedElements : SET [1:?] OF IfcProduct; RelatingStructure : IfcSpatialStructureElement; WHERE WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; END_ENTITY; ENTITY IfcRelCoversBldgElements SUBTYPE OF (IfcRelConnects); RelatingBuildingElement : IfcElement; RelatedCoverings : SET [1:?] OF IfcCovering; END_ENTITY; ENTITY IfcRelCoversSpaces SUBTYPE OF (IfcRelConnects); RelatedSpace : IfcSpace; RelatedCoverings : SET [1:?] OF IfcCovering; END_ENTITY; ENTITY IfcRelDecomposes ABSTRACT SUPERTYPE OF (ONEOF (IfcRelAggregates ,IfcRelNests)) SUBTYPE OF (IfcRelationship); RelatingObject : IfcObjectDefinition; RelatedObjects : SET [1:?] OF IfcObjectDefinition; WHERE WR31 : SIZEOF(QUERY(Temp <* RelatedObjects | RelatingObject :=: Temp)) = 0; END_ENTITY; ENTITY IfcRelDefines ABSTRACT SUPERTYPE OF (ONEOF (IfcRelDefinesByProperties ,IfcRelDefinesByType)) SUBTYPE OF (IfcRelationship); RelatedObjects : SET [1:?] OF IfcObject; END_ENTITY; ENTITY IfcRelDefinesByProperties SUPERTYPE OF (ONEOF (IfcRelOverridesProperties)) SUBTYPE OF (IfcRelDefines); RelatingPropertyDefinition : IfcPropertySetDefinition; END_ENTITY; ENTITY IfcRelDefinesByType SUBTYPE OF (IfcRelDefines); RelatingType : IfcTypeObject; END_ENTITY; ENTITY IfcRelFillsElement SUBTYPE OF (IfcRelConnects); RelatingOpeningElement : IfcOpeningElement; RelatedBuildingElement : IfcElement; END_ENTITY; ENTITY IfcRelFlowControlElements SUBTYPE OF (IfcRelConnects); RelatedControlElements : SET [1:?] OF IfcDistributionControlElement; RelatingFlowElement : IfcDistributionFlowElement; END_ENTITY; ENTITY IfcRelInteractionRequirements SUBTYPE OF (IfcRelConnects); DailyInteraction : OPTIONAL IfcCountMeasure; ImportanceRating : OPTIONAL IfcNormalisedRatioMeasure; LocationOfInteraction : OPTIONAL IfcSpatialStructureElement; RelatedSpaceProgram : IfcSpaceProgram; RelatingSpaceProgram : IfcSpaceProgram; END_ENTITY; ENTITY IfcRelNests SUBTYPE OF (IfcRelDecomposes); WHERE WR1 : SIZEOF(QUERY(Temp <* SELF\IfcRelDecomposes.RelatedObjects | NOT(TYPEOF(SELF\IfcRelDecomposes.RelatingObject) = TYPEOF(Temp)))) = 0; END_ENTITY; ENTITY IfcRelOccupiesSpaces SUBTYPE OF (IfcRelAssignsToActor); END_ENTITY; ENTITY IfcRelOverridesProperties SUBTYPE OF (IfcRelDefinesByProperties); OverridingProperties : SET [1:?] OF IfcProperty; WHERE WR1 : SIZEOF(SELF\IfcRelDefines.RelatedObjects) = 1; END_ENTITY; ENTITY IfcRelProjectsElement SUBTYPE OF (IfcRelConnects); RelatingElement : IfcElement; RelatedFeatureElement : IfcFeatureElementAddition; END_ENTITY; ENTITY IfcRelReferencedInSpatialStructure SUBTYPE OF (IfcRelConnects); RelatedElements : SET [1:?] OF IfcProduct; RelatingStructure : IfcSpatialStructureElement; WHERE WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; END_ENTITY; ENTITY IfcRelSchedulesCostItems SUBTYPE OF (IfcRelAssignsToControl); WHERE WR11 : SIZEOF(QUERY(temp <* SELF\IfcRelAssigns.RelatedObjects | NOT('IFC2X3.IFCCOSTITEM' IN TYPEOF(temp)) )) = 0; WR12 : 'IFC2X3.IFCCOSTSCHEDULE' IN TYPEOF (SELF\IfcRelAssignsToControl.RelatingControl); END_ENTITY; ENTITY IfcRelSequence SUBTYPE OF (IfcRelConnects); RelatingProcess : IfcProcess; RelatedProcess : IfcProcess; TimeLag : IfcTimeMeasure; SequenceType : IfcSequenceEnum; WHERE WR1 : RelatingProcess :<>: RelatedProcess; END_ENTITY; ENTITY IfcRelServicesBuildings SUBTYPE OF (IfcRelConnects); RelatingSystem : IfcSystem; RelatedBuildings : SET [1:?] OF IfcSpatialStructureElement; END_ENTITY; ENTITY IfcRelSpaceBoundary SUBTYPE OF (IfcRelConnects); RelatingSpace : IfcSpace; RelatedBuildingElement : OPTIONAL IfcElement; ConnectionGeometry : OPTIONAL IfcConnectionGeometry; PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum; InternalOrExternalBoundary : IfcInternalOrExternalEnum; WHERE WR1 : ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Physical) AND (EXISTS(RelatedBuildingElement) AND NOT('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) OR ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Virtual) AND (NOT(EXISTS(RelatedBuildingElement)) OR ('IFC2X3.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) OR (PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.NotDefined); END_ENTITY; ENTITY IfcRelVoidsElement SUBTYPE OF (IfcRelConnects); RelatingBuildingElement : IfcElement; RelatedOpeningElement : IfcFeatureElementSubtraction; END_ENTITY; ENTITY IfcRelationship ABSTRACT SUPERTYPE OF (ONEOF (IfcRelAssigns ,IfcRelAssociates ,IfcRelConnects ,IfcRelDecomposes ,IfcRelDefines)) SUBTYPE OF (IfcRoot); END_ENTITY; ENTITY IfcRelaxation; RelaxationValue : IfcNormalisedRatioMeasure; InitialStress : IfcNormalisedRatioMeasure; END_ENTITY; ENTITY IfcRepresentation SUPERTYPE OF (ONEOF (IfcShapeModel ,IfcStyleModel)); ContextOfItems : IfcRepresentationContext; RepresentationIdentifier : OPTIONAL IfcLabel; RepresentationType : OPTIONAL IfcLabel; Items : SET [1:?] OF IfcRepresentationItem; INVERSE RepresentationMap : SET [0:1] OF IfcRepresentationMap FOR MappedRepresentation; LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems; OfProductRepresentation : SET [0:1] OF IfcProductRepresentation FOR Representations; END_ENTITY; ENTITY IfcRepresentationContext SUPERTYPE OF (ONEOF (IfcGeometricRepresentationContext)); ContextIdentifier : OPTIONAL IfcLabel; ContextType : OPTIONAL IfcLabel; INVERSE RepresentationsInContext : SET [0:?] OF IfcRepresentation FOR ContextOfItems; END_ENTITY; ENTITY IfcRepresentationItem ABSTRACT SUPERTYPE OF (ONEOF (IfcGeometricRepresentationItem ,IfcMappedItem ,IfcStyledItem ,IfcTopologicalRepresentationItem)); INVERSE LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems; StyledByItem : SET [0:1] OF IfcStyledItem FOR Item; END_ENTITY; ENTITY IfcRepresentationMap; MappingOrigin : IfcAxis2Placement; MappedRepresentation : IfcRepresentation; INVERSE MapUsage : SET [0:?] OF IfcMappedItem FOR MappingSource; END_ENTITY; ENTITY IfcResource ABSTRACT SUPERTYPE OF (ONEOF (IfcConstructionResource)) SUBTYPE OF (IfcObject); INVERSE ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource; END_ENTITY; ENTITY IfcRevolvedAreaSolid SUBTYPE OF (IfcSweptAreaSolid); Axis : IfcAxis1Placement; Angle : IfcPlaneAngleMeasure; DERIVE AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(Axis.Location, IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Axis.Z,1.0)); WHERE WR31 : Axis.Location.Coordinates[3] = 0.0; WR32 : Axis.Z.DirectionRatios[3] = 0.0; END_ENTITY; ENTITY IfcRibPlateProfileProperties SUBTYPE OF (IfcProfileProperties); Thickness : OPTIONAL IfcPositiveLengthMeasure; RibHeight : OPTIONAL IfcPositiveLengthMeasure; RibWidth : OPTIONAL IfcPositiveLengthMeasure; RibSpacing : OPTIONAL IfcPositiveLengthMeasure; Direction : IfcRibPlateDirectionEnum; END_ENTITY; ENTITY IfcRightCircularCone SUBTYPE OF (IfcCsgPrimitive3D); Height : IfcPositiveLengthMeasure; BottomRadius : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRightCircularCylinder SUBTYPE OF (IfcCsgPrimitive3D); Height : IfcPositiveLengthMeasure; Radius : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRoof SUBTYPE OF (IfcBuildingElement); ShapeType : IfcRoofTypeEnum; WHERE WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); END_ENTITY; ENTITY IfcRoot ABSTRACT SUPERTYPE OF (ONEOF (IfcObjectDefinition ,IfcPropertyDefinition ,IfcRelationship)); GlobalId : IfcGloballyUniqueId; OwnerHistory : IfcOwnerHistory; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; UNIQUE UR1 : GlobalId; END_ENTITY; ENTITY IfcRoundedEdgeFeature SUBTYPE OF (IfcEdgeFeature); Radius : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcRoundedRectangleProfileDef SUBTYPE OF (IfcRectangleProfileDef); RoundingRadius : IfcPositiveLengthMeasure; WHERE WR31 : ((RoundingRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND (RoundingRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); END_ENTITY; ENTITY IfcSIUnit SUBTYPE OF (IfcNamedUnit); Prefix : OPTIONAL IfcSIPrefix; Name : IfcSIUnitName; DERIVE SELF\IfcNamedUnit.Dimensions : IfcDimensionalExponents := IfcDimensionsForSiUnit (SELF.Name); END_ENTITY; ENTITY IfcSanitaryTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcSanitaryTerminalTypeEnum; END_ENTITY; ENTITY IfcScheduleTimeControl SUBTYPE OF (IfcControl); ActualStart : OPTIONAL IfcDateTimeSelect; EarlyStart : OPTIONAL IfcDateTimeSelect; LateStart : OPTIONAL IfcDateTimeSelect; ScheduleStart : OPTIONAL IfcDateTimeSelect; ActualFinish : OPTIONAL IfcDateTimeSelect; EarlyFinish : OPTIONAL IfcDateTimeSelect; LateFinish : OPTIONAL IfcDateTimeSelect; ScheduleFinish : OPTIONAL IfcDateTimeSelect; ScheduleDuration : OPTIONAL IfcTimeMeasure; ActualDuration : OPTIONAL IfcTimeMeasure; RemainingTime : OPTIONAL IfcTimeMeasure; FreeFloat : OPTIONAL IfcTimeMeasure; TotalFloat : OPTIONAL IfcTimeMeasure; IsCritical : OPTIONAL BOOLEAN; StatusTime : OPTIONAL IfcDateTimeSelect; StartFloat : OPTIONAL IfcTimeMeasure; FinishFloat : OPTIONAL IfcTimeMeasure; Completion : OPTIONAL IfcPositiveRatioMeasure; INVERSE ScheduleTimeControlAssigned : IfcRelAssignsTasks FOR TimeForTask; END_ENTITY; ENTITY IfcSectionProperties; SectionType : IfcSectionTypeEnum; StartProfile : IfcProfileDef; EndProfile : OPTIONAL IfcProfileDef; END_ENTITY; ENTITY IfcSectionReinforcementProperties; LongitudinalStartPosition : IfcLengthMeasure; LongitudinalEndPosition : IfcLengthMeasure; TransversePosition : OPTIONAL IfcLengthMeasure; ReinforcementRole : IfcReinforcingBarRoleEnum; SectionDefinition : IfcSectionProperties; CrossSectionReinforcementDefinitions : SET [1:?] OF IfcReinforcementBarProperties; END_ENTITY; ENTITY IfcSectionedSpine SUBTYPE OF (IfcGeometricRepresentationItem); SpineCurve : IfcCompositeCurve; CrossSections : LIST [2:?] OF IfcProfileDef; CrossSectionPositions : LIST [2:?] OF IfcAxis2Placement3D; DERIVE Dim : IfcDimensionCount := 3; WHERE WR1 : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions); WR2 : SIZEOF(QUERY(temp <* CrossSections | CrossSections[1].ProfileType <> temp.ProfileType)) = 0; WR3 : SpineCurve.Dim = 3; END_ENTITY; ENTITY IfcSensorType SUBTYPE OF (IfcDistributionControlElementType); PredefinedType : IfcSensorTypeEnum; END_ENTITY; ENTITY IfcServiceLife SUBTYPE OF (IfcControl); ServiceLifeType : IfcServiceLifeTypeEnum; ServiceLifeDuration : IfcTimeMeasure; END_ENTITY; ENTITY IfcServiceLifeFactor SUBTYPE OF (IfcPropertySetDefinition); PredefinedType : IfcServiceLifeFactorTypeEnum; UpperValue : OPTIONAL IfcMeasureValue; MostUsedValue : IfcMeasureValue; LowerValue : OPTIONAL IfcMeasureValue; WHERE WR31 : NOT(PredefinedType = IfcServiceLifeFactorTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); END_ENTITY; ENTITY IfcShapeAspect; ShapeRepresentations : LIST [1:?] OF IfcShapeModel; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText; ProductDefinitional : LOGICAL; PartOfProductDefinitionShape : IfcProductDefinitionShape; END_ENTITY; ENTITY IfcShapeModel ABSTRACT SUPERTYPE OF (ONEOF (IfcShapeRepresentation ,IfcTopologyRepresentation)) SUBTYPE OF (IfcRepresentation); INVERSE OfShapeAspect : SET [0:1] OF IfcShapeAspect FOR ShapeRepresentations; WHERE WR11 : (SIZEOF(SELF\IfcRepresentation.OfProductRepresentation) = 1) XOR (SIZEOF(SELF\IfcRepresentation.RepresentationMap) = 1) XOR (SIZEOF(OfShapeAspect) = 1); END_ENTITY; ENTITY IfcShapeRepresentation SUBTYPE OF (IfcShapeModel); WHERE WR21 : 'IFC2X3.IFCGEOMETRICREPRESENTATIONCONTEXT' IN TYPEOF(SELF\IfcRepresentation.ContextOfItems); WR22 : SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) AND (NOT(SIZEOF( ['IFC2X3.IFCVERTEXPOINT', 'IFC2X3.IFCEDGECURVE', 'IFC2X3.IFCFACESURFACE'] * TYPEOF(temp)) = 1)) )) = 0; WR23 : EXISTS(SELF\IfcRepresentation.RepresentationType); WR24 : IfcShapeRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); END_ENTITY; ENTITY IfcShellBasedSurfaceModel SUBTYPE OF (IfcGeometricRepresentationItem); SbsmBoundary : SET [1:?] OF IfcShell; DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcSimpleProperty ABSTRACT SUPERTYPE OF (ONEOF (IfcPropertyBoundedValue ,IfcPropertyEnumeratedValue ,IfcPropertyListValue ,IfcPropertyReferenceValue ,IfcPropertySingleValue ,IfcPropertyTableValue)) SUBTYPE OF (IfcProperty); END_ENTITY; ENTITY IfcSite SUBTYPE OF (IfcSpatialStructureElement); RefLatitude : OPTIONAL IfcCompoundPlaneAngleMeasure; RefLongitude : OPTIONAL IfcCompoundPlaneAngleMeasure; RefElevation : OPTIONAL IfcLengthMeasure; LandTitleNumber : OPTIONAL IfcLabel; SiteAddress : OPTIONAL IfcPostalAddress; END_ENTITY; ENTITY IfcSlab SUBTYPE OF (IfcBuildingElement); PredefinedType : OPTIONAL IfcSlabTypeEnum; WHERE WR61 : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcSlabTypeEnum.USERDEFINED) OR ((PredefinedType = IfcSlabTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcSlabType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcSlabTypeEnum; END_ENTITY; ENTITY IfcSlippageConnectionCondition SUBTYPE OF (IfcStructuralConnectionCondition); SlippageX : OPTIONAL IfcLengthMeasure; SlippageY : OPTIONAL IfcLengthMeasure; SlippageZ : OPTIONAL IfcLengthMeasure; END_ENTITY; ENTITY IfcSolidModel ABSTRACT SUPERTYPE OF (ONEOF (IfcCsgSolid ,IfcManifoldSolidBrep ,IfcSweptAreaSolid ,IfcSweptDiskSolid)) SUBTYPE OF (IfcGeometricRepresentationItem); DERIVE Dim : IfcDimensionCount := 3; END_ENTITY; ENTITY IfcSoundProperties SUBTYPE OF (IfcPropertySetDefinition); IsAttenuating : IfcBoolean; SoundScale : OPTIONAL IfcSoundScaleEnum; SoundValues : LIST [1:8] OF IfcSoundValue; END_ENTITY; ENTITY IfcSoundValue SUBTYPE OF (IfcPropertySetDefinition); SoundLevelTimeSeries : OPTIONAL IfcTimeSeries; Frequency : IfcFrequencyMeasure; SoundLevelSingleValue : OPTIONAL IfcDerivedMeasureValue; END_ENTITY; ENTITY IfcSpace SUBTYPE OF (IfcSpatialStructureElement); InteriorOrExteriorSpace : IfcInternalOrExternalEnum; ElevationWithFlooring : OPTIONAL IfcLengthMeasure; INVERSE HasCoverings : SET [0:?] OF IfcRelCoversSpaces FOR RelatedSpace; BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace; END_ENTITY; ENTITY IfcSpaceHeaterType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcSpaceHeaterTypeEnum; WHERE WR1 : (PredefinedType <> IfcSpaceHeaterTypeEnum.USERDEFINED) OR ((PredefinedType = IfcSpaceHeaterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcSpaceProgram SUBTYPE OF (IfcControl); SpaceProgramIdentifier : IfcIdentifier; MaxRequiredArea : OPTIONAL IfcAreaMeasure; MinRequiredArea : OPTIONAL IfcAreaMeasure; RequestedLocation : OPTIONAL IfcSpatialStructureElement; StandardRequiredArea : IfcAreaMeasure; INVERSE HasInteractionReqsFrom : SET [0:?] OF IfcRelInteractionRequirements FOR RelatedSpaceProgram; HasInteractionReqsTo : SET [0:?] OF IfcRelInteractionRequirements FOR RelatingSpaceProgram; END_ENTITY; ENTITY IfcSpaceThermalLoadProperties SUBTYPE OF (IfcPropertySetDefinition); ApplicableValueRatio : OPTIONAL IfcPositiveRatioMeasure; ThermalLoadSource : IfcThermalLoadSourceEnum; PropertySource : IfcPropertySourceEnum; SourceDescription : OPTIONAL IfcText; MaximumValue : IfcPowerMeasure; MinimumValue : OPTIONAL IfcPowerMeasure; ThermalLoadTimeSeriesValues : OPTIONAL IfcTimeSeries; UserDefinedThermalLoadSource : OPTIONAL IfcLabel; UserDefinedPropertySource : OPTIONAL IfcLabel; ThermalLoadType : IfcThermalLoadTypeEnum; END_ENTITY; ENTITY IfcSpaceType SUBTYPE OF (IfcSpatialStructureElementType); PredefinedType : IfcSpaceTypeEnum; END_ENTITY; ENTITY IfcSpatialStructureElement ABSTRACT SUPERTYPE OF (ONEOF (IfcBuilding ,IfcBuildingStorey ,IfcSite ,IfcSpace)) SUBTYPE OF (IfcProduct); LongName : OPTIONAL IfcLabel; CompositionType : IfcElementCompositionEnum; INVERSE ReferencesElements : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatingStructure; ServicedBySystems : SET [0:?] OF IfcRelServicesBuildings FOR RelatedBuildings; ContainsElements : SET [0:?] OF IfcRelContainedInSpatialStructure FOR RelatingStructure; WHERE WR41 : (HIINDEX(SELF\IfcObjectDefinition.Decomposes) = 1) AND ('IFC2X3.IFCRELAGGREGATES' IN TYPEOF(SELF\IfcObjectDefinition.Decomposes[1])) AND (('IFC2X3.IFCPROJECT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) OR ('IFC2X3.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) ); END_ENTITY; ENTITY IfcSpatialStructureElementType ABSTRACT SUPERTYPE OF (ONEOF (IfcSpaceType)) SUBTYPE OF (IfcElementType); END_ENTITY; ENTITY IfcSphere SUBTYPE OF (IfcCsgPrimitive3D); Radius : IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcStackTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcStackTerminalTypeEnum; END_ENTITY; ENTITY IfcStair SUBTYPE OF (IfcBuildingElement); ShapeType : IfcStairTypeEnum; WHERE WR1 : (HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 0) OR ((HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) = 1) AND (NOT(EXISTS(SELF\IfcProduct.Representation)))); END_ENTITY; ENTITY IfcStairFlight SUBTYPE OF (IfcBuildingElement); NumberOfRiser : OPTIONAL INTEGER; NumberOfTreads : OPTIONAL INTEGER; RiserHeight : OPTIONAL IfcPositiveLengthMeasure; TreadLength : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcStairFlightType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcStairFlightTypeEnum; END_ENTITY; ENTITY IfcStructuralAction ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralLinearAction ,IfcStructuralPlanarAction ,IfcStructuralPointAction)) SUBTYPE OF (IfcStructuralActivity); DestabilizingLoad : BOOLEAN; CausedBy : OPTIONAL IfcStructuralReaction; END_ENTITY; ENTITY IfcStructuralActivity ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralAction ,IfcStructuralReaction)) SUBTYPE OF (IfcProduct); AppliedLoad : IfcStructuralLoad; GlobalOrLocal : IfcGlobalOrLocalEnum; INVERSE AssignedToStructuralItem : IfcRelConnectsStructuralActivity FOR RelatedStructuralActivity; END_ENTITY; ENTITY IfcStructuralAnalysisModel SUBTYPE OF (IfcSystem); PredefinedType : IfcAnalysisModelTypeEnum; OrientationOf2DPlane : OPTIONAL IfcAxis2Placement3D; LoadedBy : OPTIONAL SET [1:?] OF IfcStructuralLoadGroup; HasResults : OPTIONAL SET [1:?] OF IfcStructuralResultGroup; END_ENTITY; ENTITY IfcStructuralConnection ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralCurveConnection ,IfcStructuralPointConnection ,IfcStructuralSurfaceConnection)) SUBTYPE OF (IfcStructuralItem); AppliedCondition : OPTIONAL IfcBoundaryCondition; INVERSE ConnectsStructuralMembers : SET [1:?] OF IfcRelConnectsStructuralMember FOR RelatedStructuralConnection; END_ENTITY; ENTITY IfcStructuralConnectionCondition ABSTRACT SUPERTYPE OF (ONEOF (IfcFailureConnectionCondition ,IfcSlippageConnectionCondition)); Name : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcStructuralCurveConnection SUBTYPE OF (IfcStructuralConnection); END_ENTITY; ENTITY IfcStructuralCurveMember SUPERTYPE OF (ONEOF (IfcStructuralCurveMemberVarying)) SUBTYPE OF (IfcStructuralMember); PredefinedType : IfcStructuralCurveTypeEnum; END_ENTITY; ENTITY IfcStructuralCurveMemberVarying SUBTYPE OF (IfcStructuralCurveMember); END_ENTITY; ENTITY IfcStructuralItem ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralConnection ,IfcStructuralMember)) SUBTYPE OF (IfcProduct); INVERSE AssignedStructuralActivity : SET [0:?] OF IfcRelConnectsStructuralActivity FOR RelatingElement; END_ENTITY; ENTITY IfcStructuralLinearAction SUPERTYPE OF (ONEOF (IfcStructuralLinearActionVarying)) SUBTYPE OF (IfcStructuralAction); ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; WHERE WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADLINEARFORCE', 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; END_ENTITY; ENTITY IfcStructuralLinearActionVarying SUBTYPE OF (IfcStructuralLinearAction); VaryingAppliedLoadLocation : IfcShapeAspect; SubsequentAppliedLoads : LIST [1:?] OF IfcStructuralLoad; DERIVE VaryingAppliedLoads : LIST [2:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); END_ENTITY; ENTITY IfcStructuralLoad ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralLoadStatic)); Name : OPTIONAL IfcLabel; END_ENTITY; ENTITY IfcStructuralLoadGroup SUBTYPE OF (IfcGroup); PredefinedType : IfcLoadGroupTypeEnum; ActionType : IfcActionTypeEnum; ActionSource : IfcActionSourceTypeEnum; Coefficient : OPTIONAL IfcRatioMeasure; Purpose : OPTIONAL IfcLabel; INVERSE SourceOfResultGroup : SET [0:1] OF IfcStructuralResultGroup FOR ResultForLoadGroup; LoadGroupFor : SET [0:?] OF IfcStructuralAnalysisModel FOR LoadedBy; END_ENTITY; ENTITY IfcStructuralLoadLinearForce SUBTYPE OF (IfcStructuralLoadStatic); LinearForceX : OPTIONAL IfcLinearForceMeasure; LinearForceY : OPTIONAL IfcLinearForceMeasure; LinearForceZ : OPTIONAL IfcLinearForceMeasure; LinearMomentX : OPTIONAL IfcLinearMomentMeasure; LinearMomentY : OPTIONAL IfcLinearMomentMeasure; LinearMomentZ : OPTIONAL IfcLinearMomentMeasure; END_ENTITY; ENTITY IfcStructuralLoadPlanarForce SUBTYPE OF (IfcStructuralLoadStatic); PlanarForceX : OPTIONAL IfcPlanarForceMeasure; PlanarForceY : OPTIONAL IfcPlanarForceMeasure; PlanarForceZ : OPTIONAL IfcPlanarForceMeasure; END_ENTITY; ENTITY IfcStructuralLoadSingleDisplacement SUPERTYPE OF (ONEOF (IfcStructuralLoadSingleDisplacementDistortion)) SUBTYPE OF (IfcStructuralLoadStatic); DisplacementX : OPTIONAL IfcLengthMeasure; DisplacementY : OPTIONAL IfcLengthMeasure; DisplacementZ : OPTIONAL IfcLengthMeasure; RotationalDisplacementRX : OPTIONAL IfcPlaneAngleMeasure; RotationalDisplacementRY : OPTIONAL IfcPlaneAngleMeasure; RotationalDisplacementRZ : OPTIONAL IfcPlaneAngleMeasure; END_ENTITY; ENTITY IfcStructuralLoadSingleDisplacementDistortion SUBTYPE OF (IfcStructuralLoadSingleDisplacement); Distortion : OPTIONAL IfcCurvatureMeasure; END_ENTITY; ENTITY IfcStructuralLoadSingleForce SUPERTYPE OF (ONEOF (IfcStructuralLoadSingleForceWarping)) SUBTYPE OF (IfcStructuralLoadStatic); ForceX : OPTIONAL IfcForceMeasure; ForceY : OPTIONAL IfcForceMeasure; ForceZ : OPTIONAL IfcForceMeasure; MomentX : OPTIONAL IfcTorqueMeasure; MomentY : OPTIONAL IfcTorqueMeasure; MomentZ : OPTIONAL IfcTorqueMeasure; END_ENTITY; ENTITY IfcStructuralLoadSingleForceWarping SUBTYPE OF (IfcStructuralLoadSingleForce); WarpingMoment : OPTIONAL IfcWarpingMomentMeasure; END_ENTITY; ENTITY IfcStructuralLoadStatic ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralLoadLinearForce ,IfcStructuralLoadPlanarForce ,IfcStructuralLoadSingleDisplacement ,IfcStructuralLoadSingleForce ,IfcStructuralLoadTemperature)) SUBTYPE OF (IfcStructuralLoad); END_ENTITY; ENTITY IfcStructuralLoadTemperature SUBTYPE OF (IfcStructuralLoadStatic); DeltaT_Constant : OPTIONAL IfcThermodynamicTemperatureMeasure; DeltaT_Y : OPTIONAL IfcThermodynamicTemperatureMeasure; DeltaT_Z : OPTIONAL IfcThermodynamicTemperatureMeasure; END_ENTITY; ENTITY IfcStructuralMember ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralCurveMember ,IfcStructuralSurfaceMember)) SUBTYPE OF (IfcStructuralItem); INVERSE ReferencesElement : SET [0:?] OF IfcRelConnectsStructuralElement FOR RelatedStructuralMember; ConnectedBy : SET [0:?] OF IfcRelConnectsStructuralMember FOR RelatingStructuralMember; END_ENTITY; ENTITY IfcStructuralPlanarAction SUPERTYPE OF (ONEOF (IfcStructuralPlanarActionVarying)) SUBTYPE OF (IfcStructuralAction); ProjectedOrTrue : IfcProjectedOrTrueLengthEnum; WHERE WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADPLANARFORCE', 'IFC2X3.IFCSTRUCTURALLOADTEMPERATURE'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; END_ENTITY; ENTITY IfcStructuralPlanarActionVarying SUBTYPE OF (IfcStructuralPlanarAction); VaryingAppliedLoadLocation : IfcShapeAspect; SubsequentAppliedLoads : LIST [2:?] OF IfcStructuralLoad; DERIVE VaryingAppliedLoads : LIST [3:?] OF IfcStructuralLoad := IfcAddToBeginOfList(SELF\IfcStructuralActivity.AppliedLoad, SubsequentAppliedLoads); END_ENTITY; ENTITY IfcStructuralPointAction SUBTYPE OF (IfcStructuralAction); WHERE WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; END_ENTITY; ENTITY IfcStructuralPointConnection SUBTYPE OF (IfcStructuralConnection); END_ENTITY; ENTITY IfcStructuralPointReaction SUBTYPE OF (IfcStructuralReaction); WHERE WR61 : SIZEOF(['IFC2X3.IFCSTRUCTURALLOADSINGLEFORCE', 'IFC2X3.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; END_ENTITY; ENTITY IfcStructuralProfileProperties SUPERTYPE OF (ONEOF (IfcStructuralSteelProfileProperties)) SUBTYPE OF (IfcGeneralProfileProperties); TorsionalConstantX : OPTIONAL IfcMomentOfInertiaMeasure; MomentOfInertiaYZ : OPTIONAL IfcMomentOfInertiaMeasure; MomentOfInertiaY : OPTIONAL IfcMomentOfInertiaMeasure; MomentOfInertiaZ : OPTIONAL IfcMomentOfInertiaMeasure; WarpingConstant : OPTIONAL IfcWarpingConstantMeasure; ShearCentreZ : OPTIONAL IfcLengthMeasure; ShearCentreY : OPTIONAL IfcLengthMeasure; ShearDeformationAreaZ : OPTIONAL IfcAreaMeasure; ShearDeformationAreaY : OPTIONAL IfcAreaMeasure; MaximumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; MinimumSectionModulusY : OPTIONAL IfcSectionModulusMeasure; MaximumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; MinimumSectionModulusZ : OPTIONAL IfcSectionModulusMeasure; TorsionalSectionModulus : OPTIONAL IfcSectionModulusMeasure; CentreOfGravityInX : OPTIONAL IfcLengthMeasure; CentreOfGravityInY : OPTIONAL IfcLengthMeasure; WHERE WR21 : NOT(EXISTS(ShearDeformationAreaY)) OR (ShearDeformationAreaY >= 0.); WR22 : NOT(EXISTS(ShearDeformationAreaZ)) OR (ShearDeformationAreaZ >= 0.); END_ENTITY; ENTITY IfcStructuralReaction ABSTRACT SUPERTYPE OF (ONEOF (IfcStructuralPointReaction)) SUBTYPE OF (IfcStructuralActivity); INVERSE Causes : SET [0:?] OF IfcStructuralAction FOR CausedBy; END_ENTITY; ENTITY IfcStructuralResultGroup SUBTYPE OF (IfcGroup); TheoryType : IfcAnalysisTheoryTypeEnum; ResultForLoadGroup : OPTIONAL IfcStructuralLoadGroup; IsLinear : BOOLEAN; INVERSE ResultGroupFor : SET [0:1] OF IfcStructuralAnalysisModel FOR HasResults; END_ENTITY; ENTITY IfcStructuralSteelProfileProperties SUBTYPE OF (IfcStructuralProfileProperties); ShearAreaZ : OPTIONAL IfcAreaMeasure; ShearAreaY : OPTIONAL IfcAreaMeasure; PlasticShapeFactorY : OPTIONAL IfcPositiveRatioMeasure; PlasticShapeFactorZ : OPTIONAL IfcPositiveRatioMeasure; WHERE WR31 : NOT(EXISTS(ShearAreaY)) OR (ShearAreaY >= 0.); WR32 : NOT(EXISTS(ShearAreaZ)) OR (ShearAreaZ >= 0.); END_ENTITY; ENTITY IfcStructuralSurfaceConnection SUBTYPE OF (IfcStructuralConnection); END_ENTITY; ENTITY IfcStructuralSurfaceMember SUPERTYPE OF (ONEOF (IfcStructuralSurfaceMemberVarying)) SUBTYPE OF (IfcStructuralMember); PredefinedType : IfcStructuralSurfaceTypeEnum; Thickness : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcStructuralSurfaceMemberVarying SUBTYPE OF (IfcStructuralSurfaceMember); SubsequentThickness : LIST [2:?] OF IfcPositiveLengthMeasure; VaryingThicknessLocation : IfcShapeAspect; DERIVE VaryingThickness : LIST [3:?] OF IfcPositiveLengthMeasure := IfcAddToBeginOfList(SELF\IfcStructuralSurfaceMember.Thickness, SubsequentThickness); WHERE WR61 : EXISTS(SELF\IfcStructuralSurfaceMember.Thickness); WR62 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | NOT(SIZEOF(temp\IfcRepresentation.Items) = 1) )) = 0; WR63 : SIZEOF(QUERY(temp <* SELF.VaryingThicknessLocation.ShapeRepresentations | NOT(('IFC2X3.IFCCARTESIANPOINT' IN TYPEOF(temp\IfcRepresentation.Items[1])) OR ('IFC2X3.IFCPOINTONSURFACE' IN TYPEOF(temp\IfcRepresentation.Items[1]))) )) = 0; END_ENTITY; ENTITY IfcStructuredDimensionCallout SUBTYPE OF (IfcDraughtingCallout); WHERE WR31 : SIZEOF(QUERY ( Ato <* QUERY ( Con <* SELF.contents | ( 'IFC2X3.IFCANNOTATIONTEXTOCCURRENCE' IN TYPEOF(Con)) ) | (NOT (Ato.Name IN ['dimension value', 'tolerance value','unit text','prefix text','suffix text'])))) = 0; END_ENTITY; ENTITY IfcStyleModel ABSTRACT SUPERTYPE OF (ONEOF (IfcStyledRepresentation)) SUBTYPE OF (IfcRepresentation); END_ENTITY; ENTITY IfcStyledItem SUPERTYPE OF (ONEOF (IfcAnnotationOccurrence)) SUBTYPE OF (IfcRepresentationItem); Item : OPTIONAL IfcRepresentationItem; Styles : SET [1:?] OF IfcPresentationStyleAssignment; Name : OPTIONAL IfcLabel; WHERE WR11 : SIZEOF(Styles) = 1; WR12 : NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(Item)); END_ENTITY; ENTITY IfcStyledRepresentation SUBTYPE OF (IfcStyleModel); WHERE WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | (NOT('IFC2X3.IFCSTYLEDITEM' IN TYPEOF(temp))) )) = 0; END_ENTITY; ENTITY IfcSubContractResource SUBTYPE OF (IfcConstructionResource); SubContractor : OPTIONAL IfcActorSelect; JobDescription : OPTIONAL IfcText; END_ENTITY; ENTITY IfcSubedge SUBTYPE OF (IfcEdge); ParentEdge : IfcEdge; END_ENTITY; ENTITY IfcSurface ABSTRACT SUPERTYPE OF (ONEOF (IfcBoundedSurface ,IfcElementarySurface ,IfcSweptSurface)) SUBTYPE OF (IfcGeometricRepresentationItem); END_ENTITY; ENTITY IfcSurfaceCurveSweptAreaSolid SUBTYPE OF (IfcSweptAreaSolid); Directrix : IfcCurve; StartParam : IfcParameterValue; EndParam : IfcParameterValue; ReferenceSurface : IfcSurface; END_ENTITY; ENTITY IfcSurfaceOfLinearExtrusion SUBTYPE OF (IfcSweptSurface); ExtrudedDirection : IfcDirection; Depth : IfcLengthMeasure; DERIVE ExtrusionAxis : IfcVector := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector (ExtrudedDirection, Depth); WHERE WR41 : Depth > 0.; END_ENTITY; ENTITY IfcSurfaceOfRevolution SUBTYPE OF (IfcSweptSurface); AxisPosition : IfcAxis1Placement; DERIVE AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(AxisPosition.Location, IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(AxisPosition.Z,1.0)); END_ENTITY; ENTITY IfcSurfaceStyle SUBTYPE OF (IfcPresentationStyle); Side : IfcSurfaceSide; Styles : SET [1:5] OF IfcSurfaceStyleElementSelect; WHERE WR11 : SIZEOF(QUERY(Style <* SELF.Styles | 'IFC2X3.IFCSURFACESTYLESHADING' IN TYPEOF(Style) )) <= 1; WR12 : SIZEOF(QUERY(Style <* SELF.Styles | 'IFC2X3.IFCSURFACESTYLELIGHTING' IN TYPEOF(Style) )) <= 1; WR13 : SIZEOF(QUERY(Style <* SELF.Styles | 'IFC2X3.IFCSURFACESTYLEREFRACTION' IN TYPEOF(Style) )) <= 1; WR14 : SIZEOF(QUERY(Style <* SELF.Styles | 'IFC2X3.IFCSURFACESTYLEWITHTEXTURES' IN TYPEOF(Style) )) <= 1; WR15 : SIZEOF(QUERY(Style <* SELF.Styles | 'IFC2X3.IFCEXTERNALLYDEFINEDSURFACESTYLE' IN TYPEOF(Style) )) <= 1; END_ENTITY; ENTITY IfcSurfaceStyleLighting; DiffuseTransmissionColour : IfcColourRgb; DiffuseReflectionColour : IfcColourRgb; TransmissionColour : IfcColourRgb; ReflectanceColour : IfcColourRgb; END_ENTITY; ENTITY IfcSurfaceStyleRefraction; RefractionIndex : OPTIONAL IfcReal; DispersionFactor : OPTIONAL IfcReal; END_ENTITY; ENTITY IfcSurfaceStyleRendering SUBTYPE OF (IfcSurfaceStyleShading); Transparency : OPTIONAL IfcNormalisedRatioMeasure; DiffuseColour : OPTIONAL IfcColourOrFactor; TransmissionColour : OPTIONAL IfcColourOrFactor; DiffuseTransmissionColour : OPTIONAL IfcColourOrFactor; ReflectionColour : OPTIONAL IfcColourOrFactor; SpecularColour : OPTIONAL IfcColourOrFactor; SpecularHighlight : OPTIONAL IfcSpecularHighlightSelect; ReflectanceMethod : IfcReflectanceMethodEnum; END_ENTITY; ENTITY IfcSurfaceStyleShading SUPERTYPE OF (ONEOF (IfcSurfaceStyleRendering)); SurfaceColour : IfcColourRgb; END_ENTITY; ENTITY IfcSurfaceStyleWithTextures; Textures : LIST [1:?] OF IfcSurfaceTexture; END_ENTITY; ENTITY IfcSurfaceTexture ABSTRACT SUPERTYPE OF (ONEOF (IfcBlobTexture ,IfcImageTexture ,IfcPixelTexture)); RepeatS : BOOLEAN; RepeatT : BOOLEAN; TextureType : IfcSurfaceTextureEnum; TextureTransform : OPTIONAL IfcCartesianTransformationOperator2D; END_ENTITY; ENTITY IfcSweptAreaSolid ABSTRACT SUPERTYPE OF (ONEOF (IfcExtrudedAreaSolid ,IfcRevolvedAreaSolid ,IfcSurfaceCurveSweptAreaSolid)) SUBTYPE OF (IfcSolidModel); SweptArea : IfcProfileDef; Position : IfcAxis2Placement3D; WHERE WR22 : SweptArea.ProfileType = IfcProfileTypeEnum.Area; END_ENTITY; ENTITY IfcSweptDiskSolid SUBTYPE OF (IfcSolidModel); Directrix : IfcCurve; Radius : IfcPositiveLengthMeasure; InnerRadius : OPTIONAL IfcPositiveLengthMeasure; StartParam : IfcParameterValue; EndParam : IfcParameterValue; WHERE WR1 : Directrix.Dim = 3; WR2 : (NOT EXISTS(InnerRadius)) OR (Radius > InnerRadius); END_ENTITY; ENTITY IfcSweptSurface ABSTRACT SUPERTYPE OF (ONEOF (IfcSurfaceOfLinearExtrusion ,IfcSurfaceOfRevolution)) SUBTYPE OF (IfcSurface); SweptCurve : IfcProfileDef; Position : IfcAxis2Placement3D; DERIVE Dim : IfcDimensionCount := Position.Dim; WHERE WR1 : NOT('IFC2X3.IFCDERIVEDPROFILEDEF' IN TYPEOF(SweptCurve)); WR2 : SweptCurve.ProfileType = IfcProfileTypeEnum.Curve; END_ENTITY; ENTITY IfcSwitchingDeviceType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcSwitchingDeviceTypeEnum; END_ENTITY; ENTITY IfcSymbolStyle SUBTYPE OF (IfcPresentationStyle); StyleOfSymbol : IfcSymbolStyleSelect; END_ENTITY; ENTITY IfcSystem SUPERTYPE OF (ONEOF (IfcElectricalCircuit ,IfcStructuralAnalysisModel)) SUBTYPE OF (IfcGroup); INVERSE ServicesBuildings : SET [0:1] OF IfcRelServicesBuildings FOR RelatingSystem; END_ENTITY; ENTITY IfcSystemFurnitureElementType SUBTYPE OF (IfcFurnishingElementType); END_ENTITY; ENTITY IfcTShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); Depth : IfcPositiveLengthMeasure; FlangeWidth : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; FlangeThickness : IfcPositiveLengthMeasure; FilletRadius : OPTIONAL IfcPositiveLengthMeasure; FlangeEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; WebEdgeRadius : OPTIONAL IfcPositiveLengthMeasure; WebSlope : OPTIONAL IfcPlaneAngleMeasure; FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; CentreOfGravityInY : OPTIONAL IfcPositiveLengthMeasure; WHERE WR1 : FlangeThickness < Depth; WR2 : WebThickness < FlangeWidth; END_ENTITY; ENTITY IfcTable; Name : STRING; Rows : LIST [1:?] OF IfcTableRow; DERIVE NumberOfCellsInRow : INTEGER := HIINDEX(Rows[1].RowCells); NumberOfHeadings : INTEGER := SIZEOF(QUERY( Temp <* Rows | Temp.IsHeading)); NumberOfDataRows : INTEGER := SIZEOF(QUERY( Temp <* Rows | NOT(Temp.IsHeading))); WHERE WR1 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; WR2 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; WR3 : { 0 <= NumberOfHeadings <= 1 }; END_ENTITY; ENTITY IfcTableRow; RowCells : LIST [1:?] OF IfcValue; IsHeading : BOOLEAN; INVERSE OfTable : IfcTable FOR Rows; END_ENTITY; ENTITY IfcTankType SUBTYPE OF (IfcFlowStorageDeviceType); PredefinedType : IfcTankTypeEnum; WHERE WR1 : (PredefinedType <> IfcTankTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTankTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcTask SUPERTYPE OF (ONEOF (IfcMove ,IfcOrderAction)) SUBTYPE OF (IfcProcess); TaskId : IfcIdentifier; Status : OPTIONAL IfcLabel; WorkMethod : OPTIONAL IfcLabel; IsMilestone : BOOLEAN; Priority : OPTIONAL INTEGER; WHERE WR1 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.Decomposes | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; WR2 : SIZEOF(QUERY(temp <* SELF\IfcObjectDefinition.IsDecomposedBy | NOT('IFC2X3.IFCRELNESTS' IN TYPEOF(temp)))) = 0; WR3 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcTelecomAddress SUBTYPE OF (IfcAddress); TelephoneNumbers : OPTIONAL LIST [1:?] OF IfcLabel; FacsimileNumbers : OPTIONAL LIST [1:?] OF IfcLabel; PagerNumber : OPTIONAL IfcLabel; ElectronicMailAddresses : OPTIONAL LIST [1:?] OF IfcLabel; WWWHomePageURL : OPTIONAL IfcLabel; WHERE WR1 : EXISTS (TelephoneNumbers) OR EXISTS (PagerNumber) OR EXISTS (FacsimileNumbers) OR EXISTS (ElectronicMailAddresses) OR EXISTS (WWWHomePageURL); END_ENTITY; ENTITY IfcTendon SUBTYPE OF (IfcReinforcingElement); PredefinedType : IfcTendonTypeEnum; NominalDiameter : IfcPositiveLengthMeasure; CrossSectionArea : IfcAreaMeasure; TensionForce : OPTIONAL IfcForceMeasure; PreStress : OPTIONAL IfcPressureMeasure; FrictionCoefficient : OPTIONAL IfcNormalisedRatioMeasure; AnchorageSlip : OPTIONAL IfcPositiveLengthMeasure; MinCurvatureRadius : OPTIONAL IfcPositiveLengthMeasure; WHERE WR1 : (PredefinedType <> IfcTendonTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTendonTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); END_ENTITY; ENTITY IfcTendonAnchor SUBTYPE OF (IfcReinforcingElement); END_ENTITY; ENTITY IfcTerminatorSymbol SUPERTYPE OF (ONEOF (IfcDimensionCurveTerminator)) SUBTYPE OF (IfcAnnotationSymbolOccurrence); AnnotatedCurve : IfcAnnotationCurveOccurrence; END_ENTITY; ENTITY IfcTextLiteral SUPERTYPE OF (ONEOF (IfcTextLiteralWithExtent)) SUBTYPE OF (IfcGeometricRepresentationItem); Literal : IfcPresentableText; Placement : IfcAxis2Placement; Path : IfcTextPath; END_ENTITY; ENTITY IfcTextLiteralWithExtent SUBTYPE OF (IfcTextLiteral); Extent : IfcPlanarExtent; BoxAlignment : IfcBoxAlignment; WHERE WR31 : NOT('IFC2X3.IFCPLANARBOX' IN TYPEOF(Extent)); END_ENTITY; ENTITY IfcTextStyle SUBTYPE OF (IfcPresentationStyle); TextCharacterAppearance : OPTIONAL IfcCharacterStyleSelect; TextStyle : OPTIONAL IfcTextStyleSelect; TextFontStyle : IfcTextFontSelect; END_ENTITY; ENTITY IfcTextStyleFontModel SUBTYPE OF (IfcPreDefinedTextFont); FontFamily : OPTIONAL LIST [1:?] OF IfcTextFontName; FontStyle : OPTIONAL IfcFontStyle; FontVariant : OPTIONAL IfcFontVariant; FontWeight : OPTIONAL IfcFontWeight; FontSize : IfcSizeSelect; WHERE WR31 : ('IFC2X3.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND (SELF.FontSize > 0.); END_ENTITY; ENTITY IfcTextStyleForDefinedFont; Colour : IfcColour; BackgroundColour : OPTIONAL IfcColour; END_ENTITY; ENTITY IfcTextStyleTextModel; TextIndent : OPTIONAL IfcSizeSelect; TextAlign : OPTIONAL IfcTextAlignment; TextDecoration : OPTIONAL IfcTextDecoration; LetterSpacing : OPTIONAL IfcSizeSelect; WordSpacing : OPTIONAL IfcSizeSelect; TextTransform : OPTIONAL IfcTextTransformation; LineHeight : OPTIONAL IfcSizeSelect; END_ENTITY; ENTITY IfcTextStyleWithBoxCharacteristics; BoxHeight : OPTIONAL IfcPositiveLengthMeasure; BoxWidth : OPTIONAL IfcPositiveLengthMeasure; BoxSlantAngle : OPTIONAL IfcPlaneAngleMeasure; BoxRotateAngle : OPTIONAL IfcPlaneAngleMeasure; CharacterSpacing : OPTIONAL IfcSizeSelect; END_ENTITY; ENTITY IfcTextureCoordinate ABSTRACT SUPERTYPE OF (ONEOF (IfcTextureCoordinateGenerator ,IfcTextureMap)); INVERSE AnnotatedSurface : SET [1:1] OF IfcAnnotationSurface FOR TextureCoordinates; END_ENTITY; ENTITY IfcTextureCoordinateGenerator SUBTYPE OF (IfcTextureCoordinate); Mode : IfcLabel; Parameter : LIST [1:?] OF IfcSimpleValue; END_ENTITY; ENTITY IfcTextureMap SUBTYPE OF (IfcTextureCoordinate); TextureMaps : SET [1:?] OF IfcVertexBasedTextureMap; WHERE WR11 : SIZEOF([ 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', 'IFC2X3.IFCFACEBASEDSURFACEMODEL', 'IFC2X3.IFCFACETEDBREP', 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] * TYPEOF(SELF\IfcTextureCoordinate.AnnotatedSurface[1].Item) ) >= 1; END_ENTITY; ENTITY IfcTextureVertex; Coordinates : LIST [2:2] OF IfcParameterValue; END_ENTITY; ENTITY IfcThermalMaterialProperties SUBTYPE OF (IfcMaterialProperties); SpecificHeatCapacity : OPTIONAL IfcSpecificHeatCapacityMeasure; BoilingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; FreezingPoint : OPTIONAL IfcThermodynamicTemperatureMeasure; ThermalConductivity : OPTIONAL IfcThermalConductivityMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcTimeSeries ABSTRACT SUPERTYPE OF (ONEOF (IfcIrregularTimeSeries ,IfcRegularTimeSeries)); Name : IfcLabel; Description : OPTIONAL IfcText; StartTime : IfcDateTimeSelect; EndTime : IfcDateTimeSelect; TimeSeriesDataType : IfcTimeSeriesDataTypeEnum; DataOrigin : IfcDataOriginEnum; UserDefinedDataOrigin : OPTIONAL IfcLabel; Unit : OPTIONAL IfcUnit; INVERSE DocumentedBy : SET [0:1] OF IfcTimeSeriesReferenceRelationship FOR ReferencedTimeSeries; END_ENTITY; ENTITY IfcTimeSeriesReferenceRelationship; ReferencedTimeSeries : IfcTimeSeries; TimeSeriesReferences : SET [1:?] OF IfcDocumentSelect; END_ENTITY; ENTITY IfcTimeSeriesSchedule SUBTYPE OF (IfcControl); ApplicableDates : OPTIONAL LIST [1:?] OF IfcDateTimeSelect; TimeSeriesScheduleType : IfcTimeSeriesScheduleTypeEnum; TimeSeries : IfcTimeSeries; WHERE WR41 : NOT(TimeSeriesScheduleType=IfcTimeSeriesScheduleTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); END_ENTITY; ENTITY IfcTimeSeriesValue; ListValues : LIST [1:?] OF IfcValue; END_ENTITY; ENTITY IfcTopologicalRepresentationItem ABSTRACT SUPERTYPE OF (ONEOF (IfcConnectedFaceSet ,IfcEdge ,IfcFace ,IfcFaceBound ,IfcLoop ,IfcPath ,IfcVertex)) SUBTYPE OF (IfcRepresentationItem); END_ENTITY; ENTITY IfcTopologyRepresentation SUBTYPE OF (IfcShapeModel); WHERE WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | NOT('IFC2X3.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) )) = 0; WR22 : EXISTS(SELF\IfcRepresentation.RepresentationType); WR23 : IfcTopologyRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); END_ENTITY; ENTITY IfcTransformerType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcTransformerTypeEnum; END_ENTITY; ENTITY IfcTransportElement SUBTYPE OF (IfcElement); OperationType : OPTIONAL IfcTransportElementTypeEnum; CapacityByWeight : OPTIONAL IfcMassMeasure; CapacityByNumber : OPTIONAL IfcCountMeasure; END_ENTITY; ENTITY IfcTransportElementType SUBTYPE OF (IfcElementType); PredefinedType : IfcTransportElementTypeEnum; END_ENTITY; ENTITY IfcTrapeziumProfileDef SUBTYPE OF (IfcParameterizedProfileDef); BottomXDim : IfcPositiveLengthMeasure; TopXDim : IfcPositiveLengthMeasure; YDim : IfcPositiveLengthMeasure; TopXOffset : IfcLengthMeasure; END_ENTITY; ENTITY IfcTrimmedCurve SUBTYPE OF (IfcBoundedCurve); BasisCurve : IfcCurve; Trim1 : SET [1:2] OF IfcTrimmingSelect; Trim2 : SET [1:2] OF IfcTrimmingSelect; SenseAgreement : BOOLEAN; MasterRepresentation : IfcTrimmingPreference; WHERE WR41 : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2])); WR42 : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2])); WR43 : NOT('IFC2X3.IFCBOUNDEDCURVE' IN TYPEOF(BasisCurve)); END_ENTITY; ENTITY IfcTubeBundleType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcTubeBundleTypeEnum; WHERE WR1 : (PredefinedType <> IfcTubeBundleTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTubeBundleTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcTwoDirectionRepeatFactor SUBTYPE OF (IfcOneDirectionRepeatFactor); SecondRepeatFactor : IfcVector; END_ENTITY; ENTITY IfcTypeObject SUPERTYPE OF (ONEOF (IfcTypeProduct)) SUBTYPE OF (IfcObjectDefinition); ApplicableOccurrence : OPTIONAL IfcLabel; HasPropertySets : OPTIONAL SET [1:?] OF IfcPropertySetDefinition; INVERSE ObjectTypeOf : SET [0:1] OF IfcRelDefinesByType FOR RelatingType; WHERE WR1 : EXISTS(SELF\IfcRoot.Name); END_ENTITY; ENTITY IfcTypeProduct SUPERTYPE OF (ONEOF (IfcDoorStyle ,IfcElementType ,IfcWindowStyle)) SUBTYPE OF (IfcTypeObject); RepresentationMaps : OPTIONAL LIST [1:?] OF UNIQUE IfcRepresentationMap; Tag : OPTIONAL IfcLabel; WHERE WR41 : NOT(EXISTS(SELF\IfcTypeObject.ObjectTypeOf[1])) OR (SIZEOF(QUERY(temp <* SELF\IfcTypeObject.ObjectTypeOf[1].RelatedObjects | NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp))) ) = 0); END_ENTITY; ENTITY IfcUShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); Depth : IfcPositiveLengthMeasure; FlangeWidth : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; FlangeThickness : IfcPositiveLengthMeasure; FilletRadius : OPTIONAL IfcPositiveLengthMeasure; EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; CentreOfGravityInX : OPTIONAL IfcPositiveLengthMeasure; WHERE WR21 : FlangeThickness < (Depth / 2.); WR22 : WebThickness < FlangeWidth; END_ENTITY; ENTITY IfcUnitAssignment; Units : SET [1:?] OF IfcUnit; WHERE WR01 : IfcCorrectUnitAssignment(Units); END_ENTITY; ENTITY IfcUnitaryEquipmentType SUBTYPE OF (IfcEnergyConversionDeviceType); PredefinedType : IfcUnitaryEquipmentTypeEnum; WHERE WR1 : (PredefinedType <> IfcUnitaryEquipmentTypeEnum.USERDEFINED) OR ((PredefinedType = IfcUnitaryEquipmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcValveType SUBTYPE OF (IfcFlowControllerType); PredefinedType : IfcValveTypeEnum; WHERE WR1 : (PredefinedType <> IfcValveTypeEnum.USERDEFINED) OR ((PredefinedType = IfcValveTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcVector SUBTYPE OF (IfcGeometricRepresentationItem); Orientation : IfcDirection; Magnitude : IfcLengthMeasure; DERIVE Dim : IfcDimensionCount := Orientation.Dim; WHERE WR1 : Magnitude >= 0.0; END_ENTITY; ENTITY IfcVertex SUPERTYPE OF (ONEOF (IfcVertexPoint)) SUBTYPE OF (IfcTopologicalRepresentationItem); END_ENTITY; ENTITY IfcVertexBasedTextureMap; TextureVertices : LIST [3:?] OF IfcTextureVertex; TexturePoints : LIST [3:?] OF IfcCartesianPoint; END_ENTITY; ENTITY IfcVertexLoop SUBTYPE OF (IfcLoop); LoopVertex : IfcVertex; END_ENTITY; ENTITY IfcVertexPoint SUBTYPE OF (IfcVertex); VertexGeometry : IfcPoint; END_ENTITY; ENTITY IfcVibrationIsolatorType SUBTYPE OF (IfcDiscreteAccessoryType); PredefinedType : IfcVibrationIsolatorTypeEnum; WHERE WR1 : (PredefinedType <> IfcVibrationIsolatorTypeEnum.USERDEFINED) OR ((PredefinedType = IfcVibrationIsolatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); END_ENTITY; ENTITY IfcVirtualElement SUBTYPE OF (IfcElement); END_ENTITY; ENTITY IfcVirtualGridIntersection; IntersectingAxes : LIST [2:2] OF UNIQUE IfcGridAxis; OffsetDistances : LIST [2:3] OF IfcLengthMeasure; END_ENTITY; ENTITY IfcWall SUPERTYPE OF (ONEOF (IfcWallStandardCase)) SUBTYPE OF (IfcBuildingElement); WHERE WR1 : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | 'IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) )) <= 1; END_ENTITY; ENTITY IfcWallStandardCase SUBTYPE OF (IfcWall); WHERE WR1 : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC2X3.IFCRELASSOCIATES.RELATEDOBJECTS') | ('IFC2X3.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND ('IFC2X3.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) )) = 1; END_ENTITY; ENTITY IfcWallType SUBTYPE OF (IfcBuildingElementType); PredefinedType : IfcWallTypeEnum; END_ENTITY; ENTITY IfcWasteTerminalType SUBTYPE OF (IfcFlowTerminalType); PredefinedType : IfcWasteTerminalTypeEnum; END_ENTITY; ENTITY IfcWaterProperties SUBTYPE OF (IfcMaterialProperties); IsPotable : OPTIONAL BOOLEAN; Hardness : OPTIONAL IfcIonConcentrationMeasure; AlkalinityConcentration : OPTIONAL IfcIonConcentrationMeasure; AcidityConcentration : OPTIONAL IfcIonConcentrationMeasure; ImpuritiesContent : OPTIONAL IfcNormalisedRatioMeasure; PHLevel : OPTIONAL IfcPHMeasure; DissolvedSolidsContent : OPTIONAL IfcNormalisedRatioMeasure; UNIQUE UR11 : Material; END_ENTITY; ENTITY IfcWindow SUBTYPE OF (IfcBuildingElement); OverallHeight : OPTIONAL IfcPositiveLengthMeasure; OverallWidth : OPTIONAL IfcPositiveLengthMeasure; END_ENTITY; ENTITY IfcWindowLiningProperties SUBTYPE OF (IfcPropertySetDefinition); LiningDepth : OPTIONAL IfcPositiveLengthMeasure; LiningThickness : OPTIONAL IfcPositiveLengthMeasure; TransomThickness : OPTIONAL IfcPositiveLengthMeasure; MullionThickness : OPTIONAL IfcPositiveLengthMeasure; FirstTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; SecondTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; FirstMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; SecondMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; ShapeAspectStyle : OPTIONAL IfcShapeAspect; WHERE WR31 : NOT(NOT(EXISTS(LiningDepth)) AND EXISTS(LiningThickness)); WR32 : NOT(NOT(EXISTS(FirstTransomOffset)) AND EXISTS(SecondTransomOffset)); WR33 : NOT(NOT(EXISTS(FirstMullionOffset)) AND EXISTS(SecondMullionOffset)); WR34 : EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1]) AND ('IFC2X3.IFCWINDOWSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])); END_ENTITY; ENTITY IfcWindowPanelProperties SUBTYPE OF (IfcPropertySetDefinition); OperationType : IfcWindowPanelOperationEnum; PanelPosition : IfcWindowPanelPositionEnum; FrameDepth : OPTIONAL IfcPositiveLengthMeasure; FrameThickness : OPTIONAL IfcPositiveLengthMeasure; ShapeAspectStyle : OPTIONAL IfcShapeAspect; END_ENTITY; ENTITY IfcWindowStyle SUBTYPE OF (IfcTypeProduct); ConstructionType : IfcWindowStyleConstructionEnum; OperationType : IfcWindowStyleOperationEnum; ParameterTakesPrecedence : BOOLEAN; Sizeable : BOOLEAN; END_ENTITY; ENTITY IfcWorkControl ABSTRACT SUPERTYPE OF (ONEOF (IfcWorkPlan ,IfcWorkSchedule)) SUBTYPE OF (IfcControl); Identifier : IfcIdentifier; CreationDate : IfcDateTimeSelect; Creators : OPTIONAL SET [1:?] OF IfcPerson; Purpose : OPTIONAL IfcLabel; Duration : OPTIONAL IfcTimeMeasure; TotalFloat : OPTIONAL IfcTimeMeasure; StartTime : IfcDateTimeSelect; FinishTime : OPTIONAL IfcDateTimeSelect; WorkControlType : OPTIONAL IfcWorkControlTypeEnum; UserDefinedControlType : OPTIONAL IfcLabel; WHERE WR1 : (WorkControlType <> IfcWorkControlTypeEnum.USERDEFINED) OR ((WorkControlType = IfcWorkControlTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcWorkControl.UserDefinedControlType)); END_ENTITY; ENTITY IfcWorkPlan SUBTYPE OF (IfcWorkControl); END_ENTITY; ENTITY IfcWorkSchedule SUBTYPE OF (IfcWorkControl); END_ENTITY; ENTITY IfcZShapeProfileDef SUBTYPE OF (IfcParameterizedProfileDef); Depth : IfcPositiveLengthMeasure; FlangeWidth : IfcPositiveLengthMeasure; WebThickness : IfcPositiveLengthMeasure; FlangeThickness : IfcPositiveLengthMeasure; FilletRadius : OPTIONAL IfcPositiveLengthMeasure; EdgeRadius : OPTIONAL IfcPositiveLengthMeasure; WHERE WR21 : FlangeThickness < (Depth / 2.); END_ENTITY; ENTITY IfcZone SUBTYPE OF (IfcGroup); WHERE WR1 : SIZEOF (QUERY (temp <* SELF\IfcGroup.IsGroupedBy.RelatedObjects | NOT(('IFC2X3.IFCZONE' IN TYPEOF(temp)) OR ('IFC2X3.IFCSPACE' IN TYPEOF(temp))) )) = 0; END_ENTITY; FUNCTION IfcAddToBeginOfList (AScalar : GENERIC; AList : LIST OF GENERIC:AL) : LIST[1:?] OF GENERIC:AL; LOCAL Result : LIST OF GENERIC:AL := []; END_LOCAL; IF NOT(EXISTS(AScalar)) THEN Result := AList; ELSE Result := Result + AScalar; IF (HIINDEX(AList) >= 1) THEN REPEAT i:=1 TO HIINDEX(AList); Result[i+1] := AList[i]; END_REPEAT; END_IF; END_IF; RETURN(Result); END_FUNCTION; FUNCTION IfcBaseAxis (Dim : INTEGER; Axis1, Axis2, Axis3 : IfcDirection) : LIST [2:3] OF IfcDirection; LOCAL U : LIST [2:3] OF IfcDirection; Factor : REAL; D1, D2 : IfcDirection; END_LOCAL; IF (Dim = 3) THEN D1 := NVL(IfcNormalise(Axis3), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); D2 := IfcFirstProjAxis(D1, Axis1); U := [D2, IfcSecondProjAxis(D1, D2, Axis2), D1]; ELSE IF EXISTS(Axis1) THEN D1 := IfcNormalise(Axis1); U := [D1, IfcOrthogonalComplement(D1)]; IF EXISTS(Axis2) THEN Factor := IfcDotProduct(Axis2, U[2]); IF (Factor < 0.0) THEN U[2].DirectionRatios[1] := -U[2].DirectionRatios[1]; U[2].DirectionRatios[2] := -U[2].DirectionRatios[2]; END_IF; END_IF; ELSE IF EXISTS(Axis2) THEN D1 := IfcNormalise(Axis2); U := [IfcOrthogonalComplement(D1), D1]; U[1].DirectionRatios[1] := -U[1].DirectionRatios[1]; U[1].DirectionRatios[2] := -U[1].DirectionRatios[2]; ELSE U := [IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0, 0.0]), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0, 1.0])]; END_IF; END_IF; END_IF; RETURN(U); END_FUNCTION; FUNCTION IfcBooleanChoose (B : BOOLEAN ; Choice1, Choice2 : Generic : Item) : Generic : Item; IF B THEN RETURN (Choice1); ELSE RETURN (Choice2); END_IF; END_FUNCTION; FUNCTION IfcBuild2Axes (RefDirection : IfcDirection) : LIST [2:2] OF IfcDirection; LOCAL D : IfcDirection := NVL(IfcNormalise(RefDirection), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0])); END_LOCAL; RETURN([D, IfcOrthogonalComplement(D)]); END_FUNCTION; FUNCTION IfcBuildAxes (Axis, RefDirection : IfcDirection) : LIST [3:3] OF IfcDirection; LOCAL D1, D2 : IfcDirection; END_LOCAL; D1 := NVL(IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); D2 := IfcFirstProjAxis(D1, RefDirection); RETURN ([D2, IfcNormalise(IfcCrossProduct(D1,D2))\IfcVector.Orientation, D1]); END_FUNCTION; FUNCTION IfcCorrectDimensions (m : IfcUnitEnum; Dim : IfcDimensionalExponents) : LOGICAL; CASE m OF LENGTHUNIT : IF Dim = (IfcDimensionalExponents (1, 0, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; MASSUNIT : IF Dim = (IfcDimensionalExponents (0, 1, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; TIMEUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 1, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICCURRENTUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; THERMODYNAMICTEMPERATUREUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; AMOUNTOFSUBSTANCEUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 1, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; LUMINOUSINTENSITYUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; PLANEANGLEUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; SOLIDANGLEUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; AREAUNIT : IF Dim = (IfcDimensionalExponents (2, 0, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; VOLUMEUNIT : IF Dim = (IfcDimensionalExponents (3, 0, 0, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ABSORBEDDOSEUNIT : IF Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; RADIOACTIVITYUNIT : IF Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICCAPACITANCEUNIT : IF Dim = (IfcDimensionalExponents (-2, 1, 4, 1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; DOSEEQUIVALENTUNIT : IF Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICCHARGEUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 1, 1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICCONDUCTANCEUNIT : IF Dim = (IfcDimensionalExponents (-2, -1, 3, 2, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICVOLTAGEUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -3, -1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ELECTRICRESISTANCEUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -3, -2, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ENERGYUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -2, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; FORCEUNIT : IF Dim = (IfcDimensionalExponents (1, 1, -2, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; FREQUENCYUNIT : IF Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; INDUCTANCEUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -2, -2, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; ILLUMINANCEUNIT : IF Dim = (IfcDimensionalExponents (-2, 0, 0, 0, 0, 0, 1)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; LUMINOUSFLUXUNIT : IF Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; MAGNETICFLUXUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -2, -1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; MAGNETICFLUXDENSITYUNIT : IF Dim = (IfcDimensionalExponents (0, 1, -2, -1, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; POWERUNIT : IF Dim = (IfcDimensionalExponents (2, 1, -3, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; PRESSUREUNIT : IF Dim = (IfcDimensionalExponents (-1, 1, -2, 0, 0, 0, 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; OTHERWISE : RETURN (UNKNOWN); END_CASE; END_FUNCTION; FUNCTION IfcCorrectFillAreaStyle (Styles : SET[1:?] OF IfcFillStyleSelect) : LOGICAL; LOCAL Hatching : INTEGER := 0; Tiles : INTEGER := 0; Colour : INTEGER := 0; External : INTEGER := 0; END_LOCAL; External := SIZEOF(QUERY(Style <* Styles | 'IFC2X3.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN TYPEOF(Style))); Hatching := SIZEOF(QUERY(Style <* Styles | 'IFC2X3.IFCFILLAREASTYLEHATCHING' IN TYPEOF(Style))); Tiles := SIZEOF(QUERY(Style <* Styles | 'IFC2X3.IFCFILLAREASTYLETILES' IN TYPEOF(Style))); Colour := SIZEOF(QUERY(Style <* Styles | 'IFC2X3.IFCCOLOUR' IN TYPEOF(Style))); IF (External > 1) THEN RETURN (FALSE); END_IF; IF ((External = 1) AND ((Hatching > 0) OR (Tiles > 0) OR (Colour > 0))) THEN RETURN (FALSE); END_IF; IF (Colour > 1) THEN RETURN (FALSE); END_IF; IF ((Hatching > 0) AND (Tiles >0)) THEN RETURN (FALSE); END_IF; RETURN(TRUE); END_FUNCTION; FUNCTION IfcCorrectLocalPlacement (AxisPlacement:IfcAxis2Placement; RelPlacement : IfcObjectPlacement) : LOGICAL; IF (EXISTS(RelPlacement)) THEN IF ('IFC2X3.IFCGRIDPLACEMENT' IN TYPEOF(RelPlacement)) THEN RETURN(?); END_IF; IF ('IFC2X3.IFCLOCALPLACEMENT' IN TYPEOF(RelPlacement)) THEN IF ('IFC2X3.IFCAXIS2PLACEMENT2D' IN TYPEOF(AxisPlacement)) THEN RETURN(TRUE); END_IF; IF ('IFC2X3.IFCAXIS2PLACEMENT3D' IN TYPEOF(AxisPlacement)) THEN IF (RelPlacement.RelativePlacement.Dim = 3) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; END_IF; END_IF; ELSE RETURN(TRUE); END_IF; RETURN(?); END_FUNCTION; FUNCTION IfcCorrectObjectAssignment (Constraint: IfcObjectTypeEnum; Objects : SET[1:?] OF IfcObjectDefinition) : LOGICAL; LOCAL Count : INTEGER := 0; END_LOCAL; IF NOT(EXISTS(Constraint)) THEN RETURN(TRUE); END_IF; CASE Constraint OF IfcObjectTypeEnum.NOTDEFINED : RETURN(TRUE); IfcObjectTypeEnum.PRODUCT : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPRODUCT' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.PROCESS : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROCESS' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.CONTROL : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCCONTROL' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.RESOURCE : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCRESOURCE' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.ACTOR : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCACTOR' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.GROUP : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCGROUP' IN TYPEOF(temp)))); RETURN(Count = 0); END; IfcObjectTypeEnum.PROJECT : BEGIN Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC2X3.IFCPROJECT' IN TYPEOF(temp)))); RETURN(Count = 0); END; OTHERWISE : RETURN(?); END_CASE; END_FUNCTION; FUNCTION IfcCorrectUnitAssignment (Units : SET [1:?] OF IfcUnit) : LOGICAL; LOCAL NamedUnitNumber : INTEGER := 0; DerivedUnitNumber : INTEGER := 0; MonetaryUnitNumber : INTEGER := 0; NamedUnitNames : SET OF IfcUnitEnum := []; DerivedUnitNames : SET OF IfcDerivedUnitEnum := []; END_LOCAL; NamedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(temp)) AND NOT(temp\IfcNamedUnit.UnitType = IfcUnitEnum.USERDEFINED))); DerivedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(temp)) AND NOT(temp\IfcDerivedUnit.UnitType = IfcDerivedUnitEnum.USERDEFINED))); MonetaryUnitNumber := SIZEOF(QUERY(temp <* Units | 'IFC2X3.IFCMONETARYUNIT' IN TYPEOF(temp))); REPEAT i := 1 TO SIZEOF(Units); IF (('IFC2X3.IFCNAMEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i]\IfcNamedUnit.UnitType = IfcUnitEnum.USERDEFINED)) THEN NamedUnitNames := NamedUnitNames + Units[i]\IfcNamedUnit.UnitType; END_IF; IF (('IFC2X3.IFCDERIVEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i]\IfcDerivedUnit.UnitType = IfcDerivedUnitEnum.USERDEFINED)) THEN DerivedUnitNames := DerivedUnitNames + Units[i]\IfcDerivedUnit.UnitType; END_IF; END_REPEAT; RETURN((SIZEOF(NamedUnitNames) = NamedUnitNumber) AND (SIZEOF(DerivedUnitNames) = DerivedUnitNumber) AND (MonetaryUnitNumber <= 1)); END_FUNCTION; FUNCTION IfcCrossProduct (Arg1, Arg2 : IfcDirection) : IfcVector; LOCAL Mag : REAL; Res : IfcDirection; V1,V2 : LIST[3:3] OF REAL; Result : IfcVector; END_LOCAL; IF (NOT EXISTS (Arg1) OR (Arg1.Dim = 2)) OR (NOT EXISTS (Arg2) OR (Arg2.Dim = 2)) THEN RETURN(?); ELSE BEGIN V1 := IfcNormalise(Arg1).DirectionRatios; V2 := IfcNormalise(Arg2).DirectionRatios; Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([(V1[2]*V2[3] - V1[3]*V2[2]), (V1[3]*V2[1] - V1[1]*V2[3]), (V1[1]*V2[2] - V1[2]*V2[1])]); Mag := 0.0; REPEAT i := 1 TO 3; Mag := Mag + Res.DirectionRatios[i]*Res.DirectionRatios[i]; END_REPEAT; IF (Mag > 0.0) THEN Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Res, SQRT(Mag)); ELSE Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Arg1, 0.0); END_IF; RETURN(Result); END; END_IF; END_FUNCTION; FUNCTION IfcCurveDim (Curve : IfcCurve) : IfcDimensionCount; IF ('IFC2X3.IFCLINE' IN TYPEOF(Curve)) THEN RETURN(Curve\IfcLine.Pnt.Dim); END_IF; IF ('IFC2X3.IFCCONIC' IN TYPEOF(Curve)) THEN RETURN(Curve\IfcConic.Position.Dim); END_IF; IF ('IFC2X3.IFCPOLYLINE' IN TYPEOF(Curve)) THEN RETURN(Curve\IfcPolyline.Points[1].Dim); END_IF; IF ('IFC2X3.IFCTRIMMEDCURVE' IN TYPEOF(Curve)) THEN RETURN(IfcCurveDim(Curve\IfcTrimmedCurve.BasisCurve)); END_IF; IF ('IFC2X3.IFCCOMPOSITECURVE' IN TYPEOF(Curve)) THEN RETURN(Curve\IfcCompositeCurve.Segments[1].Dim); END_IF; IF ('IFC2X3.IFCBSPLINECURVE' IN TYPEOF(Curve)) THEN RETURN(Curve\IfcBSplineCurve.ControlPointsList[1].Dim); END_IF; IF ('IFC2X3.IFCOFFSETCURVE2D' IN TYPEOF(Curve)) THEN RETURN(2); END_IF; IF ('IFC2X3.IFCOFFSETCURVE3D' IN TYPEOF(Curve)) THEN RETURN(3); END_IF; RETURN (?); END_FUNCTION; FUNCTION IfcCurveWeightsPositive (B: IfcRationalBezierCurve) : BOOLEAN; LOCAL Result : BOOLEAN := TRUE; END_LOCAL; REPEAT i := 0 TO B.UpperIndexOnControlPoints; IF B.Weights[i] <= 0.0 THEN Result := FALSE; RETURN(Result); END_IF; END_REPEAT; RETURN(Result); END_FUNCTION; FUNCTION IfcDeriveDimensionalExponents (UnitElements : SET [1:?] Of IfcDerivedUnitElement) : IfcDimensionalExponents; LOCAL Result : IfcDimensionalExponents := IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0); END_LOCAL; REPEAT i := LOINDEX(UnitElements) TO HIINDEX(UnitElements); Result.LengthExponent := Result.LengthExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.LengthExponent); Result.MassExponent := Result.MassExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.MassExponent); Result.TimeExponent := Result.TimeExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.TimeExponent); Result.ElectricCurrentExponent := Result.ElectricCurrentExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.ElectricCurrentExponent); Result.ThermodynamicTemperatureExponent := Result.ThermodynamicTemperatureExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.ThermodynamicTemperatureExponent); Result.AmountOfSubstanceExponent := Result.AmountOfSubstanceExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.AmountOfSubstanceExponent); Result.LuminousIntensityExponent := Result.LuminousIntensityExponent + (UnitElements[i].Exponent * UnitElements[i].Unit.Dimensions.LuminousIntensityExponent); END_REPEAT; RETURN (Result); END_FUNCTION; FUNCTION IfcDimensionsForSiUnit (n : IfcSiUnitName ) : IfcDimensionalExponents; CASE n OF METRE : RETURN (IfcDimensionalExponents (1, 0, 0, 0, 0, 0, 0)); SQUARE_METRE : RETURN (IfcDimensionalExponents (2, 0, 0, 0, 0, 0, 0)); CUBIC_METRE : RETURN (IfcDimensionalExponents (3, 0, 0, 0, 0, 0, 0)); GRAM : RETURN (IfcDimensionalExponents (0, 1, 0, 0, 0, 0, 0)); SECOND : RETURN (IfcDimensionalExponents (0, 0, 1, 0, 0, 0, 0)); AMPERE : RETURN (IfcDimensionalExponents (0, 0, 0, 1, 0, 0, 0)); KELVIN : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)); MOLE : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 1, 0)); CANDELA : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)); RADIAN : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)); STERADIAN : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)); HERTZ : RETURN (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)); NEWTON : RETURN (IfcDimensionalExponents (1, 1, -2, 0, 0, 0, 0)); PASCAL : RETURN (IfcDimensionalExponents (-1, 1, -2, 0, 0, 0, 0)); JOULE : RETURN (IfcDimensionalExponents (2, 1, -2, 0, 0, 0, 0)); WATT : RETURN (IfcDimensionalExponents (2, 1, -3, 0, 0, 0, 0)); COULOMB : RETURN (IfcDimensionalExponents (0, 0, 1, 1, 0, 0, 0)); VOLT : RETURN (IfcDimensionalExponents (2, 1, -3, -1, 0, 0, 0)); FARAD : RETURN (IfcDimensionalExponents (-2, -1, 4, 1, 0, 0, 0)); OHM : RETURN (IfcDimensionalExponents (2, 1, -3, -2, 0, 0, 0)); SIEMENS : RETURN (IfcDimensionalExponents (-2, -1, 3, 2, 0, 0, 0)); WEBER : RETURN (IfcDimensionalExponents (2, 1, -2, -1, 0, 0, 0)); TESLA : RETURN (IfcDimensionalExponents (0, 1, -2, -1, 0, 0, 0)); HENRY : RETURN (IfcDimensionalExponents (2, 1, -2, -2, 0, 0, 0)); DEGREE_CELSIUS : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)); LUMEN : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)); LUX : RETURN (IfcDimensionalExponents (-2, 0, 0, 0, 0, 0, 1)); BECQUEREL : RETURN (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)); GRAY : RETURN (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)); SIEVERT : RETURN (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)); OTHERWISE : RETURN (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)); END_CASE; END_FUNCTION; FUNCTION IfcDotProduct (Arg1, Arg2 : IfcDirection) : REAL; LOCAL Scalar : REAL; Vec1, Vec2 : IfcDirection; Ndim : INTEGER; END_LOCAL; IF NOT EXISTS (Arg1) OR NOT EXISTS (Arg2) THEN Scalar := ?; ELSE IF (Arg1.Dim <> Arg2.Dim) THEN Scalar := ?; ELSE BEGIN Vec1 := IfcNormalise(Arg1); Vec2 := IfcNormalise(Arg2); Ndim := Arg1.Dim; Scalar := 0.0; REPEAT i := 1 TO Ndim; Scalar := Scalar + Vec1.DirectionRatios[i]*Vec2.DirectionRatios[i]; END_REPEAT; END; END_IF; END_IF; RETURN (Scalar); END_FUNCTION; FUNCTION IfcFirstProjAxis (ZAxis, Arg : IfcDirection) : IfcDirection; LOCAL XAxis : IfcDirection; V : IfcDirection; Z : IfcDirection; XVec : IfcVector; END_LOCAL; IF (NOT EXISTS(ZAxis)) THEN RETURN (?) ; ELSE Z := IfcNormalise(ZAxis); IF NOT EXISTS(Arg) THEN IF (Z.DirectionRatios <> [1.0,0.0,0.0]) THEN V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0,0.0]); ELSE V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); END_IF; ELSE IF (Arg.Dim <> 3) THEN RETURN (?) ; END_IF; IF ((IfcCrossProduct(Arg,Z).Magnitude) = 0.0) THEN RETURN (?); ELSE V := IfcNormalise(Arg); END_IF; END_IF; XVec := IfcScalarTimesVector(IfcDotProduct(V, Z), Z); XAxis := IfcVectorDifference(V, XVec).Orientation; XAxis := IfcNormalise(XAxis); END_IF; RETURN(XAxis); END_FUNCTION; FUNCTION IfcLeapYear (Year : IfcYearNumber) : BOOLEAN; IF ((((Year MOD 4) = 0) AND ((Year MOD 100) <> 0)) OR ((Year MOD 400) = 0)) THEN RETURN(TRUE); ELSE RETURN(FALSE); END_IF; END_FUNCTION; FUNCTION IfcListToArray (Lis : LIST [0:?] OF GENERIC : T; Low,U : INTEGER) : ARRAY OF GENERIC : T; LOCAL N : INTEGER; Res : ARRAY [Low:U] OF GENERIC : T; END_LOCAL; N := SIZEOF(Lis); IF (N <> (U-Low +1)) THEN RETURN(?); ELSE Res := [Lis[1] : N]; REPEAT i := 2 TO N; Res[Low+i-1] := Lis[i]; END_REPEAT; RETURN(Res); END_IF; END_FUNCTION; FUNCTION IfcLoopHeadToTail (ALoop : IfcEdgeLoop) : LOGICAL; LOCAL N : INTEGER; P : LOGICAL := TRUE; END_LOCAL; N := SIZEOF (ALoop.EdgeList); REPEAT i := 2 TO N; P := P AND (ALoop.EdgeList[i-1].EdgeEnd :=: ALoop.EdgeList[i].EdgeStart); END_REPEAT; RETURN (P); END_FUNCTION; FUNCTION IfcMlsTotalThickness (LayerSet : IfcMaterialLayerSet) : IfcLengthMeasure; LOCAL Max : IfcLengthMeasure := LayerSet.MaterialLayers[1].LayerThickness; END_LOCAL; IF SIZEOF(LayerSet.MaterialLayers) > 1 THEN REPEAT i := 2 TO HIINDEX(LayerSet.MaterialLayers); Max := Max + LayerSet.MaterialLayers[i].LayerThickness; END_REPEAT; END_IF; RETURN (Max); END_FUNCTION; FUNCTION IfcNormalise (Arg : IfcVectorOrDirection) : IfcVectorOrDirection; LOCAL Ndim : INTEGER; V : IfcDirection := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]); Vec : IfcVector := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector ( IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]), 1.); Mag : REAL; Result : IfcVectorOrDirection := V; END_LOCAL; IF NOT EXISTS (Arg) THEN RETURN (?); ELSE Ndim := Arg.Dim; IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg) THEN BEGIN V.DirectionRatios := Arg\IfcVector.Orientation.DirectionRatios; Vec.Magnitude := Arg\IfcVector.Magnitude; Vec.Orientation := V; IF Arg.Magnitude = 0.0 THEN RETURN(?); ELSE Vec.Magnitude := 1.0; END_IF; END; ELSE V.DirectionRatios := Arg.DirectionRatios; END_IF; Mag := 0.0; REPEAT i := 1 TO Ndim; Mag := Mag + V.DirectionRatios[i]*V.DirectionRatios[i]; END_REPEAT; IF Mag > 0.0 THEN Mag := SQRT(Mag); REPEAT i := 1 TO Ndim; V.DirectionRatios[i] := V.DirectionRatios[i]/Mag; END_REPEAT; IF 'IFC2X3.IFCVECTOR' IN TYPEOF(arg) THEN Vec.Orientation := V; Result := Vec; ELSE Result := V; END_IF; ELSE RETURN(?); END_IF; END_IF; RETURN (Result); END_FUNCTION; FUNCTION IfcOrthogonalComplement (Vec : IfcDirection) : IfcDirection; LOCAL Result : IfcDirection ; END_LOCAL; IF NOT EXISTS (Vec) OR (Vec.Dim <> 2) THEN RETURN(?); ELSE Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([-Vec.DirectionRatios[2], Vec.DirectionRatios[1]]); RETURN(Result); END_IF; END_FUNCTION; FUNCTION IfcPathHeadToTail (APath : IfcPath) : LOGICAL; LOCAL N : INTEGER := 0; P : LOGICAL := UNKNOWN; END_LOCAL; N := SIZEOF (APath.EdgeList); REPEAT i := 2 TO N; P := P AND (APath.EdgeList[i-1].EdgeEnd :=: APath.EdgeList[i].EdgeStart); END_REPEAT; RETURN (P); END_FUNCTION; FUNCTION IfcSameAxis2Placement (ap1, ap2 : IfcAxis2Placement; Epsilon : REAL) : LOGICAL; RETURN (IfcSameDirection(ap1.P[1],ap2.P[1],Epsilon) AND IfcSameDirection(ap1.P[2],ap2.P[2],Epsilon) AND IfcSameCartesianPoint(ap1.Location,ap1.Location,Epsilon)); END_FUNCTION; FUNCTION IfcSameCartesianPoint (cp1, cp2 : IfcCartesianPoint; Epsilon : REAL) : LOGICAL; LOCAL cp1x : REAL := cp1.Coordinates[1]; cp1y : REAL := cp1.Coordinates[2]; cp1z : REAL := 0; cp2x : REAL := cp2.Coordinates[1]; cp2y : REAL := cp2.Coordinates[2]; cp2z : REAL := 0; END_LOCAL; IF (SIZEOF(cp1.Coordinates) > 2) THEN cp1z := cp1.Coordinates[3]; END_IF; IF (SIZEOF(cp2.Coordinates) > 2) THEN cp2z := cp2.Coordinates[3]; END_IF; RETURN (IfcSameValue(cp1x,cp2x,Epsilon) AND IfcSameValue(cp1y,cp2y,Epsilon) AND IfcSameValue(cp1z,cp2z,Epsilon)); END_FUNCTION; FUNCTION IfcSameDirection (dir1, dir2 : IfcDirection; Epsilon : REAL) : LOGICAL; LOCAL dir1x : REAL := dir1.DirectionRatios[1]; dir1y : REAL := dir1.DirectionRatios[2]; dir1z : REAL := 0; dir2x : REAL := dir2.DirectionRatios[1]; dir2y : REAL := dir2.DirectionRatios[2]; dir2z : REAL := 0; END_LOCAL; IF (SIZEOF(dir1.DirectionRatios) > 2) THEN dir1z := dir1.DirectionRatios[3]; END_IF; IF (SIZEOF(dir2.DirectionRatios) > 2) THEN dir2z := dir2.DirectionRatios[3]; END_IF; RETURN (IfcSameValue(dir1x,dir2x,Epsilon) AND IfcSameValue(dir1y,dir2y,Epsilon) AND IfcSameValue(dir1z,dir2z,Epsilon)); END_FUNCTION; FUNCTION IfcSameValidPrecision (Epsilon1, Epsilon2 : REAL) : LOGICAL; LOCAL ValidEps1, ValidEps2 : REAL; DefaultEps : REAL := 0.000001; DerivationOfEps : REAL := 1.001; UpperEps : REAL := 1.0; END_LOCAL; ValidEps1 := NVL(Epsilon1, DefaultEps); ValidEps2 := NVL(Epsilon2, DefaultEps); RETURN ((0.0 < ValidEps1) AND (ValidEps1 <= (DerivationOfEps * ValidEps2)) AND (ValidEps2 <= (DerivationOfEps * ValidEps1)) AND (ValidEps2 < UpperEps)); END_FUNCTION; FUNCTION IfcSameValue (Value1, Value2 : REAL; Epsilon : REAL) : LOGICAL; LOCAL ValidEps : REAL; DefaultEps : REAL := 0.000001; END_LOCAL; ValidEps := NVL(Epsilon, DefaultEps); RETURN ((Value1 + ValidEps > Value2) AND (Value1 < Value2 + ValidEps)); END_FUNCTION; FUNCTION IfcScalarTimesVector (Scalar : REAL; Vec : IfcVectorOrDirection) : IfcVector; LOCAL V : IfcDirection; Mag : REAL; Result : IfcVector; END_LOCAL; IF NOT EXISTS (Scalar) OR NOT EXISTS (Vec) THEN RETURN (?) ; ELSE IF 'IFC2X3.IFCVECTOR' IN TYPEOF (Vec) THEN V := Vec\IfcVector.Orientation; Mag := Scalar * Vec\IfcVector.Magnitude; ELSE V := Vec; Mag := Scalar; END_IF; IF (Mag < 0.0 ) THEN REPEAT i := 1 TO SIZEOF(V.DirectionRatios); V.DirectionRatios[i] := -V.DirectionRatios[i]; END_REPEAT; Mag := -Mag; END_IF; Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(IfcNormalise(V), Mag); END_IF; RETURN (Result); END_FUNCTION; FUNCTION IfcSecondProjAxis (ZAxis, XAxis, Arg: IfcDirection) : IfcDirection; LOCAL YAxis : IfcVector; V : IfcDirection; Temp : IfcVector; END_LOCAL; IF NOT EXISTS(Arg) THEN V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); ELSE V := Arg; END_IF; Temp := IfcScalarTimesVector(IfcDotProduct(V, ZAxis), ZAxis); YAxis := IfcVectorDifference(V, Temp); Temp := IfcScalarTimesVector(IfcDotProduct(V, XAxis), XAxis); YAxis := IfcVectorDifference(YAxis, Temp); YAxis := IfcNormalise(YAxis); RETURN(YAxis.Orientation); END_FUNCTION; FUNCTION IfcShapeRepresentationTypes (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) : LOGICAL; LOCAL Count : INTEGER := 0; END_LOCAL; CASE RepType OF 'Curve2D' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) AND (temp.Dim = 2))); END; 'Annotation2D' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ( SIZEOF(TYPEOF(temp) * [ 'IFC2X3.IFCPOINT', 'IFC2X3.IFCCURVE', 'IFC2X3.IFCGEOMETRICCURVESET', 'IFC2X3.IFCANNOTATIONFILLAREA', 'IFC2X3.IFCDEFINEDSYMBOL', 'IFC2X3.IFCTEXTLITERAL', 'IFC2X3.IFCDRAUGHTINGCALLOUT']) = 1) )); END; 'GeometricSet' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)) OR ('IFC2X3.IFCSURFACE' IN TYPEOF(temp)))); END; 'GeometricCurveSet' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCGEOMETRICCURVESET' IN TYPEOF(temp)) OR ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(temp)) OR ('IFC2X3.IFCPOINT' IN TYPEOF(temp)) OR ('IFC2X3.IFCCURVE' IN TYPEOF(temp)))); REPEAT i:=1 TO HIINDEX(Items); IF ('IFC2X3.IFCGEOMETRICSET' IN TYPEOF(Items[i])) THEN IF (SIZEOF(QUERY(temp <* Items[i]\IfcGeometricSet.Elements | 'IFC2X3.IFCSURFACE' IN TYPEOF(temp))) > 0) THEN Count := Count - 1; END_IF; END_IF; END_REPEAT; END; 'SurfaceModel' : BEGIN Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ 'IFC2X3.IFCSHELLBASEDSURFACEMODEL', 'IFC2X3.IFCFACEBASEDSURFACEMODEL', 'IFC2X3.IFCFACETEDBREP', 'IFC2X3.IFCFACETEDBREPWITHVOIDS'] * TYPEOF(temp)) >= 1 )); END; 'SolidModel' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSOLIDMODEL' IN TYPEOF(temp)))); END; 'SweptSolid' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSWEPTAREASOLID' IN TYPEOF(temp)))); END; 'CSG' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANRESULT' IN TYPEOF(temp)))); END; 'Clipping' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(temp)))); END; 'AdvancedSweptSolid' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSURFACECURVESWEPTAREASOLID' IN TYPEOF(temp)) OR ('IFC2X3.IFCSWEPTDISKSOLID' IN TYPEOF(temp)))); END; 'Brep' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCFACETEDBREP' IN TYPEOF(temp)) OR ('IFC2X3.IFCFACETEDBREPWITHVOIDS' IN TYPEOF(temp)))); END; 'BoundingBox' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCBOUNDINGBOX' IN TYPEOF(temp)))); IF (SIZEOF(Items) > 1) THEN Count := 0; END_IF; END; 'SectionedSpine' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCSECTIONEDSPINE' IN TYPEOF(temp)))); END; 'MappedRepresentation' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCMAPPEDITEM' IN TYPEOF(temp)))); END; OTHERWISE : RETURN(?); END_CASE; RETURN (Count = SIZEOF(Items)); END_FUNCTION; FUNCTION IfcTopologyRepresentationTypes (RepType : IfcLabel; Items : SET OF IfcRepresentationItem) : LOGICAL; LOCAL Count : INTEGER := 0; END_LOCAL; CASE RepType OF 'Vertex' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCVERTEX' IN TYPEOF(temp)))); END; 'Edge' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCEDGE' IN TYPEOF(temp)))); END; 'Path' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCPATH' IN TYPEOF(temp)))); END; 'Face' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCFACE' IN TYPEOF(temp)))); END; 'Shell' : BEGIN Count := SIZEOF(QUERY(temp <* Items | ('IFC2X3.IFCOPENSHELL' IN TYPEOF(temp)) OR ('IFC2X3.IFCCLOSEDSHELL' IN TYPEOF(temp)))); END; 'Undefined': RETURN(TRUE); OTHERWISE : RETURN(?); END_CASE; RETURN (Count = SIZEOF(Items)); END_FUNCTION; FUNCTION IfcUniquePropertyName (Properties : SET [1:?] OF IfcProperty) : LOGICAL; LOCAL Names : SET OF IfcIdentifier := []; END_LOCAL; REPEAT i:=1 TO HIINDEX(Properties); Names := Names + Properties[i].Name; END_REPEAT; RETURN (SIZEOF(Names) = SIZEOF(Properties)); END_FUNCTION; FUNCTION IfcValidCalendarDate (Date : IfcCalendarDate) : LOGICAL; IF NOT ({1 <= Date.DayComponent <= 31}) THEN RETURN(FALSE); END_IF; CASE Date.MonthComponent OF 4 : RETURN({ 1<= Date.DayComponent <= 30}); 6 : RETURN({ 1<= Date.DayComponent <= 30}); 9 : RETURN({ 1<= Date.DayComponent <= 30}); 11 : RETURN({ 1<= Date.DayComponent <= 30}); 2 : BEGIN IF (IfcLeapYear(Date.YearComponent)) THEN RETURN({ 1<= Date.DayComponent <= 29}); ELSE RETURN({ 1<= Date.DayComponent <= 28}); END_IF; END; OTHERWISE : RETURN(TRUE); END_CASE; END_FUNCTION; FUNCTION IfcValidTime (Time: IfcLocalTime) : BOOLEAN; IF EXISTS (Time.SecondComponent) THEN RETURN (EXISTS (Time.MinuteComponent)); ELSE RETURN (TRUE); END_IF; END_FUNCTION; FUNCTION IfcVectorDifference (Arg1, Arg2 : IfcVectorOrDirection) : IfcVector; LOCAL Result : IfcVector; Res, Vec1, Vec2 : IfcDirection; Mag, Mag1, Mag2 : REAL; Ndim : INTEGER; END_LOCAL; IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN RETURN (?) ; ELSE BEGIN IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN Mag1 := Arg1\IfcVector.Magnitude; Vec1 := Arg1\IfcVector.Orientation; ELSE Mag1 := 1.0; Vec1 := Arg1; END_IF; IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN Mag2 := Arg2\IfcVector.Magnitude; Vec2 := Arg2\IfcVector.Orientation; ELSE Mag2 := 1.0; Vec2 := Arg2; END_IF; Vec1 := IfcNormalise (Vec1); Vec2 := IfcNormalise (Vec2); Ndim := SIZEOF(Vec1.DirectionRatios); Mag := 0.0; Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); REPEAT i := 1 TO Ndim; Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] - Mag2*Vec2.DirectionRatios[i]; Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); END_REPEAT; IF (Mag > 0.0 ) THEN Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); ELSE Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); END_IF; END; END_IF; RETURN (Result); END_FUNCTION; FUNCTION IfcVectorSum (Arg1, Arg2 : IfcVectorOrDirection) : IfcVector; LOCAL Result : IfcVector; Res, Vec1, Vec2 : IfcDirection; Mag, Mag1, Mag2 : REAL; Ndim : INTEGER; END_LOCAL; IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN RETURN (?) ; ELSE BEGIN IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg1) THEN Mag1 := Arg1\IfcVector.Magnitude; Vec1 := Arg1\IfcVector.Orientation; ELSE Mag1 := 1.0; Vec1 := Arg1; END_IF; IF 'IFC2X3.IFCVECTOR' IN TYPEOF(Arg2) THEN Mag2 := Arg2\IfcVector.Magnitude; Vec2 := Arg2\IfcVector.Orientation; ELSE Mag2 := 1.0; Vec2 := Arg2; END_IF; Vec1 := IfcNormalise (Vec1); Vec2 := IfcNormalise (Vec2); Ndim := SIZEOF(Vec1.DirectionRatios); Mag := 0.0; Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); REPEAT i := 1 TO Ndim; Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i]; Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); END_REPEAT; IF (Mag > 0.0 ) THEN Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); ELSE Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); END_IF; END; END_IF; RETURN (Result); END_FUNCTION; RULE IfcRepresentationContextSameWCS FOR (IfcGeometricRepresentationContext); LOCAL IsDifferent : LOGICAL := FALSE; END_LOCAL; IF (SIZEOF(IfcGeometricRepresentationContext) > 1) THEN REPEAT i := 2 TO HIINDEX(IfcGeometricRepresentationContext); IF (IfcGeometricRepresentationContext[1].WorldCoordinateSystem :<>: IfcGeometricRepresentationContext[i].WorldCoordinateSystem) THEN IsDifferent := (NOT(IfcSameValidPrecision(IfcGeometricRepresentationContext[1].Precision, IfcGeometricRepresentationContext[i].Precision))) OR (NOT(IfcSameAxis2Placement(IfcGeometricRepresentationContext[1].WorldCoordinateSystem, IfcGeometricRepresentationContext[i].WorldCoordinateSystem, IfcGeometricRepresentationContext[1].Precision))); IF (IsDifferent = TRUE) THEN ESCAPE; END_IF; END_IF; END_REPEAT; END_IF; WHERE WR1 : IsDifferent = FALSE; END_RULE; RULE IfcSingleProjectInstance FOR (IfcProject); WHERE WR1 : SIZEOF(IfcProject) <= 1; END_RULE; END_SCHEMA;