दूसरे दस्तावेज़ से लिए गए पार्ट का वर्णन करता है, आमतौर पर STEP से लोड किए गए, ताकि उप-असेंबलियों, नामों और रंगों सहित उसका पूरा लेबल ट्री नई असेंबली में कॉपी हो।
sourceDocumentIndex buildAssemblyDocument को दी गई sourceDocuments सूची में इशारा
करता है, और sourceLabel पूरे दस्तावेज़ के बजाय एक उप-ट्री चुनता है।
इंस्टेंस नोड उसे किसी भी पार्ट की तरह partId से रखते हैं।
पार्ट की id, स्रोत दस्तावेज़ का इंडेक्स, एक वैकल्पिक स्रोत लेबल, नाम और रंग
आयातित पार्ट परिभाषा, 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] });
असेंबली संरचना के लिए पार्ट का वर्णन करता है: उसे संदर्भित करने के लिए एक id, उसका शेप, नाम और वैकल्पिक रंग।
अभी कुछ नहीं बनता; पार्ट तभी वास्तविक बनता है जब उसे रखने वाली संरचना
buildAssemblyDocument से गुज़रती है। इंस्टेंस नोड पार्ट को उसकी id से रखते हैं, जितनी बार चाहिए।
पार्ट की id, उसका शेप, उसका नाम और एक वैकल्पिक रंग
पार्ट परिभाषा, combineStructure के लिए तैयार
असेंबली नोड का वर्णन करता है, एक कंटेनर जो पदानुक्रम में इंस्टेंस और दूसरी असेंबलियों को समूहित करता है।
parentId उस असेंबली का नाम देता है जिसमें वह बैठता है; रूट के लिए उसे छोड़ दें। वैकल्पिक मैट्रिक्स
पूरे समूह को रखती है।
नोड की id, उसका नाम, एक वैकल्पिक पैरेंट id, एक वैकल्पिक रंग और एक वैकल्पिक प्लेसमेंट मैट्रिक्स
नोड परिभाषा, combineStructure के लिए तैयार
इंस्टेंस नोड का वर्णन करता है, पार्ट का एक प्लेसमेंट: partId से कौन-सा पार्ट, वह कहाँ जाता है
और किस असेंबली के तहत।
translation उसे हिलाता है, rotation उसे X, Y और Z के चारों ओर डिग्री में यूलर कोणों से घुमाता है,
scale उसे समान रूप से आकार देता है; एक matrix तीनों की जगह ले सकती है। एक ही पार्ट कई
इंस्टेंस से रखा जा सकता है।
नोड की id, पार्ट की id, नाम, एक वैकल्पिक पैरेंट id और प्लेसमेंट
नोड परिभाषा, combineStructure के लिए तैयार
दस्तावेज़ में पहले से मौजूद पार्ट में बदलाव का वर्णन करता है: नया शेप, नया नाम या नया रंग, या उनका कोई भी मिश्रण, पार्ट के लेबल से संबोधित।
अपडेट को combineStructure में partUpdates के तहत इकट्ठा करें और संरचना को मौजूदा दस्तावेज़ के साथ
buildAssemblyDocument को दें।
पार्ट का लेबल और वैकल्पिक नया शेप, नाम और रंग
अपडेट परिभाषा, 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 });
पार्ट, नोड और, अपडेट के लिए, हटाव, पार्ट अपडेट और इंपोर्ट किए पार्ट को एक
संरचना परिभाषा में इकट्ठा करता है, buildAssemblyDocument से पहले का अंतिम चरण।
clearDocument false वह रखता है जो मौजूदा दस्तावेज़ में पहले से है जब संरचना
उस पर लागू की जाती है।
पार्ट्स, नोड्स, और वैकल्पिक हटाव, पार्ट अपडेट, आयातित पार्ट्स और clear फ़्लैग
संरचना, बनाने के लिए तैयार
संरचना से असेंबली दस्तावेज़ बनाता है, या संरचना को मौजूदा दस्तावेज़ पर लागू करता है।
existingDocument के साथ पहले removals के लेबल हटाए जाते हैं, partUpdates
लागू किए जाते हैं, फिर नए पार्ट और नोड जोड़े जाते हैं; जिस संरचना में दोनों में से कुछ नहीं वह दस्तावेज़ साफ़ करती है
जब तक clearDocument false न हो। sourceDocuments वे दस्तावेज़ देता है जिनसे इंपोर्ट किए पार्ट कॉपी
होते हैं। दस्तावेज़ हटाए जाने तक मेमोरी में रहता है।
संरचना, अपडेट करने के लिए एक वैकल्पिक दस्तावेज़ और वैकल्पिक स्रोत दस्तावेज़
दस्तावेज़ हैंडल, नया या अपडेट किया गया
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 });
STEP फ़ाइल को नए असेंबली दस्तावेज़ में लोड करता है, उसके पार्ट, उप-असेंबलियों, नामों, रंगों और प्लेसमेंट के साथ।
stepData फ़ाइल टेक्स्ट या बाइनरी के रूप में है; gzip-संपीड़ित STEP-Z भी स्वीकार है। जो फ़ाइल
लोड नहीं की जा सकती वह त्रुटि फेंकती है। जिस इंस्टेंस को फ़ाइल बिना नाम छोड़ती है, जैसा SolidWorks करता है, उसे उस पार्ट का नाम मिलता है जिसे वह रखता है, और वही पार्ट उसके साथ दोहराए जाने पर उसमें क्रमांक जुड़ता है।
STEP फ़ाइल की सामग्री
दस्तावेज़ हैंडल
असेंबली दस्तावेज़ को उसके पदानुक्रम, नामों और रंगों के साथ STEP फ़ाइल के रूप में लिखता है, और फ़ाइल के बाइट लौटाता है।
author और organization फ़ाइल हेडर में जाते हैं; compress इसके बजाय gzip-संपीड़ित STEP-Z
लिखता है। विफलता त्रुटि फेंकती है।
दस्तावेज़, फ़ाइल का नाम, हेडर विवरण, संपीड़न फ़्लैग और डाउनलोड विकल्प
STEP फ़ाइल, बाइट्स के रूप में
असेंबली दस्तावेज़ का त्रिभुजन करता है और उसे बाइनरी glTF (GLB) के रूप में लिखता है, पदानुक्रम, नामों और रंगों को glTF नोड और मैटेरियल के रूप में रखते हुए।
meshDeflection और meshAngle तय करते हैं कि वक्र सतहों का कितना बारीक त्रिभुजन हो;
mergeFaces पार्ट के फेसेस को एक मेश में जोड़ता है। विफलता त्रुटि फेंकती है।
दस्तावेज़, मेशिंग सेटिंग्स, निर्यात फ़्लैग, फ़ाइल का नाम और डाउनलोड विकल्प
GLB फ़ाइल, बाइट्स के रूप में
असेंबली दस्तावेज़ को exportDocumentToGltf की तरह बाइनरी glTF (GLB) के रूप में लिखता है और ज्यामिति को
Draco से संपीड़ित करता है, जो Draco-सक्षम लोडर की कीमत पर फ़ाइल को बहुत छोटा
बनाता है।
Draco सेटिंग संपीड़न स्तर और यह तय करती हैं कि पोज़िशन, नॉर्मल, टेक्सचर निर्देशांक और रंग कितने बिट रखते हैं।
दस्तावेज़, मेशिंग सेटिंग्स, निर्यात फ़्लैग और Draco सेटिंग्स
GLB फ़ाइल, बाइट्स के रूप में
असेंबली दस्तावेज़ हटाता है और उसके द्वारा रखी मेमोरी मुक्त करता है।
buildAssemblyDocument से बनाया या loadStepToDoc से लोड किया दस्तावेज़ इसे कॉल किए जाने तक
मेमोरी में रहता है, इसलिए उसके शेप्स और निर्यात पढ़ लेने के बाद उसे हटा दें।
हटाया जाने वाला दस्तावेज़
कुछ नहीं; उसके बाद दस्तावेज़ हैंडल मान्य नहीं रहता
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 });
दस्तावेज़ के लेबल, पार्ट, इंस्टेंस या असेंबली, को 0 से 1 तक लाल, हरे, नीले और अल्फ़ा से रंगता है।
दस्तावेज़ को STEP या glTF में निर्यात करने पर रंग रखा जाता है।
दस्तावेज़, लेबल और चार रंग चैनल
true जब रंग सेट हो गया हो
दस्तावेज़ के लेबल, पार्ट, इंस्टेंस या असेंबली, का नाम बदलता है।
दस्तावेज़, लेबल और नया नाम
true जब नाम सेट हो गया हो
असेंबली दस्तावेज़ बनाना और बदलना: पार्ट्स, असेंबली नोड्स और इंस्टेंस नोड्स को एक-एक ऑब्जेक्ट करके वर्णित करें, उन्हें एक संरचना में संयोजित करें, और उससे दस्तावेज़ बनाएँ; या STEP फ़ाइल को दस्तावेज़ में लोड करें। फिर लेबलों का रंग और नाम बदलें, पार्ट्स को अपडेट करें या हटाएँ, और STEP या glTF में निर्यात करें। दस्तावेज़ एक इन-मेमोरी हैंडल है जो हटाए जाने तक जीवित रहता है, इसलिए एक बार बनाएँ और जितनी बार चाहें क्वेरी या निर्यात करें।