UNPKG

@bitbybit-dev/occt-worker

Version:

Bit By Bit Developers CAD algorithms using OpenCascade Technology kernel adapted for WebWorker

171 lines (170 loc) 7.15 kB
import { Inputs } from "@bitbybit-dev/occt"; import { Models } from "@bitbybit-dev/occt"; import { OCCTWorkerManager } from "../../occ-worker/occ-worker-manager"; import { IO } from "@bitbybit-dev/base/lib/api/inputs"; export declare class OCCTIO { readonly occWorkerManager: OCCTWorkerManager; constructor(occWorkerManager: OCCTWorkerManager); /** * Saves the step file * @param inputs STEP filename and shape to be saved * @group io * @shortname save step * @drawable false */ saveShapeSTEP(inputs: Inputs.OCCT.SaveStepDto<Inputs.OCCT.TopoDSShapePointer>): Promise<void>; /** * Saves the step file and returns the text value * @param inputs STEP filename and shape to be saved * @group io * @shortname save step and return * @drawable false */ saveShapeSTEPAndReturn(inputs: Inputs.OCCT.SaveStepDto<Inputs.OCCT.TopoDSShapePointer>): Promise<string>; /** * Saves the stl file * @param inputs STL filename and shape to be saved * @group io * @shortname save stl * @drawable false */ saveShapeStl(inputs: Inputs.OCCT.SaveStlDto<Inputs.OCCT.TopoDSShapePointer>): Promise<void>; /** * Saves the stl file and returns * @param inputs STL filename and shape to be saved * @group io * @shortname save stl return * @drawable false */ saveShapeStlAndReturn(inputs: Inputs.OCCT.SaveStlDto<Inputs.OCCT.TopoDSShapePointer>): Promise<string>; private saveSTEP; private saveStl; /** * Creates DXF paths from an OCCT shape * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export. * @param inputs Shape to convert to DXF paths * @group dxf * @shortname shape to dxf paths * @drawable false */ shapeToDxfPaths(inputs: Inputs.OCCT.ShapeToDxfPathsDto<Inputs.OCCT.TopoDSShapePointer>): Promise<IO.DxfPathDto[]>; /** * Adds layer and color information to DXF paths * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export. * @param inputs DXF paths, layer name, and color * @group dxf * @shortname dxf paths with layer * @drawable false */ dxfPathsWithLayer(inputs: Inputs.OCCT.DxfPathsWithLayerDto): Promise<IO.DxfPathsPartDto>; /** * Assembles multiple path parts into a complete DXF file. * Important - shapes containing wires must lie on XZ plane (Y=0) for correct 2D DXF export. * @param inputs Multiple DXF paths parts * @group dxf * @shortname dxf create * @drawable false */ dxfCreate(inputs: Inputs.OCCT.DxfPathsPartsListDto): Promise<string>; /** * Convert a STEP file to glTF format (binary GLB). * * Uses OCCT's native RWGltf_CafWriter for fast conversion with full preservation of: * - Assembly hierarchy (as glTF node tree) * - Instance/product names * - Surface colors and materials * - Transformations * * The coordinate system is automatically converted from OCCT (Z-up) to glTF (Y-up). * * @param inputs - STEP file content and mesh precision settings. Accepts File, Blob, string, ArrayBuffer, or Uint8Array. * @returns GLB binary data as Uint8Array (can be used directly with Three.js, Babylon.js, etc.) * @group assembly * @shortname step to gltf * @drawable false */ convertStepToGltf(inputs: Inputs.OCCT.ConvertStepToGltfDto): Promise<Uint8Array>; /** * Convert a STEP file to glTF format with full control over all options. * * This advanced method allows fine-grained control over: * - STEP reading options (colors, names, materials, layers, props) * - Mesh generation options (deflection, angle, parallel, threshold) * - glTF export options (merge faces, indices, naming, transforms) * * Use this for performance tuning - disable features you don't need for faster processing. * * @param inputs - Advanced options including STEP data, mesh settings, and glTF export settings. * @returns GLB binary data as Uint8Array * @group assembly * @shortname step to gltf advanced * @drawable false * * @example * ```typescript * // Fast conversion - only colors, no names (for large files) * const glbData = await occt.io.convertStepToGltfAdvanced({ * stepData: stepContent, * readColors: true, * readNames: false, // Skip name parsing for speed * readMaterials: true, * readLayers: false, * readProps: false, * meshDeflection: 0.1, * meshParallel: true, * mergeFaces: true * }); * ``` */ convertStepToGltfAdvanced(inputs: Inputs.OCCT.ConvertStepToGltfAdvancedDto): Promise<Uint8Array>; /** * Convert a STEP file to glTF format (binary GLB) with explicit Draco geometry * compression settings. * Same fast path as `convertStepToGltf` but exposes the Draco knobs of the * underlying native function. * @param inputs - STEP file content, mesh precision settings and Draco knobs. * Accepts File, Blob, string, ArrayBuffer, or Uint8Array. * @returns GLB binary data as Uint8Array * @group assembly * @shortname step to gltf with draco * @drawable false */ convertStepToGltfWithDraco(inputs: Inputs.OCCT.ConvertStepToGltfWithDracoDto): Promise<Uint8Array>; /** * Convert a STEP file to glTF format with full control over all reading, * meshing and writer options, plus explicit Draco geometry compression * settings. * * Same fast path as `convertStepToGltfAdvanced` but exposes the 8 Draco * knobs. * * @param inputs - Advanced options including STEP data, mesh settings, glTF * export settings and Draco knobs. * @returns GLB binary data as Uint8Array * @group assembly * @shortname step to gltf advanced with draco * @drawable false */ convertStepToGltfAdvancedWithDraco(inputs: Inputs.OCCT.ConvertStepToGltfAdvancedWithDracoDto): Promise<Uint8Array>; /** * Parse a STEP file and return the assembly structure as JSON. * * Uses OCCT's native XCAFPrs_DocumentExplorer for efficient traversal. * Runs entirely in C++ for maximum performance. * * Returns an object containing an array of nodes with: * - id: Unique path identifier for each node * - name: Part or assembly name * - isAssembly: Whether this is an assembly node (has children) * - visible: Visibility flag * - color: Surface color (if set) with r, g, b, a components * - transform: 4x4 transformation matrix in column-major order (if not identity) * * @param inputs - STEP file content. Accepts File, Blob, string, ArrayBuffer, or Uint8Array. * @returns Parsed assembly structure * @group assembly * @shortname parse step to json * @drawable false */ parseStepToJson(inputs: Inputs.OCCT.ParseStepAssemblyToJsonDto): Promise<Models.OCCT.AssemblyJsonResult>; }