@twinfinity/core
    Preparing search index...

    Class BimIfcLoaderElement

    Represents an IFC file and provides access to its data.

    Implements

    Index

    Properties

    classes: ModelProductClass[] = []

    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.

    floors: BimIfcBuildingStorey[] = []

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

    ifcHttpResource: BimChangeIfc
    ifcName: string

    The name of the IFC file this instance represents.

    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.

    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.

    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.

    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.

    Accessors

    • get geometricFeaturesUrl(): undefined | URL

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

      Returns undefined | URL

    • get geometryUrl(): undefined | URL

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

      Returns undefined | URL

    • get ifcUrl(): URL

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

      Returns URL

    • get indexUrl(): undefined | URL

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

      Returns undefined | URL

    • get propertiesUrl(): undefined | URL

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

      Returns undefined | URL

    • get wasmMemoryUsage(): {
          allocated: number;
          capacity: number;
          outputBuffers: number;
          used: number;
      }

      WASM memory usage in bytes.

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

    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.

      Parameters

      • clearCache: boolean = false

      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.