Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GetLine doesn't support all entity types (only IFC4?) #212

Closed
andy-wrks opened this issue Aug 18, 2022 · 11 comments
Closed

GetLine doesn't support all entity types (only IFC4?) #212

andy-wrks opened this issue Aug 18, 2022 · 11 comments

Comments

@andy-wrks
Copy link

Hi, thanks for the great work on webIFC!

We fail to retrieve the raw data for some entities via ifcAPI.GetLine(modelID, expressID).
This happens for example with IfcElectricDistributionPoint entities. My base assumption is that webIFC applies the IFC4 scheme to all IFC files and so it's missing entities types that only exist in IFC2x3, like IfcElectricDistributionPoint.

The official scheme versions 2.3.0.1 and 4.0.2.1 have quite an overlap of common entities, but also a solid chunk of entities that are unique to each version. For what it's worth, here is the comparison:
image

It appears like the 114 entity types that are unique to IFC2x3 might be unsupported.
Since the attributes of an entity type can also change between versions, it would be best practice to process IFC files according to the used scheme version. Applying the same scheme to all files might produce some 2nd level effects like mismatching attributes etc.

I attached a sample file with two IfcElectricDistributionPoint instances and also a list of all entity types that are unique to IFC2x3.

Thanks for looking into it!

IFC2301_unique_entities.txt
Sample_file.zip

@andy-wrks
Copy link
Author

andy-wrks commented Aug 23, 2022

Here's an example of mismatching attribute names due to mismatching data schemes.
In the classification concept, there's an attribute that holds the actual classification code (red in image):

image

This attribute changed its name from "ItemReference"(IFC2x3) to "Identification" (IFC4).

image

webIFC outputs "Identification" for both IFC2x3 and IFC4 files. Also note the other entries in the change log for this entity alone. IFC is complex and inconsistent already, so parsing a file against a mismatching data scheme will only create more problems. I hope this example helps to illustrate why webIFC should at least distinguish the 2 official scheme versions 2.3.0.1 and 4.0.2.1.

@beachtom
Copy link
Collaborator

::take

@agviegas
Copy link
Collaborator

🟢🟢🟢

::take

Hi, @beachtom! Thanks for taking this bounty! The due date is November 17, 2022 UTC.

If you need to submit some pull requests (PR) to complete the tasks, make sure that the last and only the last PR has a title that either starts with the bounty ID or is exactly the same as the bounty name. After the PR is merged, this bounty’s status will automatically changed to done.

If you do not need to make a PR, tell the manager @agviegas to run ::done command after your tasks is confirmed to be done.

Good luck!

@agviegas
Copy link
Collaborator

🔴🔴🔴

Hi, @beachtom! The date is past due, your assignment has been revoked. It’s now available for anyone to take.

@beachtom
Copy link
Collaborator

::take

@agviegas
Copy link
Collaborator

🟢🟢🟢

::take

Hi, @beachtom! Thanks for taking this bounty! The due date is December 9, 2022 UTC.

If you need to submit some pull requests (PR) to complete the tasks, make sure that the last and only the last PR has a title that either starts with the bounty ID or is exactly the same as the bounty name. After the PR is merged, this bounty’s status will automatically changed to done.

If you do not need to make a PR, tell the manager @agviegas to run ::done command after your tasks is confirmed to be done.

Good luck!

@beachtom
Copy link
Collaborator

@agviegas work is done just waiting for PR approval

@beachtom
Copy link
Collaborator

This is now done @agviegas

@agviegas
Copy link
Collaborator

::done

@agviegas
Copy link
Collaborator

🟢🟢🟢

::done

Hi, @beachtom! Thanks for your contributions! Please submit an expense to IFC.js Open Collective. Then, tell us the invoice number via the ::expense::_____ command (replace the _____ with the invoice number).

@andy-wrks
Copy link
Author

Thanks @beachtom, looking forward to testing this one!
This fix is quite substantial for all those who work from the raw data in IFC and need to acess all entities in a reliable way :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants