تخطَّ إلى المحتوى
CADCAMFUN
الوثائق

الوثائق

التسامح والفسيفساء

كيف يحدد تسامح ارتفاع الوتر عدد المقاطع وعرض الكسور العشرية والفسيفساء المنحنية عبر حبات 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 سطر) يحمل هذه القاعدة؛ يستخدمه عارض المحرر وكتالوج العناصر المساعد ووحدة فسيفساء الكيان والاختبارات.

Ø20 دائرة بثلاثة تفاوتات اسحب إلى المدار · قم بالتمرير للتكبير · اسحب بزر الماوس الأيمن للتحريك
The same radius-10 circle as segmentsFor gives it: 10 segments at 0.5 mm (chord error 0.489), 23 at 0.1 mm (0.093) and 71 at the 0.01 mm default (0.0098). Each polygon is extruded 2 mm.

الثوابت

اسمقيمةمعنى
TOLERANCE_PRESETS0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005ما تقدمه واجهة المستخدم، من الخشن إلى الناعم
DEFAULT_TOLERANCE0.01المحرر والفسيفساء الافتراضي
MIN_TOLERANCE0.0001وتحت هذا التسامح باطل
MAX_TOLERANCE10وفوق هذا التسامح باطل
MIN_CURVE_SEGMENTS8أقل عدد من أجزاء الدائرة
MAX_CURVE_SEGMENTS2048الحد الأقصى الافتراضي للقطاعات
MAX_SEGMENTS (tessellate.ts)65 536الحد الأقصى الثابت لكل كيان في كيان الفسيفساء
MIN_TOLERANCE (tessellate.ts)1e-6الأرضية لذلك لا يمكن أن يؤدي عدم التسامح إلى إنتاج أعداد غير محدودة
tolerance.ts
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.1239.314e-2150
0.05324.815e-2271
0.01 (افتراضي)719.788e-32158
0.0051004.934e-33223
0.0021581.977e-33352
0.0012239.923e-43497
0.00053154.973e-44703

حالات الحافة، حقيقية أيضًا: 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 مم
صدفة CSGCsgOptions.tolerance1e-7 × المدى
التغطية بالفسيفساء مندوب BTessellateOptions.chordTolقطري / 2000، في [0.001، 0.05]
B-rep مصادفة منطقيةBooleanOptions.tol1e-8 × الحجم، ≥ 1e-7
الحبال الحلزونيةstepsPerTurn0.01 مم

التسامح مع العرض ليس التسامح مع الآلات

يتحكم تسامح الرسم في كيفية تقريب المنحنيات. التحقق من CAM وتركيب القوس G-code يحملان التفاوتات الخاصة بهما؛ انظر نواة CAM.

استكشاف الأخطاء وإصلاحها

أعراضسببيصلح
تبدو الدوائر متعددة الأضلاعالتسامح 0.1 على نصف قطر كبيراختر إعدادًا مسبقًا أفضل؛ تنمو الشرائح مع √r
إطار العرض بطيء على رسم كبيرالتسامح جيد جدا على العديد من المنحنيات0.01 يكفي للعرض؛ الاحتفاظ بقيم أدق للتصدير
يُظهر الطول عددًا كبيرًا جدًا من الكسور العشريةالكسور العشرية تتبع التسامحdecimalsForTolerance(0.01) = 2
تم رفض القيمة كتسامحخارج [0.0001، 10]استخدام إعداد مسبق