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.
Constantes
| Nom | Valeur | Signification |
|---|---|---|
| TOLERANCE_PRESETS | 0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005 | ce que propose l'interface utilisateur, grossier à fin |
| DEFAULT_TOLERANCE | 0.01 | éditeur et tessellation par défaut |
| MIN_TOLERANCE | 0.0001 | en dessous, la tolérance est fausse |
| MAX_TOLERANCE | 10 | au-dessus de ceci, la tolérance est fausse |
| MIN_CURVE_SEGMENTS | 8 | le moins de segments d'un cercle |
| MAX_CURVE_SEGMENTS | 2048 | plafond par défaut des segmentsPour |
| MAX_SEGMENTS (tessellate.ts) | 65 536 | plafond strict par entité dans le tessellateur d'entité |
| MIN_TOLERANCE (tessellate.ts) | 1e-6 | plancher donc une tolérance zéro ne peut pas produire des décomptes illimités |
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, mm | segments de r 10 | erreur d'accord r 10 | décimales | segments de r 50 |
|---|---|---|---|---|
| 0.1 | 23 | 9.314e-2 | 1 | 50 |
| 0.05 | 32 | 4.815e-2 | 2 | 71 |
| 0.01 (par défaut) | 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 |
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 |
|---|---|
| Doubler | ses deux points finaux |
| Cercle, Arc | nombre de segments d'arc à partir du rayon, du balayage et de la tolérance, plafonné à 65 536 |
| Ellipse | pas de paramètre uniforme h = √(8·tol / a), un rayon plus grand, au moins 8 segments |
| Spline | limite analytique de splinePolyline |
| Polyligne | segments renflés sous forme d'arcs |
| Rectangle | quatre coins |
| Texte, Cote | pas 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
| Noyau | Paramètre de tolérance | Défaut |
|---|---|---|
| Profils d'esquisse | sketchProfiles (esquisse, tolérance) | 0.01 mm |
| Primitives de maillage | meshOf(solide, tolérance) | 0.1 mm |
| Coïncidence CSG | CsgOptions.tolerance | 1e-7 × étendue |
| Pavage B-rep | TessellateOptions.chordTol | diagonale / 2000, dans [0.001, 0.05] |
| Coïncidence booléenne B-rep | BooleanOptions.tol | 1e-8 × taille, ≥ 1e-7 |
| Accords d'hélice | stepsPerTurn | 0.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ôme | Cause | Réparer |
|---|---|---|
| les cercles semblent polygonaux | tolérance 0.1 sur un grand rayon | choisissez un préréglage plus fin ; les segments grandissent avec √r |
| fenêtre lente sur un grand dessin | tolérance très fine sur de nombreuses courbes | 0.01 suffit pour l'affichage ; conserver des valeurs plus fines pour l'export |
| la longueur montre trop de décimales | les décimales suivent la tolérance | décimalesForTolerance(0.01) = 2 |
| une valeur est rejetée comme tolérance | à l'extérieur de [0.0001, 10] | utiliser un préréglage |