Building a tree(s) by combining XML, XSD, EXP files
The three links here: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/annex-a.html apparently provide the entire schema for a BIM/IFC project. The STEP Data Exchange Format file (.exp) appears to provide data type definitions (real, string, enum etc) for all permissible data fields. The XSD file seems to provide the tree layout for "objects" and the many XML files (provided as a zip file) seem to provide property definitions for required/optional properties that "objects" may have. I may even have that understanding completely wrong - clarification would be appreciated. I, obviously, have to find a way to bring all of this data together to form a human usable structure! I think that my preferred initial implementation is something like drop down lists and a data entry field: *User selects "object" ... implementation finds "child objects" *User selects "child object" ... implementation finds further "child objects" and so on until there are no more children *User selects propery(ies) ... maybe a drop down or a list of check boxes *User enters appropriate "value" for this/these property(ies) There's a lot of inheritance, from what I can see, so I expect that this initial structure will need quite a bit of modification to be of practical use - if nothing else, I have to separate the BIM documentation from the IFC "structure". Maybe this separation is inherent in the structure of the schema files? The reason for this question is because I don't know whether my intended initial implementation is actually the best way to start and I certainly don't know how to bring all 3 references together into a tree or trees. I've been looking at IfcOpenShell but that does not appear to help with building the actual structure from the schema files. So, I'm hoping that some kind and knowledgeable people will give some advice regarding where to start and some useful Python libraries - I don't know C++. Kind regards and thanks in anticipation of your help Ivan. tools

The three links here: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/annex-a.html apparently provide the entire schema for a BIM/IFC project.
The STEP Data Exchange Format file (.exp) appears to provide data type definitions (real, string, enum etc) for all permissible data fields. The XSD file seems to provide the tree layout for "objects" and the many XML files (provided as a zip file) seem to provide property definitions for required/optional properties that "objects" may have. I may even have that understanding completely wrong - clarification would be appreciated.
I, obviously, have to find a way to bring all of this data together to form a human usable structure!
I think that my preferred initial implementation is something like drop down lists and a data entry field:
*User selects "object" ... implementation finds "child objects"
*User selects "child object" ... implementation finds further "child objects" and so on until there are no more children
*User selects propery(ies) ... maybe a drop down or a list of check boxes
*User enters appropriate "value" for this/these property(ies)
There's a lot of inheritance, from what I can see, so I expect that this initial structure will need quite a bit of modification to be of practical use - if nothing else, I have to separate the BIM documentation from the IFC "structure". Maybe this separation is inherent in the structure of the schema files?
The reason for this question is because I don't know whether my intended initial implementation is actually the best way to start and I certainly don't know how to bring all 3 references together into a tree or trees.
I've been looking at IfcOpenShell but that does not appear to help with building the actual structure from the schema files.
So, I'm hoping that some kind and knowledgeable people will give some advice regarding where to start and some useful Python libraries - I don't know C++.
Kind regards and thanks in anticipation of your help
Ivan.
tools