الوثائق
نواة تصنيع CAM
من مهمة التصنيع إلى NC والأدلة: التخطيط، والقواطع، ومخزون فوكسل مع شريحة الحجم المتبقي، وفحوصات التصادم المعتمدة.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
ما هي نواة CAM
نواة CAM في packages/core/src/cam/kernel (20 ملفات مصدر، حوالي 5 260 سطر) تأخذ مهمة تصنيع منقحة إلى آلة NC بالإضافة إلى دليل حول NC هذا. فهو يختار أدوات القطع وقطع البيانات، ويخطط للعمليات من ميزات CAD، ويدير الاستراتيجيات، وينشر رمز G، ويعيد تشغيل NC بشكل مستقل مقابل المخزون الحجمي، ويتحقق من حركة مجموعة الأدوات بحثًا عن الاصطدامات. هوية الخوارزمية الخاصة بها هي cadcamfun-cam-kernel@1.
| الوحدة النمطية | دور |
|---|---|
| مواد | درجات الشغل مع بيانات الآلات الخاصة بهم |
| قواطع | تجميعات الأدوات والمكتبة الافتراضية (أدوات القطع 70) |
| بيانات القطع | السرعات والأعلاف والأعماق والحمل والانحراف لقاطع المادة |
| مخطط | ميزات CAD → عمليات مرتبة باستخدام قواطعها |
| ينفذ | الإعداد/التشغيل: الاستراتيجيات، النشر، إعادة عرض NC المستقلة، نسب المخزون، المطالبات ومستوى الإصدار |
| الكينماتيكا، رئيس | trunnion table (AC / BC) and tilting head (B about Y) |
| حَشد | مجموعة الأدوات 3D (منطقة القطع، والساق، والحامل) كملف جانبي ومادة الدوران الخاصة بها |
| الاصطدام | الفحص المستمر لحركة المفصل: معتمد على أنه واضح أو تصادم أو لم يتم حله |
| حركة | خمسة محاور متزامنة: المواقع ← أوضاع الجدول، كل حركة مقسمة ومحددة |
| مخزون | المخزون الحجمي على شكل وحدات فوكسل مع شريحة الحجم المتبقي |
| تخليص الآلة | حامل وساق على الطاولة خلال كل حركة NC |
| محدب | المسافة الدقيقة بين الهياكل المحدبة (GJK) |
export const prepareJob: (job: ManufacturingJob) => CamResult<PreparedJob>
export const executeJob: (prepared: PreparedJob) => CamResult<CamArtifact>
export const runJob: (job: ManufacturingJob) => CamResult<CamArtifact> // prepare, then execute
export const planOnly: (job: ManufacturingJob) => CamResult<{ operations; notes; unmachined }>
export const KERNEL_ALGORITHM = "cadcamfun-cam-kernel@1" التخطيط القائم على الميزات
يقوم المخطط بتسلسل جزء منشوري بالطريقة التي يفعلها مبرمج CAM، من الميزات التي يتمتع بها التاريخ البارامتري حقًا:
- مواجهة أعلى الأسهم
- خشن حول الخطوط العريضة وداخل الجيوب (متكيف أو كفاف، مع بدل جدار)
- التجاويف المسطحة، والحفر الموضعي، والحفر أو الثقب الحلزوني، والمثاقب، وطحن الخيوط
- الانتهاء من الجدران
- اكسر الحواف العلوية باستخدام شطب على شكل حرف D 2 عند طلب إزالة الأزيز
- 3التخشين والتشطيب النهائي للأجسام ذات الشكل الحر
يتم تشكيل الجسم الذي لا يحتوي على تاريخ مميز (شبكة، أو منطقية من البدائيات، أو جزء منحوت) باستخدام إستراتيجيات السطح 3D. التخطيط يختار الأدوات والمناطق فقط؛ يتم حساب بيانات القطع لكل عملية عند تشغيل المهمة. تم التخطيط لثلاث عمليات تشغيل حقيقية على POM-C 44 × 44 × 11 مم فارغة: face مع مطحنة الوجه-50، surface-rough مع شقة-16 و surface-finish مع الكرة-10، تم إصدارها كـ verified-program مع مدة دورة 149 ثانية. تم رسم هذا المدى التصنيع الأصلي.
القواطع وتجميع الأداة
The default library has 70 cutters of nine kinds: flat (Ø1–16, plus aluminium ZrN variants), ball (Ø1–10), bull nose, face mill, spot drill, chamfer mill, engraver, thread mills (P0.5–P2) and drills. A cutter's assembly is its half-section profile from the tip, split into cutting zone, shank and holder.
{"id":"flat-6","name":"End mill Ø6 3F carbide ALTIN","kind":"flat","diameter":6,"flutes":3,
"material":"carbide","coating":"altin","fluteLength":15,"shankDiameter":6,"stickout":29,
"holder":{"diameter":40,"length":50}}
{"points":[{"r":0,"z":0},{"r":3,"z":0},{"r":3,"z":15},{"r":3,"z":29},{"r":20,"z":29},{"r":20,"z":79},{"r":0,"z":79}],
"parts":["cutting","cutting","shank","holder","holder","holder"],"length":79,"assumedHolder":false} مخزون Voxel وقوس الحجم المتبقي
المخزون عبارة عن شبكة فوكسل. بعد مجموعة من التحركات، يصبح كل فوكسل مادة، إزالة بالتأكيد (يوضع المكعب بالكامل داخل القاطع في موضع معين من العينات) أو إزالة ممكن (جاء مكعبه ضمن امتداد القاطع: نصف قطري بالإضافة إلى نصف تباعد العينة). وبالتالي فإن المجلد المتبقي عبارة عن قوس: المادة التي لا يمكن إزالتها ستترك بالتأكيد، والمواد التي لم تتم إزالتها بالتأكيد قد تبقى. لا يتم أبدًا إزالة فوكسل دون أن تغطيه قاطعة العينات. تحمل الأدوات المائلة محورها لكل نقطة طرف، لذا تستخدم عمليات المسح ذات المحاور الخمسة نفس الاختبارين.
export const voxelStock: (min: Vec3, max: Vec3, voxel: number) => VoxelStock // sample step = voxel / 2
export const removeTipPath: (stock: VoxelStock, cutter: Cutter, path: ReadonlyArray<Vec3>, axes?: ReadonlyArray<Vec3>) => void
export const remainingVolume: (stock: VoxelStock) => { lower: number; upper: number } const s = voxelStock({ x: 0, y: 0, z: -10 }, { x: 40, y: 30, z: 0 }, 0.5)
// 80 × 60 × 20 = 96 000 voxels, step 0.25
removeTipPath(s, flat6, path) // slot y = 15, x 8→32, then the ring 8..32 × 8..22, all at z −3
remainingVolume(s) // {"lower":9749.5,"upper":10740} 124 ms
// stock 12 000 mm³: between 1 260 and 2 250.5 mm³ removed يضيق الدعامة بحجم فوكسل: يؤدي خفض فوكسل إلى النصف إلى خفض الشريط المرتخي على طول كل جدار.
فحص الاصطدام المستمر
تقوم وحدة التحكم بتحريك مفاصلها خطيًا بين نقطتين، ومن الممكن أن يحدث تصادم بينهما. checkMotion checks the whole move: probes (the holder and shank, each non-cutting profile segment enclosed by a capsule) against obstacles (the table envelope and the part box). The lower bound is a Lipschitz argument: a signed distance changes by at most the displacement of the moving solid, so the move is bisected until every interval is proven clear by margin، يتم أخذ عينات من التداخل، أو ينفد العمق (12).
| الحكم | معنى |
|---|---|
| واضح | وفي كل فاصل زمني يكون الحد الأدنى للتخليص هو الهامش على الأقل |
| الاصطدام | تقع نقطة التحقيق التي تم أخذ عينات منها داخل عائق؛ يشير إلى مكان التحرك (0 إلى 1) |
| لم يتم حلها | لا يمكن إثبات وجود فاصل زمني واضح في العمق، ولم يتم العثور على أي تداخل |
// rapid along X at nose z 60
{"verdict":"clear","clearance":26.875,"evaluations":2}
// plunge from nose z 60 to nose z 0
{"verdict":"collision","clearance":-10,"at":1,"evaluations":2}
// standing poses
z 60 {"verdict":"clear","clearance":46.875,"evaluations":2}
z 20 {"verdict":"clear","clearance":6.875,"evaluations":2}
z 10 {"verdict":"unresolved","clearance":-3.125,"evaluations":4097}
z 5 {"verdict":"collision","clearance":-5,"at":0,"evaluations":1} التقارير السريعة 26.875 بدلاً من الوضع 46.875 لأن الفحص المتحرك يشهد على الحد الأدنى: فهو يطرح الإزاحة على كل فاصل زمني لم يقسمه أكثر. يوضح وضع الأنف-z-10 السبب unresolved موجود: الحد الأدنى المعتمد سالب (قد يتداخل المغلف) ولكن لا توجد نقطة عينة بالداخل، لذلك بعد تقييمات 4 097، يبلغ المدقق ما يمكنه إثباته بدلاً من التخمين. تعتبر المظاريف متحفظة: حيث تحتوي الكبسولة على جزء الحامل الخاص بها، لذلك يمكن الإبلاغ عن التداخل حيث تقترب الأداة الحقيقية فقط.
استكشاف الأخطاء وإصلاحها
| أعراض | سبب | يصلح |
|---|---|---|
| فشلت حالة المهمة: إصدار مخطط المهمة غير مدعوم | وظيفة بنيت لمخطط نواة مختلفة | أعد بناء المهمة باستخدام schemaVersion الحالي |
| شريحة الحجم المتبقي واسعة | فوكسل خشن جدًا بالنسبة للميزات | استخدام فوكسل أصغر؛ يبلغ الركود حوالي فوكسل واحد على طول كل جدار |
| الاصطدام على السريع | يصل الحامل أو المظروف إلى الطاولة أو الجزء | ارفع مستوى الخلوص أو قم بتقصير مستوى الالتصاق |
| لم يتم حلها في حركة دوارة طويلة | ويكون حد ليبتشيتز ضعيفًا بعيدًا عن مركز الدوران | قم بتقسيم الحركة، أو قبول الهامش الذي يمكن للمدقق إثباته |
| تم التخطيط للعملية باستخدام قاطع غير متوقع | ملاءمة القاطع للمادة والصلابة | قم بتمرير مكتبة الأدوات باستخدام القاطع الذي تريده |