Class Ifc2x3::IfcProject

Nested Relationships

This class is a nested type of Struct Ifc2x3.

Inheritance Relationships

Base Type

Class Documentation

class Ifc2x3::IfcProject : public Ifc2x3::IfcObject

IfcProject indicates the undertaking of some design, engineering, construction, or maintenance activities leading towards a product. The project establishes the context for information to be exchanged or shared, and it may represent a construction project but does not have to. The IfcProject’s main purpose in an exchange structure is to provide the root instance and the context for all other information items included. The context provided by the IfcProject includes:

the default units the geometric representation context for exchange structures including shape representations

the world coordinate system the coordinate space dimension the precision used within the geometric representations, and optionally the indication of the true north relative to the world coordinate system

HISTORY New Entity in IFC Release 1.0

IFC2x4 CHANGE The attributes RepresentationContexts and UnitsInContext are made optional and are promoted to supertype IfcContext.

Relationship use definition The IfcProject is used to reference the root of the spatial structure of a building (that serves as the primary project breakdown and is required to be hierarchical). The spatial structure elements are linked together, and to the IfcProject, by using the objectified relationship IfcRelAggregates. The IfcProject references them by its inverse relationship:

IfcProject.Decomposes it shall be NIL, i.e. the IfcProject shall not be decomposed into any parts. IfcProject.IsDecomposedBy referencing (IfcSite || IfcBuilding) by IfcRelAggregates.RelatingObject. The IfcSite or IfcBuilding referenced shall be the root of the spatial structure.

The IfcProject is also the context for other information about the construction project such as a work plan. Non-product structures are assigned by their first level object to IfcProject using the IfcRelDeclares relationship.

The IfcProject provides the context for spatial elements and the associated products, and for work plans (or other non-product based) descriptions of the construction project. It is handled by two distinct relationship objects as shown in Figure 3. NOTE The spatial structure and the schedule structure can be decomposed. For example the IfcBuilding can be decomposed into IfcBuildingStorey’s, and the IfcWorkPlan can be decomposed into IfcWorkSchedule’s. NOTE The products and tasks can be decomposed further. For example the IfcCurtainWall can be decomposed into IfcMember and IfcPlate, the IfcTask can be decomposed into other IfcTask’s. NOTE The products and tasks can have direct linking relationships. For example the IfcCurtainWall can be assigned to a IfcTask as an input or output for a construction schedule. NOTE The anomaly to use the composition structure through IfcRelAggregates for assigning the uppermost spatial container to IfcProject is due to upward compatibility reasons with earlier releases of this standard.

Figure 3 — Project spatial and work plan structure

As shown in Figure 4, the IfcProject provides the context for project libraries that in return provide a context to the library items assigned to it. Product types are an example for items that can be included in a project library.

Figure 4 — Project spatial structure, products and product type library

Informal propositions:

There shall only be one project within the exchange context. This is enforced by the global rule IfcSingleProjectInstance.

Public Types

typedef IfcTemplatedEntityList<IfcProject> list

Public Functions

bool hasLongName() const

Whether the optional attribute LongName is defined for this IfcProject.

std::string LongName() const
void setLongName(std::string v)
bool hasPhase() const

Whether the optional attribute Phase is defined for this IfcProject.

std::string Phase() const
void setPhase(std::string v)
IfcTemplatedEntityList<::Ifc2x3::IfcRepresentationContext>::ptr RepresentationContexts() const
void setRepresentationContexts(IfcTemplatedEntityList<::Ifc2x3::IfcRepresentationContext>::ptr v)
::Ifc2x3::IfcUnitAssignment *UnitsInContext() const
void setUnitsInContext(::Ifc2x3::IfcUnitAssignment *v)
const IfcParse::entity &declaration() const
IfcProject(IfcEntityInstanceData *e)
IfcProject(std::string v1_GlobalId, ::Ifc2x3::IfcOwnerHistory *v2_OwnerHistory, boost::optional<std::string> v3_Name, boost::optional<std::string> v4_Description, boost::optional<std::string> v5_ObjectType, boost::optional<std::string> v6_LongName, boost::optional<std::string> v7_Phase, IfcTemplatedEntityList<::Ifc2x3::IfcRepresentationContext>::ptr v8_RepresentationContexts, ::Ifc2x3::IfcUnitAssignment *v9_UnitsInContext)

Public Static Functions

const IfcParse::entity &Class()