Class Ifc2x3::IfcProcedure

Nested Relationships

This class is a nested type of Struct Ifc2x3.

Inheritance Relationships

Base Type

Class Documentation

class Ifc2x3::IfcProcedure : public Ifc2x3::IfcProcess

An IfcProcedure is a logical set of actions to be taken in response to an event or to cause an event to occur.

HISTORY New entity in IFC2x2

IFC2x4 CHANGE ProcedureType renamed to PredefinedType and made optional (upward compatible). Where rules WR1 and WR2 have been removed.

Use definitions

IfcProcedure is used to capture information about stepped processes such as calibration, start/stop procedures for equipment items, designated actions to take in the event of an emergency etc. A procedure is not a task, but may describe a set of tasks and their order of occurrence in response to or to cause an event.

Type use definition

IfcProcedure defines the anticipated or actual occurrence of any procedure; common information about procedure types is handled by IfcProcedureType. The IfcProcedureType (if present) may establish the common type name, usage (or predefined) type, common nested procedures (using IfcRelNests), common set of properties, and common product assignment using IfcRelAssignsToProduct. The IfcProcedureType is attached using the IfcRelDefinesByType.RelatingType objectified relationship and is accessible by the inverse IsTypedBy attribute.

Property set use definition

The property sets relating to IfcProcedure are defined by IfcPropertySet and attached by the IfcRelDefinesByProperties relationship. They are accessible by the inverse IsDefinedBy relationship. Such property sets may define procedure parameters. No property sets for IfcProcedure are currently defined by IFC.

Connectivity use definition

The relationship IfcRelSequence is used to indicate control flow. An IfcProcedure as a successor to an IfcEvent indicates that the procedure should be performed in response to the event. An IfcProcedure as a predecessor to an IfcEvent indicates that the event should be trigerred following the procedure. As procedures have arbitrary duration, the IfcRelSequence.SequenceType attribute has no effect on an IfcProcedure but still applies to the opposite end of the relationship if IfcTask is used.

Composition use definition

IfcProcedure may be contained within an IfcTask or IfcProcedure using the IfcRelNests relationship. An IfcProcedure may in turn nest other IfcProcedure or IfcEvent entities. Such nesting indicates decomposed level of detail.

Note that a particular type of IfcProcedure is a caution, warning or other form of advisory note. Typically, it is anticipated that such a procedure would be assigned to the specific IfcProcess for which it gives advice using IfcRelAssignsToProcess.

Assignment use definition

An IfcProcedure may be assigned to an IfcWorkCalendar to indicate times when such procedure may be performed using IfcRelAssignsToControl; otherwise the effective calendar is determined by the nearest IfcProcess ancestor with a calendar assigned. Advisory notes should be assigned to the specific IfcProcess for which it gives advice using IfcRelAssignsToProcess.

For building operation scenarios, IfcProcedure may be assigned to a product (IfcElement subtype) using IfcRelAssignsToProduct to indicate a specific product occurrence that performs the procedure. For example, an IfcActuator may have a “Close” procedure. If the IfcProcedure is defined by an IfcProcedureType and the IfcProcedureType is assigned to a product type (using IfcRelAssignsToProduct), then the IfcProcedure must be assigned to one or more occurrences of the specified product type using IfcRelAssignsToProduct.

As shown in Figure 12, IfcProcedure

does not restrict anything but describes specific steps of how something should happen. While a procedure does control/restrict in the sense of indicating “this is how the task should be performed” by nature of describing inner detail, this is not different than parts of a product indicating “this is how the parts should

be assembled”. Consequently, it doesn’t restrict the outer item as a whole but provides inner detail of the item.

Figure 12 — Procedure relationships

Public Types

typedef IfcTemplatedEntityList<IfcProcedure> list

Public Functions

std::string ProcedureID() const
void setProcedureID(std::string v)
::Ifc2x3::IfcProcedureTypeEnum::Value ProcedureType() const
void setProcedureType(::Ifc2x3::IfcProcedureTypeEnum::Value v)
bool hasUserDefinedProcedureType() const

Whether the optional attribute UserDefinedProcedureType is defined for this IfcProcedure.

std::string UserDefinedProcedureType() const
void setUserDefinedProcedureType(std::string v)
const IfcParse::entity &declaration() const
IfcProcedure(IfcEntityInstanceData *e)
IfcProcedure(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, std::string v6_ProcedureID, ::Ifc2x3::IfcProcedureTypeEnum::Value v7_ProcedureType, boost::optional<std::string> v8_UserDefinedProcedureType)

Public Static Functions

const IfcParse::entity &Class()