@twinfinity/core
    Preparing search index...

    Interface IBimIfcLoaderElement

    Represents an IFC file and provides access to its data.

    interface IBimIfcLoaderElement {
        classes: ModelProductClass[];
        discipline: Discipline;
        floors: BimIfcBuildingStorey[];
        geometricFeaturesUrl: undefined | URL;
        geometryFormat: GeometryFormat;
        geometryUrl: undefined | URL;
        hasBatchSupport: boolean;
        ifc: BimChangeIfc;
        ifcName: string;
        ifcProductsWithGeometryCount: number;
        ifcUrl: URL;
        index: BimIfcIndex;
        indexUrl: undefined | URL;
        loader: BimIfcLoaderElementParent;
        loadOptions?: BimApiIfcObjectsLoadOptions;
        materials: Materials;
        meshCount: number;
        numberOfIndices: number;
        numberOfTriangles: number;
        numberOfVertices: number;
        products: BimIfcObject[];
        project: BimIfcObject;
        propertiesUrl: undefined | URL;
        spaces: BimIfcSpace[];
        styles: BimIfcStyle[];
        transform?: Matrix;
        transformsRepository: BimTransformsRepository;
        typeObjectRepository: BimTypeObjectRepository;
        wasmMemoryUsage: {
            allocated: number;
            capacity: number;
            outputBuffers: number;
            used: number;
        };
        ensureVertexDataLoaded(): Promise<boolean>;
        getVertexData(
            productMeshDescriptor: BimProductMeshDescriptor,
        ): BimVertexData;
        loadPropertySets(): Promise<boolean>;
        tryCreateOrExtendAABBFromRegions(
            min: Vector3,
            max: Vector3,
            o?: { onlyMostPopulatedRegions?: boolean },
        ): boolean;
        writeBatch(
            meshes: BimProductMesh[],
            destination: GeometryArrays,
            offset: GeometryArrayOffset,
        ): undefined | WriteBatchResult;
        writeVertexData(
            ifcProductMesh: BimProductMesh,
            transform: FastTransform,
            destination: GeometryArrays,
            offset: GeometryArrayOffset,
            aabb: { max: Vector3; min: Vector3 },
            options: { includeNormals?: boolean },
        ): { indexCount: number; vertexCount: number };
    }

    Implemented by

    Index

    Properties

    All BimIfcClass instances referenced by BimProduct's in the IFC file this instance represents.

    discipline: Discipline

    The discipline of the IFC file this instance represents.

    All IfcBuildingStorey (BimIfcBuildingStorey) instances in the IFC file this instance represents.

    geometricFeaturesUrl: undefined | URL

    Url where the IFC geometric features file (.geom-feature file) will be retrieved from.

    geometryFormat: GeometryFormat

    The format that the geometry is stored in.

    geometryUrl: undefined | URL

    Url where the IFC geometry (.geom file) will be retrieved from.

    hasBatchSupport: boolean

    Whether batch vertex data writing is supported via WASM.

    The IFC change (file) this instance represents.

    ifcName: string

    The name of the IFC file this instance represents.

    ifcProductsWithGeometryCount: number

    The total number of BimProductMesh instances in the IFC file this instance represents. Same as meshCount.

    ifcUrl: URL

    The url where the contents of the IFC file can be retrieved from.

    The IFC index (.idx file) of the IFC file this instance represents. This describes (in a very raw format) the content of the IFC file. It does not include any geometry or property sets.

    indexUrl: undefined | URL

    Url where the IFC index (.idx file) will be retrieved from.

    The loader this instance belongs to.

    The BimApiIfcObjectsLoadOptions options (if any) that was used when this instance was created.

    materials: Materials

    Reference to a Materials instance.

    meshCount: number

    The total number of BimProductMesh instances in the IFC file this instance represents. Same as ifcProductsWithGeometryCount.

    numberOfIndices: number

    The total number of indices contained in all instances of BimProductMesh in this IFC file.

    numberOfTriangles: number

    The total number of triangles contained in all instances of BimProductMesh in this IFC file.

    numberOfVertices: number

    The total number of vertices contained in all instances of BimProductMesh in this IFC file.

    products: BimIfcObject[]

    All IFC products in the IFC file this instance represents. Here represented as a flat list.

    project: BimIfcObject

    The IfcProject instance of the IFC file this instance represents.

    propertiesUrl: undefined | URL

    Url where the IFC property set (.prop file) will be retrieved from.

    spaces: BimIfcSpace[]

    All IfcSpace (BimIfcSpace) instances in the IFC file this instance represents.

    styles: BimIfcStyle[]

    All IFC styles that the BimProductMesh instances in the IFC file refers to. The styles are used to color the meshes.

    transform?: Matrix

    An optional transform for the IFC file. This transform will be applied to all IFC product geometries

    transformsRepository: BimTransformsRepository

    Reference to the transform repository this instance uses when transforming IFC product geometries.

    typeObjectRepository: BimTypeObjectRepository

    Reference to the type object repository this instance uses for type properties.

    wasmMemoryUsage: {
        allocated: number;
        capacity: number;
        outputBuffers: number;
        used: number;
    }

    WASM memory usage in bytes.

    Methods

    • Ensures that the vertex data is loaded.

      Returns Promise<boolean>

      A promise that resolves to a boolean. See it as a signal. I will be true if the call actualy loaded the data. Otherwhise it will be false (data loading is either in progress or has completed).

    • Loads the property sets and assigns them to the IFC products contained within this instance.

      Returns Promise<boolean>

      A promise that resolves to a boolean indicating whether the property set was loaded

    • Calculates, or extends a existing, axis-aligned bounding box (AABB) of the regions in the IFC file this instance represents. The provided min, and max values will be updated to contain the min and max values of the AABB.

      Parameters

      • min: Vector3

        Will be set to min vector of the AABB after call. If not part of existing AABB it must be set to (Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE)

      • max: Vector3

        Will be set to max vector of the AABB after call. If not part of existing AABB it must be set to (Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE)

      • Optionalo: { onlyMostPopulatedRegions?: boolean }

        Optional. Options object. If onlyMostPopulatedRegions is set to true then only the most populated regions will be considered.

      Returns boolean

      true if a valid AABB was calculated. Otherwise false. If false is returned then the min and max values will not be updated.

      // Example of how to calculate a AABB that encompasses the most populated regions of two IFC files.
      const min = setMax(Vector3.Zero());
      const max = setMin(Vector3.Zero());
      // min and max will now contain the min and max values of the AABB encompassing the mostly populated region in loaderElementA.
      loaderElementA.tryCreateOrExtendAABBFromRegions(min, max, { onlyMostPopulatedRegions: true});
      // min and max will now contain the min and max values of the AABB that encompasses both loaderElementA and loaderElementB.
      loaderElementB.tryCreateOrExtendAABBFromRegions(min, max, { onlyMostPopulatedRegions: true});
    • Writes the vertex data to the specified destination.

      Parameters

      • ifcProductMesh: BimProductMesh

        The IFC product mesh.

      • transform: FastTransform

        The transformation matrix.

      • destination: GeometryArrays

        The destination geometry arrays.

      • offset: GeometryArrayOffset

        The offset in the geometry arrays.

      • aabb: { max: Vector3; min: Vector3 }

        The axis-aligned bounding box.

      • options: { includeNormals?: boolean }

      Returns { indexCount: number; vertexCount: number }

      The actual vertex and index counts written.