Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Configurazioni e programmi salvati

Cattura il materiale, la struttura di lavoro, le assegnazioni dei taglierini, le operazioni ordinate e le prove di origine utilizzate per produrre un programma.

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

Una configurazione è il contesto di produzione

Un'impostazione di produzione definisce la posizione di una parte rispetto al grezzo, alle attrezzature e agli strumenti. cam.ManufacturingSetup registra un identificatore, una revisione, una struttura di lavoro rigida, stock di coordinate globali e inviluppi di attrezzature e assiemi di utensili. Il kernel nativo accetta un'istantanea e risorse CAD e produce risultati operativi ordinati e un programma pubblicato.

Utilizzo dei programmi applicativi salvati CamProgramDocument, il documento portatile è anche archiviato in Toolpath.data. Questo contratto conserva NC e la relativa rappresentazione del programma insieme alle impostazioni, al grezzo e all'istantanea del disegno necessari per riaprire l'area di lavoro. Le operazioni facoltative preservano identità operative separate; i dati facoltativi del kernel mantengono l'evidenza della fonte nativa.

Contratto con documento portatile

Un documento si identifica con format: "cadcamfun-cam" e version: 1. I campi obbligatori sono gcode, program, generatore settings, printer extra, stocke una forma libera drawing istantanea. I campi facoltativi sono operations, kernelArtifact, e kernelRequest.

Ogni operazione memorizzata ha un nome univoco id, name, gcode, e program, con strumenti facoltativi, impostazioni e identificatori degli elementi di origine. Mantenendo il proprio NC e la propria identità si effettua un'operazione di andata e ritorno indipendentemente dall'etichetta visualizzata.

Ordine e composizione delle operazioni

combineCamOperations preserva l'ordine delle operazioni. Associa gli identificatori del percorso utensile agli spazi dei nomi con l'identificatore dell'operazione, utilizza uno strumento operativo esplicito quando fornito e prefissa i nomi visualizzati quando è presente più di un'operazione. Il programma combinato prende le unità e l'offset pezzo dalla prima operazione.

Per una singola operazione, NC combinato è il testo originale. Per operazioni multiple, l'aiutante unisce le sezioni NC esistenti con i commenti dell'operazione. Questo helper non ripubblica tutte le sezioni in un singolo programma controller. Il kernel nativo è il percorso che genera operazioni ordinate ed emette un programma integrato.

I chiamanti che compongono sezioni pregenerate devono garantire unità, offset pezzo, numerazione degli strumenti, intestazioni e terminazioni di programma compatibili. Una composizione documentale riuscita dimostra l'ordine e la coerenza con le sezioni memorizzate; non aggiunge prove di autorizzazione meccanica.

Genera e salva

  1. Cattura gli elementi del disegno e il grezzo da lavorare. Scegli materiale, macchina, strumenti, offset pezzo e controlli di qualità.
  2. Chiamata POST /api/toolpaths/manufacture con schemaVersion: 1, identità lavorativa, nome e gli elementi acquisiti. Fornire operazioni esplicitamente in ordine di lavorazione o consentire al kernel di pianificarle.
  3. Ispezionare il risultato restituito, i problemi, i reclami individuali e release. Un artefatto può essere in anteprima o bloccato; la ricezione di un risultato non implica un output verificato.
  4. Costruisci un CamProgramDocument il cui codice G, programma, artefatto e richiesta catturata descrivono lo stesso risultato. Salvalo tramite un percorso utensile, crea o aggiorna l'endpoint, insieme a quel codice G.

L'endpoint di produzione valuta l'istantanea fornita senza scrivere il disegno o creare un percorso utensile. Generatore /generate è un percorso separato basato sulle impostazioni e può anche fornire NC per un documento portatile.

Convalida della persistenza

Il sidecar riconosce i documenti portatili in base al loro formato e decodifica lo schema completo prima di salvarli. Il codice G del documento deve corrispondere al codice G della riga del percorso utensile. Gli identificatori delle operazioni devono essere univoci e la loro composizione ordinata deve riprodurre il testo salvato. Il sidecar rianalizza l'operazione NC per ricostruire le mosse del programma invece di fidarsi dei dati di movimento forniti dal client.

Per un nuovo artefatto nativo con una richiesta acquisita, il sidecar riesegue tale richiesta e confronta l'artefatto, il programma e l'NC originale risultanti. I risultati non riusciti o bloccati, gli artefatti alterati e il testo non corrispondente vengono rifiutati. Un artefatto appena fornito senza la sua richiesta catturata viene rimosso a meno che non sia un artefatto invariato già mantenuto sulla riga.

Quando gli elementi di origine e lo stock forniti corrispondono al disegno archiviato associato, il servizio calcola un digest di revisione del disegno. I client non possono fornire un file attendibile sourceRevision o richiesta di verifica arbitraria. La revisione salvata viene derivata dal servizio o conservata solo per lo stesso artefatto esistente.

Modifica NC e conservazione delle prove

Un aggiornamento può sostituire la NC pur inviando il documento portatile precedente invariato. Il servizio riconosce quel caso, ricostruisce il programma analizzato dal nuovo testo e rimuove le operazioni e le prove di origine native che non corrispondono più. Un nuovo documento incoerente viene rifiutato invece di combinare silenziosamente programmi non correlati.

I dati del percorso utensile ordinario in forma libera rimangono supportati. Una modifica a NC rimuove i metadati degli artefatti nativi obsoleti laddove non corrispondono più. Fornito dal cliente verification e response i campi non diventano prove native attendibili.

L'implementazione di convalida è apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData, e drawingRevision condividere lo stesso adattatore di richiesta e logica di identità utilizzati dalla generazione e dai salvataggi.

Un programma salvato può contenere sottoprogrammi generati da percorsi utensile ripetuti. Le regole per le quali i percorsi utensile possono condividere un sottoprogramma sono descritte nel file pagina CAM.

Strutture di lavoro rigide

A WorkFrame ha un'origine e assi X/Y/Z. validateWorkFrame richiede coordinate finite, assi unitari, ortogonalità a coppie e orientamento destrorso entro la sua tolleranza numerica. workToWorld applica la cornice; worldToWork progetti indietro. Fotogrammi non validi, punti non validi e overflow numerico producono un errore di intervallo.

validateSetup controlla inoltre un identificatore di installazione non vuoto, una revisione dell'intero sicuro non negativo, inviluppi finiti di volume positivo, identificatori univoci di attrezzatura/utensile e dimensioni finite positive di taglierina e supporto. La lunghezza di taglio non deve superare la sporgenza. La convalida restituisce problemi specifici del campo in modo che il chiamante possa identificare il valore che necessita di correzione.

Lavorazione tavola indicizzata

cam/indexing.ts risolve gli orientamenti indicizzati per table-AC e table-BC layout. Ruota la normale del piano di lavoro selezionato sulla macchina +Z, rispetta i limiti di rotazione e preferisce la minore inclinazione raggiungibile. I punti del programma passano attraverso il telaio di lavoro e la rotazione della tavola attorno al perno della macchina.

Questo adattatore modella l'indicizzazione della tavola con un asse utensile fisso. Le teste inclinabili, i cicli del piano inclinato del controller e il movimento simultaneo a cinque assi sono funzionalità separate. Le posizioni nel Rotary sono gradi; gli assi del telaio rimangono vettori unitari.

Tipi di installazione condivisa

ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld, e worldToWork vengono esportati attraverso cam. Le operazioni portatili e gli schemi dei documenti vengono esportati da @cadcamfun/api, che li rende disponibili sia per la persistenza sidecar che per la logica di ripristino del desktop.

Riapertura sul desktop

saved-program.ts cattura le impostazioni correnti, il grezzo, il disegno e l'esatto NC salvato. Conserva un artefatto del kernel solo quando il suo NC e l'hash corrispondono a quei byte. Durante il ripristino, controlla l'artefatto e il rilascio archiviati, ripristina i risultati delle operazioni compatibili, reimposta la verifica della riproduzione, carica l'editor e ripristina i controlli del generatore e dello stock dallo snapshot.

Quando è disponibile solo il codice G ordinario, il desktop lo analizza per la visualizzazione. L'apertura corretta del testo non ricrea una richiesta di generazione mancante né aggiorna il livello di prova del programma.

Mantieni sorgente e risultato insieme

Rigenera dopo aver modificato la geometria, il grezzo, le dimensioni dell'utensile, il quadro di lavoro, la macchina, il materiale o l'ordine delle operazioni. Conserva le istantanee di origine per la riproducibilità e tratta un file NC modificato come un nuovo output che richiede la propria analisi. I controlli di revisione del sorgente e la riproduzione degli artefatti impediscono che un risultato precedente venga presentato come prova per byte di programma diversi.

Valuta una configurazione catturata

L'adattatore snapshot rappresenta il limite comune per la richiesta di produzione nativa. Questo esempio autonomo cattura un pezzo grezzo di polimero e una scatola di stock leggermente più grande, quindi restituisce il livello di rilascio effettivo dell'artefatto. Non scrive né un disegno né un percorso utensile.

Dalle coordinate dell'editore al lavoro nativo
import { cam } from "@cadcamfun/core"

const prepared = cam.kernel.jobOfSnapshot({
  schemaVersion: 1, id: "blank-job", name: "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
})
if (prepared.status === "failed") throw new Error(JSON.stringify(prepared.issues))
const result = cam.kernel.runJob(prepared.value)
if (result.status === "failed") throw new Error(JSON.stringify(result.issues))
console.log(result.value.release)
console.log(result.value.claims)
console.log(result.value.identity.nc)

La posizione del cubo è il suo centro; il suo fondo è Z0. Il grezzo dell'istantanea X/Y rappresenta il suo centro e larghezza/altezza sono le dimensioni complete. L'adattatore posiziona il fondo del grezzo alla Z più bassa della parte selezionata, quindi aggiunge la profondità dichiarata. Per impostazione predefinita, l'origine del lavoro del kernel è al centro dello stock nella parte superiore dello stock; stock-corner seleziona invece il suo X/Y minimo e la Z superiore.

Fonte: packages/core/src/cam/kernel/snapshot.ts, execute.ts, e kernel.test.ts.

Opzioni e limiti dell'istantanea

La richiesta nativa HTTP richiede elementi 1–2,000, una versione di 1, un ID/nome lavoro non vuoto e un nome materiale fino a 80 caratteri. Accetta fino a 500 operazioni esplicite e, quando fornito, 1–200 frese. Omettendo le operazioni si richiama il pianificatore; un elenco di operazioni vuoto esplicito non è una richiesta di inventare operazioni.

finishAllowance accetta 0–5 mm; scallop è positivo e al massimo 1 mm; deburr è positivo e al massimo 5 mm. Le impostazioni predefinite native utilizzano il sovrametallo di finitura del materiale, 0.01 mm smerlato e 0.01 mm la tolleranza del percorso. La risoluzione della riproduzione può essere fornita separatamente. Opzionale subprograms: true richiede l'emissione di ripetizione tradotta solo dove il dialetto selezionato la supporta.

Un campo della macchina per istantanee nomina una preimpostazione registrata. Il livello inferiore ManufacturingJob può contenere una registrazione completa della macchina, inclusa la corsa esplicita e la geometria della tavola; la stringa della macchina snapshot pubblica non accetta di per sé un record macchina arbitrario.

Fonte: packages/api/src/cam-kernel.ts, ai-cam.ts, e packages/core/src/cam/kernel/contracts.ts.

Risolvi i salvataggi rifiutati

Messaggio di rispostaCausa e rimedio
Documento del percorso utensile CADCAMFUN non validoIl formato portatile riconosciuto non è riuscito a rispettare lo schema. Conserva tutte le impostazioni richieste, stampante, stock, disegno, programma e campi G-code.
Il documento del percorso utensile e il codice G devono contenere lo stesso programmaLa riga NC e il nuovo documento NC sono diversi. Ricostruisci lo snapshot dai byte esatti salvati.
Le operazioni salvate devono avere ID univoci e comporre il codice G memorizzato in ordineL'identità dell'operazione o l'ordine non riproduce più il documento. Ricomporre dopo aver modificato, riordinato o eliminato operazioni.
L'artefatto del kernel salvato non corrisponde alla richiesta di origine e all'NC originaleLa riproduzione della richiesta acquisita non è riuscita, ha restituito un output bloccato o differiva dall'artefatto/programma/NC richiesto. Rigenerare anziché modificare i campi prova.

Un artefatto nativo valido può essere conservato senza una revisione del disegno di origine quando la sua selezione/stock di origine non corrisponde al disegno memorizzato associato. Tale assenza non implica che l'NC salvato sia stato rigenerato rispetto al disegno corrente. Leggere la revisione del disegno e l'istantanea dell'origine in modo indipendente quando si segnala l'aggiornamento.

Fonte: apps/sidecar/src/services/cam-program.ts e apps/sidecar/test/cam-program.test.ts.

Vedi un lavoro nativo in 3D

Lavoro nativo: POM grezzo, tre operazioni Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Il vero programma generato dal kernel nativo per l'istantanea qui sotto, disegnato in millimetri. Viola: fresa frontale Ø50 in Z10. Verde: sgrossatura adattiva Ø16. Blu: finitura a sfera Ø10. Tratteggiato: rapide. Scatole traslucide: il supporto 44 × 44 × 11 e la parte 40 × 40 × 10. Il programma è in coordinate di lavoro; l'origine del lavoro è la parte superiore del centro azionario, mondo (20, 20, 11), quindi ogni mossa qui è la mossa del programma più quell'origine.
OpStrategiaAttrezzoTagliare la lunghezzaTempoRIMOSSO
Parte superiore del visofacefacemill-50334.0 mm12.4 s1936 mm³
3D sgrossatura adattivasurfaceflat-16472.2 mm5.3 s3360 mm³
3D finitura ripida e poco profondasurfaceball-105660.6 mm113.4 s0 mm³

Macchina vmc-standard (Centro di lavoro verticale (BT40, 12 000 giri/min, 11 kW), post fanuc), materiale pom-c (Acetal POM-C (Delrin)). Stock volume 21296 mm³, final 16000 mm³, equal to the part volume, so remaining volume is 0. Estimated cycle time 149 s. Release: verified-program. Il NC è lungo 3071 righe.

ReclamoStato
cutting-datapassato
machine-limitspassato
operations-completepassato
no-rapid-in-stockpassato
holder-clearancepassato
no-gougepassato
material-removedpassato
nc-replaypassato
machine-travelnon supportato
machine-clearancepassato
machine-travel è unsupported qui perché il preset non ha un inviluppo di viaggio esplicito da confrontare. Un'affermazione non supportata non è un fallimento, ma non costituisce nemmeno una prova; la versione del programma verificato copre le affermazioni approvate.

Matematica del quadro di lavoro, elaborata

z = (0.707, 0, 0.707)x = (0.707, 0, −0.707) origine (40, 0, 10)mondo Xmondo Z
Costruisci, controlla e utilizza un frame 45°
import { cam } from "@cadcamfun/core"

const frame = cam.frameFromNormal({ x: 40, y: 0, z: 10 }, { x: 1, y: 0, z: 1 })
// xAxis (0.707, 0, -0.707)  yAxis (0, 1, 0)  zAxis (0.707, 0, 0.707)
cam.validateWorkFrame(frame)                     // []

const world = cam.workToWorld(frame, { x: 10, y: 5, z: 0 })   // (47.071, 5, 2.929)
cam.worldToWork(frame, world)                    // (10, 5, 0)

cam.validateWorkFrame({ origin: { x: 0, y: 0, z: 0 },
  xAxis: { x: 1, y: 0, z: 0 }, yAxis: { x: 0, y: 0, z: 1 }, zAxis: { x: 0, y: 1, z: 0 } })
// [{ field: "frame", message: "Work frame axes must be orthonormal and right-handed" }]
frameFromNormal prende la normale come Z e proietta il suggerimento X (mondo X per impostazione predefinita) sull'aereo. Quando il suggerimento è parallelo alla normale sceglie un'altra perpendicolare. Y è sempre Z × X, quindi il risultato è destrorso per costruzione.

Soluzioni rotanti per facce comuni

anglesFor(normal, layout, limits) returns every way the table can bring a part direction to machine +Z, smallest tilt first, with the tilt inside the limits (default −120° to 120°). C is wrapped into (−180°, 180°]. These are real outputs:
In parte normaletavolo-ACtavola-BC
(1, 0, 1), 45° latoLA45 DO90, quindi LA−45 DO−90B−45 C0, quindi B45 C180
(1, 0, 0), +X facciaLA90 DO90, quindi LA−90 DO−90B−90 C0, quindi B90 C180
(0, −1, 0), faccia anterioreLA90 DO180, quindi LA−90 DO0B−90 C90, quindi B90 C−90
(0, 0, −1), lato inferiorenessuno (array vuoto)nessuno (array vuoto)

Una parte inferiore necessita di un'inclinazione di 180°, al di fuori dei limiti predefiniti, quindi l'elenco è vuoto e indexToolpath lancia "Gli assi rotanti della macchina non possono raggiungere questo piano di lavoro entro i loro limiti". Lavora invece la parte inferiore con un secondo setup.

Dove si ferma l'origine del frame dopo l'indicizzazione
const [angles] = cam.anglesFor({ x: 1, y: 0, z: 1 }, "table-BC")   // { b: -45, c: 0 }
cam.partToMachine({ x: 40, y: 0, z: 10 }, angles, "table-BC", { x: 0, y: 0, z: 0 })
// (21.213, 0, 35.355): the origin rotated -45° about Y around the pivot

Messaggi di convalida dell'impostazione

Tutto sbagliato in una volta
cam.validateSetup({
  id: "", revision: -1, frame,
  stock: { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 10, z: 10 } },
  fixtures: [],
  tools: [{ toolId: "t", cuttingDiameter: 6, cuttingLength: 30, stickout: 20,
            holderDiameter: 32, holderLength: 40 }],
})
campomessaggio
idL'ID di installazione non deve essere vuoto
revisionLa revisione dell'installazione deve essere un numero intero sicuro non negativo
stockLa busta deve avere coordinate finite e volume positivo
tools.tLa lunghezza di taglio non deve superare la sporgenza

I problemi vengono restituiti, non generati, e tutti vengono segnalati in un unico passaggio, quindi un modulo può contrassegnare insieme tutti i campi danneggiati.