Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Genera un programma di produzione nativo

Cattura una parte reale, valuta il suo lavoro di produzione, controlla le prove NC pubblicate e salva un documento che può essere ricontrollato.

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

Scopri quale risultato stai richiedendo

La produzione nativa è un calcolo CAD/CAM deterministico, indipendente da un modello linguistico. POST /api/toolpaths/manufacture accetta un'istantanea CAD esplicita, prepara le risorse di produzione, pianifica o accetta operazioni ordinate, calcola i dati di taglio, genera percorsi utensile, pubblica un programma NC e riproduce in modo indipendente quel testo. La risposta include le prove a sostegno del suo livello di rilascio.

Questo endpoint non crea un disegno, salva un percorso utensile o aggiorna l'editor. Una risposta efficace è un valore da esaminare e persistere deliberatamente. È diverso da /api/toolpaths/generate, che adatta le impostazioni del generatore di applicazioni per l'output di fresatura/tornio/stampante e da /api/toolpaths/verify, che riproduce un programma/NC fornito rispetto al grezzo modellato esplicitamente e a un utensile.

Usa il punti finali della lavorazione per schemi di richiesta/risposta, Riferimento CAM per le rappresentazioni principali, e riferimento al programma salvato per il comportamento persistente. Il seguente lavoro è volutamente abbastanza piccolo da poter essere riprodotto e ispezionato senza modificare un progetto esistente.

Invia uno snapshot completo e convalidato

Salva questo JSON con nome native-job.json. Descrive un pezzo grezzo POM di 40 × 40 × 10 mm centrato in (20,20,5), circondato da 2 mm di materiale su ciascun lato X/Y e 1 mm sopra. Il carico utile è stato decodificato dal reale CamKernelRequest schema e valutato dal kernel; il suo risultato di riferimento contiene tre operazioni pianificate. Esaminare sempre le attestazioni restituite anziché codificare una versione prevista in un client.

native-job.json
{
  "schemaVersion": 1,
  "id": "blank-job",
  "name": "POM blank",
  "material": "POM",
  "elements": [{
    "id": "blank",
    "type": "cube",
    "x": 20, "y": 20, "z": 5,
    "width": 40, "height": 40, "depth": 10
  }],
  "stock": { "x": 20, "y": 20, "width": 44, "height": 44, "depth": 11 },
  "resolution": 0.5
}
Valuta senza salvare una risorsa di progetto
curl --fail-with-body \
  -H "Authorization: Bearer $CADCAMFUN_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @native-job.json \
  "$CADCAMFUN_URL/api/toolpaths/manufacture" > native-result.json

Il file della shell cattura la risposta esatta per l'ispezione. Fornire la stessa richiesta catturata produce un output nativo deterministico; utilizzare una nuova posizione della parte, taglierina, operazione o controllo qualità è un lavoro diverso. Le etichette di identità della richiesta sono utili per il monitoraggio, ma i digest dell'artefatto legano la sua origine effettiva e il contenuto NC.

Risolvere le coordinate di magazzino e di lavoro

Lo stock di istantanea utilizza il centro X/Y e l'intera larghezza/altezza/profondità. L'adattatore snapshot crea innanzitutto la geometria della parte selezionata, trova la sua Z più bassa e posiziona lì il fondo del grezzo; la sua parte superiore è quella inferiore più la profondità dichiarata. Nell'esempio, la parte si estende da Z0 a Z10 e il grezzo da Z0 a Z11. I limiti delle azioni in X/Y vanno da −2 a 42.

L'adattatore utilizza le dimensioni esplicite per tali limiti. Non aggiunge nuovamente la tolleranza di visualizzazione del record azionario e uno stock topZ il campo non sostituisce l'ancoraggio della parte più bassa in questo adattatore snapshot nativo. Mantieni la distinzione tra i metadati dell'editor e i campi effettivamente utilizzati per costruire un lavoro di produzione.

L'origine del lavoro è predefinita stock-center: il centro del pezzo X/Y nella sua Z superiore. stock-corner sceglie il minimo X/Y allo stesso massimo. La geometria dell'operazione di input è espressa in millimetri del mondo CAD, mentre i movimenti/NC del programma risultanti sono espressi in coordinate di lavoro. Il taglio convenzionale scende al di sotto del lavoro Z0. workOffset è facoltativo; il valore predefinito del programma è G54.

Senza stock fornito, la preparazione del lavoro di livello inferiore racchiude i limiti della parte con 2 mm in più su ciascun lato X/Y e 1 mm sopra. Una parte al di fuori dello stock esplicito viene rifiutata; l'aumento della profondità di taglio richiesta non fa sì che il grezzo incompatibile contenga la parte.

Seleziona materiale, macchina e frese

Il materiale è una stringa di ricerca risolta rispetto alla libreria dei materiali del kernel, inclusi ID, nomi e alias supportati. Il materiale sconosciuto restituisce un problema di preparazione digitato. La macchina opzionale dello snapshot HTTP è un ID preimpostato registrato: vmc-standard, haas-vf2, hsc-mill, desktop-mill o cnc-router. Omettendolo utilizza vmc-standard. Le preimpostazioni descrivono classi e limiti tipici della macchina, non un modello qualificato di una singola installazione.

L'omissione degli strumenti utilizza il supporto taglierina predefinito. Fornire strumenti sostituisce quella culla e richiede 1–200 record di taglio. Una fresa ne identifica il tipo, il diametro, il numero di scanalature, il materiale/rivestimento, la lunghezza della scanalatura, il diametro del gambo e la sporgenza. Le dimensioni opzionali del supporto, il numero di giri massimo, il numero di tasche e la geometria specifica del tipo perfezionano la generazione e il gioco. I flauti devono essere un numero intero compreso tra 1 e 24; i numeri tascabili espliciti sono 1–999.

Gli ID degli strumenti operativi devono denominare le frese nella libreria fornita. ID taglierina duplicati, dimensioni non valide e combinazioni strategia/utensile irraggiungibili producono problemi piuttosto che sostituzioni indovinate. Lo schema accetta i tipi piatto, sferico, toro, smusso, spot, trapano, fresa frontale, fresa a filettare e incisore.

La stringa della macchina snapshot pubblica non accetta un record della macchina personalizzata. Un'integrazione del codice che richiama il livello inferiore ManufacturingJob L'API può fornire in modo esplicito i limiti della macchina, la corsa e la geometria della tavola. Non inviare il record in cui lo schema HTTP prevede una stringa preimpostata.

Pianifica automaticamente o specifica l'ordine di lavorazione

Quando le operazioni sono assenti, il pianificatore le deriva dalla parte. Un array di operazioni esplicite è un ordine di lavorazione autorevole, non un elenco di suggerimenti da riordinare silenziosamente. Ogni operazione ha un ID univoco e un riferimento allo strumento. I record di strategia supportati coprono il lavoro di faccia, adattivo, tasca, profilo, foro, foratura, filettatura, incisione, smusso e superficie, con la geometria appropriata per ciascuno.

Un profilo utilizza un loop, un lato interno/esterno e una coordinata globale superiore/inferiore. Un taglio tascabile/adattativo utilizza un confine chiuso con anelli dell'isola opzionali. La perforazione utilizza punti più alto/basso. Un record di fresatura include centro, diametro, passo, bandiera interna, parte superiore e lunghezza. Un record di superficie sceglie il comportamento sgrossato, parallelo, al galleggiamento o ripido-superficiale; un riferimento al resto deve identificare il lavoro precedente appropriato.

Le sostituzioni del processo per operazione possono includere RPM, avanzamento, avanzamento a tuffo, stepdown, stepover, refrigerante e impegno radiale. I valori mancanti provengono dai dati di taglio del materiale/taglierina/macchina. Lo stepover è una percentuale da 1 a 100; stepdown e feed sono positivi. L'artefatto registra i campi sovrascritti separatamente dai parametri calcolati in modo che un revisore possa vedere da dove provengono le scelte del processo.

Il kernel nativo trasporta lo stock provvisorio tra le operazioni e pubblica il proprio IR combinato una volta. Al contrario, combineCamOperations per le sezioni di operazione generica salvate unisce il testo NC già generato; non trasforma quelle sezioni in un programma di controllo integrato. Utilizza l'artefatto nativo quando sono necessarie la generazione e la riproduzione integrate.

Imposta controlli di qualità e comprendi i loro costi

IngressoSignificato e limiti
finishAllowance0–5 mm sovrametallo di sgrossatura; omesso utilizza l'impostazione predefinita del materiale.
scallopPositivo, al massimo 1 mm; predefinito 0.01 mm per la finitura nativa.
toleranceTolleranza del percorso positivo; predefinito nativo 0.01 mm.
resolutionDimensioni della cella di riproduzione positiva; controlla la risoluzione spaziale delle prove stock.
deburrPositivo, al massimo 5 mm; chiede al pianificatore di aggiungere il lavoro di smusso del bordo superiore supportato.
subprogramsEmissione di ripetizione tradotta opzionale dove il dialetto la supporta, come i sottoprogrammi Fanuc/Haas M98.

La richiesta supporta 1–2,000 elementi CAD e al massimo 500 operazioni esplicite. Tolleranze e celle di riproduzione più piccole aumentano il lavoro di calcolo e non dimostrano automaticamente la geometria non supportata. Conserva la risoluzione segnalata con il risultato. Una mesh della finestra e un'anteprima del grezzo sottocampionato sono output di visualizzazione, non una simulazione più precisa e indipendente.

La registrazione nativa imposta i numeri utensile dalle assegnazioni della taglierina e richiede il ritiro prima del cambio utensile. Il formato dei post coordina con decimali fissi. Ispezionare l'attuale NC e il dialetto selezionato; il nome di un controller non elimina la necessità di convalidare il comportamento successivo all'installazione.

Interpretare lo stato, i reclami e il rilascio

Il risultato è un'unione: status: "failed" con problemi, o status: "ok" con un artefatto. Un artefatto ok può ancora avere release: "blocked". Leggi entrambi i livelli; controllare solo lo stato HTTP o lo stato esterno non è sufficiente.

L'artefatto conserva i risultati delle operazioni ordinate, i dati di taglio, il programma IR, le frese usate, l'NC, le statistiche delle scorte, le stime del tempo di ciclo, i problemi e i digest di identità. Le rivendicazioni hanno lo stato superato, non superato, non supportato o irrisolto. Riguardano i dati di taglio, i limiti della macchina, il completamento dell'operazione, la distanza rapida/supporto, la scriccatura, la rimozione del materiale, la riproduzione NC indipendente, la corsa della macchina e la distanza macchina/tavola.

Problemi di errore grave o rilascio di blocchi NC vuoti. Senza errori gravi, le prove incomplete producono un'anteprima a meno che la regola di rilascio non sia soddisfatta. La regola attuale consente una richiesta di viaggio in macchina non supportata pur restituendo il programma verificato; le preimpostazioni integrate non forniscono tutte la corsa esplicita dell'asse. Controlla tale affermazione quando decidi se il risultato copre una macchina particolare.

Le prove hanno un confine del modello

Il replay nativo di azioni/detentori è un controllo del campo di altezza a tre assi. Lo snapshot nativo pubblico non ha un campo fixture-envelope. La verifica autonoma accetta le buste degli impianti, ma non vengono aggiunte implicitamente alle prove native. Un'etichetta di programma verificato è la prova del modello e dei controlli acquisiti, non una certificazione della macchina.

I risultati del kernel identificano il loro produttore: l'identificatore dell'algoritmo è cadcamfun-cam-kernel@1 e la versione dello schema del contratto lo è 1 (packages/core/src/cam/kernel/execute.ts, contracts.ts). Confrontali entrambi quando decidi se le prove archiviate provengono dallo stesso kernel.

Crea un documento portatile dal risultato esatto

A CamProgramDocument conserva NC, programma, impostazioni del generatore/stampante, stock e istantanea del disegno. kernelRequest/kernelArtifact facoltativi conserva l'evidenza della fonte nativa. Questo esempio converte la richiesta acquisita e il risultato in quel documento senza salvarlo; eseguilo in un'area di lavoro in base al core, all'API e all'effetto, come app/sidecar.

Convalidare un documento portatile prima di salvarlo
import { Schema } from "effect"
import { cam } from "@cadcamfun/core"
import { CamKernelRequest, CamKernelResult, CamProgramDocument } from "@cadcamfun/api"

const request = Schema.decodeUnknownSync(CamKernelRequest)(await Bun.file("native-job.json").json())
const result = Schema.decodeUnknownSync(CamKernelResult)(await Bun.file("native-result.json").json())
if (result.status !== "ok" || result.value.release === "blocked") {
  throw new Error("The captured job has no releasable artifact")
}
const document = Schema.decodeUnknownSync(CamProgramDocument)({
  format: "cadcamfun-cam", version: 1,
  gcode: result.value.nc, program: result.value.program,
  settings: cam.generator.DEFAULT_SETTINGS,
  printer: cam.generator.DEFAULT_PRINTER_EXTRAS,
  stock: request.stock,
  drawing: { elements: request.elements, stock: request.stock },
  kernelRequest: request, kernelArtifact: result.value
})
await Bun.write("portable-program.json", JSON.stringify(document, null, 2))

L'esempio richiede stock esplicito, come ha fatto la richiesta minima fornita. Le sue impostazioni generiche dell'editor stanno riaprendo i controlli, mentre il kernelRequest catturato è la fonte nativa della verità. Conserva tutte le impostazioni effettive dell'editor durante l'acquisizione da un'area di lavoro dell'applicazione.

Risparmia contro un disegno reale

Salvare il documento separatamente tramite POST /api/drawings/:id/toolpaths, con nome, codice G e dati contenenti il documento portatile completo. Utilizza un ID disegno reale accessibile al chiamante. I salvataggi portatili richiedono l'accesso in scrittura ADMIN/MANAGER del proprietario del progetto o dell'organizzazione; un calcolo riuscito da solo non garantisce alcuna autorizzazione alla persistenza.

Il sidecar decodifica il documento, controlla che la riga NC sia uguale al documento NC ed esegue nuovamente una richiesta del kernel catturata prima di considerare attendibile un nuovo artefatto nativo. Confronta l'artefatto risultante, il programma e l'NC originale. Le prove modificate, una ripetizione bloccata o i byte incoerenti vengono rifiutati. I campi di verifica/sourceRevision forniti dal cliente non stabiliscono l'attendibilità.

Quando gli elementi selezionati e lo stock acquisiti corrispondono al disegno associato, il servizio deriva un digest della revisione del disegno. Un artefatto nativo salvato può non avere tale revisione quando l'origine non corrisponde al disegno corrente. Mantieni visibile questa distinzione: l'output acquisito valido non è necessariamente un nuovo output per l'ultimo modello archiviato.

Vedere endpoint di persistenza del percorso utensile e analisi CAD esatta quando si assembla un flusso di acquisizione/salvataggio più ricco. Evitare la variante del percorso utensile del progetto a meno che non sia previsto il suo contratto di parametri di query distinto.

Rigenerarsi dopo le modifiche e diagnosticare il rigetto

La modifica della geometria, del grezzo, dell'origine, degli strumenti, del materiale, della macchina, dell'ordine delle operazioni o del NC modifica la relazione delle prove. Rigenerare dalla richiesta acquisita aggiornata. Una semplice modifica NC può rimanere utile come testo ordinario, ma non deve contenere un artefatto nativo precedente come prova per i nuovi byte. Il servizio di salvataggio rimuove i metadati nativi incompatibili o rifiuta un nuovo documento incoerente.

La preimpostazione macchina sconosciuta è un errore di convalida dell'adattatore. Materiale/utensile sconosciuto, contenimento dello stock non valido, geometria vuota e lavorazione non supportata producono problemi di preparazione/pianificazione. Sgorbia, stoccaggio rapido, collisione supporto/tavolo e riproduzione del punto di mancata corrispondenza con il movimento/prova generato. Individuare l'ID operazione, la fase, la linea e il punto nel problema prima di modificare i controlli del processo.

Un payload di origine può superare la decodifica dello schema JSON e comunque non riuscire a produrre un lavoro valido. Al contrario, un artefatto può esistere con una versione bloccata. Mantenere la coppia richiesta/risultato originale durante la diagnosi di una delle condizioni, anziché sovrascriverla con una modifica speculativa delle impostazioni.

Provenienza dell'implementazione: packages/api/src/cam-kernel.ts, cam-program.ts, nucleo cam/kernel/snapshot.ts, execute.ts, schema.tse sidecar services/cam-program.ts. I test di evidenza mirati lo sono packages/core/src/cam/kernel/kernel.test.ts e apps/sidecar/test/cam-program.test.ts.

Esplora il risultato dell'esempio

native-job.json, generato Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Le tre operazioni che il pianificatore ha scelto per il pezzo grezzo POM, in coordinate globali (movimenti del programma più origine del lavoro in 20, 20, 11). Viola: superficie, verde: sgrossatura adattiva, blu: finitura ripida e poco profonda, tratteggiata: rapide. Premi replay per guardare l'ordine.

Senza un operations array il pianificatore ha scelto tre operazioni dal magazzino taglierina predefinito, ciascuna con il proprio cambio utensile. L'intestazione NC li riassume prima di qualsiasi movimento:

native-result.json → value.nc (prime righe)
%
O1000
(PROGRAM: POM BLANK)
(UNITS: MM)
(WORK OFFSET: G54)
(MACHINE: VERTICAL MACHINING CENTRE BT40, 12 000 RPM, 11 KW)
(MATERIAL: ACETAL POM-C DELRIN)
(STOCK: 44.00 X 44.00 X 11.00 MM)
(OP 1: FACE STOCK TOP | T1 [FACEMILL-50] | S1810 | F815-1629)
(OP 2: 3D ADAPTIVE ROUGHING | T2 [FLAT-16] | S7160 | F2848-5696)
(OP 3: 3D STEEP AND SHALLOW FINISHING | T3 [BALL-10] | S12000 | F1642-3283)
G21 G90 G17 G94 G40 G49 G80
G54
(OPERATION: FACE STOCK TOP)
T1 M6
G43 H1
M3 S1810
(OP1 FACE)
(FACE: FACE STOCK TOP)
G0 X-48.000 Y-22.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 Z-1.000 F815
X48.000 F1629
Y0.000
X-48.000
Y22.000
X48.000
G0 Z2.000

Il programma si conclude con G0 Z10.000, M5, M30 e %. Lunghezza totale: 3071 righe. Poiché non è stata fornita alcuna macchina, il vmc-standard preimpostazione applicata, di cui è il post fanuc: quindi il %/O1000 inquadratura, T1 M6 cambi di strumenti e G43 H1 compensazione della lunghezza.

Leggere i dati di taglio di un'operazione

Ogni operazione comporta un cutting record che mostra come sono state derivate le velocità e gli avanzamenti. Questi sono i valori per l'operazione di sgrossatura di cui sopra:

CampoValoreSenso
rpm7160Velocità del mandrino da Vc e diametro effettivo
vc / vcRecommended359.9 / 360 m/minVelocità di superficie raggiunta e consigliata
fz0.199 mmAvanzamento per dente dopo la correzione dell'assottigliamento dei trucioli
chipThickness0.159 mmSpessore medio del truciolo risultante
feed / plungeFeed5696 / 2848 mm/minTaglio e avanzamento a tuffo
ap / ae10 / 3.2 mmProfondità assiale e impegno radiale (20 % incremento)
rampAngle / helixPitch5° / 4.398 mmGeometria dell'ingresso
mrr182.258 cm³/minTasso di rimozione del materiale
powerKw / torqueNm / forceN1.862 / 1.986 / 248Carico stimato, confrontato con i limiti della macchina
deflectionMm0.0157 mmDeflessione stimata dell'utensile
limitedBy, warnings, exceededvuotoQuale limite ha limitato un valore; qui non è successo niente
source reads: "Acetal POM-C (Delrin) (ISO N): Vc 360 m/min, fz 0.159 mm at Ø16, kc1.1 300 N/mm² mc 0.2 (handbook starting values)". The reference block elenca la riga della tabella dei materiali, le colonne utilizzate e ogni fattore moltiplicativo (qui cutSpeed 1.2, diameterScale 1.326, chipThinning 1.25). Suo basis precisa che questi sono valori iniziali del manuale, non dati certificati dal fornitore per la taglierina.

Valori iniziali, non una garanzia

Trattare i dati di taglio come un primo tentativo ragionato. Confrontali con i dati del tuo fornitore di utensili e con la macchina prima della produzione e sostituiscili per operazione quando ne sei più informato: l'artefatto quindi registra il campo in overridden.

Identità dell'artefatto

CampoEsempioHash di
identity.jobaa2159be8c7c4228…Il lavoro canonico
identity.part91a5382540991195…La geometria della parte
identity.nc1614df331826682c…L'esatto testo NC
identity.algorithmcadcamfun-cam-kernel@1Nome e versione del kernel

La riesecuzione della stessa richiesta riproduce le stesse identità. Quando il sidecar salva un artefatto nativo, riesegue la richiesta catturata e la confronta; un NC modificato cambia identity.nc e viene rifiutato come prova.

Ricetta: genera e salva da TypeScript

generate-and-save.ts
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
const request = JSON.parse(await Bun.file("native-job.json").text())

const result = await client.toolpathGenerator.manufacture(request)
if (result.status === "failed") throw new Error(result.issues.map((i) => i.message).join("; "))

const artifact = result.value
const failed = artifact.claims.filter((claim) => claim.status === "failed")
console.log(artifact.release, failed.map((claim) => `${claim.id}: ${claim.detail}`))
if (artifact.release === "blocked") process.exit(1)

await Bun.write("program.nc", artifact.nc)

Il salvataggio come percorso utensile richiede inoltre un file portatile cadcamfun-cam documento costruito da questo artefatto, il suo program, la richiesta catturata e l'istantanea del disegno, come descritto sopra. Il metodo SDK accetta lo stesso oggetto JSON del corpo HTTP, digitato come ToolpathGeneratorManufactureInput.

Nel 3D

Un percorso utensile e ciò a cui fa riferimento Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Chiavi esterne del percorso utensile dalle migrazioni: disegno, macchina, materiale, utensile, progetto e utente, oltre a versioni, commenti e preventivi di costo.