Class Ifc4::IfcObject

Nested Relationships

This class is a nested type of Struct Ifc4.

Inheritance Relationships

Base Type

Derived Types

Class Documentation

class Ifc4::IfcObject : public Ifc4::IfcObjectDefinition

An IfcObject is the generalization of any semantically treated thing or process. Objects are things as they appear - i.e. occurrences. NOTE Examples of IfcObject include physically tangible items, such as wall, beam or covering, physically existing items, such as spaces, or conceptual items, such as grids or virtual boundaries. It also stands for processes, such as work tasks, for controls, such as cost items, for actors, such as persons involved in the design process, etc. Objects can be named, using the inherited Name attribute, which should be a user recognizable label for the object occurrance. Further explanations to the object can be given using the inherited Description attribute. The ObjectType attribute is used:

to store the user defined value for all subtypes of IfcObject, where a PredefinedType attribute is given, and its value is set to USERDEFINED. to provide a type information (could be seen as a very lightweight classifier) of the subtype of IfcObject, if no PredefinedType attribute is given. This is often the case, if no comprehensive list of predefined types is available.

Objects are independent pieces of information that might contain or reference other pieces of information. There are several relationships in which objects can be involved:

Association to external/internal resource information

  • an association relationship that refers to external/internal sources of information. See supertype IfcObjectDefinition for more information. Assignment of other objects - an assignment relationship that refers to other types of objects. See supertype IfcObjectDefinition for more information. Aggregation of other objects - an aggregation relationship that establishes a whole/part relation. Objects can either be a whole, or a part, or both. See supertype IfcObjectDefinition for more information.

Assignment of a type : IsTypedBy - a definition relationship IfcRelDefinesByType that uses a type definition to define the common characteristics of this occurrences, potentially including the common shape representation and common properties of all object occurrences assigned to this type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).

NOTE See IfcRelDefinesByType for an explanatory figure. Also see for how to override type properties by occurrence properties

Assignment of a partial type : IsDeclaredBy, Declares - a definition relationship IfcRelDefinesByObject that uses a component of a type definition (a part of a type, called the “declaring part”) to define a component of an occurence (part of occurrence, called the “reflected part”). This is also refered to as a “deep copy”. The common characteristics of all parts in the occurrence are defined by parts in the type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).

NOTE See IfcRelDefinesByObject for an explanatory figure.

Assignment of property sets : IsDefinedBy - a definition relationship IfcRelDefinesByProperties that assignes property set definitions to the object occurrence.

HISTORY New Entity in IFC Release 1.0

IFC2x4 CHANGE The inverse relationships Declares, IsDeclaredBy, and IsTypedBy have been added, types are not longer included in the IsDefinesBy relationship. IfcProject has been promoted to be a subtype of IfcObjectDefinition -> IfcContext.

Informal Proposition

A partial type assignment, i.e. the inverse attribute IsDeclaredBy, or Declares shall only be used, if the object is part of a decomposition, i.e. if either IsDecomposedBy, or Decomposes is exerted.

Subclassed by Ifc4::IfcActor, Ifc4::IfcControl, Ifc4::IfcGroup, Ifc4::IfcProcess, Ifc4::IfcProduct, Ifc4::IfcResource

Public Types

typedef IfcTemplatedEntityList<IfcObject> list

Public Functions

bool hasObjectType() const

Whether the optional attribute ObjectType is defined for this IfcObject.

std::string ObjectType() const

The type denotes a particular type that indicates the object further. The use has to be established at the level of instantiable subtypes. In particular it holds the user defined type, if the enumeration of the attribute PredefinedType is set to USERDEFINED.

void setObjectType(std::string v)
IfcTemplatedEntityList<IfcRelDefinesByObject>::ptr IsDeclaredBy() const
IfcTemplatedEntityList<IfcRelDefinesByObject>::ptr Declares() const
IfcTemplatedEntityList<IfcRelDefinesByType>::ptr IsTypedBy() const
IfcTemplatedEntityList<IfcRelDefinesByProperties>::ptr IsDefinedBy() const
const IfcParse::entity &declaration() const
IfcObject(IfcEntityInstanceData *e)
IfcObject(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)

Public Static Functions

const IfcParse::entity &Class()