buildingSMART / buildingSMART/IDS

Reconsidering the ability to allow class inheritance

Open
#356 9 comments 4 reactions 0 assignees View on GitHub
discuss & decide
Dominant language
C#
Stars
318
Forks
90
PR merge metrics
No merged PRs in 30d

Description

I know this has been decided before, but the more I use IDS, but more I find it quite silly when people ask me "how do I write a requirement for all physical elements", the answer is: "copy paste from this big list of elements which only I have generated, and I've generated three variants of that list for IFC2X3, IFC4, and IFC4X3".

(and yes, people still copy paste wrongly)

And then when somebody reads the IDS, they see a massive list of objects and their eyes tend to glaze over.

In contrast, with inheritance and exclusion facets, I can express this in IfcOpenShell as simply as:

- `IfcElement, ! IfcFeatureElement` meaning all physical elements, minus openings and protrusions
- `IfcDistributionControlElement` meaning all the control elements in distribution system (no boring things like pipes and ducts and trays)
- `IfcSpatialStructureElement, ! IfcSpace` meaning stuff like sites, buildings, storeys (big things) except for individual spaces

It's simple, readable (to me at least), and works across schema versions.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the earlier decision referenced in the issue and the nine-comment discussion, then compare the proposed inheritance and exclusion examples across IFC2X3, IFC4, and IFC4X3. Done would require an agreed IDS design for inheritance and exclusions, including clear behavior for the listed element categories and schema versions.

Written by the indexing model from the issue text.

Assessment

Tech stack
xml
Domain
developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.