IFC Delta/Partial Updates

Hi All,

At the last General Assembly Meeting it was agree that we look at Partial File Exchange to support sending updates vs full files. At least major vendors have the infrastructure to support this directly on Export so we are proceeding.

We had an initial followup meeting yesterday.

Here is the proposed solution to handle this in IFC2x3 and IFC4+. More advanced updates would be targeted in IFC5.

The following items are to be added to the Header of the IFC Files.

[
ModelID (A Static GUID for the model to which this partial file pertains)
ModelVersionId (A GUID that represents the ID for this Partial IFC)
PreviousModelVersionID (The GUID of the Preceding Partial IFC.
Queston #1 – If it’s the first Partial after the initial publish is it blank or does it contain the ModelID?
DeletedItems[….] (Comma separated Array of deleted ElementIDs)
]

If a “Merged” IFC is created from the Partial IFC files it should have the OwnerHistory attached Per Product; The Group Method is optional
Question #2 – Qonic Team Can you provide an Example of your implementation of this?

The assumed workflow is to be linear and thus does not support branching at this point. This would be addressed in IFC5.

The following Stages have been proposed (Sematic Versioning TBD)
*V1 – Initial Implementations
*V1.1 – Work with Toolkits to Validate Header access as standard workflow
*V2 - Look to Define how to Transmit Partial Files along with Initial file.
The following Support items where proposed.
Common UX, Workflow and Terms
Official Icons

Terms;
Q3 – Do we think it’s appropriate to call the files “Partial IFCs”. And that this is a ChangeFile, ChangeSet, Delta etc?

1 Like

All,

Here is a demo of the proposed Delta Header info that I discussed above.

File Sequence

(The file is a zip file renamed to IFC so I could upload it here. Rename to Zip and extract the folder.

Delta Export Demo 1.ifc (7.6 MB)

For those interested the Revit Source Code is here. GitHub - HOKGroup/IFCDelta_Logger: IFC Exporter that Includes a SQLite Change Log