Skip to content

Commit

Permalink
Proposal to change the logic of the partof-facet. (#171)
Browse files Browse the repository at this point in the history
  • Loading branch information
CBenghi authored Jul 5, 2023
1 parent 4149538 commit 03bbce7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
4 changes: 2 additions & 2 deletions Development/ids.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@
</xs:complexType>
<xs:complexType name="partOfType">
<xs:sequence>
<xs:element name="entity" type="ids:entityType" minOccurs="0"/>
<xs:element name="entity" type="ids:entityType" minOccurs="1" />
</xs:sequence>
<xs:attribute name="relation" type="ids:relations" use="required"/>
<xs:attribute name="relation" type="ids:relations" />
</xs:complexType>
<xs:complexType name="applicabilityType">
<xs:sequence>
Expand Down
22 changes: 14 additions & 8 deletions Documentation/partof-facet.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,32 @@

Objects in IFC can have relationships to other objects. IDS supports specifying four types of relationships.

The **IfcRelAggregates** relationship describes how multiple smaller subobjects can be aggregated into a single bigger object. For example, many building storeys make up a building. Alternatively, many beams, floor boards, and joints make up a slab. Or perhaps many brackets, mullions, and steel plates make up an assembly.
The **IfcRelAggregates** relationship describes how multiple smaller sub-objects can be aggregated into a single bigger object. For example, many building storeys make up a building. Alternatively, many beams, floor boards, and joints make up a slab. Or perhaps many brackets, mullions, and steel plates make up an assembly.

The **IfcRelAssignsToGroup** relationship describes how multiple objects can be grouped into a collection of objects any usecase. For example, ducts, AHUs, fans, and louvres may all be grouped into a single distribution system. Alternatively, cables, distribution boards, and GPOs may be grouped into a single circuit. Or perhaps spaces are grouped into zones, or maintainable assets are grouped into an inventory.
The **IfcRelAssignsToGroup** relationship describes how multiple objects can be grouped into a collection of objects any use-case. For example, ducts, AHUs, fans, and louvres may all be grouped into a single distribution system. Alternatively, cables, distribution boards, and GPOs may be grouped into a single circuit. Or perhaps spaces are grouped into zones, or maintainable assets are grouped into an inventory.

The **IfcRelContainedInSpatialStructure** relationship describes how multiple objects can be located in a particular location. For example, a pump might be in a space, a column might be on the level 2 building storey, or some street furniture might be on the building site. Every object must have a single primary location container in IFC, even though they may be referenced in multiple locations (such as a multi-storey column). This relationship only targets the primary location container.

The **IfcRelNests** relationship describes how a physical object may be connected to a larger host object, typically through a physical connection such as a pre-drilled hole or connection terminal. When the host moves, the attached nested objects move with it.

The **IfcRelVoidsElement** relationship describes how a void belongs to an element.

The **IfcRelFillsElement** relationship describes how an element fills an a void, potentially making it part .

## Parameters

Parameter | Required | Restrictions Allowed | Allowed Values | Meaning
--- | --- | --- | --- | ---
**Relation** | ✔️ | ❌ | One relationship chosen from the 4 supported relationships: IfcRelAggregates, IfcRelAssignsToGroup, IfcRelContainedInSpatialStructure, or IfcRelNests | The smaller subobject has the specified relationship with a larger object
**Entity** | ❌ | ✔️ | Any valid IFC class name (e.g. "IFCSYSTEM") | The IFC class of the larger object must match exactly.
| Parameter | Required | Restrictions Allowed | Allowed Values | Meaning |
| ------------ | -------- | -------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **Entity** | ✔️ | | Any valid IFC entity (e.g. "IFCSYSTEM") | The IFC class of the larger object must match exactly. |
| **Relation** | | ✔️ | One relationship chosen from the 6 supported types listed above | If omitted any valid IFC relationship structure that directly or indirectly, and transitively (recursively) has to be evaluated, if specified only the given type must be evaluated (recursively) |

## Examples

Applicability Intention | Requirement Intention | Facet Definition
--- | --- | ---
Any entity that is part of a curtain wall | The entity (e.g. mullion) must be part of a curtain wall | Relation="IfcRelAggregates", Entity="IFCCURTAINWALL"
Any entity that is directly composing a curtain wall | The entity (e.g. mullion) must be part of a curtain wall | Relation="IfcRelAggregates", Entity="IFCCURTAINWALL"
Any entity that is directly or indirectly part of a curtain wall | The entity (e.g. mullion) must be part of a curtain wall | Entity="IFCCURTAINWALL"
Any entity that is part of a distribution system | The entity (e.g. duct) must be part of a distribution system | Relation="IfcRelAssignsToGroup", Entity="IFCDISTRIBUTIONSYSTEM"
Any entity that is located in a space | The entity (e.g. pump) must be located in a space | Relation="IfcRelContainedInSpatialStructure", Entity="IFCSPACE"
Any entity that hosted by a hand wash basin | The entity (e.g. facuet) must be fixed on a hand wash basin | Relation="IfcRelNests", Entity="IFCSANITARYTERMINAL"
Any entity that hosted by a hand wash basin | The entity (e.g. faucet) must be fixed on a hand wash basin | Relation="IfcRelNests", Entity="IFCSANITARYTERMINAL"
Any window that hosted by a hand wash basin | The entity (e.g. faucet) must be fixed on a hand wash basin | Relation="IfcRelNests", Entity="IFCSANITARYTERMINAL"

0 comments on commit 03bbce7

Please sign in to comment.