IFClite TypeScript API
    Preparing search index...

    Interface Clash

    interface Clash {
        a: ClashElementRef;
        b: ClashElementRef;
        bounds: AABB;
        depthFloor?: number;
        distance: number;
        distanceKind?: ClashDistanceKind;
        id: string;
        point: Vec3;
        rule: string;
        severity: ClashSeverity;
        status: ClashStatus;
    }
    Index
    bounds: AABB

    Overlap region (hard) or closest-segment box (clearance/touch).

    depthFloor?: number

    For a hard clash, the float32 noise floor of distance along the direction that depth was measured: the depth at or below which the engine would have classified the pair as touch (#5405). Derived from the elements' own coordinates on that axis and their sizes, never from their distance from the origin along other axes, so it does not change under a translation orthogonal to the depth. isTouching uses it for its default band (#5639).

    Set by the engine on every hard clash, absent on every other status. Optional so that a clash recorded before this field existed (or rehydrated from BCF/JSON without it) stays assignable; isTouching then falls back to its older coordinate-magnitude band.

    distance: number

    Signed: <0 penetration depth, >0 gap.

    distanceKind?: ClashDistanceKind

    Provenance of distance. The engine always sets it; it is optional only so that a clash rehydrated from a run recorded before this field existed stays assignable — absent means "unknown", never "measured".

    id: string

    Stable id: derived from the two durable keys + rule id.

    point: Vec3

    True contact point (hard) or closest-point midpoint (clearance/touch).

    rule: string
    severity: ClashSeverity
    status: ClashStatus