الوثائق
الإعدادات والبرامج المحفوظة
قم بالتقاط المخزون وإطار العمل ومهام القطع والعمليات المطلوبة والأدلة المصدرية المستخدمة لإنتاج البرنامج.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
الإعداد هو سياق التصنيع
يحدد إعداد التصنيع كيفية وضع الجزء بالنسبة للمخزون والتركيبات والأدوات. cam.ManufacturingSetup يسجل المعرف والمراجعة وإطار العمل الصلب ومخزون التنسيق العالمي ومظاريف التثبيت وتجميعات الأدوات. تقبل النواة الأصلية لقطة وموارد CAD وتنتج نتائج تشغيل مرتبة وبرنامجًا واحدًا منشورًا.
استخدام برامج التطبيقات المحفوظة CamProgramDocument، يتم تخزين المستند المحمول أيضًا في Toolpath.data. يحتفظ هذا العقد بـ NC وتمثيل برنامجه مع الإعدادات والمخزون ولقطات الرسم اللازمة لإعادة فتح مساحة العمل. تحافظ العمليات الاختيارية على هويات العمليات المنفصلة؛ تحتفظ بيانات kernel الاختيارية بأدلة المصدر الأصلية.
عقد الوثيقة المحمولة
وثيقة تحدد نفسها مع format: "cadcamfun-cam" و version: 1. الحقول المطلوبة هي gcode, programمولد settings, printer إضافات, stock، وشكل حر drawing لقطة. الحقول الاختيارية هي operations, kernelArtifact، و kernelRequest.
كل عملية مخزنة لها فريدة من نوعها id, name, gcode، و program، مع أداة اختيارية وإعدادات ومعرفات عناصر المصدر. يؤدي الحفاظ على NC وهويته إلى إجراء عملية ذهابًا وإيابًا بشكل مستقل عن ملصق العرض الخاص به.
ترتيب العملية وتكوينها
combineCamOperations يحافظ على أمر التشغيل. يقوم بمعرفات مسار أدوات مساحات الأسماء مع معرف العملية، ويستخدم أداة تشغيل صريحة عند توفيرها، وتعرض البادئات الأسماء عندما يكون هناك أكثر من عملية واحدة. يأخذ البرنامج المدمج وحدات وتعويض العمل من العملية الأولى.
بالنسبة لعملية واحدة، يكون NC المدمج هو النص الأصلي. بالنسبة للعمليات المتعددة، يقوم المساعد بربط أقسام NC الموجودة لديه بتعليقات العملية. لا يقوم هذا المساعد بإعادة نشر جميع الأقسام في برنامج تحكم واحد. النواة الأصلية هي المسار الذي يولد عمليات مرتبة ويصدر برنامجًا واحدًا متكاملًا.
يجب على المتصلين الذين يقومون بتكوين أقسام تم إنشاؤها مسبقًا التأكد من توافق الوحدات وإزاحات العمل وترقيم الأدوات والرؤوس ونهايات البرنامج. يثبت تكوين المستند الناجح الترتيب والاتساق مع أقسامه المخزنة؛ ولا يضيف دليلاً على تخليص الآلة.
توليد وحفظ
- التقط عناصر الرسم والمخزون المراد تشكيله. اختر المادة والآلة والأدوات وإزاحة العمل وضوابط الجودة.
- يتصل
POST /api/toolpaths/manufactureمعschemaVersion: 1والهوية الوظيفية والاسم والعناصر الملتقطة. عمليات التوريد بشكل صريح في ترتيب التصنيع أو السماح للنواة بتخطيطها. - فحص النتيجة التي تم إرجاعها، والقضايا، والمطالبات الفردية، و
release. يمكن أن تكون القطعة الأثرية معاينة أو محظورة؛ إن تلقي نتيجة لا يعني التحقق من المخرجات. - بناء أ
CamProgramDocumentيصف رمز G والبرنامج والقطعة الأثرية والطلب الذي تم التقاطه نفس النتيجة. احفظه من خلال نقطة نهاية إنشاء مسار الأدوات أو تحديثه، جنبًا إلى جنب مع رمز G هذا.
تقوم نقطة نهاية التصنيع بتقييم اللقطة المتوفرة دون كتابة الرسم أو إنشاء مسار أدوات. مولد /generate هو مسار منفصل يعتمد على الإعدادات ويمكنه أيضًا توفير NC لمستند محمول.
التحقق من صحة الثبات
يتعرف السايدكار على المستندات المحمولة من خلال تنسيقها ويقوم بفك تشفير المخطط بالكامل قبل حفظه. يجب أن يتطابق رمز G الخاص بالمستند مع رمز G الخاص بصف مسار الأداة. يجب أن تكون معرفات العملية فريدة، ويجب أن يقوم تكوينها المرتب بإعادة إنتاج النص المحفوظ. يقوم السايدكار بإعادة توزيع عملية NC لإعادة بناء تحركات البرنامج بدلاً من الوثوق ببيانات النقل المقدمة من العميل.
بالنسبة إلى قطعة أثرية أصلية جديدة مع طلب تم التقاطه، يقوم السايدكار بإعادة تشغيل هذا الطلب ومقارنة القطعة الأثرية الناتجة والبرنامج وNC الأصلي. يتم رفض النتائج الفاشلة أو المحظورة والعناصر المعدلة والنص غير المتطابق. تتم إزالة القطعة الأثرية التي تم توفيرها حديثًا بدون الطلب الذي تم التقاطه إلا إذا كانت قطعة أثرية غير متغيرة تم الاحتفاظ بها بالفعل في الصف.
عندما تتطابق عناصر المصدر المتوفرة والمخزون مع الرسم المخزن المرتبط، تقوم الخدمة بحساب ملخص مراجعة الرسم. لا يمكن للعملاء تقديم موثوق sourceRevision أو مطالبة التحقق التعسفية. يتم اشتقاق المراجعة المحفوظة بواسطة الخدمة أو يتم الاحتفاظ بها فقط لنفس القطعة الأثرية الموجودة.
تحرير NC والاحتفاظ بالأدلة
يمكن أن يحل التحديث محل NC أثناء إرسال المستند المحمول السابق الذي لم يتغير. تتعرف الخدمة على هذه الحالة، وتعيد بناء البرنامج الذي تم تحليله من النص الجديد، وتزيل العمليات وأدلة المصدر الأصلية التي لم تعد متطابقة. يتم رفض مستند جديد غير متناسق بدلاً من دمج البرامج غير ذات الصلة بصمت.
تظل بيانات مسار الأدوات العادية ذات الشكل الحر مدعومة. يؤدي التغيير إلى NC إلى إزالة بيانات التعريف الأصلية التي لا معنى لها حيث لم تعد متطابقة. المقدمة من قبل العميل verification و response لا تصبح الحقول دليلًا أصليًا موثوقًا به.
تنفيذ التحقق من الصحة هو apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData، و drawingRevision مشاركة نفس محول الطلب ومنطق الهوية الذي يستخدمه الإنشاء والحفظ.
يمكن أن يحتوي البرنامج المحفوظ على برامج فرعية تم إنشاؤها من مسارات الأدوات المتكررة. تم توضيح القواعد التي قد تشترك بها مسارات الأدوات في برنامج فرعي في ملف صفحة كام.
إطارات عمل صلبة
A WorkFrame له أصل ومحاور X/Y/Z. validateWorkFrame يتطلب إحداثيات محدودة، ومحاور الوحدة، والتعامد الزوجي، والتوجه الأيمن ضمن التسامح العددي. workToWorld يطبق الإطار worldToWork عودة المشاريع. تنتج الإطارات غير الصالحة والنقاط غير الصالحة والتجاوز الرقمي خطأ في النطاق.
validateSetup يتحقق أيضًا من معرف الإعداد غير الفارغ، ومراجعة العدد الصحيح الآمن غير السالب، والأظرف المحدودة ذات الحجم الإيجابي، ومعرفات التركيبات/الأدوات الفريدة، وأبعاد القاطع والحامل الموجبة. يجب ألا يتجاوز طول القطع الالتصاق. تقوم عملية التحقق من الصحة بإرجاع مشكلات خاصة بالحقل حتى يتمكن المتصل من تحديد القيمة التي تحتاج إلى تصحيح.
تجهيز الجدول المفهرسة
cam/indexing.ts يحل التوجهات المفهرسة ل table-AC و table-BC تخطيطات. يقوم بتدوير مستوى العمل المحدد بشكل عادي على الجهاز +Z، ويحترم حدود الدوران، ويفضل الإمالة الأصغر التي يمكن الوصول إليها. تمر نقاط البرنامج من خلال إطار العمل وتدوير الطاولة حول محور الآلة.
يقوم هذا المحول بتصميم فهرسة الجدول باستخدام محور أداة ثابت. تُعد الرؤوس المائلة، ودورات المستوى المائل لوحدة التحكم، والحركة المتزامنة لخمسة محاور إمكانات منفصلة. المواقف الدوارة هي درجات. تظل محاور الإطار متجهات الوحدة.
أنواع الإعداد المشترك
ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld، و worldToWork يتم تصديرها من خلال cam. يتم تصدير مخططات التشغيل والمستندات المحمولة من @cadcamfun/api، مما يجعلها متاحة لكل من استمرارية السايدكار ومنطق استعادة سطح المكتب.
إعادة الفتح في سطح المكتب
saved-program.ts يلتقط الإعدادات الحالية والمخزون والرسم وحفظ NC الدقيق. إنه يحتفظ بقطعة أثرية للنواة فقط عندما يتطابق NC والتجزئة مع تلك البايتات. عند الاستعادة، يقوم بفحص المنتج المخزن وتحريره، واستعادة نتائج العملية المتوافقة، وإعادة تعيين التحقق من إعادة التشغيل، وتحميل المحرر، واستعادة عناصر التحكم في المولد والمخزون من اللقطة.
عندما يتوفر رمز G العادي فقط، يقوم سطح المكتب بتحليله للعرض. لا يؤدي فتح النص بنجاح إلى إعادة إنشاء طلب إنشاء مفقود أو ترقية مستوى أدلة البرنامج.
احتفظ بالمصدر والنتيجة معًا
يمكنك التجديد بعد تغيير الشكل الهندسي أو المخزون أو أبعاد الأداة أو إطار العمل أو الماكينة أو المادة أو أمر التشغيل. احتفظ بلقطات المصدر لإمكانية تكرار نتائجها، وتعامل مع ملف NC الذي تم تغييره كمخرج جديد يتطلب تحليله الخاص. تعمل عمليات فحص مراجعة المصدر وإعادة التشغيل على منع تقديم نتيجة سابقة كدليل على وحدات البايت المختلفة للبرنامج.
تقييم الإعداد الذي تم التقاطه
محول اللقطة هو الحد المشترك لطلب التصنيع الأصلي. يلتقط هذا المثال المستقل بوليمرًا فارغًا وصندوق مخزون أكبر قليلًا، ثم يُرجع مستوى الإصدار الفعلي للقطعة الأثرية. لا يكتب رسمًا ولا مسار أدوات.
import { cam } from "@cadcamfun/core"
const prepared = cam.kernel.jobOfSnapshot({
schemaVersion: 1, id: "blank-job", name: "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
})
if (prepared.status === "failed") throw new Error(JSON.stringify(prepared.issues))
const result = cam.kernel.runJob(prepared.value)
if (result.status === "failed") throw new Error(JSON.stringify(result.issues))
console.log(result.value.release)
console.log(result.value.claims)
console.log(result.value.identity.nc) موضع المكعب هو مركزه؛ قاعها هو Z0. مخزون اللقطة X/Y هو مركزه والعرض/الارتفاع هما الأبعاد الكاملة. يضع المحول قاع المخزون عند أدنى مستوى Z للجزء المحدد، ثم يضيف العمق المعلن. يتم تعيين أصل عمل Kernel افتراضيًا على مركز المخزون في أعلى المخزون؛ يختار ركن الأسهم الحد الأدنى X/Y وأعلى Z بدلاً من ذلك.
مصدر: packages/core/src/cam/kernel/snapshot.ts, execute.ts، و kernel.test.ts.
خيارات وحدود اللقطة
يتطلب طلب HTTP الأصلي عناصر 1–2،000، وإصدار 1، ومعرف/اسم مهمة غير فارغ، واسم مادة يصل إلى 80 حرفًا. يقبل ما يصل إلى 500 من العمليات الصريحة، وعند توفيره، يقبل 1–200 من القواطع. حذف العمليات يستدعي المخطط؛ قائمة العمليات الفارغة الصريحة ليست طلبًا لاختراع العمليات.
finishAllowance يقبل 0–5 مم؛ scallop موجبة وبحد أقصى 1 ملم؛ deburr موجبة وبحد أقصى 5 ملم. تستخدم الإعدادات الافتراضية الأصلية السماح بإنهاء المادة، 0.01 مم أسقلوب، وتفاوت المسار 0.01 مم. يمكن توفير دقة إعادة التشغيل بشكل منفصل. خياري subprograms: true يطلب تكرار البث المترجم فقط حيث تدعمه اللهجة المحددة.
يقوم حقل آلة اللقطات بتسمية إعداد مسبق مسجل. المستوى الأدنى ManufacturingJob يمكن أن يحمل سجلًا كاملاً للآلة، بما في ذلك السفر الصريح وهندسة الجدول؛ لا تقبل سلسلة آلة اللقطة العامة بحد ذاتها سجلاً عشوائيًا للجهاز.
مصدر: packages/api/src/cam-kernel.ts, ai-cam.ts، و packages/core/src/cam/kernel/contracts.ts.
حل عمليات الحفظ المرفوضة
| رسالة الرد | السبب والعلاج |
|---|---|
| مستند مسار أدوات CADCAMFUN غير صالح | فشل التنسيق المحمول المعترف به في مخططه. احتفظ بجميع الإعدادات المطلوبة، والطابعة، والمخزون، والرسم، والبرنامج، وحقول G-code. |
| يجب أن يحتوي مستند مسار الأدوات ورمز G على نفس البرنامج | يختلف الصف NC والمستند الجديد NC. أعد إنشاء اللقطة من وحدات البايت المحددة التي تم حفظها. |
| يجب أن تحتوي العمليات المحفوظة على معرفات فريدة وأن تقوم بتكوين رمز G المخزن بالترتيب | لم تعد هوية العملية أو الطلب يعيد إنتاج المستند. إعادة التركيب بعد تحرير العمليات أو إعادة ترتيبها أو حذفها. |
| قطعة أثرية kernel المحفوظة لا تتطابق مع طلب المصدر وNC الأصلي | فشلت إعادة تشغيل الطلب الذي تم التقاطه، أو تم إرجاع مخرجات محظورة، أو كانت مختلفة عن المنتج/البرنامج/NC المُطالب به. قم بتجديد حقول الأدلة بدلاً من تحريرها. |
قد يتم الاحتفاظ بالقطعة الأثرية الأصلية الصالحة دون مراجعة الرسم المصدر عندما لا يتطابق اختيار/مخزون المصدر مع الرسم المخزن المرتبط. لا يعني هذا الغياب أن NC المحفوظة قد تم تجديده مقابل الرسم الحالي. اقرأ مراجعة الرسم ولقطات المصدر بشكل مستقل عند الإبلاغ عن الحداثة.
مصدر: apps/sidecar/src/services/cam-program.ts و apps/sidecar/test/cam-program.test.ts.
شاهد وظيفة محلية في 3د
| مرجع سابق | استراتيجية | أداة | طول القطع | وقت | تمت الإزالة |
|---|---|---|---|---|---|
| وجه الأسهم الأعلى | face | facemill-50 | 334.0 مم | 12.4 s | 1936 ملم مكعب |
| 3D التخشين التكيفي | surface | flat-16 | 472.2 مم | 5.3 s | 3360 ملم مكعب |
| 3D تشطيب شديد الانحدار والسطح | surface | ball-10 | 5660.6 مم | 113.4 s | 0 ملم مكعب |
آلة vmc-standard (مركز المعالجة العمودية (BT40، 12 000 دورة في الدقيقة، 11 كيلووات)، عمود fanuc)، مادة pom-c (Acetal POM-C (Delrin)). Stock volume 21296 mm³, final 16000 mm³, equal to the part volume, so remaining volume is 0. Estimated cycle time 149 s. Release: verified-program. يبلغ طول NC 3071 سطرًا.
| مطالبة | حالة |
|---|---|
cutting-data | اجتاز |
machine-limits | اجتاز |
operations-complete | اجتاز |
no-rapid-in-stock | اجتاز |
holder-clearance | اجتاز |
no-gouge | اجتاز |
material-removed | اجتاز |
nc-replay | اجتاز |
machine-travel | غير مدعوم |
machine-clearance | اجتاز |
machine-travel هو unsupported هنا لأن الإعداد المسبق لا يحتوي على مظروف سفر صريح للتحقق منه. إن الإدعاء غير المدعم لا يعتبر فشلاً، ولكنه أيضاً ليس دليلاً؛ يغطي إصدار البرنامج الذي تم التحقق منه المطالبات التي تم تمريرها.
الرياضيات إطار العمل، عملت من خلال
import { cam } from "@cadcamfun/core"
const frame = cam.frameFromNormal({ x: 40, y: 0, z: 10 }, { x: 1, y: 0, z: 1 })
// xAxis (0.707, 0, -0.707) yAxis (0, 1, 0) zAxis (0.707, 0, 0.707)
cam.validateWorkFrame(frame) // []
const world = cam.workToWorld(frame, { x: 10, y: 5, z: 0 }) // (47.071, 5, 2.929)
cam.worldToWork(frame, world) // (10, 5, 0)
cam.validateWorkFrame({ origin: { x: 0, y: 0, z: 0 },
xAxis: { x: 1, y: 0, z: 0 }, yAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 1, z: 0 } })
// [{ field: "frame", message: "Work frame axes must be orthonormal and right-handed" }] frameFromNormal يأخذ الوضع الطبيعي مثل Z ويعرض تلميح X (العالم X افتراضيًا) على المستوى. عندما يكون التلميح موازيا للعادي فإنه يختار عموديا آخر. Y هي دائمًا Z × X، وبالتالي فإن النتيجة تكون يمينية من خلال البناء.
حلول دوارة للوجوه المشتركة
anglesFor(normal, layout, limits) returns every way the table can bring a part direction to machine +Z, smallest tilt first, with the tilt inside the limits (default −120° to 120°). C is wrapped into (−180°, 180°]. These are real outputs:
| جزء عادي | طاولة-AC | الجدول قبل الميلاد |
|---|---|---|
| (1، 0، 1)، 45° الجانب | A45 C90، ثم A− 45 C− 90 | B−45 C0، ثم B45 C180 |
| (1، 0، 0)، وجه +X | A90 C90، ثم A− 90 C− 90 | B−90 C0، ثم B90 C180 |
| (0، −1، 0)، الوجه الأمامي | A90 C180، ثم A− 90 C0 | B−90 C90، ثم B90 C− 90 |
| (0، 0، −1)، الجانب السفلي | لا شيء (صفيف فارغ) | لا شيء (صفيف فارغ) |
يحتاج الجانب السفلي إلى إمالة 180°، خارج الحدود الافتراضية، وبالتالي تكون القائمة فارغة و indexToolpath يلقي "لا يمكن للمحاور الدوارة للآلة أن تصل إلى مستوى العمل هذا ضمن حدودها". قم بتشكيل الجانب السفلي في إعداد ثانٍ بدلاً من ذلك.
const [angles] = cam.anglesFor({ x: 1, y: 0, z: 1 }, "table-BC") // { b: -45, c: 0 }
cam.partToMachine({ x: 40, y: 0, z: 10 }, angles, "table-BC", { x: 0, y: 0, z: 0 })
// (21.213, 0, 35.355): the origin rotated -45° about Y around the pivot رسائل التحقق من صحة الإعداد
cam.validateSetup({
id: "", revision: -1, frame,
stock: { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 10, z: 10 } },
fixtures: [],
tools: [{ toolId: "t", cuttingDiameter: 6, cuttingLength: 30, stickout: 20,
holderDiameter: 32, holderLength: 40 }],
}) | مجال | رسالة |
|---|---|
id | يجب ألا يكون معرف الإعداد فارغًا |
revision | يجب أن تكون مراجعة الإعداد عددًا صحيحًا آمنًا غير سالب |
stock | يجب أن يكون للظرف إحداثيات محدودة وحجم موجب |
tools.t | يجب ألا يتجاوز طول القطع الالتصاق |
يتم إرجاع المشكلات، وليس طرحها، ويتم الإبلاغ عنها جميعًا في مسار واحد، بحيث يمكن للنموذج وضع علامة على كل حقل تالف معًا.