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.
Costanti
| Nome | Valore | Senso |
|---|---|---|
| TOLERANCE_PRESETS | 0.1, 0.05, 0.01, 0.005, 0.002, 0.001, 0.0005 | cosa offre l'interfaccia utente, da grossolano a fine |
| DEFAULT_TOLERANCE | 0.01 | editor e tassellatura predefiniti |
| MIN_TOLERANCE | 0.0001 | al di sotto di questo valore la tolleranza è falsa |
| MAX_TOLERANCE | 10 | al di sopra di questo isTolleranza è falso |
| MIN_CURVE_SEGMENTS | 8 | minor numero di segmenti di un cerchio |
| MAX_CURVE_SEGMENTS | 2048 | limite predefinito di segmentsFor |
| MAX_SEGMENTI (tessellate.ts) | 65 536 | limite rigido per entità nel tassellatore di entità |
| MIN_TOLERANCE (tessellate.ts) | 1e-6 | base, quindi una tolleranza zero non può produrre conteggi illimitati |
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 mm | segmenti r 10 | errore di accordo r 10 | decimali | segmenti r 50 |
|---|---|---|---|---|
| 0.1 | 23 | 9.314e-2 | 1 | 50 |
| 0.05 | 32 | 4.815e-2 | 2 | 71 |
| 0.01 (predefinito) | 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 |
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 |
|---|---|
| Linea | i suoi due punti finali |
| Cerchio, Arco | conteggio dei segmenti di arco da raggio, spazzata e tolleranza, limitato a 65 536 |
| Ellisse | parametro uniforme passo h = √(8·tol / a), a il raggio più grande, almeno 8 segmenti |
| Spline | limite analitico di splinePolyline |
| Polilinea | segmenti rigonfiati come archi |
| Rettangolo | quattro angoli |
| Testo, dimensione | senza 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
| Nocciolo | Parametro di tolleranza | Predefinito |
|---|---|---|
| Profili di schizzo | sketchProfiles(schizzo, tolleranza) | 0.01 mm |
| Primitive della mesh | meshOf(solido, tolleranza) | 0.1 mm |
| Coincidenza del CSG | CsgOptions.tolerance | 1e-7 × estensione |
| Tassellatura B-rep | TessellateOptions.chordTol | diagonale / 2000, in [0.001, 0.05] |
| Coincidenza booleana B-rep | BooleanOptions.tol | 1e-8 × dimensione, ≥ 1e-7 |
| Accordi dell'elica | stepsPerTurn | 0.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
| Sintomo | Causa | Aggiustare |
|---|---|---|
| i cerchi sembrano poligonali | tolleranza 0.1 su un ampio raggio | scegli un preset più raffinato; i segmenti crescono con √r |
| vista lenta su un disegno di grandi dimensioni | tolleranza molto fine su molte curve | 0.01 è sufficiente per la visualizzazione; mantenere valori più precisi per l'esportazione |
| la lunghezza mostra troppi decimali | i decimali seguono la tolleranza | decimaliPerTolleranza(0.01) = 2 |
| un valore viene rifiutato come tolleranza | fuori [0.0001, 10] | utilizzare una preimpostazione |