Skip to content

IDS support in IfcOpenShell #1349

Description

@Moult

4e889b7 implements a very basic BIMTester integration. Ping @aothms as well as @rbertucat who this might impact, if IfcRail is testing pset applicability too.

To run, just point to the IDS XML instead of a feature file.

$ bimtester -f ids01.xml -i Duplex_A_20110505.ifc -r report.html

HTML report looks like this:

2021-02-28-144158_1920x1080_scrot

Because it just uses the same argument to specify a feature file, this means that the Blender UI to BIMTester, the FreeCAD UI to BIMTester, as well as the standalone UIs to BIMTester built by @berndhahnebach and @rbertucat all can just work out of the box.

2021-02-28-150528_692x139_scrot

I really like this new IDS approach. I can read the XML and it just makes sense.

BIMTester can provide additional value on top of this IDS XML spec by providing a test running interface, as well as a HTML report generator, and an xUnit compatible output (therefore, will integrated into many continuous integration apps). BIMTester also provides a nice interface for bSI standards development as you can specify a custom IFC schema prior to running tests.

As a separate concept to test running, there is the whole Gherkin approach. The biggest benefit of Gherkin is the ability for humans to understand it, and that it can be included in contracts, and read by non-technical people. At the end of the day, it still needs code to check. Right now, this is the biggest disadvantage of BIMTester. If you want to write your own check, you need to know a bit of Python + the IfcOpenShell API. I see this IDS XML as replacing the Python coding for simple checks that anybody can write who doesn't need / want to know Python or the IfcOpenShell API. And whilst IDS XML is great for general and common specifications, it will never cover everything, so allowing both approaches is great.

Possible Gherkin sentences:

 * IFC data must comply with the IDS provided in "ids01.xml"

... this is easy, but doesn't communicate well to non-technical people - defeats the purpose of Gherkin. Maybe it should exist as a template simply for techies who are prototyping new bSI standards, but definitely deserves the blank looks it'll encounter on real projects :)

 * All entities belonging to "IfcSpace" must have a property set called "PSet_Revit_Identity Data" with a "Name" property filled with one of the following values:
    | Living Room |
    | Kitchen     |

... this can autoconvert XML<->Gherkin, and is highly specific. Kinda midway - readable but contains jargon for non-techies, and extra effort for techies, since it'll probably end up being its own DSL and would need to be translated into different languages ...

 * All spaces must be either a living room or kitchen.

... this is perhaps the best from a Gherkin point of view. This looks like exactly the type of sentence that already exists in contracts. From a UX perspective, there can be a simple UI that a spec writer can use to link this arbitrary user sentence to an XML definition - or even better, reuse <specification name="">. Easy for the manager, easy for the spec writer (can use any tool, IfcOpenShell Python API optional). I personally think this would be the way to go.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions