IFClite TypeScript API
    Preparing search index...

    Interface ApplyStyleResult

    What one batch did.

    A snapshot taken when the call returns, not a live view. Results from a single applyStylesInStore are reconciled against each other before they are handed back, so a batch whose work a later batch replaced reports that. A result from an earlier call cannot be: recolouring the same geometry in a second call removes the styled items the first call named, and that first result still names them. The file is correct either way; only the older return value goes stale.

    interface ApplyStyleResult {
        keptExistingItemIds: number[];
        productsWithoutGeometry: number[];
        replacedStyledItemIds: number[];
        styledItemIds: number[];
        surfaceStyleId: number | null;
    }
    Index
    keptExistingItemIds: number[]

    Representation items left alone because they already carried a style and replaceExisting was false. Empty otherwise.

    productsWithoutGeometry: number[]

    Products that reached no geometry: no representation, or an empty one.

    replacedStyledItemIds: number[]

    Pre-existing IfcStyledItem entities tombstoned to make room.

    Only the styled item is removed. The IfcSurfaceStyle it pointed at stays in the file, detached: a style can be shared with styled items this call never touched, so removing it is not safe in general, and an unreferenced style definition is valid IFC.

    Empty whenever replaceExisting is false, which is when keptExistingItemIds is the field carrying the answer.

    styledItemIds: number[]

    One IfcStyledItem per representation item that was styled.

    surfaceStyleId: number | null

    The IfcSurfaceStyle every item styled by this batch now points at, or null when the batch styled nothing.

    Null rather than an id because the style is only authored once there is something to attach it to. Emitting it up front left an orphan colour chain in the file for every batch that reached no geometry — and a caller colouring by IFC class hands in a batch per class, most of which (types, ports, spatial structure) have none.