Link to Index Page

 EXPRESS Definition for IfcProductExtension 

Link to Documentation Link to EXPRESS-G Diagram Link to IDL Definition

SCHEMA IfcProductExtension;


REFERENCE FROM IfcMeasureResource (
    IfcCountMeasure
   ,IfcMassMeasure
   ,IfcLengthMeasure
   ,IfcPositiveLengthMeasure
   ,IfcAreaMeasure
   ,IfcVolumeMeasure
   ,IfcCompoundPlaneAngleMeasure
   ,IfcUnit
   ,IfcDerivedUnit
   ,IfcNamedUnit
   ,IfcContextDependentUnit
   ,IfcConversionBasedUnit
   ,IfcSiUnit );


REFERENCE FROM IfcGeometryResource (
    IfcGeometricRepresentationItem
   ,IfcBoundingBox
   ,IfcAxis2Placement
   ,IfcAxis2Placement2D
   ,IfcAxis2Placement3D
   ,IfcCartesianPoint
   ,IfcPolyline
   ,IfcTrimmedCurve
   ,IfcCompositeCurve);


REFERENCE FROM IfcPropertyResource (
    IfcMaterialSelect
   ,IfcMaterial
   ,IfcMaterialComposite
   ,IfcMaterialLayerSet
   ,IfcDateTimeSelect
   ,IfcCalendarDate
   ,IfcDateAndTime
   ,IfcLocalTime
   ,IfcActorSelect
   ,IfcPerson
   ,IfcOrganization
   ,IfcPersonAndOrganization);


USE FROM IfcKernel (
    IfcGroup
   ,IfcRelGroups
   ,IfcProxy
   ,IfcRelContains );


REFERENCE FROM IfcKernel (
    IfcObject
   ,IfcProduct
   ,IfcControl
   ,IfcRelationship );


IfcBuildingTypeEnum

Link to Documentation

TYPE IfcBuildingTypeEnum = ENUMERATION OF (
    Building );
END_TYPE;


IfcBuildingStoreyTypeEnum

Link to Documentation

TYPE IfcBuildingStoreyTypeEnum = ENUMERATION OF (
    BuildingStorey );
END_TYPE;


IfcConnectionTypeEnum

Link to Documentation

TYPE IfcConnectionTypeEnum = ENUMERATION OF (
    AtPath
   ,Start
   ,AtEnd
   ,NotKnown );
END_TYPE;


IfcOpeningTypeEnum

Link to Documentation

TYPE IfcOpeningTypeEnum = ENUMERATION OF (
    Opening
   ,Passage
   ,Recess
   ,Chase );
END_TYPE;


IfcSiteTypeEnum

Link to Documentation

TYPE IfcSiteTypeEnum = ENUMERATION OF (
    BuildingSite );
END_TYPE;


IfcSpaceTypeEnum

Link to Documentation

TYPE IfcSpaceTypeEnum = ENUMERATION OF (
    Occupied
   ,Technical
   ,Circulation );
END_TYPE;


IfcSystemTypeEnum

Link to Documentation

TYPE IfcSystemTypeEnum = ENUMERATION OF (
    ElectricalSystem
   ,HvacSystem
   ,LightingSystem
   ,PlumbingSystem
   ,StructuralSystem);
END_TYPE;


IfcZoneTypeEnum

Link to Documentation

TYPE IfcZoneTypeEnum = ENUMERATION OF (
    Thermal
   ,Daylighting
   ,Equipment);
END_TYPE;


IfcBuilding

Link to Documentation

ENTITY IfcBuilding
 SUBTYPE OF (IfcProduct);
    GenericType      : IfcBuildingTypeEnum;
    calcTotalHeight  : OPTIONAL IfcLengthMeasure;
    calcSiteCoverage : OPTIONAL IfcAreaMeasure;
    calcTotalVolume  : OPTIONAL IfcVolumeMeasure;
 INVERSE
    ServicedBySystems: SET [0:?] OF IfcRelServicesBuildings 
                       FOR RelatedBuildings;
 WHERE
    WR41: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = ProjectContainer)
           AND (Temp.ContainedOrReferenced = FALSE))) = 1;
    WR42: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = SiteContainer)
           AND (Temp.ContainedOrReferenced = TRUE))) <= 1;
END_ENTITY;


IfcBuildingElement

Link to Documentation

ENTITY IfcBuildingElement
 ABSTRACT SUPERTYPE
 SUBTYPE OF (IfcElement);
    HasMaterial        : OPTIONAL IfcMaterialSelect;
 INVERSE
    ProvidesBoundaries : SET [0:?] OF IfcRelSeparatesSpaces 
                         FOR RelatingBuildingElement;
    HasOpenings        : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement;
    FillsVoids         : SET [0:?] OF IfcRelFillsElement FOR RelatedBuildingElement;
END_ENTITY;


IfcBuildingStorey

Link to Documentation

ENTITY IfcBuildingStorey
  SUBTYPE OF (IfcProduct);
    GenericType       : IfcBuildingStoreyTypeEnum;
    Elevation         : IfcLengthMeasure;
    calcTotalHeight   : OPTIONAL IfcLengthMeasure;
    calcTotalArea     : OPTIONAL IfcAreaMeasure;
    calcTotalVolume   : OPTIONAL IfcVolumeMeasure;
 WHERE
    WR41: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = ProjectContainer)
           AND (Temp.ContainedOrReferenced = FALSE))) = 1;
    WR42: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = BuildingContainer) 
           AND (Temp.ContainedOrReferenced = TRUE))) <= 1;
END_ENTITY;


IfcConnectionGeometry

Link to Documentation

ENTITY IfcConnectionGeometry
 ABSTRACT SUPERTYPE OF (ONEOF(
    IfcPointConnectionGeometry
   ,IfcLineConnectionGeometry))
 SUBTYPE OF (IfcControl);
END_ENTITY;


IfcElement

Link to Documentation

ENTITY IfcElement
 ABSTRACT SUPERTYPE OF (ONEOF(
    IfcOpeningElement
   ,IfcBuildingElement))
 SUBTYPE OF (IfcProduct);
 INVERSE
    ConnectedTo       : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement;
    ConnectedFrom     : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement;
    IsAssemblyThrough : SET [0:1] OF IfcRelAssemblesElements FOR RelatingElement;
    PartOfAssembly    : SET [0:1] OF IfcRelAssemblesElements FOR RelatedElements;
 WHERE
    WR41: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = ProjectContainer)
           AND (Temp.ContainedOrReferenced = FALSE))) = 1;
    WR42: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
             (((Temp.RelationshipType = SiteContainer)
            OR (Temp.RelationshipType = BuildingContainer)
            OR (Temp.RelationshipType = BuildingStoreyContainer)
            OR (Temp.RelationshipType = SpaceContainer))
           AND (Temp.ContainedOrReferenced = TRUE )))) <= 1;
END_ENTITY;


IfcLineConnectionGeometry

Link to Documentation

ENTITY IfcLineConnectionGeometry
 SUBTYPE OF (IfcConnectionGeometry);
    LineOnRelatingElement : IfcPolyline;
    LineOnRelatedElement  : OPTIONAL IfcPolyline;
END_ENTITY;


IfcOpeningElement

Link to Documentation

ENTITY IfcOpeningElement
 SUBTYPE OF (IfcElement);
    GenericType     : IfcOpeningTypeEnum;
    calcOpeningArea : OPTIONAL IfcAreaMeasure;
 INVERSE
    VoidsElements   : SET [0:1] OF IfcRelVoidsElement
                       FOR RelatedOpeningElement;
    HasFillings     : SET [0:?] OF IfcRelFillsElement
                       FOR RelatingOpeningElement; 
 WHERE
    WR51: SIZEOF(QUERY( Temp <* SELF\IfcObject.TypeDefinitions |
          NOT(Temp.TypedClass = 'IfcOpeningElement'))) = 0;
END_ENTITY;


IfcPointConnectionGeometry

Link to Documentation

ENTITY IfcPointConnectionGeometry
 SUBTYPE OF (IfcConnectionGeometry);
    PointOnRelatingElement : IfcCartesianPoint;
    PointOnRelatedElement  : OPTIONAL IfcCartesianPoint;
END_ENTITY;


IfcRelAssemblesElements

Link to Documentation

ENTITY IfcRelAssemblesElements
 SUBTYPE OF (IfcRelationship);
    RelatingElement : IfcElement;
    RelatedElements : LIST [1:?] OF IfcElement;
 WHERE
    WR31: SIZEOF(QUERY(Temp <* RelatedElements |
            RelatingElement :=: Temp)) = 0;
END_ENTITY;


IfcRelAssemblesSpaces

Link to Documentation

ENTITY IfcRelAssemblesSpaces
 SUBTYPE OF (IfcRelationship);
    RelatingSpace : IfcSpace;
    RelatedSpaces : LIST [1:?] OF IfcSpace;
 WHERE
    WR31: SIZEOF(QUERY(Temp <* RelatedSpaces |
          RelatingSpace :=: Temp)) = 0;
END_ENTITY;


IfcRelConnectsElements

Link to Documentation

ENTITY IfcRelConnectsElements
 SUPERTYPE OF (ONEOF(
    IfcRelConnectsPathElements))
 SUBTYPE OF (IfcRelationship);
    ConnectionGeometry     : OPTIONAL IfcConnectionGeometry;
    RelatingElement : IfcElement;
    RelatedElement  : IfcElement;
END_ENTITY;


IfcRelConnectsPathElements

Link to Documentation

ENTITY IfcRelConnectsPathElements
 SUBTYPE OF (IfcRelConnectsElements);
    RelatingPriorities     : LIST [0:RelatingLayerCount] OF INTEGER;
    RelatedPriorities      : LIST [0:RelatedLayerCount] OF INTEGER;
    RelatingConnectionType : IfcConnectionTypeEnum;
    RelatedConnectionType  : IfcConnectionTypeEnum;
 DERIVE
    RelatingLayerCount     : INTEGER 
                           := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatingElement);
    RelatedLayerCount      : INTEGER 
                           := IfcNoOfLayers(SELF\IfcRelConnectsElements.RelatedElement);
END_ENTITY;


IfcRelFillsElement

Link to Documentation

ENTITY IfcRelFillsElement
 SUBTYPE OF (IfcRelationship);
    RelatingOpeningElement : IfcOpeningElement;
    RelatedBuildingElement : IfcBuildingElement;
END_ENTITY;


IfcRelSeparatesSpaces

Link to Documentation

ENTITY IfcRelSeparatesSpaces
  SUBTYPE OF (IfcRelationship);
    RelatingBuildingElement : IfcBuildingElement;
    RelatedSpaceBoundaries  : LIST [1:?] OF IfcSpaceBoundary;
END_ENTITY;


IfcRelServicesBuildings

Link to Documentation

ENTITY IfcRelServicesBuildings
  SUBTYPE OF (IfcRelationship);
    RelatingSystem   : IfcSystem;
    RelatedBuildings : LIST [1:?] OF IfcBuilding;
END_ENTITY;


IfcRelVoidsElement

Link to Documentation

ENTITY IfcRelVoidsElement
  SUBTYPE OF (IfcRelationship);
    RelatingBuildingElement : IfcBuildingElement;
    RelatedOpeningElement   : IfcOpeningElement;
END_ENTITY;


IfcSite

Link to Documentation

ENTITY IfcSite
  SUBTYPE OF (IfcProduct);
    GenericType       : IfcSiteTypeEnum;
    RefLatitude       : IfcCompoundPlaneAngleMeasure;
    RefLongitude      : IfcCompoundPlaneAngleMeasure;
    RefElevation      : IfcLengthMeasure;
    calcSitePerimeter : OPTIONAL IfcPositiveLengthMeasure;
    calcSiteArea      : OPTIONAL IfcAreaMeasure;
 WHERE
    WR41: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
               (Temp.RelationshipType = ProjectContainer)
           AND (Temp.ContainedOrReferenced = FALSE))) = 1;
END_ENTITY;


IfcSpace

Link to Documentation

ENTITY IfcSpace
  SUBTYPE OF (IfcSpatialElement);
    GenericType        : IfcSpaceTypeEnum;
    BoundedBy          : LIST [1:?] OF IfcSpaceBoundary;
    calcTotalPerimeter : OPTIONAL IfcPositiveLengthMeasure;
    calcTotalArea      : OPTIONAL IfcAreaMeasure;
    calcTotalVolume    : OPTIONAL IfcVolumeMeasure;
    calcAverageHeight  : OPTIONAL IfcPositiveLengthMeasure;
 INVERSE
    IsAssemblyThrough  : SET [0:1] OF IfcRelAssemblesSpaces FOR RelatingSpace;
    PartOfAssembly     : SET [0:1] OF IfcRelAssemblesSpaces FOR RelatedSpaces;
 WHERE
    WR51: SIZEOF(QUERY( temp <* SELF\IfcObject.TypeDefinitions |
           NOT(temp.TypedClass = 'IfcSpace'))) = 0;
    WR52: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
              (Temp.RelationshipType = ProjectContainer)
          AND (Temp.ContainedOrReferenced = FALSE))) = 1;
    WR53: SIZEOF(QUERY(Temp <* SELF\IfcObject.IsContainedBy |
            (((Temp.RelationshipType = SiteContainer)
           OR (Temp.RelationshipType = BuildingStoreyContainer))
          AND (Temp.ContainedOrReferenced = TRUE )))) <= 1;
END_ENTITY;


IfcSpaceBoundary

Link to Documentation

ENTITY IfcSpaceBoundary
  SUBTYPE OF (IfcSpatialElement);
    PhysicalOrVirtual : BOOLEAN;
    calcBoundarySurfaceArea : OPTIONAL IfcAreaMeasure;
 INVERSE
    Bounds            : SET[1:2] OF IfcSpace FOR BoundedBy;
    ProvidedBy        : SET[0:1] OF IfcRelSeparatesSpaces 
                        FOR RelatedSpaceBoundaries;
 WHERE
    WR51: ((PhysicalOrVirtual = TRUE) AND (HIINDEX(ProvidedBy) = 1))
           OR
          ((PhysicalOrVirtual = FALSE) AND (HIINDEX(ProvidedBy) = 0));
END_ENTITY;


IfcSpatialElement

Link to Documentation

ENTITY IfcSpatialElement
 ABSTRACT SUPERTYPE OF (ONEOF(
    IfcSpace
   ,IfcSpaceBoundary))
 SUBTYPE OF (IfcProduct);
END_ENTITY;


IfcSystem

Link to Documentation

ENTITY IfcSystem
 SUBTYPE OF (IfcGroup);
    GenericType       : IfcSystemTypeEnum;
 INVERSE
    ServicesBuildings : SET [0:1] OF IfcRelServicesBuildings 
                        FOR RelatingSystem;
 WHERE
    WR41: SIZEOF(QUERY( temp <* SELF\IfcObject.TypeDefinitions |
            NOT(temp.TypedClass = 'IfcSystem'))) = 0;
END_ENTITY;


IfcZone

Link to Documentation

ENTITY IfcZone
 SUBTYPE OF (IfcGroup);
    GenericType : IfcZoneTypeEnum;
 WHERE
    WR41: SIZEOF (QUERY (temp <* SELF\IfcGroup.GroupedBy.RelatedObjects |
           ('IFCPRODUCTEXTENSION.IFCZONE' IN TYPEOF(temp)) OR
           ('IFCPRODUCTEXTENSION.IFCSPACE' IN TYPEOF(temp))
           )) = HIINDEX(SELF\IfcGroup.GroupedBy.RelatedObjects);
    WR42: SIZEOF(QUERY( temp <* SELF\IfcObject.TypeDefinitions |
            NOT(temp.TypedClass = 'IfcZone'))) = 0;
END_ENTITY;


IfcNoOfLayers

Link to Documentation

FUNCTION IfcNoOfLayers (
    Element : IfcElement )
            : INTEGER;

  IF NOT(EXISTS(Element.HasMaterial)) THEN
    RETURN (?);
  END_IF;
  IF 'IFCPROPERTYRESOURCE.IFCMATERIAL' IN TYPEOF(Element.HasMaterial) THEN
    RETURN (1);
  END_IF;
  IF 'IFCPROPERTYRESOURCE.IFCMATERIALLAYERSET' IN TYPEOF(Element.HasMaterial) THEN
    RETURN (HIINDEX(Element.HasMaterial.HasMaterialLayers));
  END_IF;
  RETURN (?);
END_FUNCTION;


END_SCHEMA; -- IfcProductExtension