Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Ciclo di vita del progetto

Crea un progetto, salva i dati di progettazione, riaprilo e scegli il giusto tipo di cronologia.

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

Cosa contiene un progetto

Un progetto raggruppa disegni, componenti riutilizzabili e percorsi utensile salvati. Un disegno memorizza un documento JSON; un componente memorizza dati di progettazione riutilizzabili; un percorso utensile può contenere semplici NC e metadati o un documento CAM portatile convalidato. Materiali, frese e configurazioni della macchina sono record di risorse separati a cui possono fare riferimento i flussi di lavoro di lavorazione. Un identificatore di progetto non sostituisce nessuno di questi identificatori di risorsa.

Questa guida segue le stesse famiglie utilizzate dal desktop. Separa il salvataggio dello stato dell'applicazione, il download di un file, la registrazione di una versione del percorso utensile e il commit della cronologia del progetto. Tali operazioni preservano informazioni diverse. Inizia con un progetto di sviluppo usa e getta prima di applicare la sequenza al lavoro di produzione.

Gli esempi sono modelli di richiesta i cui corpi JSON corrispondono agli schemi correnti. Non vengono acquisite le risposte del server. Per ogni campo e stato dichiarato, utilizzare il file Progetti, Disegni, Componenti, e Percorsi utensile Riferimenti API.

Seleziona l'API reale

Esegui il desktop con bun run desktop:devo avviare un sidecar manuale isolato utilizzando il comando ricetta di sviluppo locale. Il processo manuale annuncia un port temporaneo. L'anteprima del browser senza endpoint utilizza dispositivi in memoria; non può stabilire che un progetto sopravviva riavviando il server.

Secondo terminale: sostituisci la porta e il token di esempio
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token
CADCAM_DEMO_DIR=$(mktemp -d /tmp/cadcamfun-project-guide.XXXXXX)

curl --fail-with-body "$CADCAM_URL/api/health"
curl --fail-with-body "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"

L'integrità è pubblica, quindi può avere successo mentre una richiesta di progetto protetto non riesce ad ottenere l'autorizzazione. Utilizzare il token fornito a questo processo. Mantieni la stessa shell per gli esempi seguenti in modo che l'URL, il token, la directory temporanea e gli identificatori estratti rimangano disponibili. Mantieni lo stdin del sidecar aperto nel terminale di lancio.

Creare e ispezionare un progetto

Crea un progetto personale privato
curl --fail-with-body -X POST "$CADCAM_URL/api/projects"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Bracket study","description":"Disposable guide project","organizationId":null,"isPublic":false}'   -o "$CADCAM_DEMO_DIR/project.json"

CADCAM_PROJECT_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/project.json")
curl --fail-with-body "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"

La creazione restituisce HTTP 201 con una riga di progetto. Il gestore richiede un nome veritiero anche se lo schema di trasporto dichiara quel campo facoltativo. L'organizzazione fornita deve essere quella a cui appartiene il chiamante. La lettura del progetto restituisce informazioni sul proprietario/organizzazione e conteggi di disegni/componenti; è una forma di risposta diversa dalla creazione.

Sul desktop, utilizzare /projects per navigare e /projects/:id per aprire il dashboard. Dispone delle schede Disegni, Componenti e Percorsi utensile, oltre alle azioni Modifica, Elimina e Controllo versione. L'aggiornamento del progetto richiede nuovamente il nome; il proprietario o l'ADMIN/MANAGER dell'organizzazione può aggiornare, mentre l'eliminazione è limitata al proprietario o all'ADMIN.

Creare e aprire un disegno

Crea un documento editor vuoto e mantieni il suo identificatore
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/drawings"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Main drawing","description":null,"data":{"elements":[],"version":"1.0"}}'   -o "$CADCAM_DEMO_DIR/drawing.json"

CADCAM_DRAWING_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/drawing.json")
curl --fail-with-body "$CADCAM_URL/api/drawings/$CADCAM_DRAWING_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"

La stessa forma di documento vuota viene utilizzata dal flusso di creazione-disegno del dashboard del progetto. Crea una riga, non una geometria. Aprire /cad?drawingId=<id> o /drawings/<id> per modificarlo. Con /cad?projectId=<id>, CAD seleziona il disegno più recente del progetto; un disegno con nome ha la precedenza.

La creazione del disegno richiede l'accesso al progetto e un nome. La lettura/aggiornamento di un singolo disegno richiede il proprietario del progetto o un membro dell'organizzazione; l'eliminazione aggiunge un controllo del proprietario/organizzazione-ADMIN. JSON data non viene convalidato come documento di geometria disegnabile completo dall'endpoint generico. Una scrittura riuscita quindi non dimostra che ogni elemento fornito possa essere visualizzato.

Salva, duplica ed esporta i dati di progettazione

Su un disegno memorizzato già aperto, l'azione di salvataggio CAD aggiorna il disegno e aggiunge i componenti mancanti della libreria locale al suo progetto. La pagina CAD implementa la propria Cmd/Ctrl+S gestore. Un documento senza destinazione memorizzata apre il flusso di esportazione/salvataggio; Salva come progetto richiede la geometria o un elemento selezionato e crea un nuovo progetto e disegno.

L'istantanea del disegno include elementi, layer, identificatore dell'elemento selezionato, impostazioni di misurazione e una versione del formato. Il percorso di carico corrente ripristina gli elementi e le impostazioni di unità/tolleranza valide, mappa gli identificatori di livello sconosciuti al livello attivo e cancella la selezione. Non dedurre il ripristino completo dei livelli dai campi presenti in un'esportazione.

La sincronizzazione dei componenti del progetto abbina i nomi tagliati, senza distinzione tra maiuscole e minuscole e aggiunge i nomi mancanti; non sovrascrive una definizione con lo stesso nome. La creazione del componente rappresenta il massimo sforzo e può fallire in modo indipendente. Un disegno salvato non dimostra che tutti i componenti locali sono stati copiati e il flusso di salvataggio a più richieste non è una transazione del database.

Da una scheda da disegno, Duplicate carica i dati memorizzati e crea un nuovo identificatore. Scarica esporta i dati del disegno come JSON; non esporta un intero progetto. Gli aggiornamenti generici dei disegni applicano valori di nome/dati/miniatura veritieri e consentono una descrizione nulla esplicita. Non espongono il parametro hash di confronto e scambio del repository.

Conservare un componente riutilizzabile

Crea un componente, quindi convalida i suoi dati riutilizzabili durante l'aggiornamento
curl --fail-with-body -X POST "$CADCAM_URL/api/projects/$CADCAM_PROJECT_ID/components"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"name":"Bracket insert","description":"Reusable empty template","data":{"name":"Bracket insert","type":"custom","elements":[]}}'   -o "$CADCAM_DEMO_DIR/component.json"

CADCAM_COMPONENT_ID=$(bun --no-env-file -e   'console.write((await Bun.file(process.argv[1]).json()).id)'   "$CADCAM_DEMO_DIR/component.json")
curl --fail-with-body -X PUT "$CADCAM_URL/api/components/$CADCAM_COMPONENT_ID"   -H "Authorization: Bearer $CADCAM_TOKEN"   -H 'Content-Type: application/json'   -d '{"type":"custom","isPublic":false,"data":{"name":"Bracket insert","type":"custom","elements":[]}}'

La creazione restituisce HTTP 201. L'operazione di creazione del repository corrente memorizza nome, descrizione, dati e associazione al progetto; non mantiene le opzioni di tipo/pubblico/miniatura di livello superiore al momento della creazione. L'aggiornamento esplicito riportato sopra imposta il tipo e la visibilità di primo livello previsti. L'aggiornamento convalida i dati dei componenti veritieri, normalizza i campi opzionali mancanti e rifiuta una patch vuota.

Aprire /components/:id per la schermata dei dettagli o sfogliare /components con un filtro di progetto. La visibilità attualmente include proprietari di progetto, membri dell'organizzazione e componenti pubblici. I gestori dei componenti non applicano un cancello aggiuntivo riservato al solo proprietario per le modifiche/eliminazioni dei componenti visibili; non trattare la visibilità pubblica come una condivisione protetta di sola lettura.

Preparare le risorse di lavorazione

Le schermate delle risorse sono /materials, /tools, e /machine, con percorsi dettagliati individuali. I materiali richiedono un nome e un valore di proprietà. Gli strumenti richiedono nome, tipo, diametro diverso da zero e materiale. L'interfaccia utente fornisce vincoli di diametro positivi, ma le integrazioni dovrebbero convalidare esplicitamente le dimensioni ingegneristiche anziché fare affidamento su controlli di veridicità.

Esempio di corpo taglierina per POST /api/tools
{
  "name": "6 mm end mill",
  "type": "endmill",
  "diameter": 6,
  "material": "carbide",
  "numberOfFlutes": 3,
  "cuttingLength": 18,
  "shankDiameter": 6,
  "isPublic": false
}

La configurazione di una macchina necessita di tipo mill, lathe, printer, o laser; dimensioni positive del volume di lavoro, velocità massima del mandrino e velocità di avanzamento massima; e dati opzionali del controller/assi. Le configurazioni a quattro/cinque assi richiedono una configurazione rotante compatibile verificata dal gestore. Questi documenti descrivono l'attrezzatura; la loro esistenza non verifica un particolare programma generato.

Utilizzo Materiali, Utensili, e Macchine per corpi esatti. Gli elenchi di materiali/strumenti restituiscono matrici; i percorsi della macchina utilizzano una busta di successo. Leggi la risposta dell'endpoint selezionato invece di assumere una forma di raccolta universale.

Salvare e riaprire un programma CAM

È possibile creare un percorso utensile in un progetto con POST /api/toolpaths utilizzando nome e projectId o allegato a un disegno con POST /api/drawings/:id/toolpaths utilizzando nome e dati. Il dashboard del progetto utilizza la famiglia di livello superiore e apre il risultato /cam?loadToolpath=<id>. La pagina CAM legge l'originale salvato tramite l'API.

La modalità di salvataggio CAM offre progetto esistente, nuovo progetto o aggiornamento del programma salvato. L'esportazione del codice G scarica il testo. Download di esportazione portatili .cam.json con format: cadcamfun-cam, impostazioni, programma, stock, contesto del disegno e prove corrispondenti, ove disponibili. Il salvataggio dell'applicazione mantiene il documento nel record del percorso utensile.

I documenti portatili vengono validati e abbinati alle loro NC. La modifica del codice può rimuovere prove obsolete o richiedere la rianalisi. I nuovi artefatti del kernel vengono ricontrollati rispetto alle richieste di origine acquisite; le dichiarazioni di verifica arbitrarie fornite dal cliente non sono accettate come prova. Le restrizioni Proprietario/AMMINISTRATORE/GESTORE si applicano anche al salvataggio di programmi portatili in un progetto.

Quando il salvataggio di un nuovo progetto riesce parzialmente, la modale mantiene la destinazione creata per riprovare. Esamina l'identificatore prima di riavviare il flusso e creare un altro progetto. Vedere Percorsi utensile e documenti di programma salvati.

Scegli la cronologia di cui hai bisogno

MeccanismoConservaUtilizzo
Editor annulla/ripristinaIstantanee di interazione/sessione localeAnnulla l'azione di modifica corrente.
Versioni del percorso utensileDati registrati, NC, autore e messaggio di modifica per un programmaRevisionare o ripristinare una revisione del programma.
Storia del progettoIstantanee di progetto salvate e file di entità modificatiConfronta, ramifica, rivedi o ripristina lo stato del progetto.
JSON/NC scaricatoIl particolare contenuto esportatoConserva o trasferisci un artefatto esterno.

L'aggiornamento tramite la modalità di salvataggio CAM registra prima il programma precedente. Il salvataggio manuale nella schermata dei dettagli del percorso utensile registra lo stato aggiornato come versione. Il ripristino della versione registra lo stato corrente prima di sostituirlo, pertanto un ripristino può essere annullato tramite un'altra operazione di versione. Si tratta di flussi distinti; un PUT generico non è automaticamente un commit del progetto.

Aprire /toolpaths/:id per dettagli, codice G, versioni e commenti. Aprire /projects/:id/history per la storia del progetto; i pulsanti per elemento filtrano in base a percorsi come drawings/<id>.json. IL aPI della cronologia del percorso utensile accetta versionId per restauro.

Le modifiche alla cronologia vengono pubblicate anche come eventi live (commit, pr.*, workflow.started/workflow.finished, ai.session). Un nuovo abbonato riceve prima fino a 20 eventi corrispondenti recenti.

Verificare la persistenza e risolvere gli errori

  1. Leggere il progetto, il disegno e il componente creati attraverso i relativi endpoint identificativi.
  2. Aprire i percorsi desktop corrispondenti e confermare il contenuto effettivo del progetto/programma.
  3. Riavvia la stessa directory dei dati sidecar, aggiorna l'URL temporaneo e ripeti le letture.
  4. Scarica un'esportazione separatamente e controlla i suoi campi; una riga del database non dimostra che un file è stato esportato.

Un 400 solitamente indica campi aziendali obbligatori mancanti o dati del documento non validi; un 403 indica un'operazione rifiutata; un 404 può significare dati assenti o inaccessibili. Il dashboard del progetto attualmente trasforma i singoli errori degli elenchi di risorse in array vuoti, quindi una scheda vuota da sola non è una prova sufficiente dell'eliminazione. Esamina il risultato API diretto prima di creare duplicati.

Gli ancoraggi di implementazione sono projects.ts e groups/{drawings,components,toolpaths}.ts nel pacchetto API; i gestori/repository sidecar corrispondenti; projectSnapshot.ts, CadPage.tsx, SaveCamModal.tsx, e ToolpathDetailScreen.tsx. Utilizza un progetto isolato per i test di eliminazione e preserva il lavoro dell'utente prima del ripristino.

Ricetta: l'intero ciclo di vita con ricciolo

progetto → disegno → percorso utensile → commit
A=(--header "Authorization: Bearer $CADCAMFUN_TOKEN" --header "Content-Type: application/json")
U="$CADCAMFUN_URL"

project=$(curl -sS "${A[@]}" -d '{"name":"Bracket"}' "$U/api/projects" | jq -r .id)
drawing=$(curl -sS "${A[@]}" -d '{"name":"Plate","data":{}}' "$U/api/projects/$project/drawings" | jq -r .id)

curl -sS "${A[@]}" "$U/api/projects/$project/drawings" | jq 'length'

curl -sS "${A[@]}" -X PUT -d '{"name":"Plate v2"}' "$U/api/drawings/$drawing"

curl -sS "${A[@]}" -d '{"name":"Program","gcode":"G21\nM30","data":{}}' \
  "$U/api/drawings/$drawing/toolpaths" | jq .id

curl -sS "${A[@]}" -d '{"message":"First version"}' "$U/api/projects/$project/vcs/commit"
curl -sS "${A[@]}" "$U/api/projects/$project/vcs/log" | jq
Fare un passoOperazioneCampi del corpo
Crea progettoPOST /api/projectsname (richiesto dal gestore), description, organizationId, isPublic
Crea disegnoPOST /api/projects/{id}/drawingsname, description, data, thumbnail
Aggiorna disegnoPUT /api/drawings/{id}stessi campi, parziale
Crea percorso utensilePOST /api/drawings/{id}/toolpathsname, data, gcode, type, operationType, materialId, toolId, machineConfigId, …
ImpegnarsiPOST /api/projects/{id}/vcs/commitmessage (necessario), authorKind, files
RamoPOST /api/projects/{id}/vcs/branchesname (necessario), from
RipristinarePOST /api/projects/{id}/vcs/restorerev (necessario), paths

Eseguito contro un nuovo sidecar, il commit risponde con il nuovo oggetto commit e il log lo elenca:

risposta vcs/commit
{"oid":"44d2d03d23b27fbbc4b388e32e15dfb0f39fff87","parents":[],"message":"First version\n","author":{"name":"Local user","email":"local@cadcamfun.local","time":1792037121}}

Senza un'intestazione di sessione l'autore è il profilo locale dell'installazione. La ricetta utilizza jq. Percorso utensile a forma libera data è accettato così com'è; un portatile cadcamfun-cam il documento è convalidato rigorosamente, come descritto nella guida di produzione nativa.

Nel 3D

Cosa blocca un progetto Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Tabelle con una chiave esterna per Project e per i propri figli, dalle migrazioni di Drizzle.