IFClite TypeScript API
    Preparing search index...

    Interface StepExportOptions

    Options for STEP export

    interface StepExportOptions {
        application?: string;
        applyMutations?: boolean;
        author?: string;
        authorization?: string;
        deltaOnly?: boolean;
        description?: string;
        filename?: string;
        georefMutations?: {
            mapConversion?: Partial<MapConversion>;
            projectedCRS?: Partial<ProjectedCRS>;
        };
        guidRandom?: RandomSource;
        hiddenEntityIds?: Set<number>;
        includeGeometry?: boolean;
        includeProperties?: boolean;
        includeQuantities?: boolean;
        includeRelationships?: boolean;
        isolatedEntityIds?: Set<number> | null;
        normalizeMapGeometry?: boolean;
        normalizeMapUnitsToMetres?: boolean;
        normalizeVerticalDatumToEgm2008?: boolean;
        onProgress?: (progress: StepExportProgress) => void;
        organization?: string;
        originatingSystem?: string;
        schema: "IFC2X3" | "IFC4" | "IFC4X3" | "IFC5";
        subsetEntityIds?: ReadonlySet<number>;
        subsetIdentifyingTypes?: ReadonlySet<string>;
        timeStamp?: string;
        visibleOnly?: boolean;
    }

    Hierarchy

    • StepCoordinateNormalizationOptions
    • StepGeoreferencingOptions
      • StepExportOptions
    Index
    application?: string

    Application name (defaults to 'ifc-lite')

    applyMutations?: boolean

    Apply mutations from MutablePropertyView (default: true if provided)

    author?: string

    Author name

    authorization?: string

    FILE_NAME authorization slot override. Omitted = the source header's own authorization token, unchanged (see buildStepHeader); there was no caller-facing way to override or blank it before this (#2934, part of the anonymized-export header scrub — an unblanked authorization line would leak whatever the source file's steward wrote there).

    deltaOnly?: boolean

    Only export entities with mutations (delta export)

    description?: string

    File description

    filename?: string

    Output filename

    georefMutations?: {
        mapConversion?: Partial<MapConversion>;
        projectedCRS?: Partial<ProjectedCRS>;
    }

    Georeferencing mutations to apply (IfcProjectedCRS / IfcMapConversion edits)

    guidRandom?: RandomSource

    Seeded randomness for the GlobalIds this exporter SYNTHESIZES: the IfcPropertySet / IfcElementQuantity roots regenerated for mutated (or overlay-created) property and quantity sets, their IfcRelDefinesByProperties links. Without it those come from the platform CSPRNG, so two exports of the same model differ in exactly those bytes - which breaks byte-reproducibility for in-store builds that call addPropertySet / addQuantitySet (the sets themselves live in the mutation overlay and only become IFC roots here). Pass the same seeded source used for SpatialAnchor.guidRandom to close that gap. Default (omitted) behaviour for THESE ids is unchanged: random.

    NOT the IFCPROXY placeholders any more (#2733). Those used to be minted from this source too, so an omitted guidRandom made every downgraded IFC4X3 entity differ on re-export. They are now derived from the source line when this is omitted, and only fall back to this source when it is supplied - so passing a seeded source still pins them, but NOT passing one no longer makes them random. See convertStepLine.

    hiddenEntityIds?: Set<number>

    Hidden entity IDs (local expressIds) — required when visibleOnly is true

    includeGeometry?: boolean

    Include original geometry entities (default: true)

    includeProperties?: boolean

    Include property sets (default: true)

    includeQuantities?: boolean

    Include quantity sets (default: true)

    includeRelationships?: boolean

    Include relationships (default: true)

    isolatedEntityIds?: Set<number> | null

    Isolated entity IDs (local expressIds, null = no isolation active)

    normalizeMapGeometry?: boolean

    Canonical Rust compatibility export, requiring exportAsync and a metre MapUnit. Uniform map rotation/scale moves into logical placements and mapped Body geometry; project/property units remain authored. Unsupported coordinate consumers produce atomic warnings; upload must refuse these. Default: preserve. Requires full geometry in the unchanged source schema.

    normalizeMapUnitsToMetres?: boolean

    Normalize emitted IfcProjectedCRS map units to metres, preserving the complete map transformation and all project geometry/units. Default false. Unsupported or ambiguous units/operations are preserved with warnings. Requires a full export to the source STEP schema (not deltaOnly).

    normalizeVerticalDatumToEgm2008?: boolean

    Write recognized EVRS2007 or EGM2008 IfcProjectedCRS.VerticalDatum names as 'EPSG:3855' (EGM2008 height), the geoid Cesium ion applies. Explicit EPSG codes, ellipsoidal names and unrecognized datum text are preserved; heights are never rewritten. Default false. Requires a full export to the source schema.

    onProgress?: (progress: StepExportProgress) => void

    Progress callback for async export

    organization?: string

    Organization name

    originatingSystem?: string

    FILE_NAME originating_system slot override. Omitted = the source header's own value, unchanged. The anonymized export blanks it: a vendor build string like <tool> 26.0.0 NOR FULL encodes the licence region.

    schema: "IFC2X3" | "IFC4" | "IFC4X3" | "IFC5"

    IFC schema version for the output file (any version, will convert if needed)

    subsetEntityIds?: ReadonlySet<number>

    Export exactly these IfcRoot-derived entities plus infrastructure and their forward closure; every other IfcRoot entity (and each IDENTIFYING_TYPES entity — postal/telecom address, georeferencing) is excluded and stripped from relationship lines by the same dangling-ref protection visibleOnly gets (evaluateOmissionPredicates + filterHiddenRefsFromRelationshipLine, both driven off pass.allowedEntityIds/hiddenProductIds). Mutually exclusive with visibleOnly — collectModifications throws if both are set. The seed set for the anonymized-subset export (#2934); see subset-roots.ts's getSubsetEntityIds.

    subsetIdentifyingTypes?: ReadonlySet<string>

    Which identifying classes the subset closure excludes. Defaults to all of IDENTIFYING_TYPES. The anonymize path narrows it when the caller asked to KEEP georeferencing and addresses: dropping them anyway left an IfcSite.SiteAddress pointing at a line that was never written (#3351).

    timeStamp?: string

    Pin the STEP header FILE_NAME timestamp (STEP format, e.g. 20240101T000000). Omitted = the wall clock, as before. Required for genuinely byte-identical exports, since the header otherwise carries the export instant.

    visibleOnly?: boolean

    Only export entities currently visible in the viewer