الوثائق
التسامح والفسيفساء
كيف يحدد تسامح ارتفاع الوتر عدد المقاطع وعرض الكسور العشرية والفسيفساء المنحنية عبر حبات CAD.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
تسامح واحد، كل منحنى
A tolerance is the largest distance the model may be from the true shape, in millimetres. For a circle drawn as a polygon that distance is the chord's sagitta r(1 − cos(π/n)), so the number of segments follows from the tolerance. packages/core/src/cad/tolerance.ts (39 سطر) يحمل هذه القاعدة؛ يستخدمه عارض المحرر وكتالوج العناصر المساعد ووحدة فسيفساء الكيان والاختبارات.
الثوابت
| اسم | قيمة | معنى |
|---|---|---|
| TOLERANCE_PRESETS | 0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005 | ما تقدمه واجهة المستخدم، من الخشن إلى الناعم |
| DEFAULT_TOLERANCE | 0.01 | المحرر والفسيفساء الافتراضي |
| MIN_TOLERANCE | 0.0001 | وتحت هذا التسامح باطل |
| MAX_TOLERANCE | 10 | وفوق هذا التسامح باطل |
| MIN_CURVE_SEGMENTS | 8 | أقل عدد من أجزاء الدائرة |
| MAX_CURVE_SEGMENTS | 2048 | الحد الأقصى الافتراضي للقطاعات |
| MAX_SEGMENTS (tessellate.ts) | 65 536 | الحد الأقصى الثابت لكل كيان في كيان الفسيفساء |
| MIN_TOLERANCE (tessellate.ts) | 1e-6 | الأرضية لذلك لا يمكن أن يؤدي عدم التسامح إلى إنتاج أعداد غير محدودة |
export const isTolerance: (value: unknown) => value is number // finite, in [0.0001, 10]
/** Smallest n ≥ 8 with r(1 − cos(π/n)) ≤ tolerance, capped. */
export const segmentsFor: (radius: number, tolerance: number, cap?: number /* 2048 */) => number
export const chordError: (radius: number, segments: number) => number // r(1 − cos(π/n))
/** 0.001 → 3, 0.05 → 2, 0.5 → 1; at most 6. */
export const decimalsForTolerance: (tolerance: number) => number الإعدادات المسبقة بالأرقام
حقيقي segmentsFor, chordError و decimalsForTolerance الإخراج لكل إعداد مسبق:
| التسامح، مم | المقاطع ص 10 | خطأ وتر ص 10 | الكسور العشرية | المقاطع ص 50 |
|---|---|---|---|---|
| 0.1 | 23 | 9.314e-2 | 1 | 50 |
| 0.05 | 32 | 4.815e-2 | 2 | 71 |
| 0.01 (افتراضي) | 71 | 9.788e-3 | 2 | 158 |
| 0.005 | 100 | 4.934e-3 | 3 | 223 |
| 0.002 | 158 | 1.977e-3 | 3 | 352 |
| 0.001 | 223 | 9.923e-4 | 3 | 497 |
| 0.0005 | 315 | 4.973e-4 | 4 | 703 |
حالات الحافة، حقيقية أيضًا: segmentsFor(1000, 0.0001) = 2048 (الغطاء)، segmentsFor(2, 5) = 8 (التسامح ≥ نصف القطر)، isTolerance(0.00005) = كاذبة، isTolerance(10) = صحيح، decimalsForTolerance(0.0001) = 4.
فسيفساء الكيانات الرسم
tessellate(entity, tolerance) في tessellate.ts يحول أي كيان رسم إلى خطوط متعددة ضمن تسامح الوتر. هذا الخط المتعدد هو ما تعوضه طبقة CAM وما يعرضه إطار العرض. يُرجع الشكل المغلق حلقة تختلف نقطتها الأولى والأخيرة؛ الجزء الختامي ضمني.
| كيان | قاعدة |
|---|---|
| خط | نقطتي النهاية لها |
| الدائرة، القوس | عدد مقاطع القوس من نصف القطر والكنس والتسامح، محدد بـ 65 536 |
| القطع الناقص | خطوة المعلمة الموحدة h = √(8·tol / a)، نصف القطر الأكبر، على الأقل 8 مقطع |
| خدد | الحدود التحليلية لـ splinePolyline |
| متعدد الخطوط | شرائح منتفخة كأقواس |
| المستطيل | أربع زوايا |
| النص، البعد | لا يوجد مخطط تفصيلي: قائمة فارغة |
بالنسبة إلى القطع الناقص بنصف القطر 20 و10، ellipseSegmentCount يعطي 100 شرائح عند 0.01 مم و32 عند 0.1 مم.
حيث تجتمع التسامح
| نواة | معلمة التسامح | تقصير |
|---|---|---|
| رسم الملفات الشخصية | ملفات تعريف الرسم (الرسم والتسامح) | 0.01 مم |
| البدائيات الشبكية | meshOf (الصلبة، التسامح) | 0.1 مم |
| صدفة CSG | CsgOptions.tolerance | 1e-7 × المدى |
| التغطية بالفسيفساء مندوب B | TessellateOptions.chordTol | قطري / 2000، في [0.001، 0.05] |
| B-rep مصادفة منطقية | BooleanOptions.tol | 1e-8 × الحجم، ≥ 1e-7 |
| الحبال الحلزونية | stepsPerTurn | 0.01 مم |
التسامح مع العرض ليس التسامح مع الآلات
يتحكم تسامح الرسم في كيفية تقريب المنحنيات. التحقق من CAM وتركيب القوس G-code يحملان التفاوتات الخاصة بهما؛ انظر نواة CAM.
استكشاف الأخطاء وإصلاحها
| أعراض | سبب | يصلح |
|---|---|---|
| تبدو الدوائر متعددة الأضلاع | التسامح 0.1 على نصف قطر كبير | اختر إعدادًا مسبقًا أفضل؛ تنمو الشرائح مع √r |
| إطار العرض بطيء على رسم كبير | التسامح جيد جدا على العديد من المنحنيات | 0.01 يكفي للعرض؛ الاحتفاظ بقيم أدق للتصدير |
| يُظهر الطول عددًا كبيرًا جدًا من الكسور العشرية | الكسور العشرية تتبع التسامح | decimalsForTolerance(0.01) = 2 |
| تم رفض القيمة كتسامح | خارج [0.0001، 10] | استخدام إعداد مسبق |