الوثائق
إنشاء برنامج التصنيع الأصلي
التقط جزءًا حقيقيًا، وقم بتقييم مهمة التصنيع الخاصة به، وافحص أدلة NC المنشورة، واحفظ مستندًا يمكن فحصه مرة أخرى.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
تعرف على النتيجة التي تطلبها
التصنيع الأصلي هو حساب حتمي CAD/CAM، مستقل عن نموذج اللغة. POST /api/toolpaths/manufacture يقبل لقطة CAD صريحة، ويقوم بإعداد موارد التصنيع، ويخطط أو يقبل العمليات المطلوبة، ويحسب بيانات القطع، وينشئ مسارات الأدوات، وينشر برنامج NC واحدًا، ويعيد تشغيل هذا النص بشكل مستقل. يتضمن الرد الأدلة الداعمة لمستوى إصداره.
لا تقوم نقطة النهاية هذه بإنشاء رسم أو حفظ مسار أدوات أو تحديث المحرر. الاستجابة الناجحة هي قيمة يجب فحصها والاستمرار فيها عمدًا. إنه مختلف عن /api/toolpaths/generate، الذي يكيف إعدادات مولد التطبيق لإخراج المطحنة/المخرطة/الطابعة، ومن /api/toolpaths/verify، الذي يعيد تشغيل NC/البرنامج المقدم مقابل المخزون المصمم بشكل صريح والأداة.
استخدم نقاط النهاية بالقطع لمخططات الطلب/الاستجابة، مرجع كام للتمثيلات الأساسية، و مرجع البرنامج المحفوظ لسلوك المثابرة. المهمة التالية صغيرة بشكل متعمد بما يكفي لإعادة إنتاجها وفحصها دون تحرير مشروع موجود.
أرسل لقطة كاملة تم التحقق من صحتها
احفظ ملف JSON هذا باسم native-job.json. يصف 40 × 40 × 10 مم POM فارغًا متمركزًا في (20، 20، 5)، محاطًا بـ 2 مم من المخزون على كل جانب X/Y و1 مم أعلاه. تم فك تشفير الحمولة بواسطة الحقيقي CamKernelRequest المخطط وتقييمه بواسطة النواة؛ تحتوي نتيجة خط الأساس على ثلاث عمليات مخططة. قم دائمًا بفحص المطالبات التي تم إرجاعها بدلاً من ترميز الإصدار المتوقع في العميل.
{
"schemaVersion": 1,
"id": "blank-job",
"name": "POM blank",
"material": "POM",
"elements": [{
"id": "blank",
"type": "cube",
"x": 20, "y": 20, "z": 5,
"width": 40, "height": 40, "depth": 10
}],
"stock": { "x": 20, "y": 20, "width": 44, "height": 44, "depth": 11 },
"resolution": 0.5
} curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @native-job.json \
"$CADCAMFUN_URL/api/toolpaths/manufacture" > native-result.json يلتقط ملف الصدفة الاستجابة الدقيقة للفحص. يؤدي توفير نفس الطلب الذي تم التقاطه إلى إنتاج مخرجات أصلية حتمية؛ يعد استخدام موضع الجزء الجديد أو القاطع أو التشغيل أو التحكم في الجودة مهمة مختلفة. تعد تسميات هوية الطلب مفيدة للتتبع، ولكن ملخصات الأداة تربط مصدرها الفعلي ومحتوى NC.
حل المخزون وإحداثيات العمل
يستخدم مخزون اللقطات المركز X/Y والعرض/الارتفاع/العمق الكامل. يقوم محول اللقطة أولاً بإنشاء هندسة الجزء المحدد، ويبحث عن أدنى مستوى Z، ويضع الجزء السفلي من المخزون هناك؛ قمته هو ذلك القاع بالإضافة إلى العمق المعلن. في المثال، يمتد الجزء من Z0 إلى Z10 والسهم من Z0 إلى Z11. حدود المخزون في X/Y هي -2 إلى 42.
يستخدم المحول الأبعاد الصريحة لتلك الحدود. ولا يضيف بدل عرض سجل الأسهم مرة أخرى، والسهم topZ لا يحل الحقل محل إرساء الجزء الأدنى في محول اللقطة الأصلي هذا. حافظ على التمييز بين بيانات تعريف المحرر والحقول المستهلكة فعليًا لإنشاء مهمة تصنيع.
أصل العمل الافتراضي هو stock-center: مركز السهم X/Y عند قمته Z. stock-corner يختار الحد الأدنى X/Y في نفس الجزء العلوي. تكون هندسة عملية الإدخال بالملليمتر العالمي CAD، بينما تكون تحركات البرنامج/NC الناتجة في إحداثيات العمل. القطع التقليدي يقع أسفل العمل Z0. workOffset اختياري؛ الإعداد الافتراضي للبرنامج هو G54.
بدون المخزون المتوفر، يتضمن إعداد المهمة ذات المستوى الأدنى حدود الأجزاء مع 2 مم إضافية على كل جانب X/Y و1 مم أعلاه. يتم رفض أي جزء خارج المخزون الصريح؛ زيادة عمق القطع المطلوب لا يجعل المخزون غير المتوافق يحتوي على الجزء.
حدد المواد والآلة والقواطع
المادة عبارة عن سلسلة بحث تم حلها مقابل مكتبة مواد kernel، بما في ذلك المعرفات المدعومة والأسماء والأسماء المستعارة. تُرجع مادة غير معروفة مشكلة إعداد مكتوبة. الجهاز الاختياري للقطة HTTP عبارة عن معرف مُسجل مسبقًا: vmc-standard، أو haas-vf2، أو hsc-mill، أو Desktop-mill، أو cnc-router. حذفه يستخدم معيار vmc. تصف الإعدادات المسبقة فئات الماكينة النموذجية وحدودها، وليست نموذجًا مؤهلاً للتثبيت الفردي.
يستخدم حذف الأدوات سرير القاطع الافتراضي. يؤدي توفير الأدوات إلى استبدال سرير الأطفال هذا ويتطلب 1–200 سجلات قاطعة. يحدد القاطع نوعه، وقطره، وعدد الفلوت، والمواد/الطلاء، وطول الفلوت، وقطر الساق، والالتصاق. تعمل أبعاد الحامل الاختيارية والحد الأقصى لعدد الدورات في الدقيقة ورقم الجيب والهندسة الخاصة بالنوع على تحسين عملية التوليد والتخليص. يجب أن تكون المزامير عددًا صحيحًا من 1 إلى 24؛ أرقام الجيب الصريحة هي 1–999.
يجب أن تقوم معرفات أداة التشغيل بتسمية أدوات القطع الموجودة في تلك المكتبة المتوفرة. معرفات القاطع المكررة، والأبعاد غير الصالحة، ومجموعات الإستراتيجية/الأدوات التي لا يمكن الوصول إليها تنتج مشكلات بدلاً من البدائل التي تم تخمينها. يقبل المخطط أنواعًا مسطحة، وكروية، وثورية، وشطبية، وبقعية، ومثقابية، وطاحونة وجهية، وطاحونة خيطية، وأنواع النقش.
لا تقبل سلسلة جهاز اللقطة العامة سجل جهاز مخصص. تكامل التعليمات البرمجية الذي يستدعي المستوى الأدنى ManufacturingJob يمكن لواجهة برمجة التطبيقات (API) توفير حدود الماكينة والسفر وهندسة الجدول بشكل صريح. لا ترسل هذا السجل حيث يتوقع مخطط HTTP سلسلة محددة مسبقًا.
التخطيط تلقائيًا أو تحديد ترتيب المعالجة
وعندما تغيب العمليات، يستمدها المخطط من الجزء. مصفوفة العمليات الصريحة هي أمر تصنيع موثوق، وليست قائمة اقتراحات ليتم إعادة ترتيبها بصمت. كل عملية لها معرف فريد ومرجع للأداة. تغطي سجلات الإستراتيجية المدعومة الوجه، والتكيف، والجيب، والملف الشخصي، والتجويف، والحفر، والخيط، والنقش، والشطب، والعمل السطحي، مع الهندسة المناسبة لكل منها.
يستخدم ملف التعريف حلقة وجانبًا داخليًا/خارجيًا وإحداثيات عالمية أعلى/أسفل. يستخدم قطع الجيب/التكيف حدودًا مغلقة مع حلقات جزيرة اختيارية. يستخدم الحفر نقاطًا بالإضافة إلى الأعلى/الأسفل. يتضمن سجل طاحونة الخيط المركز والقطر والميل والعلم الداخلي والأعلى والطول. يختار السجل السطحي سلوكًا خشنًا أو متوازيًا أو خطًا مائيًا أو سطحيًا شديد الانحدار؛ يجب أن يحدد مرجع الراحة العمل السابق المناسب.
يمكن أن تتضمن تجاوزات العملية لكل عملية عدد الدورات في الدقيقة، والتغذية، والتغذية الغاطسة، والتنحي، والتنقل، والمبرد، والارتباط الشعاعي. تأتي القيم المفقودة من بيانات المواد/القاطع/القطع الآلي. الانتقال هو نسبة مئوية من 1 إلى 100؛ التنحي والخلاصات إيجابية. يسجل المنتج الحقول المتجاوزة بشكل منفصل عن المعلمات المحسوبة حتى يتمكن المراجع من معرفة مصدر اختيارات العملية.
تحمل النواة الأصلية مخزونًا مؤقتًا بين العمليات وتنشر IR المدمج الخاص بها مرة واحدة. على النقيض من ذلك، combineCamOperations بالنسبة لأقسام العمليات العامة المحفوظة، فإنها تنضم إلى نص NC الذي تم إنشاؤه بالفعل؛ ولا يحول تلك الأقسام إلى برنامج تحكم متكامل. استخدم القطعة الأثرية الأصلية عندما يكون ذلك الجيل المتكامل وإعادة التشغيل مطلوبًا.
ضبط ضوابط الجودة وفهم تكلفتها
| مدخل | المعنى والحدود |
|---|---|
finishAllowance | 0–5 مم بدل التخشين؛ تم حذفه باستخدام المادة الافتراضية. |
scallop | موجب، على الأكثر 1 مم؛ الافتراضي 0.01 ملم للتشطيب الأصلي. |
tolerance | تحمل المسار الإيجابي؛ الافتراضي الأصلي 0.01 ملم. |
resolution | حجم خلية الإعادة الإيجابي؛ يتحكم في الدقة المكانية لأدلة المخزون. |
deburr | موجب، على الأكثر 5 مم؛ يطلب من المخطط إضافة أعمال الشطب المدعومة ذات الحافة العلوية. |
subprograms | إرسال اختياري مترجم متكرر حيث تدعمه اللهجة، مثل البرامج الفرعية Fanuc/Haas M98. |
يدعم الطلب 1–2، 000 عناصر CAD و500 من العمليات الصريحة على الأكثر. تعمل التفاوتات الأصغر وخلايا إعادة التشغيل على زيادة العمل الحسابي ولا تثبت تلقائيًا وجود هندسة غير مدعومة. الحفاظ على القرار المبلغ عنه مع النتيجة. تعد شبكة إطار العرض ومعاينة المخزون المختزلة بمثابة مخرجات عرض، وليست محاكاة مستقلة دقيقة.
يقوم النشر الأصلي بتعيين أرقام الأدوات من تعيينات القاطع ويطلب التراجع قبل تغيير الأداة. تنسيق المشاركات ينسق مع الكسور العشرية الثابتة. فحص NC الفعلي واللهجة المحددة؛ اسم وحدة التحكم لا يلغي الحاجة إلى التحقق من صحة سلوك ما بعد التثبيت.
تفسير الحالة والمطالبات والإفراج
والنتيجة هي الاتحاد: status: "failed" مع القضايا، أو status: "ok" مع قطعة أثرية. لا يزال من الممكن الحصول على قطعة أثرية جيدة release: "blocked". قراءة كلا الطبقتين. التحقق من حالة HTTP أو الحالة الخارجية وحدها غير كافية.
تحتفظ الأداة بنتائج التشغيل المطلوبة، وبيانات القطع، وIR الخاص بالبرنامج، والقواطع المستخدمة، وNC، وإحصائيات المخزون، وتقديرات وقت الدورة، والمشكلات، وملخصات الهوية. لقد مرت المطالبات، أو فشلت، أو غير مدعومة، أو لم يتم حلها. وهي تغطي بيانات القطع، وحدود الماكينة، وإكمال التشغيل، والتخليص السريع/الحامل، والتلاعب، وإزالة المواد، وإعادة تشغيل NC المستقلة، وسير الماكينة، وتخليص الماكينة/الطاولة.
مشكلات الأخطاء الجسيمة أو إصدار كتلة NC الفارغة. مع عدم وجود فشل كبير، تنتج الأدلة غير الكاملة معاينة ما لم يتم استيفاء قاعدة الإصدار. تسمح القاعدة الحالية بمطالبة غير مدعومة بالسفر الآلي مع استمرار إرجاع البرنامج الذي تم التحقق منه؛ لا توفر جميع الإعدادات المسبقة المضمنة انتقالًا واضحًا للمحور. تحقق من هذا الادعاء عند تحديد ما إذا كانت النتيجة تغطي جهازًا معينًا.
الأدلة لديها حدود النموذج
إعادة عرض المخزون/الحامل الأصلي عبارة عن فحص مجال الارتفاع ثلاثي المحاور. لا تحتوي اللقطة الأصلية العامة على حقل مغلف ثابت. يقبل التحقق المستقل مظاريف التثبيت، لكن لا تتم إضافتها إلى الأدلة الأصلية بشكل ضمني. إن ملصق البرنامج الذي تم التحقق منه هو دليل على النموذج الذي تم التقاطه وعمليات التحقق منه، وليس شهادة الجهاز.
تحدد نتائج Kernel منتجها: معرف الخوارزمية هو cadcamfun-cam-kernel@1 وإصدار مخطط العقد هو 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). قارن بين الاثنين عند تحديد ما إذا كانت الأدلة المخزنة تأتي من نفس النواة.
قم بإنشاء مستند محمول من النتيجة الدقيقة
A CamProgramDocument يحافظ على NC والبرنامج وإعدادات المولد/الطابعة والمخزون ولقطات الرسم. يحتفظ kernelRequest/kernelArtifact الاختياري بأدلة المصدر الأصلية. يقوم هذا المثال بتحويل الطلب والنتيجة التي تم التقاطها إلى ذلك المستند دون حفظه؛ قم بتشغيله في مساحة عمل اعتمادًا على النواة وواجهة برمجة التطبيقات والتأثير، مثل التطبيقات/السايدكار.
import { Schema } from "effect"
import { cam } from "@cadcamfun/core"
import { CamKernelRequest, CamKernelResult, CamProgramDocument } from "@cadcamfun/api"
const request = Schema.decodeUnknownSync(CamKernelRequest)(await Bun.file("native-job.json").json())
const result = Schema.decodeUnknownSync(CamKernelResult)(await Bun.file("native-result.json").json())
if (result.status !== "ok" || result.value.release === "blocked") {
throw new Error("The captured job has no releasable artifact")
}
const document = Schema.decodeUnknownSync(CamProgramDocument)({
format: "cadcamfun-cam", version: 1,
gcode: result.value.nc, program: result.value.program,
settings: cam.generator.DEFAULT_SETTINGS,
printer: cam.generator.DEFAULT_PRINTER_EXTRAS,
stock: request.stock,
drawing: { elements: request.elements, stock: request.stock },
kernelRequest: request, kernelArtifact: result.value
})
await Bun.write("portable-program.json", JSON.stringify(document, null, 2)) يتطلب المثال مخزونًا صريحًا، كما هو الحال مع الحد الأدنى من الطلب المقدم. تعمل إعدادات المحرر العامة على إعادة فتح عناصر التحكم، في حين أن kernelRequest الذي تم التقاطه هو المصدر الأصلي للحقيقة. احتفظ بجميع إعدادات المحرر الفعلية عند الالتقاط من مساحة عمل التطبيق.
حفظ ضد الرسم الحقيقي
احفظ المستند بشكل منفصل من خلال POST /api/drawings/:id/toolpathsمع الاسم ورمز G والبيانات التي تحتوي على المستند المحمول الكامل. استخدم معرف رسم حقيقي يمكن للمتصل الوصول إليه. تتطلب عمليات الحفظ المحمولة وصولاً للكتابة إلى مالك المشروع أو المؤسسة ADMIN/MANAGER؛ الحساب الناجح وحده لا يمنح أي إذن بالاستمرار.
يقوم السايدكار بفك تشفير المستند، والتحقق من أن الصف NC يساوي المستند NC، وإعادة تشغيل طلب kernel الذي تم التقاطه قبل الوثوق في قطعة أثرية أصلية جديدة. فهو يقارن القطعة الأثرية الناتجة والبرنامج وNC الأصلي. يتم رفض الأدلة المحررة أو إعادة التشغيل المحظورة أو وحدات البايت غير المتناسقة. لا تؤدي حقول التحقق/مراجعة المصدر المقدمة من العميل إلى إنشاء الثقة.
عندما تتطابق العناصر والمخزون المحدد الذي تم التقاطه مع الرسم المرتبط، تستمد الخدمة ملخص مراجعة الرسم. يمكن أن تفتقر القطعة الأثرية الأصلية المحفوظة إلى تلك المراجعة عندما لا يتطابق المصدر مع الرسم الحالي. أبقِ هذا التمييز مرئيًا: إن المخرجات الملتقطة الصالحة ليست بالضرورة مخرجات جديدة لأحدث نموذج مخزن.
يرى نقاط نهاية ثبات مسار الأدوات و تحليل CAD الدقيق عند تجميع تدفق التقاط/حفظ أكثر ثراءً. تجنب متغير مسار أدوات المشروع ما لم يكن عقد معلمة الاستعلام المميز الخاص به مقصودًا.
تجديد بعد التغييرات وتشخيص الرفض
يؤدي تغيير الشكل الهندسي أو المخزون أو الأصل أو الأدوات أو المادة أو الآلة أو أمر التشغيل أو NC إلى تغيير علاقة الأدلة. إعادة الإنشاء من الطلب المحدث الذي تم التقاطه. يمكن أن يظل تحرير NC العادي نصًا عاديًا مفيدًا، ولكن يجب ألا يحمل قطعة أثرية أصلية سابقة كدليل على البايتات الجديدة. تقوم خدمة الحفظ بإزالة بيانات التعريف الأصلية غير المتوافقة أو ترفض مستندًا جديدًا غير متناسق.
يعد الإعداد المسبق غير المعروف للجهاز خطأً في التحقق من صحة المحول. مادة/أداة غير معروفة، واحتواء مخزون غير صالح، وهندسة فارغة، ومشكلات إعداد/تخطيط الإنتاج غير المدعومة. يشير التلاعب، والتوفر السريع، واصطدام الحامل/الطاولة، وإعادة التشغيل إلى الحركة/الأدلة التي تم إنشاؤها. حدد موقع معرف العملية والمرحلة والخط والنقطة في المشكلة قبل تغيير عناصر التحكم في العملية.
يمكن للحمولة المصدرية اجتياز فك تشفير مخطط JSON ومع ذلك تفشل في إنتاج مهمة صالحة. على العكس من ذلك، يمكن أن توجد قطعة أثرية مع إصدار محظور. احتفظ بزوج الطلب/النتيجة الأصلي عند تشخيص أي من الحالتين، بدلاً من استبداله بتغيير إعدادات تخمينية.
مصدر التنفيذ: packages/api/src/cam-kernel.ts, cam-program.ts، جوهر cam/kernel/snapshot.ts, execute.ts, schema.ts، والسايدكار services/cam-program.ts. اختبارات الأدلة المركزة هي packages/core/src/cam/kernel/kernel.test.ts و apps/sidecar/test/cam-program.test.ts.
انتقل من خلال نتيجة المثال
بدون operations المصفوفة اختار المخطط ثلاث عمليات من سرير القاطع الافتراضي، كل منها مع تغيير الأداة الخاصة بها. يلخصها رأس NC قبل أي حركة:
%
O1000
(PROGRAM: POM BLANK)
(UNITS: MM)
(WORK OFFSET: G54)
(MACHINE: VERTICAL MACHINING CENTRE BT40, 12 000 RPM, 11 KW)
(MATERIAL: ACETAL POM-C DELRIN)
(STOCK: 44.00 X 44.00 X 11.00 MM)
(OP 1: FACE STOCK TOP | T1 [FACEMILL-50] | S1810 | F815-1629)
(OP 2: 3D ADAPTIVE ROUGHING | T2 [FLAT-16] | S7160 | F2848-5696)
(OP 3: 3D STEEP AND SHALLOW FINISHING | T3 [BALL-10] | S12000 | F1642-3283)
G21 G90 G17 G94 G40 G49 G80
G54
(OPERATION: FACE STOCK TOP)
T1 M6
G43 H1
M3 S1810
(OP1 FACE)
(FACE: FACE STOCK TOP)
G0 X-48.000 Y-22.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 Z-1.000 F815
X48.000 F1629
Y0.000
X-48.000
Y22.000
X48.000
G0 Z2.000 وينتهي البرنامج ب G0 Z10.000, M5, M30 و %. الطول الإجمالي: 3071 سطر. لأنه لم يتم إعطاء أي آلة، vmc-standard تطبيق مسبقا، الذي هو آخر fanuc: ومن هنا %/O1000 تأطير, T1 M6 تغييرات الأداة و G43 H1 تعويض الطول
قراءة بيانات القطع للعملية
كل عملية تحمل cutting سجل يوضح كيفية اشتقاق سرعاته وخلاصاته. هذه هي قيم عملية التخشين أعلاه:
| مجال | قيمة | معنى |
|---|---|---|
rpm | 7160 | سرعة المغزل من Vc والقطر الفعال |
vc / vcRecommended | 359.9 / 360 م/دقيقة | السرعة السطحية المحققة والموصى بها |
fz | 0.199 مم | تغذية لكل سن بعد تصحيح ترقق الرقاقة |
chipThickness | 0.159 مم | الناتج متوسط سمك الرقاقة |
feed / plungeFeed | 5696 / 2848 ملم/دقيقة | تغذية القطع والغطس |
ap / ae | 10 / 3.2 ملم | العمق المحوري والاشتباك الشعاعي (20 % خطوة) |
rampAngle / helixPitch | 5° / 4.398 ملم | هندسة الدخول |
mrr | 182.258 سم³/دقيقة | معدل إزالة المواد |
powerKw / torqueNm / forceN | 1.862 / 1.986 / 248 | الحمولة المقدرة، تم فحصها مقابل حدود الماكينة |
deflectionMm | 0.0157 مم | انحراف الأداة المقدرة |
limitedBy, warnings, exceeded | فارغ | الحد الذي توج قيمة؛ لم يفعل شيئا هنا |
source reads: "Acetal POM-C (Delrin) (ISO N): Vc 360 m/min, fz 0.159 mm at Ø16, kc1.1 300 N/mm² mc 0.2 (handbook starting values)". The reference تسرد الكتلة صف جدول المواد والأعمدة المستخدمة وكل عامل ضرب (هنا cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25). إنه basis تنص على أن هذه هي قيم البداية اليدوية، وليست بيانات معتمدة من المورد للقاطع.
قيم البداية، وليس ضمانا
تعامل مع قطع البيانات كمحاولة أولى منطقية. قم بفحصها مقابل بيانات مورد الأداة الخاص بك والجهاز قبل الإنتاج، وقم بتجاوز كل عملية عندما تعرف بشكل أفضل: تقوم الأداة بعد ذلك بتسجيل الحقل في overridden.
هوية قطعة أثرية
| مجال | مثال | تجزئة |
|---|---|---|
identity.job | aa2159be8c7c4228… | الوظيفة الكنسية |
identity.part | 91a5382540991195… | هندسة الجزء |
identity.nc | 1614df331826682c… | نص NC الدقيق |
identity.algorithm | cadcamfun-cam-kernel@1 | اسم النواة وإصدارها |
إعادة تشغيل نفس الطلب يعيد إنتاج نفس الهويات. عندما يحفظ السايدكار قطعة أثرية أصلية، فإنه يعيد تشغيل الطلب الملتقط ويقارن؛ تغييرات NC المحررة identity.nc ويتم رفضه كدليل.
الوصفة: إنشاء وحفظ من TypeScript
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const request = JSON.parse(await Bun.file("native-job.json").text())
const result = await client.toolpathGenerator.manufacture(request)
if (result.status === "failed") throw new Error(result.issues.map((i) => i.message).join("; "))
const artifact = result.value
const failed = artifact.claims.filter((claim) => claim.status === "failed")
console.log(artifact.release, failed.map((claim) => `${claim.id}: ${claim.detail}`))
if (artifact.release === "blocked") process.exit(1)
await Bun.write("program.nc", artifact.nc) يتطلب الحفظ كمسار أدوات أيضًا وجود ملف محمول cadcamfun-cam الوثيقة المبنية من هذه القطعة الأثرية، لها programوالطلب الذي تم التقاطه ولقطة الرسم، كما هو موضح أعلاه. تأخذ طريقة SDK نفس كائن JSON مثل نص HTTP، المكتوب كـ ToolpathGeneratorManufactureInput.