IFClite TypeScript API
    Preparing search index...

    Interface DuplicateOptions

    interface DuplicateOptions {
        exactThreshold?: number;
        exactTolerance?: number;
        exclusions?: ExclusionSet;
        iouThreshold?: number;
        positionTolerance?: number;
    }
    Index
    exactThreshold?: number

    Only meaningful in the legacy IoU mode selected by iouThreshold; use exactTolerance.

    exactTolerance?: number

    Distance (m) at/below which a same-shape pair is treated as an EXACT duplicate (severity major) rather than a candidate overlap (minor). Default 1 mm.

    exclusions?: ExclusionSet

    Pairs whose element keys are in here are skipped (voids/hosts/assemblies).

    iouThreshold?: number

    Superseded by positionTolerance. Minimum AABB intersection-over-union for a pair to count as overlapping. IoU is a ratio, so it imposed no fixed physical tolerance: for two equal boxes offset by d along an axis of extent e the IoU is (e − d) / (e + d), and the default 0.9 therefore allowed d ≤ e / 19 — 5 mm across a DN100 pipe but 421 mm across an 8 m slab, from one setting. Passing this (or exactThreshold) restores the pre-1.7 IoU matching gate — which pairs are reported, and the old settings.tolerance reading — rather than silently reinterpreting a number that means nothing in the new metric. It does NOT restore the whole pre-1.7 behaviour: severity is still decided by the area+volume shape signature (not the old triangle count), and self-pair identity is still (model, ref) (not key-based), so a file with duplicated GlobalIds reports pairs the old code hid.

    positionTolerance?: number

    How far apart (m) two elements may be and still count as the same object. This is the primary control and the number reported in ClashResult.settings.tolerance. It bounds boxDistance: for two equally-sized boxes that is exactly the distance between their centres, and a difference in size adds to it. Default 10 mm.

    It is an upper bound, not the whole gate. boxesTouch is applied first, and two copies stop touching once the offset exceeds the element's own extent on the offset axis, so the EFFECTIVE tolerance per axis is min(positionTolerance, extent on that axis). A 200 mm wall gets the full 10 mm on all three axes; a 2 mm plate gets 10 mm in its plane and 2 mm along its normal. That is deliberate — see boxesTouch for why clear air between two surfaces makes them two objects — and it is pinned by the "effective tolerance is min(positionTolerance, extent) per axis" test.