Zum Inhalt springen
CADCAMFUN
Doku

Dokumentation

Projektlebenszyklus

Erstellen Sie ein Projekt, speichern Sie seine Entwurfsdaten, öffnen Sie es erneut und wählen Sie die richtige Art von Verlauf aus.

Automatisch aus dem Englischen übersetzt. Englisches Original ansehen

Was ein Projekt enthält

Ein Projekt gruppiert Zeichnungen, wiederverwendbare Komponenten und gespeicherte Werkzeugwege. Eine Zeichnung speichert ein JSON-Dokument; eine Komponente speichert wiederverwendbare Designdaten; Ein Werkzeugweg kann einfache NC- und Metadaten oder ein validiertes tragbares CAM-Dokument enthalten. Materialien, Fräser und Maschinenkonfigurationen sind separate Ressourcendatensätze, auf die Bearbeitungsworkflows verweisen können. Eine Projektkennung ersetzt keine dieser Ressourcenkennungen.

Dieses Handbuch folgt den gleichen Familien, die auch für den Desktop verwendet werden. Es trennt das Speichern des Anwendungsstatus, das Herunterladen einer Datei, das Aufzeichnen einer Werkzeugwegversion und das Festschreiben des Projektverlaufs. Diese Vorgänge bewahren unterschiedliche Informationen. Beginnen Sie mit einem einmaligen Entwicklungsprojekt, bevor Sie die Sequenz auf die Produktionsarbeit anwenden.

Bei den Beispielen handelt es sich um Anforderungsvorlagen, deren JSON-Körper mit den aktuellen Schemata übereinstimmen. Es handelt sich hierbei nicht um erfasste Serverantworten. Verwenden Sie für jedes Feld und jeden deklarierten Status die Projekte, Zeichnungen, Komponenten, und Werkzeugwege API-Referenzen.

Wählen Sie die echte API aus

Führen Sie den Desktop mit aus bun run desktop:dev, oder starten Sie einen isolierten manuellen Sidecar mit dem rezept für lokale Entwicklung. Der manuelle Prozess kündigt einen kurzlebigen Port an. Die Browservorschau ohne Endpunkt verwendet In-Memory-Fixtures. Es kann nicht festgestellt werden, dass ein Projekt einen Neustart des Servers übersteht.

Zweites Terminal: Ersetzen Sie den Beispielport und das Token
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"

Der Zustand ist öffentlich und kann daher erfolgreich sein, während die Autorisierung einer geschützten Projektanforderung fehlschlägt. Verwenden Sie das für diesen Prozess bereitgestellte Token. Behalten Sie für die folgenden Beispiele dieselbe Shell bei, damit URL, Token, temporäres Verzeichnis und extrahierte Bezeichner verfügbar bleiben. Lassen Sie den Standard-Befehl des Sidecars in seinem Startterminal geöffnet.

Erstellen und prüfen Sie ein Projekt

Erstellen Sie ein privates persönliches Projekt
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"

Die Erstellung gibt HTTP 201 mit einer Projektzeile zurück. Der Handler erfordert einen wahrheitsgetreuen Namen, auch wenn das Transportschema dieses Feld als optional deklariert. Bei der angegebenen Organisation muss es sich um eine Organisation handeln, der der Anrufer angehört. Beim Lesen des Projekts werden Eigentümer-/Organisationsinformationen und Zeichnungs-/Komponentenzahlen zurückgegeben. Es ist eine andere Reaktionsform als die Schöpfung.

Verwenden Sie auf dem Desktop /projects zum Stöbern und /projects/:id um das Dashboard zu öffnen. Es verfügt über die Registerkarten „Zeichnungen“, „Komponenten“ und „Werkzeugwege“ sowie über die Aktionen „Bearbeiten“, „Löschen“ und „Versionskontrolle“. Für die Projektaktualisierung ist der Name erneut erforderlich; Eigentümer oder Organisation ADMIN/MANAGER können Aktualisierungen vornehmen, während das Löschen auf den Eigentümer oder ADMIN beschränkt ist.

Erstellen und öffnen Sie eine Zeichnung

Erstellen Sie ein leeres Editordokument und behalten Sie dessen Kennung bei
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"

Die gleiche leere Dokumentform wird vom Erstellungs-/Zeichnungsablauf des Projekt-Dashboards verwendet. Es erstellt eine Reihe, keine Geometrie. Offen /cad?drawingId=<id> oder /drawings/<id> um es zu bearbeiten. Mit /cad?projectId=<id>, CAD wählt die neueste Zeichnung des Projekts aus; eine benannte Zeichnung hat Vorrang.

Für die Zeichnungserstellung sind Projektzugriff und ein Name erforderlich. Für das Lesen/Aktualisieren einer einzelnen Zeichnung ist der Projekteigentümer oder ein Organisationsmitglied erforderlich; Beim Löschen wird eine Eigentümer-/Organisations-ADMIN-Prüfung hinzugefügt. JSON data wird vom generischen Endpunkt nicht als vollständig zeichnbares Geometriedokument validiert. Ein erfolgreicher Schreibvorgang beweist daher nicht, dass jedes bereitgestellte Element rendern kann.

Designdaten speichern, duplizieren und exportieren

Bei einer bereits geöffneten gespeicherten Zeichnung aktualisiert die CAD-Speicheraktion diese Zeichnung und fügt dem Projekt fehlende lokale Bibliothekskomponenten hinzu. Die CAD-Seite implementiert ihre eigene Cmd/Ctrl+S handler. Ein Dokument ohne gespeichertes Ziel öffnet den Export-/Speichervorgang; Als Projekt speichern erfordert Geometrie oder ein ausgewähltes Element und erstellt ein neues Projekt und eine neue Zeichnung.

Der Zeichnungsschnappschuss umfasst Elemente, Ebenen, die Kennung des ausgewählten Elements, Messeinstellungen und eine Formatversion. Der aktuelle Ladepfad stellt Elemente und gültige Einheiten-/Toleranzeinstellungen wieder her, ordnet unbekannte Layer-IDs dem aktiven Layer zu und löscht die Auswahl. Schließen Sie nicht aus den in einem Export vorhandenen Feldern auf eine vollständige Layer-Wiederherstellung ab.

Bei der Synchronisierung von Projektkomponenten werden gekürzte Namen ohne Berücksichtigung der Groß- und Kleinschreibung abgeglichen und fehlende Namen hinzugefügt. Eine gleichnamige Definition wird dadurch nicht überschrieben. Die Komponentenerstellung ist eine Best-Effort-Erstellung und kann unabhängig voneinander fehlschlagen. Eine gespeicherte Zeichnung beweist nicht, dass jede lokale Komponente kopiert wurde, und der Speicherablauf mit mehreren Anforderungen ist keine einzelne Datenbanktransaktion.

Von einer Zeichenkarte lädt Duplicate seine gespeicherten Daten und erstellt eine neue Kennung. Download exportiert die Daten dieser Zeichnung als JSON; Es wird kein gesamtes Projekt exportiert. Generische Zeichnungsaktualisierungen wenden wahrheitsgetreue Namens-, Daten- und Miniaturbildwerte an und ermöglichen eine explizite Nullbeschreibung. Sie machen den Compare-and-Swap-Hash-Parameter des Repositorys nicht verfügbar.

Bewahren Sie eine wiederverwendbare Komponente auf

Erstellen Sie eine Komponente und validieren Sie dann deren wiederverwendbare Daten bei der Aktualisierung
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":[]}}'

Die Erstellung gibt HTTP 201 zurück. Der aktuelle Repository-Erstellungsvorgang speichert Name, Beschreibung, Daten und Projektzuordnung; Die Typ-/Öffentlichkeits-/Thumbnail-Optionen der obersten Ebene werden bei der Erstellung nicht beibehalten. Das obige explizite Update legt den beabsichtigten Typ und die Sichtbarkeit der obersten Ebene fest. Das Update validiert wahrheitsgemäße Komponentendaten, normalisiert fehlende optionale Felder und lehnt einen leeren Patch ab.

Offen /components/:id für den Detailbildschirm oder durchsuchen /components mit einem Projektfilter. Die Sichtbarkeit umfasst derzeit Projekteigentümer, Organisationsmitglieder und öffentliche Komponenten. Die Komponenten-Handler erzwingen kein zusätzliches Nur-Eigentümer-Gate für die Bearbeitung/Löschung sichtbarer Komponenten; Behandeln Sie die öffentliche Sichtbarkeit nicht als geschützte schreibgeschützte Freigabe.

Bereiten Sie Bearbeitungsressourcen vor

Die Ressourcenbildschirme sind /materials, /tools, und /machine, mit individuellen Detailrouten. Materialien erfordern einen Namen und einen Eigenschaftswert. Für Werkzeuge sind Name, Typ, Durchmesser ungleich Null und Material erforderlich. Die Benutzeroberfläche stellt positive Durchmesserbeschränkungen bereit, aber Integrationen sollten technische Bemaßungen explizit validieren, anstatt sich auf Wahrheitsprüfungen zu verlassen.

Beispiel eines Fräskörpers für POST /api/tools
{
  "name": "6 mm end mill",
  "type": "endmill",
  "diameter": 6,
  "material": "carbide",
  "numberOfFlutes": 3,
  "cuttingLength": 18,
  "shankDiameter": 6,
  "isPublic": false
}

Eine Maschinenkonfiguration benötigt einen Typ mill, lathe, printer, oder laser; positive Arbeitsvolumenabmessungen, maximale Spindeldrehzahl und maximale Vorschubgeschwindigkeit; und optionale Controller-/Achsendaten. Vier-/Fünf-Achsen-Konfigurationen erfordern eine kompatible Drehkonfiguration, die vom Bediener überprüft wird. Diese Aufzeichnungen beschreiben die Ausrüstung; Ihre Existenz bestätigt nicht ein bestimmtes generiertes Programm.

Verwenden Materialien, Werkzeuge, und Maschinen für exakte Körper. Material-/Werkzeuglisten geben Arrays zurück; Maschinenrouten verwenden einen Erfolgsumschlag. Lesen Sie die Antwort des ausgewählten Endpunkts, anstatt eine universelle Sammlungsform anzunehmen.

Speichern Sie ein CAM-Programm und öffnen Sie es erneut

Ein Werkzeugweg kann unter einem Projekt mit erstellt werden POST /api/toolpaths unter Verwendung von Name und Projekt-ID oder an eine Zeichnung angehängt mit POST /api/drawings/:id/toolpaths verwendung von Namen und Daten. Das Projekt-Dashboard verwendet die Familie der obersten Ebene und öffnet das Ergebnis über /cam?loadToolpath=<id>. Die CAM-Seite liest das gespeicherte Original über die API.

Das CAM-Speichermodal bietet die Möglichkeit, ein vorhandenes Projekt, ein neues Projekt oder eine Aktualisierung des gespeicherten Programms durchzuführen. Der G-Code-Export lädt Text herunter. Tragbare Export-Downloads .cam.json mit format: cadcamfun-cam, einstellungen, Programm, Bestand, Zeichnungskontext und passende Beweise, sofern verfügbar. Beim Speichern der Anwendung bleibt dieses Dokument im Werkzeugwegdatensatz erhalten.

Übertragbare Dokumente werden validiert und ihrem NC zugeordnet. Durch das Bearbeiten des Codes können veraltete Beweise entfernt werden oder eine erneute Analyse erforderlich werden. Neue Kernel-Artefakte werden erneut anhand erfasster Quellanforderungen überprüft. Willkürlich vom Kunden gestellte Verifizierungsansprüche werden nicht als Beweis anerkannt. Besitzer-/ADMIN-/MANAGER-Einschränkungen gelten auch für das Speichern portabler Programme in einem Projekt.

Wenn das Speichern eines neuen Projekts teilweise erfolgreich ist, behält das Modal sein erstelltes Ziel für einen erneuten Versuch bei. Überprüfen Sie diese Kennung, bevor Sie den Flow neu starten und ein weiteres Projekt erstellen. Sehen Werkzeugwege und gespeicherte Programmdokumente.

Wählen Sie den Verlauf aus, den Sie benötigen

MechanismusKonserviertVerwenden
Editor rückgängig machen/wiederholenLokale Interaktions-/Sitzungs-SnapshotsMachen Sie die aktuelle Bearbeitungsaktion rückgängig.
WerkzeugwegversionenAufgezeichnete Daten, NC, Autor und Änderungsmeldung für ein ProgrammÜberprüfen oder stellen Sie eine Programmrevision wieder her.
ProjektgeschichteFestgeschriebene Projekt-Snapshots und geänderte EntitätsdateienVergleichen, verzweigen, prüfen oder wiederherstellen Sie den Projektstatus.
JSON/NC heruntergeladenDer bestimmte exportierte InhaltBehalten oder übertragen Sie ein externes Artefakt.

Beim Aktualisieren über das CAM-Speichermodal wird zuerst das vorherige Programm aufgezeichnet. Beim manuellen Speichern auf dem Werkzeugweg-Detailbildschirm wird der aktualisierte Status als Version aufgezeichnet. Die Versionswiederherstellung zeichnet den aktuellen Status auf, bevor sie ersetzt wird, sodass eine Wiederherstellung durch einen anderen Versionsvorgang rückgängig gemacht werden kann. Dies sind unterschiedliche Flüsse; Ein generischer PUT ist nicht automatisch ein Projekt-Commit.

Offen /toolpaths/:id für Details, G-Code, Versionen und Kommentare. Offen /projects/:id/history zur Projekthistorie; Schaltflächen pro Element filtern nach Pfaden wie z drawings/<id>.json. Der werkzeugweg-Historie-API akzeptiert versionId zur Restaurierung.

Verlaufsänderungen werden auch als Live-Ereignisse veröffentlicht (commit, pr.*, workflow.started/workflow.finished, ai.session). Ein neuer Abonnent erhält zunächst bis zu 20 aktuelle Übereinstimmungsereignisse.

Überprüfen Sie die Persistenz und beheben Sie Fehler

  1. Lesen Sie das erstellte Projekt, die Zeichnung und die Komponente über ihre ID-Endpunkte.
  2. Öffnen Sie die entsprechenden Desktop-Routen und bestätigen Sie den tatsächlichen Design-/Programminhalt.
  3. Starten Sie dasselbe Sidecar-Datenverzeichnis neu, aktualisieren Sie die kurzlebige URL und wiederholen Sie die Lesevorgänge.
  4. Laden Sie einen Export separat herunter und überprüfen Sie seine Felder. Eine Datenbankzeile beweist nicht, dass eine Datei exportiert wurde.

Ein 400 weist normalerweise auf fehlende erforderliche Geschäftsfelder oder ungültige Dokumentdaten hin; ein 403 gibt einen abgelehnten Vorgang an; Ein 404 kann fehlende oder nicht zugängliche Daten bedeuten. Das Projekt-Dashboard wandelt derzeit einzelne Fehler in der Ressourcenliste in leere Arrays um, sodass ein leerer Tab allein kein ausreichender Beweis für eine Löschung ist. Überprüfen Sie das direkte API-Ergebnis, bevor Sie Duplikate erstellen.

Implementierungsanker sind projects.ts und groups/{drawings,components,toolpaths}.ts im API-Paket; die entsprechenden Sidecar-Handler/Repositorys; projectSnapshot.ts, CadPage.tsx, SaveCamModal.tsx, und ToolpathDetailScreen.tsx. Verwenden Sie ein isoliertes Projekt für Löschtests und bewahren Sie die Benutzerarbeit vor der Wiederherstellung auf.

Rezept: Der gesamte Lebenszyklus mit Curl

projekt → Zeichnung → Werkzeugweg → Festschreiben
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
SchrittBetriebKörperfelder
Projekt erstellenPOST /api/projectsname (wird vom Handler benötigt), description, organizationId, isPublic
Zeichnung erstellenPOST /api/projects/{id}/drawingsname, description, data, thumbnail
Zeichnung aktualisierenPUT /api/drawings/{id}gleiche Felder, teilweise
Werkzeugweg erstellenPOST /api/drawings/{id}/toolpathsname, data, gcode, type, operationType, materialId, toolId, machineConfigId, …
BegehenPOST /api/projects/{id}/vcs/commitmessage (erforderlich), authorKind, files
ZweigPOST /api/projects/{id}/vcs/branchesname (erforderlich), from
WiederherstellenPOST /api/projects/{id}/vcs/restorerev (erforderlich), paths

Wenn Sie einen neuen Sidecar ausführen, antwortet der Commit mit dem neuen Commit-Objekt und das Protokoll listet es auf:

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

Ohne Sitzungsheader ist der Autor das lokale Profil der Installation. Das Rezept verwendet jq. Freiform-Werkzeugweg data wird so akzeptiert, wie es ist; ein tragbares Gerät cadcamfun-cam das Dokument wird streng validiert, wie im nativen Herstellungshandbuch beschrieben.

In 3D

Was hängt von einem Projekt ab? Zum Orbit ziehen · zum Zoomen scrollen · zum Schwenken mit der rechten Maustaste ziehen
Tabellen mit einem Fremdschlüssel für Project und ihren eigenen untergeordneten Tabellen aus den Drizzle-Migrationen.