QCAD/CAM-postprocessor
QCAD/CAM kan eksportere CAD-tegninger til forskellige formater, der bruges i CAM (computerstøttet fremstilling). Disse formater kan være dialekter af G-kode eller andre, helt forskellige formater. Hvert understøttet CAM-format er defineret i en konfigurationsfil (eller “postprocessor”), som er en ECMAScript-fil (JavaScript), der implementerer formatdetaljerne. Alle tilgængelige konfigurationer gemmes inde i mappen postprocessors. Nye formatimplementeringer kan tilføjes samme sted.
Grundlæggende struktur
Sektion kaldt “Grundlæggende struktur”Hver konfigurationsfil indeholder en ECMAScript-klasse med samme navn som scriptfilen. Hvis scriptfilen hedder MyGCode.js, skal klassen defineret inde i scriptet hedde MyGCode.
ECMAScript-klassen skal direkte eller indirekte afledes fra klassen CamExporterV2, som er defineret af QCAD/CAM. CamExporterV2 definerer den grundlæggende struktur af CAM-eksportkonfigurationsklasser. Forskellige metoder i CamExporterV2 kaldes for at eksportere filoverskriften, de forskellige objekter i CAD-tegningen og sidefoden. CamExporterV2 tager sig også af de forskellige funktioner i QCAD/CAM, for eksempel værktøjsradiuskompensation, indføring / udføring, skæring af indre konturer før ydre konturer, stioptimering osv.
CamExporterV2 udsender ikke noget af sig selv, men ville producere en tom fil på egen hånd. CamExporterV2 tilbyder en tekststrøm (QTextStream) til at skrive til den eksporterede fil. Denne tekststrøm eksponeres gennem medlemsvariablen this.stream.
Hvis det ønskede output er en G-kode-dialekt (f.eks. G1 X10 Y20 for en lineær bevægelse), kan konfigurationen afledes fra den eksisterende konfiguration for G-kode kaldet GCodeBase, som er defineret i filen GCodeBase.js. Dette er tilfældet for de fleste maskinstyringer. Et sådant eksempel på konfiguration til udsendelse af G-kode i millimeter er defineret i filen GCodeMM.js og tilgængelig i brugergrænsefladen som konfigurationen kaldet G-Code (G41/G42) [mm].
Aflede en konfiguration fra GCodeBase
Sektion kaldt “Aflede en konfiguration fra GCodeBase”Opret en fil med et unikt navn efter eget valg. For dette eksempel kalder vi vores nye konfiguration MyGCode og gemmer den i en fil med samme navn, dvs. MyGCode.js under mappen postprocessors i din QCAD/CAM-installation.
Du kan bruge din foretrukne almindelige teksteditor til at oprette og skrive filen, for eksempel Notepad under Windows, TextEdit under macOS eller vim, Emacs osv. under Linux-systemer.
MyGCode.js skal definere en klasse kaldet MyGCode for at være en gyldig konfiguration for QCAD/CAM. Selvom der strengt taget ikke er klasser i ECMAScript, kan vi skabe et lignende koncept ved at knytte funktioner til prototypeobjektet af en konstruktørfunktion. Hvordan dette præcist fungerer, er uden for rammerne af denne dokumentation. Der er dog en ligetil skabelon, du kan bruge til alle konfigurationsfiler.
For vores eksempel ser definitionen af klassen MyGCode således ud (bemærk, at linjer, der starter med //, er kommentarer og ikke er påkrævede):
// Inkluder GCodeBase.js, som indeholder klassen 'GCodeBase',// brugt som base for vores egen konfiguration:include("GCodeBase.js");
// Konstruktør af vores klasse:function MyGCode(documentInterface, newDocumentInterface) { // Kald konstruktøren af basisklassen: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Afled vores klasse fra klassen GCodeBase:MyGCode.prototype = new GCodeBase();
// Visningsnavn vist i brugergrænsefladen:MyGCode.displayName = "My G-Code";Nu har vi oprettet en ny, fuldt fungerende konfiguration kaldet “My G-Code”, som er klar til at blive brugt i QCAD/CAM og producerer grundlæggende G-kode.
Konfigurationsindstillinger
Sektion kaldt “Konfigurationsindstillinger”Konstruktøren, vi definerede ovenfor, kalder konstruktøren af vores basisklasse GCodeBase. I konstruktøren kan vi indstille nogle parametre for vores konfiguration, såsom den ønskede outputenhed, eller om vi vil bruge G41/G42 til værktøjsradiuskompensation eller beregne centrum af værktøjsstien.
For at konfigurere outputenheden (det er den enhed, din maskine eller controller forventer), kan vi indstille medlemsvariablen unit til Inch eller Millimeter, for eksempel:
this.unit = RS.Inch;eller
this.unit = RS.Millimeter;Andre indstillinger, der kan konfigureres i konstruktøren, er:
| Variabel | Mulige værdier | Standard | Beskrivelse |
|---|---|---|---|
this.outputOffsetPath |
true eller false | false | Sæt til true for at beregne værktøjsradiuskompensation i stedet for at bruge G41/G42. |
this.lineNumber |
Tal | 10 | Startnummer brugt til linjenummerering (N…). |
this.lineNumberIncrement |
Tal | 10 | Linjenummerforøgelse fra linje til linje. |
this.fileExtensions |
Array | [ "nc", "cnc" ] |
Liste over filtypenavne, som brugeren kan vælge imellem, når der eksporteres gennem denne postprocessor. |
En komplet konstruktør kan se således ud:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Definere G-kode-outputtet
Sektion kaldt “Definere G-kode-outputtet”Kodeblokke
Sektion kaldt “Kodeblokke”G-kode-output er struktureret i kodeblokke, som skrives til outputfilen ved brug af CAM-eksportfunktionen i QCAD/CAM. For eksempel er den første kodeblok, der skrives, kodeblokken “header”. Hver kodeblok er defineret i en medlemsvariabel, der identificerer den ved navn, for eksempel indeholder this.header kodeblokken for filoverskriften.
Kodeblokke kan tilsidesættes til at indeholde vilkårlig kode / tekst. Kodeblokke indeholder typisk variabler til at udsende de aktuelle X/Y-koordinater, linjenummer, fremføringshastighed osv.
Lad os sige, at en enkelt linje eksporteres til G-kode. Linjen eksporteres med værktøjsradiuskompensation til venstre for linjen (G41). Kodeblokkene, der skrives til outputfilen, er som følger:
| Kodeblok | Beskrivelse | Eksempeloutput |
|---|---|---|
header |
Overskrift på outputtet (altid den første kodeblok). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Hurtig bevægelse til sikkerhedsniveau. | G0 Z100 |
rapidMove |
Hurtig bevægelse til den første position af den første kontur (her starten på indføringen for linjen). | G0 X5 Y10 |
toolHeader |
Første blok, når et nyt værktøj træder i aktion (værktøjsskift). | T1 |
rapidMoveZ |
Hurtig bevægelse ned til friniveau (svævende over materialet). | G0 Z5 |
firstLinearMoveZ |
Skæring ind i materialet ved neddykningshastighed. | G1 Z-5 F50 |
toolpathHeader |
Første blok af en ny værktøjssti. | |
contourHeader |
Første blok af en ny kontur inden for en værktøjssti. | |
singleZPassHeader |
Overskrift for enkelt Z-gennemløb. Vi skærer hele dybden i et enkelt gennemløb. | |
zPassFirstHeader |
Første overskrift af enkelt eller flere Z-gennemløb. | |
linearMoveCompensationLeft |
Lineær bevægelse til startpunktet af linjen langs indføring, tænder for værktøjsradiuskompensationen. | G41 X10 Y10 F500 |
linearMove |
Lineær bevægelse langs linjen til slutpunktet af linjen. | X30 Y10 |
linearMoveCompensationOff |
Lineær bevægelse væk fra slutpunktet langs udføring, slukker for værktøjsradiuskompensationen. | G40 X35 Y10 |
zPassLastFooter |
Sidste sidefod af enkelt eller flere Z-gennemløb. | |
singleZPassFooter |
Sidefod for enkelt Z-gennemløb. | |
contourFooter |
Slut på kontur. | |
toolpathFooter |
Slut på værktøjssti. | |
linearMoveZ |
Bevægelse ud af materialet til friniveau. | Z5 |
rapidMoveZ |
Bevægelse til sikkerhedsniveau. | G0 Z100 |
toolFooter |
Slut for dette værktøj. | |
footer |
Slut på program. | M30 |
Mange af disse kodeblokke er typisk ubrugte og producerer ikke noget output (tom kodeblok).
Variabler
Sektion kaldt “Variabler”| Medlemsvariabel | Variabelnavn | Beskrivelse |
|---|---|---|
| inputFileName | INFILENAME | Inputfilnavn (f.eks. DXF-fil). |
| inputFilePath | INFILEPATH | Inputfilnavn med komplet sti. |
| fileName | FILENAME | Outputfilnavn. |
| filePath | FILEPATH | Outputfilnavn med komplet sti. |
| dateTime | DATETIME | Dato og tid for eksport. |
| lineNumber | N | Aktuelt linjenummer. |
| spindleSpeed | S | Spindelhastighed, typisk o/min. |
| feedRate | F | Fremføringshastighed. |
| plungeRate | FP | Neddykningshastighed. |
| xHomePosition | XH | Hjemmeposition som konfigureret i CAM-konfigurationen. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z-sikkerhedsniveau for værktøjsskift og start / slut. |
| zClearance | ZU | Z-friniveau for tilnærmelse til materialet. |
| zClearancePass | ZUP | Z-friniveau mellem flere gennemløb. |
| zCuttingDepth | ZD | Z-skæreniveau (samlet). |
| xFirstPosition | XF | Første position af den første kontur i den første værktøjssti. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Start på objekt (startpunkt af linje / bue). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Aktuel målposition. Slutpunkt af den aktuelle linje / bue. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Aktuel målposition som relativ koordinat, i forhold til startpunktet. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Centrum af bue, i forhold til startpunktet. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Centrum af bue, absolut. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Radius af bue. |
| arcDiameter | DIAMETER | Diameter af bue. |
| arcSweep | SWEEP | Sweep af bue (vinkel dækket af bue i rad, negativ for med uret). |
| tool | T | Aktuelt værktøj. |
| toolRadius | TR | Værktøjsradius. |
| toolDiameter | TD | Værktøjsdiameter. |
| toolpathOrder | TOOLPATH_ORDER | Værktøjsstiens rækkefølge i listen over værktøjsstier, startende med 0 for den første værktøjssti. |
| toolCalls | TOOL_CALLS | Antal gange dette værktøj er blevet brugt. |
| toolpathName | TOOLPATH_NAME | Navn på den aktuelle værktøjssti (brugerdefineret). |
| programName | PROGRAM_NAME | Programnavn som konfigureret af brugeren i CAM-konfigurationen. |
| xMin | X_MIN | Minimumsudstrækning af tegning. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Maksimumsudstrækning af tegning. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Eksempler
Sektion kaldt “Eksempler”Ændring af overskrift og sidefod
Sektion kaldt “Ændring af overskrift og sidefod”For at tilføje eller ændre G-koder eller M-koder eller anden information i overskriften eller sidefoden kan en konfiguration tilsidesætte medlemsvariablerne header og footer i konstruktøren, for eksempel som følger:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absolut I/J
Sektion kaldt “Absolut I/J”For at bruge absolutte værdier for I/J-værdier for centrum af buer kan du tilsidesætte bue-kodeblokkene som følger:
this.firstArcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";this.arcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";this.firstArcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";this.arcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";Postprocessor-skabelonfil
Sektion kaldt “Postprocessor-skabelonfil”QCAD/CAM fletter automatisk en DXF-skabelonfil ind med samme navn som postprocessor-filen (hvis tilgængelig) ved indstilling eller skift af postprocessoren. Lad os sige, at postprocessoren hedder “MyGCode”, implementeret i postprocessors/MyGCode.js. Opret en DXF-fil med værktøjsdefinitionerne i postprocessors/MyGCode.dxf. Denne fil kan indeholde værktøjsdefinitioner, standardlag eller omridset af det tilgængelige overfladeområde. Bemærk: Ethvert synligt indhold af skabelonfilen placeres automatisk på et låst lag ved fletning, så det er kun synligt, men ikke valgbart.