অন্য একটি ডকুমেন্ট থেকে নেওয়া একটি পার্ট বর্ণনা করে, সাধারণত STEP থেকে লোড করা একটি, যাতে সাব-অ্যাসেম্বলি, নাম ও রংসহ তার পুরো লেবেল ট্রি নতুন অ্যাসেম্বলিতে কপি হয়।
sourceDocumentIndex buildAssemblyDocument কে দেওয়া sourceDocuments তালিকায়
নির্দেশ করে, এবং sourceLabel পুরো ডকুমেন্টের বদলে একটি সাব-ট্রি বাছে।
ইনস্ট্যান্স নোডগুলি যেকোনো পার্টের মতো partId দিয়ে এটি বসায়।
পার্টের আইডি, উৎস ডকুমেন্টের ইনডেক্স, একটি ঐচ্ছিক উৎস লেবেল, নাম ও রং
ইমপোর্ট করা পার্টের সংজ্ঞা, 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 দিয়ে বসায়, যতবার দরকার।
পার্টের আইডি, তার আকৃতি, তার নাম ও একটি ঐচ্ছিক রং
পার্টের সংজ্ঞা, combineStructure এর জন্য প্রস্তুত
একটি অ্যাসেম্বলি নোড বর্ণনা করে, হায়ারার্কিতে ইনস্ট্যান্স ও অন্য অ্যাসেম্বলিগুলিকে দলবদ্ধ করা একটি কন্টেইনার।
parentId এটি যে অ্যাসেম্বলিতে বসে তার নাম দেয়; একটি রুটের জন্য এটি বাদ দিন। একটি ঐচ্ছিক ম্যাট্রিক্স
পুরো দলটিকে বসায়।
নোডের আইডি, তার নাম, একটি ঐচ্ছিক প্যারেন্ট আইডি, একটি ঐচ্ছিক রং ও একটি ঐচ্ছিক স্থাপন ম্যাট্রিক্স
নোডের সংজ্ঞা, combineStructure এর জন্য প্রস্তুত
একটি ইনস্ট্যান্স নোড বর্ণনা করে, একটি পার্টের একটি স্থাপন: partId দিয়ে কোন পার্ট, এটি কোথায় যায়
এবং কোন অ্যাসেম্বলির অধীনে।
translation এটিকে সরায়, rotation X, Y ও Z এর চারপাশে ডিগ্রিতে Euler কোণ দিয়ে এটিকে ঘোরায়,
scale এটিকে সমানভাবে আকার দেয়; একটি matrix তিনটিকেই প্রতিস্থাপন করতে পারে। একই পার্ট
অনেক ইনস্ট্যান্স দিয়ে বসানো যেতে পারে।
নোডের আইডি, পার্টের আইডি, নাম, একটি ঐচ্ছিক প্যারেন্ট আইডি ও স্থাপন
নোডের সংজ্ঞা, 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 হলে কাঠামোটি প্রয়োগ করার সময় একটি বিদ্যমান ডকুমেন্ট ইতিমধ্যে যা ধারণ করে
তা রাখে।
পার্টগুলি, নোডগুলি এবং ঐচ্ছিক অপসারণ, পার্ট আপডেট, ইমপোর্ট করা পার্ট ও ক্লিয়ার ফ্ল্যাগ
কাঠামোটি, তৈরির জন্য প্রস্তুত
একটি কাঠামো থেকে একটি অ্যাসেম্বলি ডকুমেন্ট তৈরি করে, অথবা কাঠামোটিকে একটি বিদ্যমান ডকুমেন্টে প্রয়োগ করে।
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 এ এক্সপোর্ট করুন। একটি ডকুমেন্ট হল একটি ইন-মেমোরি হ্যান্ডল যা মোছা না হওয়া পর্যন্ত জীবিত থাকে, তাই একবার তৈরি করুন এবং যতবার দরকার কোয়েরি বা এক্সপোর্ট করুন।