IFC 4.3.2.20250905 (IFC4X3_ADD2) under development

  • Help suggest improvements
  • Get user or developer support

4.1.2.3 Constraint Association

The concept Constraint Association describes how object or object types may have associated constraints indicating a qualitative objective or a quantitative metric to be met.

Constraints based on metrics are measurable, such that the status of a metric being valid is computer-interpretable. Metric constraints are based on simple conditional logic such as greater than a particular value or included within a specified list or table. Constraints may combine multiple metrics using Boolean logic such as AND, OR, XOR, or NOT.

The following diagram shows the generic classes and relationships used when applying this concept. In addition, concepts may have particular importance to common or standardised industry practices and scenarios. For these specific usage scenarios, the table below shows a recommended list of general usage patterns that users may adopt.

%3 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectDefinition.htm'>IfcObjectDefinition</a> IfcObjectDefinition 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1]      HasAssignments [0:?]      Nests [0:1]      IsNestedBy [0:?]      HasContext [0:1]      IsDecomposedBy [0:?]      Decomposes [0:1]      HasAssociations [0:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a> IfcRelAssociatesConstraint 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1] 5. RelatedObjects [1:?] 6. Intent [0:1] 7. RelatingConstraint [1:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectDefinition.htm'>IfcObjectDefinition</a>:HasAssociations1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a>:RelatedObjects0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a> IfcObjective 1. Name [1:1] 2. Description [0:1] 3. ConstraintGrade [1:1] 4. ConstraintSource [0:1] 5. CreatingActor [0:1] 6. CreationTime [0:1] 7. UserDefinedGrade [0:1]      HasExternalReferences [0:?]      PropertiesForConstraint [0:?] 8. BenchmarkValues [1:?] 9. LogicalAggregator [0:1] 10. ObjectiveQualifier [1:1] 11. UserDefinedQualifier [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAssociatesConstraint.htm'>IfcRelAssociatesConstraint</a>:RelatingConstraint1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:IfcObjective0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a> IfcMetric 1. Name [1:1] 2. Description [0:1] 3. ConstraintGrade [1:1] 4. ConstraintSource [0:1] 5. CreatingActor [0:1] 6. CreationTime [0:1] 7. UserDefinedGrade [0:1]      HasExternalReferences [0:?]      PropertiesForConstraint [0:?] 8. Benchmark [1:1] 9. ValueSource [0:1] DataValue 10. DataValue [0:1] 11. ReferencePath [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:BenchmarkValues1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:IfcMetric0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectiveEnum.htm'>IfcObjectiveEnum</a> IfcObjectiveEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:ObjectiveQualifier1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectiveEnum.htm'>IfcObjectiveEnum</a>:IfcObjectiveEnum0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLogicalOperatorEnum.htm'>IfcLogicalOperatorEnum</a> IfcLogicalOperatorEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjective.htm'>IfcObjective</a>:LogicalAggregator1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLogicalOperatorEnum.htm'>IfcLogicalOperatorEnum</a>:IfcLogicalOperatorEnum0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetricValueSelect.htm'>IfcMetricValueSelect</a> IfcMetricValueSelect <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetricValueSelect.htm'>IfcMetricValueSelect</a>:IfcMetricValueSelect0 IfcAppliedValue_0 IfcAppliedValue 1. Name [0:1] 2. Description [0:1] 3. AppliedValue [0:1] 4. UnitBasis [0:1] 5. ApplicableDate [0:1] 6. FixedUntilDate [0:1] 7. Category [0:1] 8. Condition [0:1] 9. ArithmeticOperator [0:1] 10. Components [1:?]      HasExternalReference [0:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1->IfcAppliedValue_0:IfcAppliedValue0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a> IfcTable 1. Name [0:1] 2. Rows [1:?] 3. Columns [1:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:DataValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:IfcTable0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcBenchmarkEnum.htm'>IfcBenchmarkEnum</a> IfcBenchmarkEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Benchmark1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcBenchmarkEnum.htm'>IfcBenchmarkEnum</a>:IfcBenchmarkEnum0 IfcReference_1 IfcReference 1. TypeIdentifier [0:1] Attribute1 2. AttributeIdentifier [0:1] 3. InstanceName [0:1] 4. ListPositions [1:?] 5. InnerReference [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:ReferencePath1->IfcReference_1:IfcReference0 IfcLabel_1 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Name1->IfcLabel_1:IfcLabel0 IfcText_1 IfcText <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcMetric.htm'>IfcMetric</a>:Description1->IfcText_1:IfcText0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcArithmeticOperatorEnum.htm'>IfcArithmeticOperatorEnum</a> IfcArithmeticOperatorEnum IfcAppliedValue_0:ArithmeticOperator1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcArithmeticOperatorEnum.htm'>IfcArithmeticOperatorEnum</a>:IfcArithmeticOperatorEnum0 IfcAppliedValue_1 IfcAppliedValue 1. Name [0:1] 2. Description [0:1] 3. AppliedValue [0:1] 4. UnitBasis [0:1] 5. ApplicableDate [0:1] 6. FixedUntilDate [0:1] 7. Category [0:1] 8. Condition [0:1] 9. ArithmeticOperator [0:1] 10. Components [1:?]      HasExternalReference [0:?] IfcAppliedValue_0:Components1->IfcAppliedValue_1:IfcAppliedValue0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLengthMeasure.htm'>IfcLengthMeasure</a> IfcLengthMeasure IfcAppliedValue_0:AppliedValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLengthMeasure.htm'>IfcLengthMeasure</a>:IfcLengthMeasure0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcReal.htm'>IfcReal</a> IfcReal IfcAppliedValue_0:AppliedValue1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcReal.htm'>IfcReal</a>:IfcReal0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableRow.htm'>IfcTableRow</a> IfcTableRow 1. RowCells [1:?] 2. IsHeading [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:Rows1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableRow.htm'>IfcTableRow</a>:IfcTableRow0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a> IfcTableColumn 1. Identifier [0:1] 2. Name [0:1] 3. Description [0:1] 4. Unit [0:1] 5. ReferencePath [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTable.htm'>IfcTable</a>:Columns1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:IfcTableColumn0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcIdentifier.htm'>IfcIdentifier</a> IfcIdentifier <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:Identifier1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcIdentifier.htm'>IfcIdentifier</a>:IfcIdentifier0 IfcLabel_0 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:Name1->IfcLabel_0:IfcLabel0 IfcText_0 IfcText <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:Description1->IfcText_0:IfcText0 IfcReference_0 IfcReference 1. TypeIdentifier [0:1] 2. AttributeIdentifier [0:1] 3. InstanceName [0:1] 4. ListPositions [1:?] 5. InnerReference [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTableColumn.htm'>IfcTableColumn</a>:ReferencePath1->IfcReference_0:IfcReference0
Figure 4.1.2.3.A

General Usage

ApplicableEntity
IfcObjectDefinition
Table 4.1.2.3.B

Edit on Github


Is this page difficult to understand? Let us know!