Dokumentation
CAM und G-Code
Generieren Sie Werkzeugwege, posten Sie Maschinenprogramme, geben Sie ausgegebene NCs wieder und überprüfen Sie die jedem Ergebnis beigefügten Beweise.
Automatisch aus dem Englischen übersetzt. Englisches Original ansehen
Von der Geometrie zum Programm
@cadcamfun/core stellt die Fertigungsfunktionalität dar cam. Operationsgeneratoren wandeln Geometrie- und Bearbeitungsparameter in Werkzeugwegbewegungen um. Beiträge verwandeln ein maschinenneutrales Programm in Controller-Text. Der Generatoradapter unterstützt auch Fräs-, Drehmaschinen- und 3D-Drucker-Anfragen, die vom Anwendungsformular verwendet werden.
Der native Fertigungskern fügt eine geordnete Pipeline hinzu: Bereiten Sie das Teil und die Ressourcen vor, planen oder akzeptieren Sie Vorgänge, berechnen Sie Schnittdaten, erzeugen Sie Bewegungen, geben Sie ein NC-Programm aus, spielen Sie diese NC unabhängig ab und fügen Sie Beweise bei. Generierter Text, ein analysiertes Programm und ein verifiziertes Fertigungsartefakt sind unterschiedliche Ausgaben mit unterschiedlichen Garantien.
import { cam } from "@cadcamfun/core"
const post = cam.getPost("fanuc")
if (post === undefined) throw new Error("Post is unavailable")
const nc = post.emit(program, { decimals: 3, tolerance: 0.01 }) Darstellung des Werkzeugwegs
Ein Programm enthält geordnete Werkzeugwege, denen jeweils eine Werkzeugkennung und eine Bewegungsliste zugeordnet sind. Die Koordinaten sind Millimeter, die Schnittvorschübe sind Millimeter pro Minute und die Dauer ist Sekunden. Die Schnitttiefe ist in konventionellen Arbeitskoordinaten negativ Z relativ zur Oberkante des Rohteils. Beiträge konvertieren Ausgabeeinheiten, ohne die Domänenkonvention zu ändern.
Bewegungen sind Rapid, Linear, Arc, Dwell, Comment, Cycle, und Orient. Bogenzentren sind absolute XY-Koordinaten; Ein Post berechnet Controller-relative I/J-Offsets. Übereinstimmende Anfangs- und End-XY-Koordinaten bezeichnen einen Vollkreis. Ein Zyklus behält die Bohr-, Verweil-, Tiefzieh- oder Spanbruchabsicht mit seiner Rückzugsebene und seinem Vorschub bei.
Drehfelder bei linearen und schnellen Bewegungen drücken eine gleichzeitige Achsenbewegung aus; Orient drückt die indizierte Positionierung aus. Diese Winkelfelder verwenden Grad. Ein Dialekt, der keine Drehbewegung unterstützen kann, lehnt ein solches Programm ab, anstatt seine Drehfelder zu verwerfen.
Operationen und die Generator-API
Die Operationsbibliothek umfasst Profil, Tasche, Bohren, Plandrehen, Gravieren, Oberflächenbearbeitung, Restbearbeitung, Gewindeschneiden, Anfasen, adaptive Bearbeitung und Mehrachsengenerierung. Jede Operation legt ihren Parametervertrag und ihre reine Generierungsfunktion offen. Werkzeugabmessungen, Tiefengrenzen, Abstand, Vorschübe und Geometrie müssen den Validierungsregeln des Vorgangs entsprechen.
POST /api/toolpaths/generate akzeptiert Generatoreinstellungen, Geometrie sowie Druckerextras und -rückgaben gcode, cycles, warnings, stats, program, und normalerweise Generierung von Beweisen. Eine gültige Anfrage, die kein Programm generieren kann, gibt 400 mit dem Grund zurück; Ein unerwarteter Berechnungsfehler wird zu 500. Bei der Generierung wird kein Werkzeugweg gespeichert.
/api/toolpaths/suggest leitet elementgesteuerte Parameter, Rückmeldungen, Schnittstatistiken, Betriebstexte und Warnungen ab. /api/toolpaths/parse interpretiert den bereitgestellten G-Code in Programmbewegungen und Statistiken. Vorschläge und Analyse beweisen nicht, dass ein Programm sicher oder geometrisch korrekt ist.
Controller-Dialekte
Die integrierte Registrierung implementiert generic, fanuc, grbl, und haas. linuxcnc ist eine anerkannte Beitragskennung ohne Implementierung in dieser Registrierung; getPost kann undefiniert zurückgeben. Lösen und überprüfen Sie den Beitrag, bevor Sie ihn aufrufen.
Beiträge teilen sich einen Emitter mit fester Dezimalformatierung, Kommentarbereinigung, Werkzeugwechsel, Bogenbehandlung, optionaler Zeilennummerierung und Zykluserweiterung. Die Standardwerte sind drei Dezimalstellen, aktivierte Festzyklen, IJK-Bögen, aktivierter Header und eine Toleranz von 0.01 mm. Nicht unterstützte Bogenformate fallen auf die vom Dialekt unterstützten Formen und Linearisierung zurück.
toolNumbers ordnet Werkzeugbezeichner expliziten Positiv-Integer-Taschen zu. Nicht zugeordnete Werkzeuge verwenden die Erstverwendungsnummerierung und vermeiden gleichzeitig belegte Nummern. retractBeforeToolChange ist Opt-in; Es erhöht Z auf die höchste vom Programm erreichte Position vor einem Werkzeugwechsel. Die Ausgabe von Unterprogrammen ist ebenfalls optional und hängt von der Dialektunterstützung ab. Überprüfen Sie vor dem Produktionseinsatz den Ausgang und die Maschinenkonfiguration des ausgewählten Controllers.
Wiederholte Werkzeugwege können als Unterprogramme ausgegeben werden. Ein Werkzeugweg ist qualifiziert, wenn seine Bewegung nach seiner Positionierungsbewegung die Bewegung eines anderen Werkzeugwegs ist, die innerhalb von 5 × 10⁻⁶ mm übersetzt wird, mit den gleichen Bewegungsarten, Vorschüben und Bogenrichtungen. Jede Gruppe benötigt mindestens sechs Körperbewegungen und muss insgesamt mindestens zwölf Bewegungen speichern. Werkzeugwege mit vorgefertigten Zyklen oder Rotationswörtern kommen niemals in Frage (packages/core/src/cam/post/subprograms.ts).
Native Herstellungs- und Release-Level
POST /api/toolpaths/manufacture akzeptiert CamKernelRequest, ein CAD-Snapshot der Version 1 mit Identität, Material, optionaler Maschine, Lagerbestand, Werkzeugen, Vorgängen, Qualitätskontrollen und Arbeitsversatz. Fehlende Vorgänge rufen den Planer auf; Bei fehlenden Werkzeugen wird die Standard-Fräserliste verwendet. Nicht unterstützte Eingaben, unbekanntes Material oder Werkzeug, leere Teilegeometrie, ungültiger Bestand und nicht planbare Arbeit führen zu expliziten Problemen.
Der Kernel berechnet pro Vorgang Vorschübe, Spindelgeschwindigkeit, Eingriff, Leistungs- und Kraftschätzungen, Warnungen, Zeit und entferntes Volumen. Es postet ein Programm und interpretiert seine ausgegebene NC selbstständig. Das Artefakt speichert das Programm, Fräser, NC-Text, Bestandsstatistiken, Betriebsergebnisse, Identitätsübersichten, Ansprüche und Probleme.
release ist blocked, preview, oder verified-program. Harte Ausfälle oder Freigabe eines leeren NC-Blocks. Für die Überprüfung müssen die entsprechenden Ansprüche bestehen; Die aktuelle Freigaberegel lässt nicht unterstützte Maschinenreisenachweise zu, während das Programm dennoch als verifiziert gekennzeichnet wird. Überprüfen Sie jeden Anspruch, einschließlich des Status „nicht unterstützt“ und „ungelöst“, bevor Sie entscheiden, ob die Beweise die vorgesehene Maschine betreffen.
Ansprüche umfassen Schnittdaten, Maschinengrenzen, abgeschlossene Vorgänge, Schnellfreigabe, Halterfreigabe, Fugenhobeln, Materialabtrag, NC-Wiederholung, Maschinenfahrt und Maschinenfreigabe. Beweise sind an den NC und die Quellenidentität des Artefakts gebunden. Durch das Bearbeiten von NC oder das Ändern einer Quelleneinrichtung wird diese Verbindung ungültig, es sei denn, der Job wird erneut ausgewertet.
Wiederholungsverifizierung und ihre Grenzen
POST /api/toolpaths/verify spielt entweder G-Code oder ein Programm gegen achsenausgerichtetes Rohteil ab. Geben Sie genau eine Bewegungsquelle, ein Werkzeug und Rohteilgrenzen an. Optionale Vorrichtungen sind achsenausgerichtete Umschläge; Optionale Zielkörper oder -netze ermöglichen den Vergleich von Hohlkehlen und Restmaterial. Fehlende Nut-, Schaft-, Stickout- oder Halterabmessungen führen dazu, dass die entsprechenden Kontrollen nicht modelliert werden.
Der Prüfer tastet die Bewegung in einem Höhenfeld ab und gibt Probleme, Entfernungsstatistiken, Eingriffs-/Luftschnittlängen und eine Anzeigevorschau zurück. Die Standardtoleranz beträgt 0.05 mm. Die Auflösung richtet sich standardmäßig nach dem Fräserdurchmesser und kann vergröbert werden, um sie an das Rechenbudget anzupassen. ResolutionCoarsened meldet, dass sich etwas ändert. Die Rasterauflösung begrenzt die geometrischen Beweise, die das Ergebnis unterstützen kann.
Ein Ergebnis mit ok: true hat kein Problem mit der Fehlerschwere. Ohne ein Ziel kann die Genauigkeit des fertigen Teils nicht ermittelt werden; Ohne Vorrichtungen oder Haltergeometrie kann deren Abstand nicht ermittelt werden. Die integrierten Wiedergabe- und Maschinenprüfungen des Kernels liefern Beweise, die sich speziell auf den erfassten Job beziehen, während die eigenständige Überprüfung nur die bereitgestellte Anforderung widerspiegelt.
Implementierungskarte
cam/ir.ts besitzt Umzüge und Programmverträge; operations/ besitzt Strategiegeneratoren; post/ besitzt Controller-Emission; generator/ passt Anwendungseinstellungen an und analysiert Text; model/ erstellt Teilegeometrie; verify/ besitzt Höhenfeldwiederholung; kernel/ besitzt Produktionsorchestrierung und -beweis. setup.ts und indexing.ts bereitstellung von Work-Frame-Validierung und indizierten Tabellentransformationen.
Zu den Sidecar-Diensten gehören das Speichern von Dokumenten, das Prüfen des Zeichnungszugriffs und das Aufbewahren von Quellennachweisen. Sehen Setups für tragbare Betriebsdokumente und Persistenzprüfungen.
Tiefen, Höhen, Vorschübe und Standardwerte
Kernbetriebsparameter unterscheiden positive Schnitttiefen von absoluten Z-Ebenen. totalDepth und stepdown sind positive endliche Längen erforderlich; Eine Tiefe von 5 mm mit einer Absenkung von 2 mm erzeugt Durchgänge bei 2, 4 und 5 mm unterhalb der Oberseite. Standardwerte gelten nur, wenn ein Feld fehlt, sodass eine explizit zulässige Null beibehalten wird.
| Feld | Standard / Einheit | Bedeutung |
|---|---|---|
clearanceHeight | 10 mm | Ebene zur eindeutigen und schnellen Positionierung. |
safeHeight | 5 mm | Ein-/Auslaufhöhe des Betriebsvorschubs. |
retractHeight | 2 mm | Parkhöhe zwischen den Durchgängen; Null kann gültig sein. |
feed / plungeFeed | 800 / 300 mm/min | Positive Schnitt- und Tauchvorschübe. |
spindleRpm / coolant | 10,000 / off | Spindel- und Kühlmittelzweck auf Betriebsebene. |
Die Höhen müssen Abstand ≥ sicher ≥ einfahren erfüllen. Profilstandards sind Außenkompensation, Steigrichtung, Null-Schlichtaufmaß, direkte Einfahrt, Bogenanpassung aus und 0.01 mm Toleranz. Der Rampenwinkel beträgt standardmäßig 3° und akzeptiert 0.1–45°; Die Helixsteigung beträgt standardmäßig 1 mm pro Umdrehung. Eine deklarierte Seite und ein Aufmaß verschieben den Werkzeugmittelpunktpfad, anstatt die Quellkontur zu ändern.
Dabei handelt es sich um reine Betriebsvorgaben. Die Einstellungen des Anwendungsgenerators und die vom Material abgeleiteten Prozessdaten des nativen Kernels sind separate Parameterebenen; Gehen Sie nicht von denselben Feldnamen oder Standardwerten aus.
Quelle: packages/core/src/cam/params.ts und operations/profile.ts.
Beim Gewindefräsen werden die ISO-Grundprofilhöhen 68-1 verwendet: 0.54127 × Steigung für Innengewinde und 0.61343 × Steigung für Außengewinde (packages/core/src/cam/operations/thread.ts). Der Werkzeugweg-Viewer geht beim Timing einer Animation von 500 mm/min für Schnittbewegungen ohne Vorschub und 1,000 mm/min für Eilgänge aus; Hierbei handelt es sich um Wiedergabeannahmen, nicht um maschinelle Schätzungen.
Spielen Sie ein kleines NC-Programm ab
Dieses In-Memory-Beispiel schneidet einen geraden Schlitz mit einer Breite von 4 mm und einer Tiefe von 3 mm durch ein Standardmodell mit 40 × 40 × 10 mm. Es übt denselben Kernprüfer aus, der vom HTTP-Endpunkt verwendet wird, ohne einen Werkzeugpfad zu speichern.
import { cam } from "@cadcamfun/core"
const report = cam.verify.verifyToolpath({
gcode: "G21\nG90\nG0 X-10 Y0 Z5\nG0 Z0\nG1 Z-3 F200\nG1 X10 F400\nG0 Z5\nM30",
stock: { minX: -20, maxX: 20, minY: -20, maxY: 20, minZ: -10, maxZ: 0 },
tool: { kind: "endmill", diameter: 4 },
fixtures: [], tolerance: 0.05, resolution: 0.25
})
console.log(report.ok) // true for this stock/tool model
console.log(report.stats.removedVolume)
console.log(report.issues) Den Sprung ändern zu G0 Z-3 erzeugt ein RapidInMaterial finden. Das Hinzufügen einer kurzen Schnittlänge oder von Halterabmessungen kann zu Schaft-/Halterergebnissen führen, die mit der ursprünglichen Anfrage nicht getestet werden konnten. Durch die Bereitstellung der Zielgeometrie wird der Fertigteilvergleich hinzugefügt. Dieses Beispiel erhebt keinen Anspruch auf ein Ziel oder Vorrichtungen.
Der Prüfer veranschlagt höchstens 2,500,000 Rasterzellen und 3,000,000 Pfadstichproben mit einem Arbeitsbudget von 80,000,000. Anfragen können vergröbert werden, um diese Grenzwerte einzuhalten. Das Vorschaumaterial wird für die Anzeige heruntergerechnet, sodass seine Pixel kein zweites, feineres Überprüfungsergebnis darstellen.
Quelle: packages/core/src/cam/verify/verify.ts und verify/verify.test.ts.
Bei der Wiedergabe von Text, der Unterprogramme aufruft, folgt der Interpreter M98 verschachtelt bis zu acht Ebenen tief und endet bei 2,000,000 Zeilen, sodass eine große Wiederholungszahl den Speicher nicht erschöpfen kann (packages/core/src/cam/subprogram-text.ts).
Lesen Sie ein fehlgeschlagenes Artefakt oder zeigen Sie eine Vorschau an
Ein Kernel-Problem umfasst a tag, severity, stage, message, and optional operation ID, NC line, and point. Follow that stage to the input that caused it: preparation checks stock/material/tools; planning selects strategies; cutting-data checks process limits; generation creates motion; posting writes the controller format; replay/evidence checks the resulting bytes.
NoSuitableTooloderUnknownTool: überprüfen Sie die ausgewählte Fräser-ID und die Geometriegrenzen, einschließlich Durchmesser, Nutlänge, Stickout und die mitgelieferte Fräserbibliothek.RapidInStockoderHolderCollision: lokalisieren Sie den gemeldeten Vorgang/Punkt und überprüfen Sie den Eingang, die Rückzüge, den Lagerbestand und den Halter-/Tischabstand. Durch Erhöhen des Schnittvorschubs wird ein unsicherer Schnitt nicht repariert.Gouge: konturseite, Ober-/Unterebene, Schlichtaufmaß und Zielgeometrie prüfen. Der Kernel testet ein Innenprofil des Außenteils als echten Wiedergabefehler.RemainingStock: überprüfen Sie unzugängliche Ecken, den Werkzeugradius, die Endbearbeitungsstrategie und die Überprüfungsauflösung, bevor Sie das verbleibende Volumen interpretieren.ReplayMismatch: behandeln Sie den geposteten Antrag und seine beanspruchte IR als inkonsistent und generieren Sie ihn aus dem erfassten Auftrag neu.
Maschinenvoreinstellungen repräsentieren typische Klassen, keine gemessenen Maschinen. Die verfügbaren Snapshot-Voreinstellungs-IDs sind vmc-standard, haas-vf2, hsc-mill, desktop-mill, und cnc-router. Die erste ist die Standardeinstellung. Überprüfen Sie den tatsächlichen Maschinenweg und die Abstandsnachweise, anstatt sie aus dem Anzeigenamen einer Voreinstellung abzuleiten.
Quelle: packages/core/src/cam/kernel/execute.ts, machines.ts, und kernel.test.ts; felder für Drahtprobleme sind vorhanden packages/api/src/cam-kernel.ts.
Erstellen Sie eine Tasche und veröffentlichen Sie sie
Die CAM-Schicht ist eine Pipeline reiner Funktionen: Geometrie und Parameter gehen in eine Operation ein, die Operation gibt a zurück Toolpath von Zwischenrepräsentationsbewegungen (IR), a Program gruppiert Werkzeugwege und ein Postprozessor wandelt das Programm in dialektspezifischen Text um. Vor dem Beitrag ist nichts über G-Code-Wörter bekannt, daher kann der gleiche Werkzeugweg für GRBL, Fanuc, Haas oder den generischen Dialekt ausgegeben werden.
import { cam } from "@cadcamfun/core"
const tool = { id: "t6", name: "6 mm flat end mill", kind: "endmill",
diameter: 6, flutes: 3, maxRpm: 18000 }
// 60 × 40 × 10 mm block; its top face is at origin.z (Z = 0)
const stock = { x: 60, y: 40, z: 10, origin: { x: 0, y: 0, z: 0 },
material: "aluminium-6061" }
const params = new cam.PocketParams({
name: "Pocket 30x20",
totalDepth: 3, // mm below the stock top
stepdown: 1.5, // two levels: -1.5 and -3.0
entry: "ramp", // default is "helix"
})
const ring = [{ x: 15, y: 10 }, { x: 45, y: 10 }, { x: 45, y: 30 }, { x: 15, y: 30 }]
const pocket = cam.generatePocket(params, ring, tool, stock)
const program = { name: "pocket-demo", units: "mm", workOffset: "G54",
toolpaths: [pocket] }
const gcode = cam.getPost("grbl")!.emit(program)
console.log(gcode) (PROGRAM: pocket-demo)
(UNITS: MM)
(WORK OFFSET: G54)
(OP 1: Pocket 30x20 | T1 [t6] | S10000 | F300-800)
G21 G90 G17 G94
G54
(OPERATION: Pocket 30x20)
(TOOL T1)
M3 S10000
(Pocket: Pocket 30x20)
G0 X30.000 Y21.000 Z10.000
Z5.000
Z2.000
Z1.000
G1 X36.000 Z0.732 F300
Y19.000 Z0.643
X24.000 Z0.107
Y21.000 Z0.018
X30.000 Z-0.250
X36.000 Z-0.518
Y19.000 Z-0.607
X24.000 Z-1.143
Y21.000 Z-1.232
X30.000 Z-1.500
...
(the second level repeats the ramp from Z-1.500 to Z-3.000)
...
X18.000
Y27.000
G0 Z2.000
Z10.000
M5
M2 Lesen Sie die Ausgabe von oben: In den Kopfzeilenkommentaren werden das Programm, die Einheiten, der Arbeitsversatz und eine Zusammenfassung pro Vorgang (Werkzeugnummer, ID, Spindeldrehzahl und Vorschubbereich) aufgeführt. G21 G90 G17 G94 wählt Millimeter, absolute Koordinaten, die XY-Ebene und den Vorschub pro Minute aus. GRBL verfügt über keinen Werkzeugwechsler, daher wird das erste Werkzeug als Kommentar angekündigt und spätere Werkzeugwechsel werden vorgenommen (CHANGE TO TOOL Tn) gefolgt von M0. The pocket starts with rapids down through clearance (10), safe (5), and retract (2) heights, then ramps at the 300 mm/min plunge feed. Once the ramp reaches depth it switches to the 800 mm/min cutting feed. The program ends with M5 (spindelstopp) und M2.
Leere Geometrie wird gemeldet und nicht stillschweigend übersprungen
Wenn es sich bei der Region nicht um eine geschlossene Grenze handelt, gibt die Operation den Kommentar aus (nothing to cut: no closed boundary) und keine Bewegung. Ringpunkte übergeben als { x, y } objekte. Durchsuchen Sie generierte Programme nach diesem Kommentar, wenn eine Operation keine Schnitte erzeugt.
Betriebsparameter und Standardeinstellungen
Die Parameterklasse jeder Operation erweitert dieselben gemeinsamen Felder. Höhen sind absolute Z-Werte und müssen Abstand ≥ sicher ≥ Rückzug erfüllen; Das Schema lehnt alles andere ab. Tiefen sind positive Abstände unterhalb der Bestandsoberkante; auf den letzten Durchgang wird abgeschnitten totalDepth.
| Gemeinsames Feld | Standard | Bedeutung |
|---|---|---|
id, name | operation, Operation | In Kommentaren und Zusammenfassungen angezeigte Identität. |
clearanceHeight | 10 | Höhe für Bewegungen zwischen Vorgängen. |
safeHeight | 5 | Höhe für Bewegungen zwischen Regionen. |
retractHeight | 2 | Höhe vor dem Eintauchen/Füttern. |
totalDepth | erforderlich | Positive Tiefe unterhalb der Schaftoberkante. |
stepdown | erforderlich | Positive Tiefe pro Durchgang. |
feed | 800 | Schnittvorschub, mm/min. |
plungeFeed | 300 | Vorschub für Eintauchen und Rampen, mm/min. |
spindleRpm | 10000 | Spindelgeschwindigkeit. |
coolant | off | Kühlmittelmodus. |
| Betrieb | Spezifische Felder (Standard) |
|---|---|
Pocket | stepover 40 (% des Durchmessers, 1–100), allowance 0, finishPass fALSCH, climb wAHR, entry helix | ramp | plunge, order insideOut | outsideIn, helixPitch 1, helixRadius 0 (= Werkzeugradius), rampAngle 3° (0.1–45), tolerance 0.01, toolCentre fALSCH. |
Profile | side outside | inside | onLine, climb wAHR, allowance 0, leadIn direct | ramp | helix | arc, helixPitch 1, helixRadius 0, leadRadius 2, rampAngle 3°, tabs [] (jede Registerkarte: position 0–1 entlang des Pfades, width, height), arcFit fALSCH, tolerance 0.01. |
Drill | NEIN stepdown oder feed. peck 0 (ein Strich), chipBreak fALSCH, dwell 0 s. Bei den Zustellzyklen bleibt der Abstand über der letzten Tiefe um 0,5 mm erhalten, und bei Spanbruchrückzügen beträgt der Abstand 0,5 mm. |
Face | stepover 60, overshoot 0 (= Werkzeugradius + 1 mm), alongX wAHR, tolerance 0.01. |
Engrave | tolerance 0.01. |
Thread | Gewindefräsen; Profiltiefe 0.54127 × Steigung innen und 0.61343 × Steigung außen. |
Adaptive, rest, Fläche, Fase, Mehrachsen | Weitere Strategien, die aus demselben Modul exportiert wurden; Fase fügt hinzu tipOffset 0.2 und lead 1. |
Konstruieren Sie Parameter mit new cam.PocketParams({ ... }) (oder die passende Klasse), sodass Standardwerte angewendet und Einschränkungen einmal überprüft werden. Jeder Vorgang wird auch als Paar exportiert, z cam.Pocket = { Params, generate }, für Code, der nach Vorgangsart versendet.
Postprozessoren und Ausgabeoptionen
Beiträge werden nach ID registriert cam.posts und schaute mit auf cam.getPost(id). Der linuxcnc ID ist reserviert, aber nicht implementiert, also getPost("linuxcnc") kehrt zurück undefined. Überprüfen Sie dies, bevor Sie anrufen emit.
| Post | Konservierte Zyklen | Wohneinheit | Drehachsen | Werkzeugwechsel | Programmrahmen |
|---|---|---|---|---|---|
generic | ja | sekunden | ja | Tn M6 | keiner |
grbl | nein (erweitert auf Bewegungen) | sekunden | abgelehnt | kommentar, dann M0 pause | keiner |
fanuc | ja | millisekunden | ja | Tn M6 + G43 Hn | % / O####, unterprogramme |
haas | ja | millisekunden | ja, G234 TCP | Tn M6 + G43 Hn | % / O####, unterprogramme |
Alle vier akzeptieren Bögen als ijk oder radius; linearize ist immer möglich. Ein Programm, dessen Bewegungen Drehwinkel übertragen, wird von GRBL abgelehnt, anstatt die Winkel stillschweigend zu verlieren.
| emit-Option | Standard | Effect |
|---|---|---|
decimals | 3 | Nachkommastellen. |
lineNumbers | aus | { start, step } schreibt zum Beispiel N-Wörter N10, N20. |
useCannedCycles | true | Geben Sie Bohrzyklen dort aus, wo der Dialekt sie vorsieht. |
arcMode | ijk | ijk, radius, oder linearize. |
header | true | Schreiben Sie den beschreibenden Kommentarkopf. |
tolerance | 0.01 | Sehnentoleranz bei der Linearisierung von Bögen. |
toolNumbers | erstbestellung | Zuordnung der Werkzeug-ID zur Karusselltasche. Fehlende Einträge behalten die Erstverwendungsnummerierung bei, ohne mit expliziten Taschen zu kollidieren. |
retractBeforeToolChange | aus | Erhöhen Sie Z auf den höchsten Punkt, der vor einem Werkzeugwechsel erreicht wurde. |
stamp | abwesend | Kopfstempel. Lassen Sie es für eine deterministische Ausgabe weg. |
subprograms | aus | Schreiben Sie wiederholte, übersetzte Werkzeugwege einmalig als inkrementelles Unterprogramm (Fanuc und Haas). |
const text = cam.getPost("fanuc")!.emit(program, { lineNumbers: { start: 10, step: 10 } })
// %
// O1000
// (PROGRAM: POCKET-DEMO) comments are upper-cased
// ...
// N10 G21 G90 G17 G94 G40 G49 G80
// N20 G54
// N30 T1 M6
// N40 G43 H1
// N50 M3 S10000 Standardmäßig byteidentisch
Optionen, die die Ausgabe ändern (Werkzeugwechsel-Rückzug, Unterprogramme, Stempel), sind standardmäßig deaktiviert, sodass beim erneuten Generieren einer gespeicherten Anforderung identischer Text erzeugt wird. Der cam/gcode der Workflow-Schritt nutzt dies, um veraltete Programme zu erkennen.
Bevor Sie ein Programm an eine Maschine senden
- Bestätigen Sie das Rohteil: Größe, den Ursprung seiner minimalen Ecke und dass seine Oberseite bei liegt
origin.z. Jede Tiefe wird von dieser Fläche aus gemessen. - Überprüfen Sie die Höhen anhand der Einbauten. Sicherheits-, Sicherheits- und Rückzugshöhen sind absolute Z-Werte im Arbeitsversatz.
- Wählen Sie den Beitrag für den eigentlichen Controller aus und bestätigen Sie, dass er implementiert ist (
getPosthat einen Beitrag zurückgegeben). - Spielen Sie das Programm noch einmal mit Überprüfung ab und lesen Sie jede Ausgabe. Betrachten Sie das Fehlen eines Fehlerkommentars nicht als Beweis.
- Wenn der NC-Text manuell bearbeitet wurde, generieren Sie ihn neu oder überprüfen Sie ihn erneut. Für den Originaltext berechnete Beweise gelten nicht mehr.
- Führen Sie einen Probelauf der Maschine oberhalb des Teils mit reduziertem Vorschub-Override durch, wie Sie es bei jedem neuen Programm tun würden.
Der generierte Code ist keine Maschinengarantie
Der Kernel und die Posts prüfen Geometrie, Grenzen und Dialektregeln, die ihnen bekannt sind. Sie kennen Ihre Vorrichtungen, Werkzeuglängen oder den Maschinenzustand nicht. Ein verifiziertes Programm ist ein Beweis und keine Garantie für einen sicheren Schnitt.
Behauptungen über native Kernel-Beweise
Neben den oben gezeigten Generatoren gibt der native Kernel ein Artefakt mit zehn Ansprüchen zurück. Jeder ist passed, failed, unsupported oder unresolved, mit einer Detailzeichenfolge. Der Release-Level fasst sie zusammen: blocked, preview oder verified-program.
| Beanspruchen | Beispielstatus | Vom Kernel zurückgegebene Details |
|---|---|---|
cutting-data | bestanden | Jeder Vorgang läuft mit Schnittdaten ab, die für Acetal POM-C (Delrin) und seinen Fräser berechnet wurden |
machine-limits | bestanden | Spindeldrehzahl, Vorschub, Leistung, Drehmoment und Fräserauslenkung innerhalb der Grenzen |
operations-complete | bestanden | 3 Vorgänge generiert; Jede geplante Funktion hat eine Operation |
no-rapid-in-stock | bestanden | Bei der Wiederholung berührt keine schnelle Bewegung die Aktie |
holder-clearance | bestanden | Schaft und Halter bleiben vom Schaft fern (Wiederholung des 3-Achsen-Höhenfelds) |
no-gouge | bestanden | Kein Schnitt unterhalb des Teils über 0.030 mm hinaus (eine Zelle seitlicher Durchhang) |
material-removed | bestanden | Der wiedergegebene Bestand entspricht dem Teil innerhalb von 0.110 mm |
nc-replay | bestanden | Interpretiert 3035 NC-Anträge unabhängig vom Beitrag; Die Ausdehnungen stimmen innerhalb von 2.0e-3 mm überein |
machine-travel | nicht unterstützt | Für die Maschine sind keine Verfahrgrenzen konfiguriert |
machine-clearance | bestanden | 3035 Züge geprüft; Halter und Schaft müssen mindestens 6,500 mm vom Tisch entfernt sein |
Die Zeilen sind das tatsächliche Ergebnis für den POM-Rohling im nativen Fertigungsleitfaden: 3 Vorgänge, 3071 NC-Linien, Freigabe verified-program. Der Maschinenposten des Artefakts kann ebenfalls sein linuxcnc im Schema, aber es ist kein LinuxCNC-Beitrag implementiert, sodass Voreinstellungen ihn nicht verwenden.