Zum Inhalt springen
CADCAMFUN
Doku

Dokumentation

Setups und gespeicherte Programme

Erfassen Sie den Bestand, den Arbeitsrahmen, die Schneidzuweisungen, die bestellten Vorgänge und die Quellennachweise, die zur Erstellung eines Programms verwendet werden.

Automatisch aus dem Englischen übersetzt. Englisches Original ansehen

Ein Setup ist ein Fertigungskontext

Eine Fertigungseinrichtung definiert, wie ein Teil im Verhältnis zu Material, Vorrichtungen und Werkzeugen sitzt. cam.ManufacturingSetup zeichnet eine Kennung, eine Revision, einen starren Arbeitsrahmen, Weltkoordinaten-Lager- und Vorrichtungsumschläge sowie Werkzeugbaugruppen auf. Der native Kernel akzeptiert einen CAD-Snapshot und Ressourcen und erzeugt geordnete Operationsergebnisse und ein veröffentlichtes Programm.

Gespeicherte Anwendungsprogramme verwenden CamProgramDocument, in dem auch das tragbare Dokument gespeichert ist Toolpath.data. Dieser Vertrag behält NC und seine Programmdarstellung zusammen mit den Einstellungen, dem Bestand und dem Zeichnungsschnappschuss bei, die zum erneuten Öffnen des Arbeitsbereichs erforderlich sind. Bei optionalen Vorgängen bleiben separate Vorgangsidentitäten erhalten. Optionale Kerneldaten behalten native Quellennachweise bei.

Vertrag über tragbare Dokumente

Ein Dokument identifiziert sich mit format: "cadcamfun-cam" und version: 1. Erforderliche Felder sind gcode, program, Generator settings, printer extras, stockund eine Freiform drawing schnappschuss. Optionale Felder sind operations, kernelArtifact, und kernelRequest.

Jeder gespeicherte Vorgang ist einzigartig id, name, gcode, und program, mit optionalem Tool, Einstellungen und Quellelement-IDs. Durch die Beibehaltung seines NC und seiner Identität wird ein Vorgang unabhängig von seiner Anzeigebezeichnung hin- und hergeführt.

Operationsreihenfolge und Zusammensetzung

combineCamOperations behält die Operationsreihenfolge bei. Es benennt Werkzeugwegbezeichner mit der Vorgangskennung, verwendet bei Bereitstellung ein explizites Vorgangswerkzeug und stellt Anzeigenamen voran, wenn es mehr als einen Vorgang gibt. Das kombinierte Programm übernimmt Einheiten und Arbeitsversatz vom ersten Arbeitsgang.

Bei einer einzelnen Operation ist die kombinierte NC der Originaltext. Bei mehreren Vorgängen verknüpft der Helfer die vorhandenen NC-Abschnitte mit Vorgangskommentaren. Dieser Helfer postet nicht alle Abschnitte erneut in einem einzigen Controller-Programm. Der native Kernel ist die Route, die geordnete Operationen generiert und ein integriertes Programm ausgibt.

Aufrufer, die vorab generierte Abschnitte erstellen, müssen kompatible Einheiten, Arbeitsversätze, Werkzeugnummerierung, Kopfzeilen und Programmenden sicherstellen. Eine erfolgreiche Dokumentenzusammenstellung beweist Ordnung und Konsistenz mit den gespeicherten Abschnitten; Es werden keine Beweise für die maschinelle Freigabe hinzugefügt.

Generieren und speichern

  1. Erfassen Sie die zu bearbeitenden Zeichnungselemente und das Material. Wählen Sie Material, Maschine, Werkzeuge, Arbeitsversatz und Qualitätskontrollen.
  2. Anruf POST /api/toolpaths/manufacture mit schemaVersion: 1, jobidentität, Name und die erfassten Elemente. Geben Sie Vorgänge explizit in der Bearbeitungsreihenfolge an oder lassen Sie sie vom Kernel planen.
  3. Überprüfen Sie das zurückgegebene Ergebnis, Probleme, einzelne Ansprüche usw release. Ein Artefakt kann eine Vorschau oder ein Block sein; Der Erhalt eines Ergebnisses bedeutet nicht, dass die Ausgabe verifiziert ist.
  4. Baue ein CamProgramDocument deren G-Code, Programm, Artefakt und erfasste Anfrage dasselbe Ergebnis beschreiben. Speichern Sie es über einen Endpunkt zum Erstellen oder Aktualisieren eines Werkzeugwegs zusammen mit diesem G-Code.

Der Fertigungsendpunkt wertet den bereitgestellten Schnappschuss aus, ohne die Zeichnung zu schreiben oder einen Werkzeugweg zu erstellen. Generator /generate ist eine separate einstellungsgesteuerte Route und kann auch NC für ein tragbares Dokument bereitstellen.

Persistenzvalidierung

Der Sidecar erkennt portable Dokumente anhand ihres Formats und dekodiert das vollständige Schema vor dem Speichern. Der G-Code des Dokuments muss mit dem G-Code der Werkzeugwegzeile übereinstimmen. Vorgangsbezeichner müssen eindeutig sein und ihre geordnete Zusammensetzung muss den gespeicherten Text wiedergeben. Der Sidecar analysiert die Operation NC, um Programmverschiebungen zu rekonstruieren, anstatt den vom Client bereitgestellten Bewegungsdaten zu vertrauen.

Für ein neues natives Artefakt mit einer erfassten Anforderung führt der Sidecar diese Anforderung erneut aus und vergleicht das resultierende Artefakt, das Programm und die ursprüngliche NC. Fehlgeschlagene oder blockierte Ergebnisse, veränderte Artefakte und nicht übereinstimmender Text werden abgelehnt. Ein neu bereitgestelltes Artefakt ohne seine erfasste Anforderung wird entfernt, es sei denn, es handelt sich um ein unverändertes Artefakt, das bereits in der Zeile gespeichert ist.

Wenn die bereitgestellten Quellelemente und der Bestand mit der zugehörigen gespeicherten Zeichnung übereinstimmen, berechnet der Dienst einen Zeichnungsrevisionsüberblick. Clients können keine vertrauenswürdige Lösung bereitstellen sourceRevision oder willkürlicher Überprüfungsanspruch. Die gespeicherte Revision wird vom Dienst abgeleitet oder nur für dasselbe vorhandene Artefakt beibehalten.

Bearbeitung von NC und Beweissicherung

Ein Update kann NC ersetzen und gleichzeitig das unveränderte vorherige tragbare Dokument senden. Der Dienst erkennt diesen Fall, erstellt das analysierte Programm aus dem neuen Text neu und entfernt Vorgänge und native Quellnachweise, die nicht mehr übereinstimmen. Ein inkonsistentes neues Dokument wird abgelehnt, anstatt nicht verwandte Programme stillschweigend zu kombinieren.

Gewöhnliche Freiform-Werkzeugwegdaten werden weiterhin unterstützt. Durch eine Änderung an NC werden veraltete native Artefaktmetadaten dort entfernt, wo sie nicht mehr übereinstimmen. Vom Kunden bereitgestellt verification und response felder werden nicht zu vertrauenswürdigen nativen Beweisen.

Die Validierungsimplementierung ist apps/sidecar/src/services/cam-program.ts; runKernelRequest, prepareCamProgramData, und drawingRevision verwenden Sie denselben Anforderungsadapter und dieselbe Identitätslogik, die beim Generieren und Speichern verwendet werden.

Ein gespeichertes Programm kann Unterprogramme enthalten, die aus wiederholten Werkzeugwegen generiert wurden. Die Regeln, nach denen Werkzeugwege ein Unterprogramm gemeinsam nutzen dürfen, sind im beschrieben CAM-Seite.

Starre Arbeitsrahmen

A WorkFrame hat einen Ursprung und X/Y/Z-Achsen. validateWorkFrame erfordert endliche Koordinaten, Einheitsachsen, paarweise Orthogonalität und rechtshändige Ausrichtung innerhalb seiner numerischen Toleranz. workToWorld wendet den Rahmen an; worldToWork projekte zurück. Ungültige Frames, ungültige Punkte und numerischer Überlauf führen zu einem Bereichsfehler.

validateSetup überprüft außerdem eine nicht leere Setup-ID, eine nicht negative sichere Ganzzahlrevision, endliche Hüllkurven mit positivem Volumen, eindeutige Vorrichtungs-/Werkzeug-IDs und positive endliche Fräser- und Halterabmessungen. Die Schnittlänge darf den Überstand nicht überschreiten. Die Validierung gibt feldspezifische Probleme zurück, sodass der Aufrufer den Wert identifizieren kann, der korrigiert werden muss.

Indexierte Tischbearbeitung

cam/indexing.ts löst indizierte Orientierungen für table-AC und table-BC layouts. Es dreht die ausgewählte Arbeitsebene normal auf die Maschine +Z, respektiert die Drehgrenzen und bevorzugt die kleinere erreichbare Neigung. Programmpunkte durchlaufen den Arbeitsrahmen und die Tischdrehung um den Maschinendrehpunkt.

Dieser Adapter modelliert die Tischindizierung mit einer festen Werkzeugachse. Neigeköpfe, Steuerungszyklen für geneigte Ebenen und gleichzeitige Fünf-Achsen-Bewegung sind separate Funktionen. Drehpositionen sind Grad; Rahmenachsen bleiben Einheitsvektoren.

Gemeinsame Setup-Typen

ManufacturingSetup, WorkFrame, ToolAssembly, validateSetup, validateWorkFrame, workToWorld, und worldToWork werden über exportiert cam. Portable Betriebs- und Dokumentschemata werden aus exportiert @cadcamfun/api, wodurch sie sowohl für die Sidecar-Persistenz als auch für die Desktop-Wiederherstellungslogik verfügbar sind.

Erneutes Öffnen im Desktop

saved-program.ts erfasst die aktuellen Einstellungen, das Material, die Zeichnung und den genauen NC, der gespeichert wird. Es behält ein Kernel-Artefakt nur dann bei, wenn sein NC und sein Hash mit diesen Bytes übereinstimmen. On restore, it checks the stored artifact and release, restores compatible operation results, resets replay verification, loads the editor, and restores generator and stock controls from the snapshot.

Wenn nur gewöhnlicher G-Code verfügbar ist, analysiert der Desktop ihn zur Anzeige. Durch das erfolgreiche Öffnen von Text wird weder eine fehlende Generierungsanforderung neu erstellt noch der Evidenzgrad des Programms erhöht.

Halten Sie Quelle und Ergebnis zusammen

Nach Änderung von Geometrie, Rohteil, Werkzeugabmessungen, Arbeitsrahmen, Maschine, Material oder Arbeitsreihenfolge regenerieren. Bewahren Sie Quell-Snapshots zur Reproduzierbarkeit auf und behandeln Sie eine geänderte NC-Datei als neue Ausgabe, die eine eigene Analyse erfordert. Quellrevisionsprüfungen und Artefaktwiedergabe verhindern, dass ein früheres Ergebnis als Beweis für unterschiedliche Programmbytes angezeigt wird.

Bewerten Sie ein erfasstes Setup

Der Snapshot-Adapter ist die gemeinsame Grenze für die native Herstellungsanforderung. Dieses eigenständige Beispiel erfasst einen Polymerrohling und eine etwas größere Lagerbox und gibt dann die tatsächliche Freigabestufe des Artefakts zurück. Es schreibt weder eine Zeichnung noch einen Werkzeugweg.

Von Editor-Koordinaten zu einem nativen Job
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)

Die Würfelposition ist sein Mittelpunkt; sein unterster Punkt ist Z0. Snapshot-Material X/Y sind die Mitte und Breite/Höhe die vollständigen Abmessungen. Der Adapter platziert die Rohteilunterseite am niedrigsten Z des ausgewählten Teils und fügt dann die angegebene Tiefe hinzu. Der Kernel-Arbeitsursprung ist standardmäßig auf Stock-Center am oberen Rand des Stocks eingestellt. stock-corner wählt stattdessen sein minimales X/Y und oberes Z.

Quelle: packages/core/src/cam/kernel/snapshot.ts, execute.ts, und kernel.test.ts.

Snapshot-Optionen und -Grenzen

Die native HTTP-Anfrage erfordert 1–2,000 Elemente, eine Version von 1, eine nicht leere Job-ID/Namen und einen Materialnamen mit bis zu 80 Zeichen. Es akzeptiert bis zu 500 explizite Operationen und, sofern bereitgestellt, 1–200 Cutter. Das Weglassen von Vorgängen ruft den Planer auf; Eine explizite leere Operationsliste ist keine Aufforderung, Operationen zu erfinden.

finishAllowance akzeptiert 0–5 mm; scallop ist positiv und höchstens 1 mm; deburr ist positiv und höchstens 5 mm. Native Standardeinstellungen verwenden die Endaufmaße des Materials, 0.01 mm Ausbuchtung und 0.01 mm Pfadtoleranz. Die Wiedergabeauflösung kann separat bereitgestellt werden. Optional subprograms: true fordert übersetzte Wiederholungsemission nur dann an, wenn der ausgewählte Dialekt dies unterstützt.

Ein Snapshot-Maschinenfeld benennt eine registrierte Voreinstellung. Die untere Ebene ManufacturingJob kann einen vollständigen Maschinendatensatz enthalten, einschließlich expliziter Verfahr- und Tischgeometrie; Die öffentliche Snapshot-Maschinenzeichenfolge selbst akzeptiert keinen beliebigen Maschinendatensatz.

Quelle: packages/api/src/cam-kernel.ts, ai-cam.ts, und packages/core/src/cam/kernel/contracts.ts.

Abgelehnte Speicherungen auflösen

AntwortnachrichtUrsache und Abhilfe
Ungültiges CADCAMFUN-WerkzeugwegdokumentDas erkannte portable Format hat sein Schema nicht erfüllt. Behalten Sie alle erforderlichen Einstellungen, Drucker-, Material-, Zeichnungs-, Programm- und G-Code-Felder bei.
Werkzeugwegdokument und G-Code müssen dasselbe Programm enthaltenDie Zeilen-NC und die neue Dokument-NC unterscheiden sich. Erstellen Sie den Snapshot genau aus den gespeicherten Bytes neu.
Gespeicherte Vorgänge müssen eindeutige IDs haben und den gespeicherten G-Code der Reihe nach zusammenstellenDie Vorgangsidentität oder -bestellung reproduziert das Dokument nicht mehr. Nach Bearbeitungs-, Neuordnungs- oder Löschvorgängen neu zusammenstellen.
Das gespeicherte Kernel-Artefakt stimmt nicht mit seiner Quellanforderung und dem ursprünglichen NC übereinDie Wiedergabe der erfassten Anforderung ist fehlgeschlagen, hat eine blockierte Ausgabe zurückgegeben oder weicht vom beanspruchten Artefakt/Programm/NC ab. Erstellen Sie die Beweisfelder neu, anstatt sie zu bearbeiten.

Ein gültiges natives Artefakt kann ohne eine Überarbeitung der Quellzeichnung beibehalten werden, wenn seine Quellauswahl/-bestand nicht mit der zugehörigen gespeicherten Zeichnung übereinstimmt. Dieses Fehlen bedeutet nicht, dass die gespeicherte NC anhand der aktuellen Zeichnung neu generiert wurde. Lesen Sie die Zeichnungsrevision und den Quell-Snapshot unabhängig voneinander, wenn Sie die Aktualität melden.

Quelle: apps/sidecar/src/services/cam-program.ts und apps/sidecar/test/cam-program.test.ts.

Sehen Sie sich einen nativen Job in 3D an

Nativer Job: POM-Rohling, drei Operationen Zum Orbit ziehen · zum Zoomen scrollen · zum Schwenken mit der rechten Maustaste ziehen
Das vom nativen Kernel generierte echte Programm für den Schnappschuss unten, gezeichnet in Weltmillimetern. Lila: Planfräser Ø50 bei Z10. Grün: Ø16 adaptives Schruppen. Blau: Ø10 Kugelfinish. Gestrichelt: Stromschnellen. Durchsichtige Kästchen: der Teil 44 × 44 × 11 und der Teil 40 × 40 × 10. Das Programm ist in Arbeitskoordinaten; Der Arbeitsursprung ist der Stock-Mittelpunkt oben, Welt (20, 20, 11), daher ist jeder Zug hier der Programmzug plus diesem Ursprung.
OpStrategieWerkzeugSchnittlängeZeitENTFERNT
Obermaterial obenfacefacemill-50334.0 mm12.4 s1936 mm³
3D adaptives Schruppensurfaceflat-16472.2 mm5.3 s3360 mm³
3D steiler und flacher Abgangsurfaceball-105660.6 mm113.4 s0 mm³

Maschine vmc-standard (Vertikalbearbeitungszentrum (BT40, 12 000 U/min, 11 kW), Beitrag fanuc), material 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. Der NC ist 3071 Zeilen lang.

BeanspruchenStatus
cutting-databestanden
machine-limitsbestanden
operations-completebestanden
no-rapid-in-stockbestanden
holder-clearancebestanden
no-gougebestanden
material-removedbestanden
nc-replaybestanden
machine-travelnicht unterstützt
machine-clearancebestanden
machine-travel ist unsupported hier, weil die Voreinstellung keinen expliziten Reiseumschlag zum Vergleich hat. Eine unbegründete Behauptung stellt keinen Fehler dar, ist aber auch kein Beweis; Die verifizierte Programmversion deckt die bestandenen Ansprüche ab.

Arbeitsrahmenmathematik, durchgearbeitet

z = (0.707, 0, 0.707)x = (0.707, 0, −0.707) ursprung (40, 0, 10)welt Xwelt Z
Erstellen, prüfen und verwenden Sie einen 45°-Rahmen
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 nimmt die Normale als Z und projiziert den X-Hinweis (standardmäßig Welt X) auf die Ebene. Wenn der Hinweis parallel zur Normalen ist, wird eine andere Senkrechte ausgewählt. Y ist immer Z × X, daher ist das Ergebnis konstruktionsbedingt rechtshändig.

Rotationslösungen für gängige Gesichter

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:
Teilweise normaltisch-ACtisch-BC
(1, 0, 1), 45° SeiteA45 C90, dann A−45 C−90B−45 C0, dann B45 C180
(1, 0, 0), +X FlächeA90 C90, dann A−90 C−90B−90 C0, dann B90 C180
(0, −1, 0), VorderseiteA90 C180, dann A−90 C0B−90 C90, dann B90 C−90
(0, 0, −1), Unterseitekeine (leeres Array)keine (leeres Array)

Eine Unterseite benötigt eine Neigung von 180°, die außerhalb der Standardgrenzen liegt, daher ist die Liste leer und indexToolpath wirft „Die Rotationsachsen der Maschine können diese Arbeitsebene nicht innerhalb ihrer Grenzen erreichen“. Bearbeiten Sie stattdessen die Unterseite in einer zweiten Aufspannung.

Wo der Frame-Ursprung nach der Indizierung landet
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

Validierungsmeldungen einrichten

Alles auf einmal falsch
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 }],
})
feldnachricht
idDie Setup-ID darf nicht leer sein
revisionDie Setup-Revision muss eine nicht negative sichere Ganzzahl sein
stockDer Umschlag muss endliche Koordinaten und ein positives Volumen haben
tools.tDie Schnittlänge darf den Überstand nicht überschreiten

Probleme werden zurückgegeben, nicht ausgelöst, und alle werden in einem Durchgang gemeldet, sodass ein Formular jedes fehlerhafte Feld gemeinsam markieren kann.