Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Geometria CAD

Entità di disegno, schizzi vincolati, storie parametriche, mesh e solidi esatti in un nucleo geometrico condiviso.

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

Entità di disegno

@cadcamfun/core esporta le funzioni CAD sia direttamente che sotto il file cad spazio dei nomi. Le entità 2D con primo schema utilizzano un _tag discriminatore: linea, cerchio, arco, polilinea, rettangolo, ellisse, spline, testo, quota, tratteggio e blocco. Ogni entità ha un identificatore, un livello, una visibilità e uno stato di blocco stabili; la selezione appartiene allo stato dell'editor.

La geometria delle entità utilizza millimetri e radianti. Gli angoli dell'arco sono normalizzati per un giro completo e gli angoli iniziali/finali uguali rappresentano un cerchio completo. Una trasformazione di entità locale applica la scala, la rotazione e quindi la traslazione; Affine2D supporta trasformazioni composte che possono includere il taglio. Gli adattatori degli elementi della scena e della cronologia parametrica dispongono dei propri campi angolari documentati, inclusi il posizionamento con valori in gradi e i controlli delle caratteristiche.

entitySchemaOf(tag) restituisce lo schema per un tipo di entità. Decodifica i dati importati prima di chiamare le funzioni geometriche. I limiti, la tassellatura, le intersezioni, gli offset e lo snap sono operazioni separate; il rendering di una curva tassellata non sostituisce la sua entità analitica.

Schizzi vincolati

Il modello di schizzo contiene punti con nome, linee tra punti, cerchi con centro e raggio e archi in senso antiorario. Gli identificatori di punti condivisi esprimono endpoint condivisi. I vincoli includono coincidenza, allineamento orizzontale e verticale, distanze, lunghezze, linee parallele e perpendicolari, lunghezze e raggi uguali, tangenza, simmetria e incidenza geometrica.

Il risolutore numerico minimizza i residui dei vincoli con un'iterazione Levenberg-Marquardt e uno Jacobiano della differenza centrale. Riporta gradi di libertà, punti liberi, equazioni ridondanti e vincoli contrastanti. Un risultato può essere completamente vincolato, sottovincolato, eccessivamente vincolato, in conflitto o non riuscito. Una soluzione sottovincolata può soddisfare ogni dimensione pur consentendo il movimento; i chiamanti devono preservare questa distinzione.

I vincoli dello schizzo ricevono numeri. Le storie parametriche risolvono le espressioni dei parametri prima di richiamare il risolutore. I vincoli dell'angolo dello schizzo sono radianti; utilizzare la convenzione di input della lavorazione durante la conversione di una dimensione immessa dall'utente.

Storie parametriche

Una parte parametrica memorizza i propri parametri e la cronologia delle funzionalità ordinate. La ricostruzione valuta le espressioni e le lavorazioni in sequenza in modo che una lavorazione possa fare riferimento a schizzi, piani, corpi o strumenti creati in precedenza. Il nucleo include estrusioni, rivoluzioni, loft e sweep, valori booleani, fori, modelli, modifiche delle facce, testo, filettature, lavorazioni di lamiera e controlli di accoppiamento. La disponibilità di una rappresentazione esatta dipende dalla particolare sequenza di caratteristiche.

rebuild produce corpi mesh e problemi di funzionalità. rebuildExact riproduce la storia attraverso il nucleo di rappresentazione dei confini e registra perché a un corpo manca una rappresentazione esatta. Conserva la cronologia come fonte modificabile; i corpi generati sono output derivati. Una funzionalità non riuscita o non supportata deve rimanere visibile attraverso il record del problema.

Leggi il risultato della riproduzione

L'output mesh può esistere quando la riproduzione esatta non può rappresentare una funzionalità. Controllare il corpo ed emettere documenti prima di avanzare affermazioni sulla geometria esatta, sul volume o sulla fedeltà dell'esportazione.

Geometria e posizionamento della mesh

Le mesh utilizzano la geometria del triangolo indicizzato. Il livello CAD fornisce costruzione primitiva, booleani mesh, aiutanti di sweep e loft, topologia e utilità normali e pulizia della geometria. L'adattatore del modello CAM converte gli elementi della scena supportati in mesh, inclusi i componenti nidificati, in modo che l'analisi e la generazione del percorso utensile possano utilizzare la stessa geometria posizionata.

La posizione, la rotazione, la scala e la traslazione dell'elemento influiscono sulla parte risultante. Il posizionamento esatto della scena rispecchia la trasformazione del viewport attorno al centro del riquadro di delimitazione. Il ridimensionamento non uniforme può rimuovere il percorso del modello esatto di un elemento; la conversione della scena segnala un motivo e può utilizzare una rappresentazione sfaccettata durante l'esportazione.

Rappresentazione esatta del confine

cad.brep espone la geometria analitica e NURBS con topologia di facce, loop, uso dei bordi, bordi e vertici. I suoi moduli coprono primitive, spostamenti, loft, booleani, modifiche di facce, fusioni, cucitura, tassellatura, classificazione, convalida, proprietà di massa e lettura e scrittura STEP. history-brep.ts e scene-step.ts collega questo nucleo alle parti parametriche e agli elementi della scena posizionati.

POST /api/cad/exact/analyze restituisce problemi di validità per parte, volume, area, centroide, limiti, conteggi di topologia, conteggi di superficie, fori riconosciuti e classificazione di lavorazione. Restituisce inoltre gli elementi saltati con motivazioni e totali aggregati. Un risultato di lavorazione prismatica riporta contorni, fori, tasche e livelli superiore/inferiore; le parti non supportate hanno un motivo.

POST /api/cad/exact/assembly segnala interferenze, sovrapposizioni previste, coppie toccanti e indeterminate, elementi della distinta base, giunti e piani di fissaggio. La geometria indeterminata è un risultato riportato, non una prova di autorizzazione. Questi percorsi di analisi calcolano i risultati senza alterare il disegno.

Importazione ed esportazione

Il nucleo dispone di DXF e aiutanti per l'importazione di disegni, un percorso di interpretazione STEP prismatico e un lettore B-rep STEP esatto. Il percorso prismatico legge l'impronta e l'altezza di estrusione per piastre, staffe e flange adatte; riporta caratteristiche che un prisma non può descrivere. Scegli il lettore esatto quando è necessaria l'esatta topologia STEP supportata e controlla la diagnostica da entrambi i percorsi.

sceneToStep scrive una scena come STEP AP214. I solidi supportati esatti mantengono la geometria esatta; i solidi solo mesh possono essere emessi come solidi sfaccettati. Gli elementi non solidi vengono saltati con motivazioni. IL faceted l'opzione controlla quel fallback. Una risposta senza step non contiene solidi esportabili.

I percorsi esatti HTTP accettano entrambi elements o drawingId; gli elementi espliciti hanno la precedenza. Gli array di snapshot consentono elementi 1–2,000 e una selezione facoltativa fino a 200 identificatori. Con un disegno memorizzato, il sidecar legge la scena secondo le regole di accesso al disegno. Una fonte mancante, un disegno vuoto, un disegno sconosciuto o un disegno negato producono la richiesta o l'errore di accesso corrispondente.

Disegni tecnici

Il drawing namespace fornisce proiezioni, sezioni, dimensioni, composizione del foglio e output SVG dai modelli 3D. Questa è una rappresentazione separata dal disegno modificabile dell'entità 2D e da un programma di lavorazione. La geometria della proiezione e della sezione dovrebbe essere rigenerata dopo le modifiche al modello; un'esportazione del foglio cattura lo stato del modello utilizzato per costruirlo.

Dove estendere la geometria

Inizia con packages/core/src/cad/index.ts per la superficie CAD pubblica. Le operazioni dell'entità vivono accanto entities.ts; la risoluzione dei vincoli è in vigore sketch.ts; la cronologia della mesh è presente history.ts; è disponibile la riproduzione esatta history-brep.ts; la topologia e lo scambio esatti sono sotto brep/. packages/core/src/drawing/ possiede l'output del foglio. I moduli di supporto nella stessa cartella includono expr.ts (espressioni di parametri come width / 2 + 3, risolto in ordine di dipendenza con i cicli segnalati come errori), tolerance.ts (il segmento corda-sagitta conta per le curve), gear.ts (ISO 53 contorni di ingranaggi cilindrici ad evolvente), thread.ts, sheet-metal.ts, fasteners.ts, recipes.ts (generatori che emettono cronologie di funzionalità complete e completamente vincolate), dfm.ts (risultati della progettazione per la produzione con valori misurati e richiesti), e dxf.ts.

Le funzioni geometriche operano sui valori senza aprire la memoria dell'applicazione. I servizi sidecar gestiscono l'accesso e la persistenza, mentre gli adattatori desktop gestiscono l'interazione e il rendering. Mantieni le conversioni esplicite ai confini in modo che una mesh di visualizzazione, un solido esatto e una cronologia salvata mantengano il loro significato distinto.

Costruisci, convalida ed esporta un solido

Questo esempio di base completo costruisce una scatola di 40 × 25 × 8 mm con un angolo all'origine globale, ne controlla la topologia, la misura ed esporta il testo STEP. Richiede solo il pacchetto principale dell'area di lavoro e non esegue scritture dell'applicazione.

Una casella esatta e il relativo testo STEP
import { cad } from "@cadcamfun/core"

const solid = cad.brep.makeBox(40, 25, 8)
const report = cad.brep.validateBrep(solid)
if (!report.valid) throw new Error(JSON.stringify(report.issues))

const mass = cad.brep.massProperties(solid)
console.log(mass.volume.toFixed(3)) // "8000.000" cubic millimetres
console.log(mass.centroid) // approximately { x: 20, y: 12.5, z: 4 }
const step = cad.brep.writeStepBreps([{ name: "Bracket blank", brep: solid }], {
  author: "Workshop",
  timestamp: "2026-01-01T00:00:00.000Z"
})
console.log(step.startsWith("ISO-10303-21;")) // true

Il timestamp esplicito rende riproducibile l'output di scambi ripetuti. Senza di essa, la scrittura STEP utilizza l'ora corrente. massProperties restituisce anche l'area, le aree per faccia e un tensore di inerzia attorno al baricentro a densità unitaria; il volume è mm³ e l'area è mm². Convertire esplicitamente la densità quando si calcola una massa fisica.

Fonte: packages/core/src/cad/brep/primitives.ts, mass.ts, validate.ts, e step.ts.

Opzioni di convalida e conversione

validateBrep ritorna valid, emettere record, manifoldSolide genere/volume facoltativo. manifoldSolid significa gusci chiusi con ogni bordo usato due volte in sensi opposti. La tolleranza della distanza geometrica predefinita scala come 10⁻⁵ della dimensione del modello con un pavimento di 10⁻⁶ mm. Un chiamante può fornire tol, saltare il controllo del volume/orientamento con skipVolumeoppure utilizzare una tassellatura grossolana per l'orientamento con coarseVolume.

Le API di analisi esatta machining flag è impostato su true per impostazione predefinita. Esportazione di scene STEP faceted il valore predefinito del fallback è true e la pianificazione dei dispositivi di fissaggio dell'assieme washers l'opzione ha il valore predefinito true. Gli ID di selezione si riferiscono agli elementi della scena, inclusi i componenti secondari risolti dall'attraversamento della scena. Queste opzioni HTTP influiscono sull'analisi/esportazione, non sul disegno archiviato.

L'esportazione della scena restituisce per parte exact, faces, valide una nota facoltativa. Controlla i campi accanto skipped: un solido sfaccettato valido può essere esportabile senza conservare le superfici analitiche.

Fonte: packages/core/src/cad/brep/validate.ts, scene-analysis.ts, scene-step.ts, assembly-analysis.ts, e packages/api/src/cad-exact.ts.

Riparare una ricostruzione o un'esportazione non riuscita

TrovareProssima ispezione
Lo schizzo rimane sottovincolatoLettura dei gradi di libertà e degli ID dei punti liberi. Aggiungere i vincoli di posizione/orientamento mancanti; una linea quotata con un solo punto finale fisso può ancora ruotare.
Conflitto tra i vincoli dello schizzoUtilizza gli ID conflitto denominati e il residuo per individuare le dimensioni incompatibili. Ripetere un'equazione compatibile è ridondanza; due diverse lunghezze richieste sono in conflitto.
La funzione della storia fa riferimento a un corpo o un aereo sconosciutoControlla l'ordine e gli identificatori delle funzionalità. Le dipendenze devono esistere in precedenza nella riproduzione e la soppressione/eliminazione può invalidare i riferimenti successivi.
Modello esatto non disponibile dopo il ridimensionamentoIspezionare la scala non uniforme e il motivo riportato dell'elemento. Utilizza il posizionamento uniforme supportato oppure accetta ed etichetta un'esportazione sfaccettata.
Il risultato STEP ha saltato elementi o nessun testoControlla se la selezione contiene solidi e se il fallback sfaccettato è abilitato. Le selezioni vuote o 2solo D non possono produrre un file STEP solido.

Le dimensioni primitive devono essere positive e finite. Le funzioni di geometria diretta possono generare errori di intervallo per quote non valide; i livelli di trasporto e di servizio devono convertire tali errori nei propri risultati digitati. I problemi di ricostruzione sono legati agli ID delle funzionalità in modo che un errore possa essere riparato alla fonte anziché essere nascosto mantenendo una mesh precedente.

Fonte: packages/core/src/cad/sketch.test.ts, history.ts, scene-step.ts, e apps/sidecar/test/cad-exact.test.ts.

Risolvi uno schizzo passo dopo passo

Uno schizzo è costituito da dati semplici: una serie di entities (punti, linee, cerchi, archi) e una serie di constraints. Linee, cerchi e archi si riferiscono a punti tramite identificatore, quindi due linee che condividono un punto finale condividono lo stesso ID punto. Il risolutore sposta solo le coordinate del punto e i raggi del cerchio; non aggiunge né rimuove mai entità.

p1 (fisso)p2p3p4 l1 · orizzontalel2 · verticale l3 · orizzontalel4 · verticale larghezza = 40 profondità = 25
Lo schizzo utilizzato negli esempi: quattro punti, quattro linee, un punto fisso, quattro vincoli di orientamento e due quote di lunghezza. Ogni grado di libertà viene rimosso, così riporta il risolutore fully-constrained con dof = 0.
Risolvi un rettangolo completamente vincolato
import { cad } from "@cadcamfun/core"

const sketch = {
  entities: [
    { id: "p1", kind: "point", x: 0, y: 0 },
    { id: "p2", kind: "point", x: 38, y: 1 },   // rough positions are fine:
    { id: "p3", kind: "point", x: 39, y: 26 },  // the solver moves them
    { id: "p4", kind: "point", x: 1, y: 24 },
    { id: "l1", kind: "line", p1: "p1", p2: "p2" },
    { id: "l2", kind: "line", p1: "p2", p2: "p3" },
    { id: "l3", kind: "line", p1: "p3", p2: "p4" },
    { id: "l4", kind: "line", p1: "p4", p2: "p1" },
  ],
  constraints: [
    { type: "fixed", point: "p1", x: 0, y: 0 },
    { type: "horizontal", line: "l1" },
    { type: "horizontal", line: "l3" },
    { type: "vertical", line: "l2" },
    { type: "vertical", line: "l4" },
    { id: "width", type: "length", line: "l1", value: 40 },
    { id: "depth", type: "length", line: "l2", value: 25 },
  ],
}

const result = cad.solveSketch(sketch)
result.status     // "fully-constrained"
result.dof        // 0
result.iterations // 3
result.residual   // < 1e-9
// points now at (0,0) (40,0) (40,25) (0,25)

Esegui lo stesso schizzo senza il file fixed vincolo e il risultato cambia in under-constrained con dof = 2 e free = ["p1", "p2", "p3", "p4"]. Il rettangolo ha ancora la dimensione giusta, ma può scorrere in X e Y. Aggiungi una terza lunghezza, { id: "w2", type: "length", line: "l3", value: 50 }e lo stato diventa conflicting. conflicts quindi elenca i vincoli denominati che non possono essere soddisfatti insieme, iniziando dal peggiore (ad esempio w2 e width). Dai un nome ai vincoli che ti interessano id; i vincoli senza nome vengono segnalati con un'etichetta generata come vertical#4.

OpzionePredefinitoSenso
maxIterations200Il limite superiore delle iterazioni Levenberg-Marquardt prima della risoluzione viene riportato come failed.
tolerance1e-9Il più grande residuo assoluto accettato come risolto.
Campo risultatoContenuto
sketchLo schizzo di input con coordinate e raggi risolti.
statusfully-constrained, under-constrained, over-constrained, conflicting, o failed.
dofGradi di libertà rimanenti.
freeID punto che possono ancora spostarsi e ID cerchio il cui raggio può ancora cambiare.
conflictsID vincolo che non è stato possibile soddisfare, prima il peggiore.
redundantNumero di equazioni ridondanti (deficit di rango).
iterations, residual, messageDiagnostica del risolutore.

Tiri di input non corretti

Uno schizzo che si riferisce a un punto o a un'entità sconosciuta è malformato anziché irrisolvibile e solveSketch lancia a SketchError. Convalida gli schizzi importati prima di risolverli in un ciclo.

Riferimento vincolo

Ogni vincolo è un oggetto con a type e un facoltativo id. Le lunghezze sono millimetri e gli angoli sono radianti. In una storia parametrica, any value può anche essere una stringa di espressione di parametro.

TipoCampiEffect
fixedpoint, facoltativo x, yBlocca un punto, facoltativamente su coordinate esplicite.
coincidenta, bDue punti occupano la stessa posizione.
horizontal / verticallineUna linea è parallela a X/Y.
horizontalPoints / verticalPointsa, bDue punti condividono una coordinata Y/X.
distancea, b, valueDistanza euclidea tra due punti.
distanceX / distanceYa, b, valueOffset orizzontale/verticale firmato.
lengthline, valueLunghezza di una linea.
parallel / perpendiculara, bRapporto tra due linee.
equalLength / equalRadiusa, bLunghezze di linea / raggi di cerchio o arco uguali.
radius / diametercircle, valueDimensione di un cerchio o di un arco.
anglea, b, valueAngolo in senso antiorario dalla linea a allineare b, in radianti.
pointOnLine / pointOnCirclepoint e line / circleIncidenza.
midpointpoint, lineUn punto si trova al centro di una linea.
symmetrica, b, lineDue punti si specchiano attorno ad una retta.
tangentLineCircleline, circleUna linea tocca un cerchio o un arco.
tangentCirclesa, b, facoltativo internalCircles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|).
concentrica, bCentro condiviso di cerchi o archi.

Gli archi sono in senso antiorario da start a end di center. Il raggio di un cerchio è una variabile del risolutore, quindi un cerchio senza a radius, diameter, equalRadiuso viene visualizzato il vincolo di tangenza free.

Costruisci una parte parametrica

A History è una tabella di parametri più un elenco ordinato di funzionalità. I parametri sono numeri o espressioni di altri parametri. Vengono risolti in ordine di dipendenza e un ciclo è un errore che nomina il ciclo. Le caratteristiche fanno riferimento ai parametri per nome in qualsiasi campo dimensione.

Piastra parametrica: 40 × 25 × 8 mm con foro passante Ø5 Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Result of the history example below: the sketch is solved, extruded by thick = 8 mm, and the hole (diameter = width / 8 = 5 mm) is subtracted. Exact replay of this history has a volume of 7,842.92 mm³ (8,000 − π·2.5²·8).
Piastra con foro parametrico
import { cad } from "@cadcamfun/core"

const history = {
  parameters: { width: 40, depth: 25, thick: 8, hole: "width / 8" },
  features: [
    // the rectangle sketch from the previous section, with dimension
    // values replaced by parameter names: value: "width", value: "depth"
    { id: "s1", type: "sketch", plane: "XY", sketch: rectangleSketch },
    { id: "e1", type: "extrude", sketch: "s1", depth: "thick", operation: "new" },
    { id: "h1", type: "hole", plane: "XY", offset: "thick",
      at: [20, 12.5], diameter: "hole", depth: "thick" },
  ],
}

const mesh = cad.rebuild(history)
mesh.parameters // { width: 40, depth: 25, thick: 8, hole: 5 }
mesh.bodies     // one mesh body, id "e1"
mesh.issues     // []

const exact = cad.rebuildExact(history, mesh)
exact.bodies[0].brep        // present: the history has an exact representation
exact.warnings              // []
cad.brep.massProperties(exact.bodies[0].brep).volume // 7842.92… mm³
cad.brep.validateBrep(exact.bodies[0].brep).valid    // true
rebuild ritorna bodies (mesh triangolari definite dalla funzione che le ha create), il problema è stato risolto parameters, il piano, la cornice e il risultato della soluzione di ogni schizzo, i modelli piatti delle lavorazioni di lamiera e issues. Viene segnalata una funzionalità che non può essere creata issues con l'ID della funzione e la gravità e viene ignorato. Le funzionalità che non dipendono da esso continuano a essere sviluppate. rebuildExact(history, given?, options?) può riutilizzare una ricostruzione mesh che già possiedi e accetta a budgetMs bilancio temporale.

I piani base sono destrimani: XY ha u = X, v = Y, normale +Z; YZ ha u = Y, v = Z, normale +X; ZX ha u = Z, v = X, normale +Y. È inoltre possibile inserire uno schizzo, un foro o un testo sull'ID di un precedente plane caratteristica, con un offset lungo la normale.

CaratteristicaCampi chiave e impostazioni predefinite
sketchplane, facoltativo offset, sketch (entità, vincoli, parametrici opzionali shapes: rettangolo, cerchio, poligono, ellisse, asola, polilinea).
extrudesketch, depth, direction up/down/symmetric, operation new/union/subtract/intersect, facoltativo targets (impostazione predefinita: tutti finora), edge smusso/raccordo delle facce finali (ends predefinito both), corner trattamento, e taper tiraggio in gradi. I loop all'interno dei loop sono buchi (pari-dispari).
revolvesketch, axis (x, yo una linea di schizzo), angle in gradi (predefinito 360), operation.
holeplane, offset, at [u, v], diameter, depth; kind simple (predefinito), counterbore, o countersink con headDiameter, headDepth, e angle (predefinito 90°). Cosmetico opzionale thread nota (ad es M4), tolerancee ISO 286 fit ad esempio H7. Una filettatura cosmetica non modifica la geometria.
pattern, mirrorCopie dello strumento di una funzionalità precedente, applicate allo stesso modo.
sweep, loft, coilProfili lungo un percorso, tra sezioni o lungo un'elica.
shell, fillet, draft, pushpullModifiche a facce e bordi.
move, scale, split, combineOperazioni sul corpo.
rib, sheet, thread, textNervature, corpi in lamiera con modelli piatti, filettature modellate e testo con caratteri tratti.
plane, primitive, matePiani di costruzione, solidi primitivi e accoppiamento di assiemi.

Modifica la cronologia, non il corpo

Modifica un parametro e ricostruisci: ogni schizzo che lo utilizza si risolve e ogni solido e booleano dopo viene rifatto. La modifica diretta di una mesh generata viene persa alla successiva ricostruzione.

Primitive e posizionamento esatti

Il kernel B-rep costruisce direttamente i solidi analitici. Ogni costruttore prende un posizionamento facoltativo Frame; senza uno, il solido viene posizionato nella cornice del mondo.

CostruttoreArgomentiPosizionamento mondiale
makeBox(dx, dy, dz, placement?)Lunghezze dei bordi in mmAngolo minimo all'origine.
makeCylinder(radius, height, placement?)Raggio e altezzaUn cono con raggi uguali; asse lungo Z.
makeCone(r1, r2, height, placement?)Raggi base e superioreAsse lungo Z.
makeSphere(radius, placement?)RaggioCentrato sull'origine.
makeTorus(major, minor, placement?)Raggi dell'anello e del tuboAsse lungo Z.
Primitive esatte Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
makeBox(40, 25, 8) with its corner at the origin, next to a cylinder of radius 6 and height 20 placed beside it. The axes show +X (red), +Y (green), and +Z (blue).

Le dimensioni devono essere positive e finite; altrimenti i costruttori lanciano un errore di intervallo. Correre validateBrep su tutto ciò che costruisci da booleani, operazioni di scansione o importazioni prima di fidarti del volume o dei risultati dell'esportazione. Una primitiva direttamente da un costruttore è valida per costruzione.

Pratiche di modellazione che ricostruiscono in modo affidabile

  • Correggere un punto e vincolare l'orientamento prima di aggiungere le quote. Uno schizzo sottovincolato può soddisfare ogni dimensione e spostarsi comunque alla ricostruzione successiva.
  • Assegna a ogni dimensione rivolta all'utente un id quindi una segnalazione di conflitto nomina qualcosa che una persona riconosce.
  • Preferire parametri ed espressioni ("width / 2 + 3", "max(a, b) * 2") su letterali ripetuti; una modifica quindi guida l'intera parte.
  • Fare riferimento alle funzionalità precedenti tramite ID solo dopo che sono presenti nell'elenco. Riordinare una cronologia può trasformare un riferimento valido in un problema.
  • Utilizzo targets sui booleani quando una parte ha più corpi. L'impostazione predefinita applica l'operazione a ogni corpo costruito finora.
  • Controllo issues dopo ogni rebuild e il per-corpo brep presenza dopo rebuildExact prima di fare affidamento sulle proprietà di massa esatte o sull'esportazione STEP.
  • Mantieni le unità in millimetri e radianti all'interno degli schizzi. I campi con valori in gradi vengono documentati come tali (angolo di rivoluzione, conicità, angolo di svasatura).

Progettare ricette

cad.buildRecipe(name, input) trasforma alcuni input ingegneristici in una cronologia parametrica completa, oltre a un riepilogo di una riga, ai numeri derivati e alle regole di progettazione che li hanno prodotti. Esistono sette ricette; i parametri senza valore predefinito vengono derivati dagli altri quando omessi.
NomeTitoloParametri (predefiniti)
mounting_platePiastra di montaggiowidth=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance
flangeFlangia imbullonataouterDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0
l_bracketStaffa a LbaseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0
stepped_shaftAlbero a gradinisezioni, smusso=1, keywaySection=-1, keyLength
pipe_bendGomito del tuboouterDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius
duct_transitionTransizione del condottoshape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2
enclosureAllegatolength=120, width=80, height=40, wall=3, floor, cornerRadius=6, fastener=M3, bosses=true
Piastra di montaggio per viti M8
import { cad } from "@cadcamfun/core"

const recipe = cad.buildRecipe("mounting_plate", { width: 100, depth: 60, thickness: 10, fastener: "M8" })
recipe.summary  // "100 x 60 x 10 mm plate with four holes for M8 screws (Ø9 mm, medium fit)"
recipe.derived  // { holeDiameter: 9, edgeDistance: 18, holeSpacingX: 64, holeSpacingY: 24 }
recipe.rules    // ["hole diameter from ISO 273",
                //  "centre to edge >= 1.5 x hole diameter",
                //  "centre to centre >= 2.5 x hole diameter"]

recipe.history.parameters  // { width: 100, depth: 60, thick: 10, hole: 9, inset: 18 }
// features: sketch "outline", extrude "plate", holes hole_sw, hole_se, hole_ne, hole_nw
//           placed at ["inset","inset"], ["width - inset","inset"], …

const mesh = cad.rebuild(recipe.history)          // issues: []
const exact = cad.rebuildExact(recipe.history, mesh)
cad.brep.massProperties(exact.bodies[0].brep).volume  // 57455.31 mm³ = 60000 − 4·π·4.5²·10
ricetta piastra_montaggio, M8 Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
La ricetta ricostruita: 100 × 60 × 10 mm con quattro fori Ø9 18 mm da ciascun bordo. Poiché le posizioni dei fori sono espressioni di larghezza e rientro, la modifica della larghezza nella cronologia sposta con sé anche i fori a destra.

La cronologia è ordinaria: puoi aprirla nell'editor, modificare un parametro e ricostruire. La ricetta ha scelto solo numeri ragionevoli.

Ingranaggi ad evolvente

Un ingranaggio cilindrico a modulo 2, 18 denti
const spec = { moduleValue: 2, teeth: 18 }          // pressureAngle defaults to 20°
cad.gearDimensions(spec)
// { pitchRadius: 18, baseRadius: 16.914, tipRadius: 20, rootRadius: 15.5 }

const outline = cad.gearOutline(spec, 6)   // 324 points, 6 per flank
cad.gearOutline({ moduleValue: 2, teeth: 5 })
// throws: 'A gear needs a module > 0 and at least 6 whole teeth'
Ingranaggio cilindrico m = 2, z = 18 Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
gearOutline extruded 8 mm with an Ø8 bore. Pitch radius = m·z/2 = 18 mm, tip radius = pitch + m = 20 mm, root radius = pitch − 1.25·m = 15.5 mm, base radius = pitch·cos 20° ≈ 16.91 mm.
DimensioneFormulam = 2, z = 18
Raggio del passom·z / 218
Raggio della puntapasso + m20
Raggio della radicepasso − 1.25·m15.5
Raggio di basepasso · cos α16.914
MIN_GEAR_TEETH è 6: sotto, i fianchi tagliano il cerchio di base e i denti vicini si sovrappongono.

Dati di fissaggio e adattamento

MisurarePeceTocca il trapanoGioco fine/medio/grossolanoTesta Ø × hØ lamatura × profonditàØ svasatore
M30.52.53.2 / 3.4 / 3.65.5 × 36.5 × 3.46
M50.84.25.3 / 5.5 / 5.88.5 × 510 × 5.710
M6—56.4 / 6.6 / 7———
M81.256.88.4 / 9 / 1013 × 815 × 916
M121.7510.213 / 13.5 / 14.518 × 1220 × 1324

I valori vengono da cad.metricThread(size), clearanceHole(size, fit) e tapDrill(size); la riga M6 è stata interrogata solo tramite i due helper. Regole correlate, con risultati reali per una vite M6 e il suo foro passante Ø6.6:

AiutanteRisultato
threadEngagement("M6", material)acciaio 6, alluminio 9, ghisa 12, plastica 12 mm
tappedHoleDepth("M6", 12)15.8 mm
minEdgeDistance(6.6) / (6.6, "plastic")9.9 / 13.2 mm
minHoleSpacing(6.6)16.5 mm (2.5 × diametro)
keywayFor(25)da 22 fino a 30: b 8, h 7, t1 4, t2 3.3
toleranceGrade(7, 25) / (6, 25)21 / 13 µm
AdattoTipoCaso d'uso
H7/h6posizione (scorrevole)parti assemblate a mano e posizionate con precisione, rubinetti scorrevoli, boccole di guida
H7/g6corsa ravvicinataguida precisa di parti mobili, mandrini, valvole a cassetto
H7/f7corsacuscinetti a strisciamento, alberi nella costruzione di macchine in generale
H7/k6transizioneingranaggi, pulegge e anelli interni dei cuscinetti inseriti con una leggera pressione
H7/n6interferenza (pressione leggera)boccole e mozzi pressati; nessuna chiave necessaria per una coppia ridotta
H7/p6interferenza (stampa)inserimento a pressione permanente delle boccole negli alloggiamenti