import { ConwayGeometry, GeometryObject, ParamsAxis2Placement3D, Vector3, CurveObject, ParamsGetIfcTrimmedCurve, SurfaceObject, StdVector, ParamsAxis1Placement3D, BSplineSurface, TrimmingArguments, NativeTransform4x4, NativeTransform3x3, FlattenedPointsResult } from "../../dependencies/conway-geom/index.js"; import { ColorRGBA } from "../core/canonical_material.js"; import { CanonicalMesh } from "../core/canonical_mesh.js"; import { CanonicalProfile } from "../core/canonical_profile.js"; import { NativeULongVector, NativeUintVector, NativeVectorBound3D, NativeVectorGeometry, NativeVectorGeometryCollection, NativeVectorGlmVec2, NativeVectorGlmVec3, NativeVectorIndexedPolygonalFace, NativeVectorProfile, NativeVectorSegment, WasmModule } from "../core/native_types.js"; import { ExtractResult } from "../core/shared_constants.js"; import { IfcAxis2Placement2D, IfcAxis2Placement3D, IfcBooleanResult, IfcCartesianTransformationOperator3D, IfcCircleProfileDef, IfcColourRgb, IfcDirection, IfcExtrudedAreaSolid, IfcIndexedPolyCurve, IfcMappedItem, IfcNormalisedRatioMeasure, IfcObjectPlacement, IfcPolygonalFaceSet, IfcProduct, IfcProfileDef, IfcRepresentationItem, IfcSpecularExponent, IfcSpecularRoughness, IfcStyledItem, IfcSurfaceStyle, IfcBooleanClippingResult, IfcCompositeCurve, IfcPolyline, IfcTrimmedCurve, IfcCartesianPoint, IfcCurve, IfcCircle, IfcHalfSpaceSolid, IfcPlane, IfcShellBasedSurfaceModel, IfcFace, IfcFacetedBrep, IfcMaterialList, IfcMaterialLayerSetUsage, IfcMaterial, IfcRectangleProfileDef, IfcMaterialProfileSet, IfcMaterialConstituentSet, IfcMaterialConstituent, IfcMaterialProfile, IfcSIPrefix, IfcFaceBasedSurfaceModel, IfcConnectedFaceSet, IfcAdvancedBrep, IfcAdvancedFace, IfcBSplineCurve, IfcBSplineSurface, IfcBSplineSurfaceWithKnots, IfcRationalBSplineSurfaceWithKnots, IfcCylindricalSurface, IfcSurfaceOfRevolution, IfcSurfaceOfLinearExtrusion, IfcAxis1Placement, IfcRectangleHollowProfileDef, IfcEllipseProfileDef, IfcCircleHollowProfileDef, IfcIShapeProfileDef, IfcUShapeProfileDef, IfcCartesianTransformationOperator2D, IfcCartesianTransformationOperator2DnonUniform, IfcLShapeProfileDef, IfcCShapeProfileDef, IfcTShapeProfileDef, IfcZShapeProfileDef, IfcPolygonalBoundedHalfSpace, IfcSurface, IfcLine, IfcEllipse, IfcMaterialLayerSet, IfcSweptDiskSolid, IfcBlock, IfcCsgPrimitive3D, IfcSolidModel, IfcTessellatedFaceSet, IfcMaterialProfileSetUsage, IfcRevolvedAreaSolid, IfcFaceSurface } from "./ifc4_gen/index.js"; import { IfcMaterialCache } from "./ifc_material_cache.js"; import { IfcSceneBuilder } from "./ifc_scene_builder.js"; import IfcStepModel from "./ifc_step_model.js"; import IfcModelCurves from "./ifc_model_curves.js"; import { CsgMemoization } from "../core/csg_operations.js"; /** * Extract a specular highlight, converting specular exponents to a roughness value. * * @param from The scalar of either an exponent or a roughness to extract. * @return {number} A roughness value 1 (roughest) to zero (full specular/mirror). */ export declare function extractSpecularHighlight(from: IfcSpecularExponent | IfcSpecularRoughness | null): number | undefined; /** * Extract an IFC Colour into our RGBA color, using premultiplied alpha. * * Transparency is usually handled via pre-multiplied alpha, and this is what * gltf (for example) expects. * * @param from The color to extract. * @param alpha The alpha value to be associated with the colour. * @return {ColorRGBA} The created colour. */ export declare function extractColorRGBPremultiplied(from: IfcColourRgb, alpha?: number): ColorRGBA; /** * Extract an IFC Colour into our RGBA color. * * @param from The color to extract. * @param alpha The alpha value to be associated with the colour. * @return {ColorRGBA} The created colour. */ export declare function extractColorRGB(from: IfcColourRgb, alpha?: number): ColorRGBA; /** * Use to extract a color or a factor from a color/factor select. * * @param from The color or factor to extract this from. * @param surfaceColor The surface color (if this is a factor), which will be used to * create the factor. * @param alpha The alpha to use for this. * @return {ColorRGBA} */ export declare function extractColorOrFactor(from: IfcColourRgb | IfcNormalisedRatioMeasure, surfaceColor: ColorRGBA, alpha?: number): ColorRGBA; /** * Use to extract a color or a factor from a color/factor select. * * @param from The color or factor to extract this from. * @param surfaceColor The surface color (if this is a factor), which will be used to * create the factor. * @param alpha The alpha to use for this. * @return {ColorRGBA} */ export declare function extractColorOrFactorMultiply(from: IfcColourRgb | IfcNormalisedRatioMeasure, surfaceColor: ColorRGBA, alpha?: number): ColorRGBA; /** * Handles Geometry data extraction from a populated IfcStepModel * Can export to OBJ, GLTF (Draco), GLB (Draco) */ export declare class IfcGeometryExtraction { private readonly conwayModel; readonly model: IfcStepModel; private readonly limitCSGDepth; private readonly csgDepthLimit; private readonly lowMemoryMode; private readonly TWO_DIMENSIONS; private readonly THREE_DIMENSIONS; private wasmModule; readonly scene: IfcSceneBuilder; readonly voidScene: IfcSceneBuilder; readonly materials: IfcMaterialCache; readonly voidMaterials: IfcMaterialCache; private readonly relVoidsMap; readonly curves: IfcModelCurves; readonly csgOperations: CsgMemoization; private readonly productToVoidGeometryMap; private linearScalingFactor; private ifcProjectName; private circleSegments; private paramsGetBooleanResultPool; private paramsTransformProfilePool; private paramsGetTriangulatedFaceSetPool; private paramsGetPolyCurvePool; pointBuffer: FlattenedPointsResult | null; private identity2DNativeMatrix; private identity3DNativeMatrix; private csgMemoization; private csgDepth; /** * Construct a geometry extraction from an IFC step model and conway model * * @param conwayModel The ConwayGeometry instance to use for geometry operations. * @param model The IfcStepModel instance representing the IFC model. * @param limitCSGDepth Whether to limit the depth of CSG operations. * @param csgDepthLimit The maximum depth for CSG operations when limit CSG depth is used, * or the maximum level for CSG memoization if it is not. * @param lowMemoryMode Whether to enable low memory mode for geometry extraction. */ constructor(conwayModel: ConwayGeometry, model: IfcStepModel, limitCSGDepth?: boolean, csgDepthLimit?: number, lowMemoryMode?: boolean); /** * Initializes memory pools for various parameter objects. */ initializeMemoryPools(): void; /** * Creates a memory pool for `ParamsGetPolyCurve` objects if it does not exist. */ createParamsGetPolyCurvePool(): void; /** * Creates a memory pool for `ParamsGetTriangulatedFaceSet` objects if it does not exist. */ createParamsGetTriangulatedFaceSetPool(): void; /** * Creates a memory pool for `ParamsTransformProfile` objects if it does not exist. */ createParamsTransformProfilePool(): void; /** * Creates a memory pool for `ParamsGetBooleanResult` objects if it does not exist. */ createParamsGetBooleanResultPool(): void; /** * * @return {number} linear matrix scaling factor for geometry */ getLinearScalingFactor(): number; /** * * @return {string | null} - Ifc Project Name or null */ getIfcProjectName(): string | null; /** * * @return {WasmModule} - A handle to the loaded wasm module */ getWasmModule(): WasmModule; /** * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorGeometry} - a native std::vector from the wasm module */ nativeVectorGeometry(initialSize?: number): StdVector; /** * Create a native vector of geometry collections. * * @return {NativeVectorGeometryCollection} A newly initialised native * vector of geometry collections */ nativeVectorGeometryCollection(): NativeVectorGeometryCollection; /** * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorGlmVec2} - a native std::vector from the wasm module */ nativeVectorGlmVec2(initialSize?: number): NativeVectorGlmVec2; /** * Create a native vector profile to pass across the boundary. * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorProfile} - a native std::vector from the wasm module */ nativeVectorProfile(initialSize?: number): NativeVectorProfile; /** * Create a native version of a vector curve to parse across the boundary. * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorCurve} - a native std::vector from the wasm module */ nativeVectorCurve(initialSize?: number): StdVector; /** * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorGlmVec3} - a native std::vector from the wasm module */ nativeVectorGlmVec3(initialSize?: number): NativeVectorGlmVec3; /** * * @return {StdVector} - a native std::vector from the wasm module */ nativeVectorVectorGlmdVec3(): StdVector; /** * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorGlmVec3} - a native std::vector from the wasm module */ nativeVectorGlmdVec3(initialSize?: number): NativeVectorGlmVec3; /** * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorGlmVec3} - a native std::vector from the wasm module */ nativeVectorGlmdVec2(initialSize?: number): NativeVectorGlmVec2; /** * Create a native 32bit uint vector. * * @param initialSize number - initial size of the vector (optional) * @return {NativeUintVector} - a native std::vector from the wasm module */ nativeUintVector(initialSize?: number): NativeUintVector; /** * Create a native 32bit size_t vector. * * @param initialSize number - initial size of the vector (optional) * @return {NativeULongVector} - a native std::vector from the wasm module */ nativeULongVector(initialSize?: number): NativeULongVector; private readonly freeVectorPolygonalFaces_; /** * Drop and delete all the indexed polygonal face vectors. */ dropAllNativeIndexedPolygonalFaceVector(): void; /** * Free the native indexed polygon face. * * @param nativeVectorIndexedPolygonalFace The native item to free. */ freeNativeIndexedPolygonalFaceVector(nativeVectorIndexedPolygonalFace: NativeVectorIndexedPolygonalFace): void; /** * Create a native vector of indexed polygonal faces uint vector. * * @param initialSize number - initial size of the vector (optional) * @return {NativeVectorIndexedPolygonalFace} - a native object from the wasm module */ nativeIndexedPolygonalFaceVector(initialSize?: number): NativeVectorIndexedPolygonalFace; /** * Create a native vector of segments. * * @param initialize number - initial size of the vector (optional) * @return {NativeVectorSegment} - a native object from the wasm module */ nativeSegmentVector(initialize?: number): NativeVectorSegment; /** * * @param initializeSize * @return {NativeVectorBound3D} */ nativeBound3DVector(initializeSize?: number): NativeVectorBound3D; /** * Has the wasm module been initialised? * * @return {boolean} indicating if the wasm module has been initialized */ isInitialized(): boolean; /** * Destroy geometry processor and deinitialize * * @param modelId */ destroy(modelId?: number): void; /** * * @param arr - a 2D number array * @return {number} - total length of all 2D array elements */ private getTotalLength; /** * * @param indices * @return {NativeUintVector} */ private createAndPopulateNativeIndices; /** * Create and populate a list of native profiles from an array of canonical profiles. * * @param profiles The profiles to convert to native profiles. * @return {NativeVectorProfile} The populated native profiles. */ private createAndPopulateNativeProfiles; /** * * @param entity - the IfcTriangulatedFaceSet from the data model * @param temporary - is this geometry temporary? * @param isRelVoid - is this geometry a relvoid? */ private extractTriangulatedFaceSet; /** * @param entity * @param temporary * @param isRelVoid * @return {ExtractResult} */ private extractPolygonalFaceSet; /** * @param array * @return {number} Pointer/memory address */ arrayToWasmHeap(array: Float32Array | Float64Array | Uint32Array): any; /** * @param array * @return {Uint8Array} */ arrayToSharedHeap(array: Float64Array | Float32Array | Uint32Array): Uint8Array; /** * * @param entities - IfcPolygonalFaceSet array * @param modelId - the modelId * @return {ExtractResult} - Extraction status result */ private extractPolygonalFaceSets; /** * Extract a 3D direction vector from an IFC direction. * * @param from The IFC direction to extract the vector from. * @return {Vector3 | undefined} The vector, or undefined if it can't be extracted. */ static extractDirection(from: IfcDirection | null): Vector3 | undefined; /** * Extract an IFC 3D cartesian transform operator as a transform matrix. * * @param from The IFC cartesian transform to extract from. * @return {any} The internal matrix type extract. */ extractCartesianTransformOperator3D(from: IfcCartesianTransformationOperator3D): any; /** * Drop geometry that isn't in the scene. * * @param localID The id of the mesh to drop. */ dropNonSceneGeometry(localID: number): void; getOperandGeometry(from: IfcBooleanResult | IfcCsgPrimitive3D | IfcHalfSpaceSolid | IfcSolidModel | IfcTessellatedFaceSet, isSecondOperand: boolean, isRelVoid?: boolean, representationItem?: IfcRepresentationItem): CanonicalMesh | undefined; getFirstBooleanOperandGeometry(from: IfcBooleanResult, isRelVoid?: boolean, representationItem?: IfcRepresentationItem): CanonicalMesh | undefined; getSecondBooleanOperandGeometry(from: IfcBooleanResult, isRelVoid?: boolean): CanonicalMesh | undefined; /** * Accepts IfcBooleanResult and IfcBooleanClippingResult * * @param from * @param isRelVoid */ extractBooleanResult(from: IfcBooleanResult | IfcBooleanClippingResult, isRelVoid?: boolean): void; /** * Extract a boolean operand from a boolean result. * * @param from The operand to extract. * @param isRelVoid * @param representationItem * @param isSecondOperand * @return {void} */ extractBooleanOperand(from: IfcExtrudedAreaSolid | IfcPolygonalFaceSet | IfcBooleanResult | IfcHalfSpaceSolid | IfcBooleanClippingResult | IfcFacetedBrep | IfcBlock, isRelVoid?: boolean, representationItem?: IfcRepresentationItem, isSecondOperand?: boolean): void; /** * Extract a canonical material from a surface style. * * @param from The surface style to extract a material from. */ extractSurfaceStyle(from: IfcSurfaceStyle): void; /** * Extract a style item. * * @param from The styled item to extract from * @param representationItem * @param mappedItem * @return {number | undefined} */ extractStyledItem(from: IfcStyledItem, representationItem?: IfcRepresentationItem, mappedItem?: IfcMappedItem): number | undefined; /** * * @param from ifc type to extract * @param temporary is geometry temporary * @param isRelVoid is it a relative void */ extractSweptDiskSolid(from: IfcSweptDiskSolid, temporary?: boolean, isRelVoid?: boolean): void; /** * * @param from * @param temporary * @param isRelVoid */ extractHalfspaceSolid(from: IfcHalfSpaceSolid, temporary?: boolean, isRelVoid?: boolean): void; /** * Extract geometry for an IfcBlock primitive by constructing a rectangular * extruded solid. * * @param from The IfcBlock instance to extract. * @param temporary Whether the geometry is temporary. * @param isRelVoid Is the geometry part of a relative void subtraction? */ extractBlock(from: IfcBlock, temporary?: boolean, isRelVoid?: boolean): void; /** * * @param from * @param temporary * @param isRelVoid */ extractPolygonalBoundedHalfSpace(from: IfcPolygonalBoundedHalfSpace, temporary?: boolean, isRelVoid?: boolean): void; /** * * @param from * @param temporary * @param isRelVoid */ extractRevolvedAreaSolid(from: IfcRevolvedAreaSolid, temporary?: boolean, isRelVoid?: boolean): void; /** * * @param from * @param temporary * @param isRelVoid */ extractExtrudedAreaSolid(from: IfcExtrudedAreaSolid, temporary?: boolean, isRelVoid?: boolean): void; /** * Extract a canonical profile from a profile definition. * * @param from The profile definition to extract from. * @return {CanonicalProfile | undefined} The extracted profile, * or undefined if one cannot be extracted. */ extractProfile(from: IfcProfileDef): CanonicalProfile | undefined; /** * Extracts a C-shape curve from an IFC C-shape profile definition. * * @param from The IFC C-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the C-shape curve, * or undefined if not extractable. */ extractCShapeCurve(from: IfcCShapeProfileDef): CurveObject | undefined; /** * Extracts an I-shape curve from an IFC I-shape profile definition. * * @param from The IFC I-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the I-shape curve, * or undefined if not extractable. */ extractIShapeCurve(from: IfcIShapeProfileDef): CurveObject | undefined; /** * Extracts an L-shape curve from an IFC L-shape profile definition. * * @param from The IFC L-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the L-shape curve, * or undefined if not extractable. */ extractLShapeCurve(from: IfcLShapeProfileDef): CurveObject | undefined; /** * Extracts a T-shape curve from an IFC T-shape profile definition. * * @param from The IFC T-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the T-shape curve, * or undefined if not extractable. */ extractTShapeCurve(from: IfcTShapeProfileDef): CurveObject | undefined; /** * Extracts a U-shape curve from an IFC U-shape profile definition. * * @param from The IFC U-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the U-shape curve, * or undefined if not extractable. */ extractUShapeCurve(from: IfcUShapeProfileDef): CurveObject | undefined; /** * Extracts a Z-shape curve from an IFC Z-shape profile definition. * * @param from The IFC Z-shape profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the Z-shape curve, * or undefined if not extractable. */ extractZShapeCurve(from: IfcZShapeProfileDef): CurveObject | undefined; /** * * @param from * @param parentSense * @param close * @return {CurveObject | undefined} */ extractCompositeCurve(from: IfcCompositeCurve, parentSense?: boolean, close?: boolean): CurveObject | undefined; /** * * @param from * @param parentSense * @param isEdge * @param trimmingArguments * @return {CurveObject | undefined} */ extractCurve(from: IfcCurve, parentSense?: boolean, isEdge?: boolean, trimmingArguments?: TrimmingArguments | undefined): CurveObject | undefined; /** * Exctact a BSpline Curve * * @param from The bspline curve, potentially with knots/rational. * @param parentSense * @param isEdge * @param parametersTrimmedCurve * @return {CurveObject} The constructed curve object. */ extractBSplineCurve(from: IfcBSplineCurve, parentSense?: boolean, isEdge?: boolean, parametersTrimmedCurve?: ParamsGetIfcTrimmedCurve): CurveObject; /** * Extract a IfcLine curve * * @param from - IfcLine * @param parentSense - sense agreement * @param isEdge - is curve an edge curve * @param parametersTrimmedCurve - trimmed curve parameters * @return {CurveObject} The constructed curve object. */ extractIfcLine(from: IfcLine, parentSense?: boolean, isEdge?: boolean, parametersTrimmedCurve?: ParamsGetIfcTrimmedCurve): CurveObject | undefined; /** * * @param from * @param isEdge * @param parentSense * @param parametersTrimmedCurve * @return {CurveObject | undefined} */ extractIfcCircle(from: IfcCircle, isEdge?: boolean, parentSense?: boolean, parametersTrimmedCurve?: ParamsGetIfcTrimmedCurve): CurveObject | undefined; /** * * @param from * @param isEdge * @param parentSense * @param parametersTrimmedCurve * @return {CurveObject | undefined} */ extractIfcEllipse(from: IfcEllipse, isEdge?: boolean, parentSense?: boolean, parametersTrimmedCurve?: ParamsGetIfcTrimmedCurve): CurveObject | undefined; /** * * @param from * @param parentSense * @param isEdge * @return {CurveObject | undefined} */ extractIfcTrimmedCurve(from: IfcTrimmedCurve, parentSense?: boolean, isEdge?: boolean): CurveObject | undefined; /** * Efficiently flatten the points into a Float32Array * * @param points - Array of IfcCartesianPoint * @param dimensions - dimensions of points * @return {Float32Array} */ flattenPointsToFloat64Array(points: IfcCartesianPoint[], dimensions: number): Float64Array; /** * Efficiently flatten the points into a Float64Array while skipping * consecutive points with the same localID. * * @param points - Array of IfcCartesianPoint * @param dimensions - Number of coordinates per point (e.g. 3 for x,y,z) * @return {Float64Array} */ flattenCartesianPointsToFloat64ArrayFiltered(points: IfcCartesianPoint[], dimensions: number): Float64Array; /** * Flatten the points into WASM memory (skipping consecutive duplicates). * Reuses an existing WASM buffer if provided and large enough. * * @param points - Array of IfcCartesianPoint * @param dimensions - Number of coordinates per point (e.g. 3 for x,y,z) * @param existingPtr - (Optional) Pointer to an existing WASM buffer * @param existingCapacity - (Optional) Capacity of that buffer in Float64 elements * @return {FlattenedPointsResult} pointer, length used, total capacity */ flattenCartesianPointsToWasmFiltered(points: IfcCartesianPoint[], dimensions: number, existingPtr?: number, existingCapacity?: number): FlattenedPointsResult; /** * * @param from * @param parentSense * @param isEdge * @return {CurveObject | undefined } */ extractIfcPolyline(from: IfcPolyline, parentSense?: boolean, isEdge?: boolean): CurveObject | undefined; /** * * @param from * @return {CurveObject | undefined} */ extractRectangleCurve(from: IfcRectangleProfileDef | IfcRectangleHollowProfileDef): CurveObject | undefined; /** * * @param from * @return {CurveObject | undefined} */ extractRectangleHollowHoleCurve(from: IfcRectangleHollowProfileDef): CurveObject | undefined; /** * Extract a curve object from a circle profile. * * @param from The circle definition to extract from. * @return {CurveObject | undefined} The extracted circle curve, * or undefined if one cannot be extracted. */ extractCircleCurve(from: IfcCircleProfileDef): CurveObject | undefined; /** * Extracts the curve for a circle with a hollow hole from an * IFC circle hollow profile definition. * * @param from The IFC circle hollow profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the hollow circle curve. */ extractCircleHollowHoleCurve(from: IfcCircleHollowProfileDef): CurveObject; /** * Extracts the curve for an ellipse from an IFC ellipse profile definition. * * @param from The IFC ellipse profile definition to extract the curve from. * @return {CurveObject} A CurveObject representing the ellipse curve, * or undefined if not extractable. */ extractEllipseProfileCurve(from: IfcEllipseProfileDef): CurveObject | undefined; /** * Extract an indexed poly curve and turn it into a curve object. * * @param from - IfcIndexedPolyCurve to process * @return {CurveObject | undefined} The extracted curve or undefined if it * can't be extracted. */ extractIndexedPolyCurve(from: IfcIndexedPolyCurve): CurveObject | undefined; /** * Extract a mapped item to add its transform to instance an item. * * @param from The mapped item to extract. * @param owningElement * @param isRelVoid * @param isSpace * @param parents */ extractMappedItem(from: IfcMappedItem, owningElement: IfcProduct, isRelVoid?: boolean, isSpace?: boolean, parents?: IfcMappedItem[] | undefined): void; /** * Extract a representation item, including its geometry if necessary, * adding it to the current scene walk. * * Note - memoized result for instancing. * * @param from The representation to extract from. * @param owningElementLocalID * @param isRelVoid * @param isSpace * @param isMappedItem */ extractRepresentationItem(from: IfcRepresentationItem, owningElementLocalID?: number, isRelVoid?: boolean, isSpace?: boolean, isMappedItem?: boolean): void; /** * Extract an advanced b-rep (NURBS) * * @param from The brep to extract * @param isRelVoid Is this b-rep a relative void? */ extractIfcAdvancedBrep(from: IfcAdvancedBrep, isRelVoid: boolean): void; /** * * @param from array of IfcConnectedFaceSet * @param parentLocalID parent element local ID * @param isRelVoid is from a relative void (default false) */ extractConnectedFaceSets(from: IfcConnectedFaceSet[], parentLocalID: number, isRelVoid?: boolean): void; /** * * @param from * @param isRelVoid */ extractIfcFaceBasedSurfaceModel(from: IfcFaceBasedSurfaceModel, isRelVoid?: boolean): void; /** * * @param from * @param temporary * @param isRelVoid */ extractIfcFacetedBrep(from: IfcFacetedBrep, temporary?: boolean, isRelVoid?: boolean): void; /** * * @param from * @param owningElementLocalID * @param isRelVoid * @param isSpace */ extractIfcShellBasedSurfaceModel(from: IfcShellBasedSurfaceModel, owningElementLocalID?: number, isRelVoid?: boolean, isSpace?: boolean): void; /** * * @param from * @param parentLocalID * @param geometry_ * @param temporary * @param isRelVoid * @return {GeometryObject} */ extractFaces(from: IfcFace[], parentLocalID: number, geometry_?: GeometryObject | undefined, temporary?: boolean, isRelVoid?: boolean): GeometryObject; /** * Extract an IFC plane. * * @param from The plane to extract from * @return {NativeTransform4x4} The transform matching the plane. */ extractPlane(from: IfcPlane): NativeTransform4x4; /** * Extract a pointlist to a native vector. * * @param from * @return {StdVector< Vector3 >} The native vector of 3D vectors. */ extractPointList3D(from: Array): StdVector; /** * Extract a list of a list of points to a native object. * * @param from the list of lists of cartesian points * @param to {out} the native vector of vector of points. * @return {void} */ extractPointListList3D(from: Array>, to: StdVector>): void; /** * Extract a bspline surface * * @param from The bspline surface to extract * @return {BSplineSurface} */ extractBSplineSurface(from: IfcBSplineSurface): BSplineSurface; /** * Extract a bspline surface * * @param from The bspline surface to extract * @param to The surface to extract to * @param start * @param end */ extractToDoubleVector(from: Array, to: StdVector, start?: number, end?: number): void; /** * Extract a bspline surface * * @param from The bspline surface to extract * @param to The surface to extract to */ extractToDoubleVectorVector(from: Array>, to: StdVector>): void; /** * Extract a bspline surface * * @param from The bspline surface to extract * @return {BSplineSurface} */ extractBSplineSurfaceWithKnots(from: IfcBSplineSurfaceWithKnots): BSplineSurface; /** * Extract a bspline surface * * @param from The bspline surface to extract * @return {BSplineSurface} The extracted surface */ extractRationalBSplineSurfaceWithKnots(from: IfcRationalBSplineSurfaceWithKnots): BSplineSurface; /** * Checks if a given point is not present in a collection of points. * * @param pt The point to check for presence. * @param points A collection of points to compare against. * @return {boolean} A boolean indicating whether the point * is not present in the collection. */ notPresent(pt: Vector3, points: NativeVectorGlmVec3): boolean; /** * Extract an advanced (NURBS) b-rep face. * * @param from * @param geometry */ extractAdvancedFace(from: IfcFaceSurface | IfcAdvancedFace, geometry: GeometryObject): void; /** * Extract a surface * * @param surface * @param nativeSurface */ extractSurface(surface: IfcSurface, nativeSurface: SurfaceObject): void; /** * Extract a linear extrusion/sweep surface * * @param from * @param nativeSurface */ extractSurfaceOfLinearExtrusion(from: IfcSurfaceOfLinearExtrusion, nativeSurface: SurfaceObject): void; /** * Extract a surface of revolution/rotational sweep surface * * @param from * @param nativeSurface */ extractSurfaceOfRevolution(from: IfcSurfaceOfRevolution, nativeSurface: SurfaceObject): void; /** * Extract a cylindrical surface. * * @param from The IFC object to extract from. * @param nativeSurface The native surface representation. */ extractCylindricalSurface(from: IfcCylindricalSurface, nativeSurface: SurfaceObject): void; /** * * @param from * @param geometry */ extractFace(from: IfcFace, geometry: GeometryObject): void; /** * Extract an axis placement 2D native object. * * @param from The axis 2 placement to extract. * @return {any} The native placement transform. */ extractAxis2Placement2D(from: IfcAxis2Placement2D): NativeTransform3x3; /** * Extracts a 2D Cartesian transformation operator from an IFC Cartesian * transformation operator definition. The transformation can be uniform or non-uniform. * * @param from The IFC Cartesian transformation operator definition, * which can be either uniform or non-uniform. * @return {any} The resulting transformation operator parameters. */ extractCartesianTransformOperator2D(from: IfcCartesianTransformationOperator2D | IfcCartesianTransformationOperator2DnonUniform): any; /** * Extract a placement, adding it to the scene. * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @return {void} */ extractAxis1Placement3D(from: IfcAxis1Placement, parentLocalId: number): void; /** * Extract a placement (no memoization/scene creation) * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @param extractOnly {true} Only extract, don't memoize and add to the scene * @return {ParamsAxis1Placement3D} The extracted placement. */ extractAxis1Placement3D(from: IfcAxis1Placement, parentLocalId: number, extractOnly: true): ParamsAxis1Placement3D; /** * Extract a placement, adding it to the scene. * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @return {void} */ extractAxis2Placement3D(from: IfcAxis2Placement3D, parentLocalId: number): void; /** * Extract a placement (no memoization/scene creation) * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @param extractOnly {true} Only extract, don't memoize and add to the scene * @return {ParamsAxis2Placement3D} The extracted placement. */ extractAxis2Placement3D(from: IfcAxis2Placement3D, parentLocalId: number, extractOnly: true): ParamsAxis2Placement3D; /** * Extract a placement, adding it to the scene. * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @return {void} */ extractAxis2Placement3DRelVoid(from: IfcAxis2Placement3D, parentLocalId: number): void; /** * Extract a placement (no memoization/scene creation) * * @param from The transform to extract. * @param parentLocalId The parent's local ID. * @param extractOnly {true} Only extract, don't memoize and add to the scene * @return {ParamsAxis2Placement3D} The extracted placement. */ extractAxis2Placement3DRelVoid(from: IfcAxis2Placement3D, parentLocalId: number, extractOnly: true): ParamsAxis2Placement3D; /** * * @param from * @param isRelVoid */ extractPlacement(from: IfcObjectPlacement, isRelVoid?: boolean): void; /** * * @param from * @param relVoidMeshVector * @param owningElementLocalID * @param relVoidLocalIDs * @param materialOverrideId * @param isSpace * @return {void} */ applyRelVoidToRepresentation(from: IfcRepresentationItem, relVoidMeshVector: NativeVectorGeometry, owningElementLocalID: number, relVoidLocalIDs: number[], materialOverrideId?: number, isSpace?: boolean): void; /** * * @param from * @return {[NativeVectorGeometry, number[]] | undefined} */ extractRelVoids(from: IfcProduct): [ NativeVectorGeometry, number[] ] | undefined; /** * * @param from * @return {number | undefined} */ extractMaterial(from: IfcMaterial | IfcMaterialList | IfcMaterialProfile | IfcMaterialProfileSet | IfcMaterialConstituent | IfcMaterialLayerSetUsage | IfcMaterialLayerSet | IfcMaterialConstituentSet | IfcMaterialProfileSetUsage): number | undefined; /** * * @param from * @return {number | undefined} */ extractMaterialStyle(from: IfcProduct): number | undefined; /** * */ populateStyledItemsMap(): void; /** * */ populateMaterialDefinitionsMap(): void; /** * */ populateRelVoidsMap(): void; /** * Extracts linear scaling factor */ extractLinearScalingFactor(): void; /** * * @param prefix * @return {number | null} */ convertPrefix(prefix: IfcSIPrefix): number | null; /** * * @param outputFilePath * @param geometry */ dumpGeometry(outputFilePath: string, geometry: GeometryObject): void; /** * Extract the geometry data from the IFC * * @return {[ExtractResult, IfcSceneBuilder]} - Enum indicating extraction result * + Geometry array */ extractIFCGeometryData(): [ ExtractResult, IfcSceneBuilder ]; } //# sourceMappingURL=ifc_geometry_extraction.d.ts.map