buildingSMART / buildingSMART/IFC4.x-development

IfcSurfaceFeature voiding IfcElement

Open
#833 0 comments 0 reactions 0 assignees View on GitHub
after-NWI IF legacy
Dominant language
Python
Stars
234
Forks
123
Avg merge
15h 4m
Merged PRs (30d)
5

Description

In the docs [it's mentioned](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcSurfaceFeature.htm) that IfcSurfaceFeature can descrease the volume of the element:

> The volume and mass of the element may be increased, remain unchanged, or be decreased by the surface feature, depending on manufacturing technology. However, any increase or decrease of volume is small compared to the total volume of the element.

Any ideas how would such voiding would be defined, so it could be distinguished from IfcSurfaceFeature adding new geometry to the element?

What I've found:

1. in IfcSurfaceFeatureTypeEnum (IfcSurfaceFeature.PredefinedType) there is a `TREATMENT` value but it doesn't specify whether volume is removed or added:

> A subtractive surface feature, e.g. grinding, or an additive surface feature, e.g. coating, or an impregnating treatment, or a series of any of these kinds of treatments.

2. in IfcSurfaceFeature description there is a section on local placement, it says that in case of voiding, `PlacementRelTo` of the IfcLocalPlacement shall be used. I think it was just copied from [IfcVoidingFeature](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcVoidingFeature.htm), so it might be incomplete for IfcSurfaceFeature.

> In case of features which are part of an element type, absolute placement into the type object's implied coordinate system shall be used.
> In case of features which are voiding an element occurrence, the PlacementRelTo relationship of [IfcLocalPlacement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLocalPlacement.htm) shall point to the local placement of the respective element.

It seems it can be replaced with description from [IfcFeatureElementAddition](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcFeatureElementAddition.htm)

> The PlacementRelTo attribute of [IfcObjectPlacement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcObjectPlacement.htm) shall point (if given) to the object placement of the [IfcElement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcElement.htm), which is used in the AdheresToElement.RelatingElement inverse attribute (the parent element of the feature).

And the part about element type seems incorrect ("In case of features which are part of an element type, absolute placement into the type object's implied coordinate system shall be used.") since both [IfcRelVoidsElement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelVoidsElement.htm) and [IfcRelAdheresToElement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRelAdheresToElement.htm) doesn't allow use of IfcElementTypes as relating elements.

3. A bit unrelated, but also found that [IfcLocalPlacement](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcLocalPlacement.htm) is missing "IfcRelAdheresToElement" in line `For IfcElement the convention applies that it shall be placed relative: to the local placement of the IfcElement to which it is tied by an element composition relationship for features that are located relative to the main component (such as openings), as expressed by IfcRelVoidsElement and IfcRelProjectsElement;`. Submitted a PR - #832

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.