Zum Inhalt springen
CADCAMFUN
Doku

Dokumentation

Toleranz und Tessellation

Wie eine Sehnenhöhentoleranz über die Segmentanzahl, die Anzeige von Dezimalstellen und die Kurventesselierung über die CAD-Kerne hinweg entscheidet.

Automatisch aus dem Englischen übersetzt. Englisches Original ansehen

Eine Toleranz, jede Kurve

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 Zeilen) enthält diese Regel; Der Renderer des Editors, der Elementkatalog des Assistenten, der Entity-Tessellator und die Tests nutzen es alle.

Ø20 Kreis mit drei Toleranzen Zum Orbit ziehen · zum Zoomen scrollen · zum Schwenken mit der rechten Maustaste ziehen
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.

Konstanten

NameWertBedeutung
TOLERANCE_PRESETS0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005was die Benutzeroberfläche bietet, grob bis fein
DEFAULT_TOLERANCE0.01editor und Tessellations-Standard
MIN_TOLERANCE0.0001darunter ist „Tolerance“ falsch
MAX_TOLERANCE10darüber ist isTolerance falsch
MIN_CURVE_SEGMENTS8die wenigsten Kreissegmente
MAX_CURVE_SEGMENTS2048standardobergrenze von segmentFor
MAX_SEGMENTS (tessellate.ts)65 536hardcap pro Entität im Entitäts-Tessellator
MIN_TOLERANCE (tessellate.ts)1e-6boden, so dass eine Null-Toleranz keine unbegrenzten Zählungen erzeugen kann
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

Voreinstellungen in Zahlen

Real segmentsFor, chordError und decimalsForTolerance ausgabe für jede Voreinstellung:

Toleranz, mmsegmente r 10akkordfehler r 10dezimalzahlensegmente r 50
0.1239.314e-2150
0.05324.815e-2271
0.01 (Standard)719.788e-32158
0.0051004.934e-33223
0.0021581.977e-33352
0.0012239.923e-43497
0.00053154.973e-44703

Randfälle, auch real: segmentsFor(1000, 0.0001) = 2048 (die Kappe), segmentsFor(2, 5) = 8 (Toleranz ≥ Radius), isTolerance(0.00005) = falsch, isTolerance(10) = wahr, decimalsForTolerance(0.0001) = 4.

Tesselisieren von Zeichnungselementen

tessellate(entity, tolerance) in tessellate.ts wandelt jedes Zeichnungselement innerhalb der Sehnentoleranz in Polylinien um. Diese Polylinie wird von der CAM-Ebene versetzt und vom Ansichtsfenster gerendert. Eine geschlossene Form gibt einen Ring zurück, dessen erster und letzter Punkt unterschiedlich sind; Das Schlusssegment ist implizit.
Juristische PersonRegel
Linieseine beiden Endpunkte
Kreis, Bogenanzahl der Bogensegmente aus Radius, Sweep und Toleranz, begrenzt auf 65 536
Ellipseeinheitlicher Parameterschritt h = √(8·tol / a), a der größere Radius, mindestens 8 Segmente
Splineanalytische Grenze von splinePolyline
Polyliniegewölbte Segmente als Bögen
Rechteckvier Ecken
Text, Dimensionkeine Gliederung: leere Liste

Für eine Ellipse mit den Radien 20 und 10, ellipseSegmentCount ergibt 100 Segmente bei 0.01 mm und 32 bei 0.1 mm.

Wo Toleranzen aufeinander treffen

KernelToleranzparameterStandard
SkizzenprofilesketchProfiles(Skizze, Toleranz)0.01 mm
Mesh-PrimitivemeshOf(solid, Toleranz)0.1 mm
CSG-ZufallCsgOptions.tolerance1e-7 × Ausdehnung
B-Rep-TessellationTessellateOptions.chordToldiagonale / 2000, in [0.001, 0.05]
B-Rep Boolescher ZufallBooleanOptions.tol1e-8 × Größe, ≥ 1e-7
Helix-AkkordestepsPerTurn0.01 mm

Die Anzeigetoleranz ist keine Bearbeitungstoleranz

Die Zeichnungstoleranz steuert, wie Kurven angenähert werden. Die CAM-Verifizierung und die G-Code-Bogenanpassung unterliegen ihren eigenen Toleranzen. siehe den CAM-Kernel.

Fehlerbehebung

SymptomUrsacheFix
kreise sehen polygonal austoleranz 0.1 auf einem großen Radiuswählen Sie eine feinere Voreinstellung. Segmente wachsen mit √r
ansichtsfenster langsam bei einer großen Zeichnungsehr feine Toleranz bei vielen Kurven0.01 reicht für die Anzeige; Behalten Sie feinere Werte für den Export bei
länge zeigt zu viele Dezimalstellen andezimalstellen folgen der ToleranzdecimalsForTolerance(0.01) = 2
ein Wert wird als Toleranz abgelehntaußerhalb [0.0001, 10]verwenden Sie eine Voreinstellung