Class Ifc4::IfcRoof

Nested Relationships

This class is a nested type of Struct Ifc4.

Inheritance Relationships

Base Type

Class Documentation

class Ifc4::IfcRoof : public Ifc4::IfcBuildingElement

Definition from ISO 6707-1:1989: Construction enclosing the building from above. The IfcRoof is a description of the total roof. It acts as a container entity, that aggregates all components of the roof, it represents. The aggregation is handled via the IfcRelAggregates relationship, relating an IfcRoof with the related roof elements, like slabs (represented by IfcSlab), rafters and purlins (represented by IfcBeam), or other included roofs, such as dormers (represented by IfcRoof).

HISTORY New Entity in IFC Release 2.0. IFC2x4 CHANGE Attribute ShapeType renamed to PredefinedType.

Property Set Use Definition: The property sets relating to the IfcRoof are defined by the IfcPropertySet and attached by the IfcRelDefinesByProperties relationship. It is accessible by the inverse IsDefinedBy relationship. The following property set definitions specific to the IfcRoof are part of this IFC release:

Pset_RoofCommon: common property set for all roof occurrences

The quantities relating to the IfcRoof are defined by the IfcElementQuantity and attached by the IfcRelDefinesByProperties relationship. It is accessible by the inverse IsDefinedBy relationship. The following base quantities are defined and should be exchanged with the IfcElementQuantity.MethodOfMeasurement = ‘BaseQuantities’. Other quantities can be defined being subjected to local standard of measurement with another string value assigned to Name and a value provided for MethodOfMeasurement. Quantities shall never be assigned to the IfcRoofType. The individual quantities shall only be given at IfcRoof, it is not decomposed into the individual parts, e.g. IfcSlab as roof slabs.

Qto_RoofBaseQuantities: base quantities for all roof occurrences.

Containment Use Definition The IfcRoof, as any subtype of IfcBuildingElement, may participate in two different containment relationships. The first (and in most implementation scenarios mandatory) relationship is the hierachical spatial containment, the second (optional) relationship is the aggregation within an element assembly.

The IfcRoof is placed within the project spatial hierarchy using the objectified relationship IfcRelContainedInSpatialStructure, referring to it by its inverse attribute SELF\IfcElement.ContainedInStructure. Subtypes of IfcSpatialStructureElement are valid spatial containers, with IfcBuildingStorey being the default container. The IfcRoof may be aggregated into an element assembly using the objectified relationship IfcRelAggregates, referring to it by its inverse attribute SELF\IfcObjectDefinition.Decomposes. Any subtype of IfcElement can be an element assembly, with IfcRoof, the overall roof, as a special focus subtype. In this case it should not be additionally contained in the project spatial hierarchy, i.e. SELF\IfcElement.ContainedInStructure should be NIL.

NOTE A roof contained in another roof could be the representation of a dormer. The IfcRoof may be an aggregate i.e. being composed by other elements and acting as an assembly using the objectified relationship IfcRelAggregates, referring to it by its inverse attribute SELF\IfcObjectDefinition.IsDecomposedBy. Components of a roof are described by instances of subtypes of IfcBuildingElement (e.g. IfcSlab, IfcBeam, IfcColumn, IfcBuildingElementPart) that are aggregated to form a complex roof. In this case, the contained elements should not be additionally contained in the project spatial hierarchy, i.e. the inverse attribute SELF\IfcElement.ContainedInStructure of the aggregated elements should be NIL.

Figure 118 illustrates roof containment, where only the IfcRoof as the aggregate is included in the spatial structure.

Figure 118 — Roof containment

Geometry Use Definitions: The geometric representation of IfcRoof is given by the IfcProductDefinitionShape, allowing multiple geometric representations. Independent geometric representations should only be used when the IfcRoof is not defined as an aggregate. If defined as an aggregate, the geometric representation is the sum of the representation of the components within the aggregate. NOTE View definitions and implementer agreements may restrict the IfcRoof to not have an independent geometry, but to always require aggregated elements to represent the shape of the roof. NOTE If the IfcRoof has aggregated elements to represent the shape of the roof, then only those elements shall have openings, not the IfcRoof itself. Local Position The local placement for IfcRoof is defined in its supertype IfcProduct. It is defined by the IfcLocalPlacement, which defines the local coordinate system that is referenced by all geometric representations.

The PlacementRelTo relationship of IfcLocalPlacement shall point (if given) to the local placement of the same IfcSpatialStructureElement that is used in the ContainedInStructure inverse attribute or to a referenced spatial structure element at a higher level.. If the relative placement is not used, the absolute placement is defined within the world coordinate system.

If the LocalPlacement is given for the IfcRoof, then all components, which are aggregated to the roof should use this placement as their relative placement. Geometric Representation The IfcRoof may have an independent geometric representation or may be an aggregate with elements holding the geometric representation of the roof. Geometric representation by own shape representation If the IfcRoof has no components defined (empty set of SELF\IfcObject.IsDecomposedBy) then the IfcRoof may be represented by an independent IfcShapeRepresentation. The following attribute values for the IfcShapeRepresentation holding this geometric representation shall be used:

RepresentationIdentifier : ‘Body’ RepresentationType : ‘SweptSolid’, ‘Clipping’, ‘SurfaceModel’, or ‘Brep’

Geometric representation by aggregated elements If the IfcRoof has components (referenced by SELF\IfcObject.IsDecomposedBy) then no independent geometric representation shall defined for the IfcRoof. The IfcRoof is then geometrically represented by the geometric representation of its components. The components are accessed via SELF\IfcObject.IsDecomposedBy[1].RelatedObjects. The geometric representations that are supported for the aggregated elements are defined with each element. See geometric use definition for IfcSlab, IfcBeam, IfcColumn, IfcBuildingElementPart and other subtypes of IfcBuildingElement.

Figure 119 illustrates roof placement, with an IfcRoof defining the local placement for all aggregated elements.

Figure 119 — Roof placement

Public Types

typedef IfcTemplatedEntityList<IfcRoof> list

Public Functions

bool hasPredefinedType() const

Whether the optional attribute PredefinedType is defined for this IfcRoof.

::Ifc4::IfcRoofTypeEnum::Value PredefinedType() const

Predefined shape types for a roof that are specified in an enumeration.

IFC2x4 CHANGE The attribute has been renamed from ShapeType and changed to be OPTIONAL with upward compatibility for file based exchange.

void setPredefinedType(::Ifc4::IfcRoofTypeEnum::Value v)
const IfcParse::entity &declaration() const
IfcRoof(IfcEntityInstanceData *e)
IfcRoof(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory *v2_OwnerHistory, boost::optional<std::string> v3_Name, boost::optional<std::string> v4_Description, boost::optional<std::string> v5_ObjectType, ::Ifc4::IfcObjectPlacement *v6_ObjectPlacement, ::Ifc4::IfcProductRepresentation *v7_Representation, boost::optional<std::string> v8_Tag, boost::optional<::Ifc4::IfcRoofTypeEnum::Value> v9_PredefinedType)

Public Static Functions

const IfcParse::entity &Class()