Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Tolleranza e tassellatura

Come una tolleranza dell'altezza della corda decide il conteggio dei segmenti, visualizza i decimali e la tassellazione delle curve nei kernel CAD.

Tradotto automaticamente dall'inglese. Vedi l'originale in inglese

Una tolleranza, ogni curva

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 righe) mantiene questa regola; il renderer dell'editor, il catalogo degli elementi dell'assistente, il tassellatore di entità e i test lo utilizzano tutti.

Ø20 cerchio a tre tolleranze Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
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.

Costanti

NomeValoreSenso
TOLERANCE_PRESETS0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005cosa offre l'interfaccia utente, da grossolano a fine
DEFAULT_TOLERANCE0.01editor e tassellatura predefiniti
MIN_TOLERANCE0.0001al di sotto di questo valore la tolleranza è falsa
MAX_TOLERANCE10al di sopra di questo isTolleranza è falso
MIN_CURVE_SEGMENTS8minor numero di segmenti di un cerchio
MAX_CURVE_SEGMENTS2048limite predefinito di segmentsFor
MAX_SEGMENTI (tessellate.ts)65 536limite rigido per entità nel tassellatore di entità
MIN_TOLERANCE (tessellate.ts)1e-6base, quindi una tolleranza zero non può produrre conteggi illimitati
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

Preimpostazioni in numeri

Vero segmentsFor, chordError e decimalsForTolerance uscita per ogni preimpostazione:

Tolleranza mmsegmenti r 10errore di accordo r 10decimalisegmenti r 50
0.1239.314e-2150
0.05324.815e-2271
0.01 (predefinito)719.788e-32158
0.0051004.934e-33223
0.0021581.977e-33352
0.0012239.923e-43497
0.00053154.973e-44703

Casi limite, anche reali: segmentsFor(1000, 0.0001) = 2048 (il limite), segmentsFor(2, 5) = 8 (tolleranza ≥ raggio), isTolerance(0.00005) = falso, isTolerance(10) = vero, decimalsForTolerance(0.0001) = 4.

Entità di disegno tassellatura

tessellate(entity, tolerance) in tessellate.ts trasforma qualsiasi entità di disegno in polilinee entro la tolleranza della corda. Quella polilinea è ciò che il livello CAM compensa e ciò che viene visualizzato nel viewport. Una forma chiusa restituisce un anello il cui primo e ultimo punto differiscono; il segmento di chiusura è implicito.
EntitàRegola
Lineai suoi due punti finali
Cerchio, Arcoconteggio dei segmenti di arco da raggio, spazzata e tolleranza, limitato a 65 536
Ellisseparametro uniforme passo h = √(8·tol / a), a il raggio più grande, almeno 8 segmenti
Splinelimite analitico di splinePolyline
Polilineasegmenti rigonfiati come archi
Rettangoloquattro angoli
Testo, dimensionesenza contorno: elenco vuoto

Per un'ellisse con raggi 20 e 10, ellipseSegmentCount restituisce 100 segmenti a 0.01 mm e 32 a 0.1 mm.

Dove le tolleranze si incontrano

NoccioloParametro di tolleranzaPredefinito
Profili di schizzosketchProfiles(schizzo, tolleranza)0.01 mm
Primitive della meshmeshOf(solido, tolleranza)0.1 mm
Coincidenza del CSGCsgOptions.tolerance1e-7 × estensione
Tassellatura B-repTessellateOptions.chordToldiagonale / 2000, in [0.001, 0.05]
Coincidenza booleana B-repBooleanOptions.tol1e-8 × dimensione, ≥ 1e-7
Accordi dell'elicastepsPerTurn0.01 mm

La tolleranza di visualizzazione non è la tolleranza di lavorazione

La tolleranza del disegno controlla il modo in cui le curve vengono approssimate. La verifica CAM e l'adattamento dell'arco del codice G presentano le proprie tolleranze; vedere il kernel CAM.

Risoluzione dei problemi

SintomoCausaAggiustare
i cerchi sembrano poligonalitolleranza 0.1 su un ampio raggioscegli un preset più raffinato; i segmenti crescono con √r
vista lenta su un disegno di grandi dimensionitolleranza molto fine su molte curve0.01 è sufficiente per la visualizzazione; mantenere valori più precisi per l'esportazione
la lunghezza mostra troppi decimalii decimali seguono la tolleranzadecimaliPerTolleranza(0.01) = 2
un valore viene rifiutato come tolleranzafuori [0.0001, 10]utilizzare una preimpostazione