Aller au contenu
CADCAMFUN
Docs

Documentation

Tolérance et pavage

Comment une tolérance de hauteur de corde décide du nombre de segments, affiche les décimales et la tessellation des courbes dans les noyaux CAO.

Traduit automatiquement de l'anglais. Voir l'original en anglais

Une tolérance, chaque courbe

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 lignes) contient cette règle ; le moteur de rendu de l'éditeur, le catalogue d'éléments de l'assistant, le tesselateur d'entités et les tests l'utilisent tous.

Ø20 cercle à trois tolérances Faites glisser vers l'orbite · faites défiler pour zoomer · faites glisser vers la droite pour effectuer un panoramique
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.

Constantes

NomValeurSignification
TOLERANCE_PRESETS0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005ce que propose l'interface utilisateur, grossier à fin
DEFAULT_TOLERANCE0.01éditeur et tessellation par défaut
MIN_TOLERANCE0.0001en dessous, la tolérance est fausse
MAX_TOLERANCE10au-dessus de ceci, la tolérance est fausse
MIN_CURVE_SEGMENTS8le moins de segments d'un cercle
MAX_CURVE_SEGMENTS2048plafond par défaut des segmentsPour
MAX_SEGMENTS (tessellate.ts)65 536plafond strict par entité dans le tessellateur d'entité
MIN_TOLERANCE (tessellate.ts)1e-6plancher donc une tolérance zéro ne peut pas produire des décomptes illimités
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

Préréglages en chiffres

Réel segmentsFor, chordError et decimalsForTolerance sortie pour chaque préréglage :

Tolérance, mmsegments de r 10erreur d'accord r 10décimalessegments de r 50
0.1239.314e-2150
0.05324.815e-2271
0.01 (par défaut)719.788e-32158
0.0051004.934e-33223
0.0021581.977e-33352
0.0012239.923e-43497
0.00053154.973e-44703

Cas extrêmes, également réels : segmentsFor(1000, 0.0001) = 2048 (le plafond), segmentsFor(2, 5) = 8 (tolérance ≥ rayon), isTolerance(0.00005) = faux, isTolerance(10) = vrai, decimalsForTolerance(0.0001) = 4.

Mosaïque d'entités de dessin

tessellate(entity, tolerance) dans tessellate.ts transforme n'importe quelle entité de dessin en polylignes dans la tolérance de corde. Cette polyligne est ce que la couche CAM compense et ce que la fenêtre restitue. Une forme fermée renvoie un anneau dont le premier et le dernier points diffèrent ; le segment de clôture est implicite.
EntitéRègle
Doublerses deux points finaux
Cercle, Arcnombre de segments d'arc à partir du rayon, du balayage et de la tolérance, plafonné à 65 536
Ellipsepas de paramètre uniforme h = √(8·tol / a), un rayon plus grand, au moins 8 segments
Splinelimite analytique de splinePolyline
Polylignesegments renflés sous forme d'arcs
Rectanglequatre coins
Texte, Cotepas de plan : liste vide

Pour une ellipse de rayons 20 et 10, ellipseSegmentCount donne 100 segments à 0.01 mm et 32 à 0.1 mm.

Là où les tolérances se rencontrent

NoyauParamètre de toléranceDéfaut
Profils d'esquissesketchProfiles (esquisse, tolérance)0.01 mm
Primitives de maillagemeshOf(solide, tolérance)0.1 mm
Coïncidence CSGCsgOptions.tolerance1e-7 × étendue
Pavage B-repTessellateOptions.chordToldiagonale / 2000, dans [0.001, 0.05]
Coïncidence booléenne B-repBooleanOptions.tol1e-8 × taille, ≥ 1e-7
Accords d'hélicestepsPerTurn0.01 mm

La tolérance d'affichage n'est pas une tolérance d'usinage

La tolérance de dessin contrôle la façon dont les courbes sont approximées. La vérification CAM et l'ajustement d'arc G-code comportent leurs propres tolérances ; voir le noyau CAM.

Dépannage

SymptômeCauseRéparer
les cercles semblent polygonauxtolérance 0.1 sur un grand rayonchoisissez un préréglage plus fin ; les segments grandissent avec √r
fenêtre lente sur un grand dessintolérance très fine sur de nombreuses courbes0.01 suffit pour l'affichage ; conserver des valeurs plus fines pour l'export
la longueur montre trop de décimalesles décimales suivent la tolérancedécimalesForTolerance(0.01) = 2
une valeur est rejetée comme toléranceà l'extérieur de [0.0001, 10]utiliser un préréglage