buildingSMART / buildingSMART/IFC4.x-development
Add an attribute to IfcTask that defines the sort order of IFC objects (elements) constructed by the task
- Dominant language
- Python
- Stars
- 234
- Forks
- 123
- Avg merge
- 15h 4m
- Merged PRs (30d)
- 5
Description
IfcTask does not contain information about the order in which are elements constructed. This information is important in order to exchange and persist construction simulation appearance while exchanging schedule information.
In various BIM tools typically the order of elements could be specified in the following ways:
• Sort task elements according to the project coordinate system axes. In this case, it's required to specify Primary, Secondary and Tertiary attributes that describe cartesian axes used for sorting. Each direction can have the following enum values: X_Axis, Y_Axis, Z_Axis, X_Axis Reverse, Y_Axis Reverse, Z_Axis Reverse.
A more generic approach in defining the sort order of elements for an IfcTask could be to define a new coordinate system (relative to the project coordinate system) that will be used for sorting. That way it's possible to define the coordinate system used for elements sorting for each task in a flexible and generic way. Usage in BIM tools would be to transform element coordinates to task's coordinate system and perform the sorting according to Primary, Secondary and Tertiary direction. Since this approach enables a flexible task coordinate system definition it's needed to define just the following enum values for each direction: X_Axis, Y_Axis, Z_Axis.
• Sorting elements in Clockwise and Radial direction. A generic approach in defining this kind of sorting is to define a new coordinate system (relative to the project coordinate system). In this case, it's required to specify Primary, Secondary and Tertiary attributes that define the priority of sorting criteria. The attribute enum values would be as follows: Clockwise, Counterclockwise, Radial, AntiRadial, Z_Axis.
Clockwise and Counterclockwise directions will be defined according to X_Axis of the newly defined coordinate system.
Radial and AntiRadial sorting directions will be defined according to the origin of the newly defined coordinate system.
For Z_Axis will be used the Z_Axis of the newly defined coordinate system.
• Sort task elements according to defined IfcAlignment.
In this case it's needed to define Clockwise and Radial sorting (as explained in the previous bullet) for each Alignment segment.
• Sort task elements according to the custom user-defined order. In order to achieve this, it's needed to assign an integer index for each element. The assigned index would represent the order in which elements are constructed.
Contributor guide
Assessment
This issue has not been assessed yet.