Bitbybit Docs
    Preparing search index...

    Class OCCTAssemblyManager

    Construire et modifier des documents d'assemblage : décrivez les pièces, nœuds d'assemblage et nœuds d'instance un objet à la fois, combinez-les en une structure, et construisez un document à partir d'elle ; ou chargez un fichier STEP dans un document. Puis recolorez et renommez les libellés, mettez à jour ou supprimez des pièces, et exportez vers STEP ou glTF. Un document est un handle en mémoire qui reste vivant jusqu'à sa suppression, donc construisez une fois et interrogez ou exportez aussi souvent que nécessaire.

    Index

    Constructors

    Methods

    • Décrit une pièce prise dans un autre document, typiquement un document chargé depuis STEP, de sorte que tout son arbre de labels avec sous-assemblages, noms et couleurs est copié dans le nouvel assemblage.

      sourceDocumentIndex pointe dans la liste sourceDocuments donnée à buildAssemblyDocument, et sourceLabel choisit un sous-arbre au lieu du document entier. Les nœuds d'instance la placent par partId comme n'importe quelle pièce.

      Parameters

      • inputs: CreateImportedPartDto

        L'id de la pièce, l'index du document source, un libellé source, un nom et une couleur facultatifs

      Returns Promise<AssemblyLoadedPartDef>

      La définition de la pièce importée, prête pour combineStructure

      const chairDoc = await bitbybit.occt.assembly.manager.loadStepToDoc({ stepData });
      const chair = await bitbybit.occt.assembly.manager.createImportedPart({ id: "chair", sourceDocumentIndex: 0, name: "Chair" });
      const c1 = await bitbybit.occt.assembly.manager.createInstanceNode({ id: "c1", partId: "chair", name: "Chair 1", translation: [0, 0, 0] });
      const c2 = await bitbybit.occt.assembly.manager.createInstanceNode({ id: "c2", partId: "chair", name: "Chair 2", translation: [500, 0, 0] });
      const structure = await bitbybit.occt.assembly.manager.combineStructure({ parts: [], nodes: [c1, c2], loadedParts: [chair], clearDocument: false });
      const doc = await bitbybit.occt.assembly.manager.buildAssemblyDocument({ structure, sourceDocuments: [chairDoc] });

    assembly

    • Décrit une pièce pour une structure d'assemblage : un id pour la référencer, sa forme, un nom et une couleur facultative.

      Rien n'est encore construit ; la pièce ne devient réelle que lorsqu'une structure qui la contient passe par buildAssemblyDocument. Les nœuds d'instance placent la pièce par son id, autant de fois que nécessaire.

      Parameters

      Returns Promise<AssemblyPartDef<TopoDSShapePointer>>

      La définition de la pièce, prête pour combineStructure

      const box = await bitbybit.occt.shapes.solid.createBox({ width: 10, length: 10, height: 10, center: [0, 0, 0] });
      const part = await bitbybit.occt.assembly.manager.createPart({ id: "box", shape: box, name: "Box", colorRgba: { r: 1, g: 0, b: 0, a: 1 } });
    • Décrit un nœud d'assemblage, un conteneur qui regroupe des instances et d'autres assemblages dans la hiérarchie.

      parentId nomme l'assemblage dans lequel il se trouve ; omettez-le pour une racine. Une matrice facultative place tout le groupe.

      Parameters

      • inputs: CreateAssemblyNodeDto

        L'id du nœud, son nom, un id de parent facultatif, une couleur facultative et une matrice de placement facultative

      Returns Promise<AssemblyNodeDef>

      La définition du nœud, prête pour combineStructure

      const root = await bitbybit.occt.assembly.manager.createAssemblyNode({ id: "root", name: "Root Assembly" });
      const sub = await bitbybit.occt.assembly.manager.createAssemblyNode({ id: "sub", name: "Sub Assembly", parentId: "root" });
    • Décrit un nœud d'instance, un placement d'une pièce : quelle pièce par partId, où elle va et sous quel assemblage.

      translation la déplace, rotation la tourne selon des angles d'Euler en degrés autour de X, Y et Z, scale la dimensionne uniformément ; une matrix peut remplacer les trois. La même pièce peut être placée par de nombreuses instances.

      Parameters

      • inputs: CreateInstanceNodeDto

        L'id du nœud, l'id de la pièce, le nom, un id de parent facultatif et le placement

      Returns Promise<AssemblyNodeDef>

      La définition du nœud, prête pour combineStructure

      const first = await bitbybit.occt.assembly.manager.createInstanceNode({ id: "box1", partId: "box", name: "Box 1" });
      const second = await bitbybit.occt.assembly.manager.createInstanceNode({ id: "box2", partId: "box", name: "Box 2", translation: [20, 0, 0], rotation: [0, 0, 45] });
    • Décrit un changement d'une pièce qui existe déjà dans un document : une nouvelle forme, un nouveau nom ou une nouvelle couleur, ou n'importe quel mélange, adressé par le label de la pièce.

      Rassemblez les mises à jour dans combineStructure sous partUpdates et passez la structure à buildAssemblyDocument avec le document existant.

      Parameters

      Returns Promise<AssemblyPartUpdateDef<TopoDSShapePointer>>

      La définition de la mise à jour, prête pour combineStructure

      const parts = await bitbybit.occt.assembly.query.getDocumentParts({ document: doc });
      const bigger = await bitbybit.occt.shapes.solid.createBox({ width: 20, length: 20, height: 20, center: [0, 0, 0] });
      const update = await bitbybit.occt.assembly.manager.createPartUpdate({ label: parts[0].label, shape: bigger, name: "Bigger Box" });
      const structure = await bitbybit.occt.assembly.manager.combineStructure({ parts: [], nodes: [], partUpdates: [update], clearDocument: false });
      await bitbybit.occt.assembly.manager.buildAssemblyDocument({ structure, existingDocument: doc });
    • Rassemble les pièces, les nœuds et, pour les mises à jour, les suppressions, les mises à jour de pièces et les pièces importées en une seule définition de structure, la dernière étape avant buildAssemblyDocument.

      clearDocument faux garde ce qu'un document existant contient déjà quand la structure lui est appliquée.

      Parameters

      Returns Promise<AssemblyStructureDef<TopoDSShapePointer>>

      La structure, prête à construire

      const structure = await bitbybit.occt.assembly.manager.combineStructure({ parts: [part], nodes: [root, first, second], clearDocument: false });
      const doc = await bitbybit.occt.assembly.manager.buildAssemblyDocument({ structure });
    • Construit un document d'assemblage à partir d'une structure, ou applique la structure à un document existant.

      Avec existingDocument, les labels de removals sont d'abord supprimés, les partUpdates appliquées, puis les nouvelles pièces et nœuds ajoutés ; une structure sans l'un ni l'autre vide le document sauf si clearDocument est faux. sourceDocuments fournit les documents depuis lesquels les pièces importées copient. Le document reste en mémoire jusqu'à sa suppression.

      Parameters

      Returns Promise<TDocStdDocumentPointer>

      Le handle du document, nouveau ou mis à jour

      Error if assembly building fails

      const structure = await bitbybit.occt.assembly.manager.combineStructure({ parts: [part], nodes: [root, first], clearDocument: false });
      const doc = await bitbybit.occt.assembly.manager.buildAssemblyDocument({ structure });
      const glb = await bitbybit.occt.assembly.manager.exportDocumentToGltf({ document: doc, meshDeflection: 0.1, meshAngle: 0.5, internalVerticesMode: false, controlSurfaceDeflection: false, mergeFaces: false, forceUVExport: false, fileName: "assembly.glb", tryDownload: false });
    • Charge un fichier STEP dans un nouveau document d'assemblage, avec ses pièces, sous-assemblages, noms, couleurs et placements.

      stepData est le fichier en texte ou en binaire ; le STEP-Z compressé en gzip est aussi accepté. Un fichier qui ne peut pas être chargé lève une erreur. Une instance que le fichier laisse sans nom, comme le fait SolidWorks, prend le nom de la pièce qu'elle place, numéroté lorsque cette pièce se répète à côté d'elle.

      Parameters

      Returns Promise<TDocStdDocumentPointer>

      Le handle du document

      Error if STEP loading fails

      const doc = await bitbybit.occt.assembly.manager.loadStepToDoc({ stepData: stepText });
      const parts = await bitbybit.occt.assembly.query.getDocumentParts({ document: doc });

    export

    • Écrit un document d'assemblage sous forme de fichier STEP avec sa hiérarchie, ses noms et ses couleurs, et renvoie les octets du fichier.

      author et organization vont dans l'en-tête du fichier ; compress écrit plutôt du STEP-Z compressé en gzip. Un échec lève une erreur.

      Parameters

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Le fichier STEP sous forme d'octets

      const step = await bitbybit.occt.assembly.manager.exportDocumentToStep({ document: doc, fileName: "assembly.step", author: "Bitbybit user", organization: "Bitbybit", compress: false, tryDownload: false });
      
    • Triangule un document d'assemblage et l'écrit en glTF binaire (GLB) avec la hiérarchie, les noms et les couleurs conservés sous forme de nœuds et de matériaux glTF.

      meshDeflection et meshAngle règlent la finesse de triangulation des surfaces courbes ; mergeFaces réunit les faces d'une pièce en un seul maillage. Un échec lève une erreur.

      Parameters

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Le fichier GLB sous forme d'octets

      const glb = await bitbybit.occt.assembly.manager.exportDocumentToGltf({ document: doc, meshDeflection: 0.1, meshAngle: 0.5, internalVerticesMode: false, controlSurfaceDeflection: false, mergeFaces: false, forceUVExport: false, fileName: "assembly.glb", tryDownload: false });
      
    • Écrit un document d'assemblage en glTF binaire (GLB) comme exportDocumentToGltf et compresse la géométrie avec Draco, ce qui rend le fichier beaucoup plus petit au prix d'un chargeur compatible Draco.

      Les réglages Draco fixent le niveau de compression et combien de bits les positions, normales, coordonnées de texture et couleurs conservent.

      Parameters

      Returns Promise<Uint8Array<ArrayBufferLike>>

      Le fichier GLB sous forme d'octets

      const options = new Bit.Inputs.OCCT.ExportDocumentToGltfWithDracoDto<Bit.Inputs.OCCT.TDocStdDocumentPointer>();
      options.document = doc;
      options.meshDeflection = 0.1;
      options.dracoCompressionLevel = 7;
      const glb = await bitbybit.occt.assembly.manager.exportDocumentToGltfWithDraco(options);

    lifecycle

    • Supprime un document d'assemblage et libère la mémoire qu'il occupe.

      Un document construit avec buildAssemblyDocument ou chargé avec loadStepToDoc reste en mémoire jusqu'à cet appel, supprimez-le donc une fois ses formes et ses exports lus.

      Parameters

      Returns Promise<void>

      Rien ; le handle du document n'est plus valide ensuite

      const doc = await bitbybit.occt.assembly.manager.buildAssemblyDocument({ structure });
      const glb = await bitbybit.occt.assembly.manager.exportDocumentToGltf({ document: doc, meshDeflection: 0.1, meshAngle: 0.5, internalVerticesMode: false, controlSurfaceDeflection: false, mergeFaces: false, forceUVExport: false, fileName: "assembly.glb", tryDownload: false });
      await bitbybit.occt.assembly.manager.deleteDocument({ document: doc });

    modify

    • Colore un label d'un document, une pièce, une instance ou un assemblage, avec du rouge, du vert, du bleu et de l'alpha de 0 à 1.

      La couleur est conservée quand le document est exporté en STEP ou en glTF.

      Parameters

      Returns Promise<boolean>

      Vrai quand la couleur a été définie

      const done = await bitbybit.occt.assembly.manager.setDocLabelColor({ document: doc, label: "0:1:1:1", r: 1, g: 0, b: 0, a: 1 });
      
    • Renomme un label d'un document, une pièce, une instance ou un assemblage.

      Parameters

      Returns Promise<boolean>

      Vrai quand le nom a été défini

      const done = await bitbybit.occt.assembly.manager.setDocLabelName({ document: doc, label: "0:1:1:1", name: "Left bracket" });