QCAD/CAM postprocesorius
QCAD/CAM gali eksportuoti CAD brėžinius į įvairius CAM (kompiuterinės gamybos) formatus. Šie formatai gali būti G kodo dialektai arba kiti, visiškai skirtingi formatai. Kiekvienas palaikomas CAM formatas apibrėžiamas konfigūracijos faile (arba „postprocesoriuje”), kuris yra ECMAScript (JavaScript) failas, įgyvendinantis formato detales. Visos prieinamos konfigūracijos saugomos kataloge postprocessors. Naujus formatų įgyvendinimus galima pridėti į tą pačią vietą.
Pagrindinė struktūra
Section titled “Pagrindinė struktūra”Kiekviename konfigūracijos faile yra ECMAScript klasė su tokiu pat pavadinimu kaip scenarijaus failas. Jei scenarijaus failas vadinasi MyGCode.js, scenarijaus viduje apibrėžta klasė turi vadintis MyGCode.
ECMAScript klasė turi tiesiogiai arba netiesiogiai būti išvesta iš klasės CamExporterV2, kurią apibrėžia QCAD/CAM. CamExporterV2 apibrėžia CAM eksportuotojo konfigūracijos klasių pagrindinę struktūrą. Įvairūs CamExporterV2 metodai iškviečiami failo antraštei, įvairiems CAD brėžinio objektams ir poraštei eksportuoti. CamExporterV2 taip pat rūpinasi įvairiomis QCAD/CAM funkcijomis, pavyzdžiui, įrankio spindulio kompensacija, įėjimu / išėjimu, vidinių kontūrų pjovimu prieš išorinius kontūrus, kelio optimizavimu ir t. t.
CamExporterV2 pats nieko neišveda, bet vienas sukurtų tuščią failą. CamExporterV2 siūlo teksto srautą (QTextStream) rašyti į eksportuotą failą. Šis teksto srautas atskleidžiamas per nario kintamąjį this.stream.
Jei norima išvestis yra G kodo dialektas (pvz., G1 X10 Y20 tiesiniam judesiui), konfigūraciją galima išvesti iš esamos G kodo konfigūracijos, vadinamos GCodeBase, kuri apibrėžta faile GCodeBase.js. Taip yra daugumos mašinų valdiklių atveju. Vienas toks pavyzdinis konfigūracija G kodui išvesti milimetrais apibrėžta faile GCodeMM.js ir prieinama naudotojo sąsajoje kaip konfigūracija, vadinama G-Code (G41/G42) [mm].
Konfigūracijos išvedimas iš GCodeBase
Section titled “Konfigūracijos išvedimas iš GCodeBase”Sukurkite failą su savo pasirinktu unikaliu pavadinimu. Šiame pavyzdyje savo naują konfigūraciją vadiname MyGCode ir įrašome ją į tokio pat pavadinimo failą, t. y. MyGCode.js savo QCAD/CAM diegimo kataloge postprocessors.
Failui sukurti ir parašyti galite naudoti mėgstamą paprasto teksto redaktorių, pavyzdžiui, Notepad Windows sistemoje, TextEdit macOS sistemoje arba vim, Emacs ir t. t. Linux sistemose.
MyGCode.js turi apibrėžti klasę, vadinamą MyGCode, kad būtų galiojanti QCAD/CAM konfigūracija. Nors griežtai kalbant ECMAScript kalboje klasių nėra, galime sukurti panašią koncepciją, pridėdami funkcijas prie konstruktoriaus funkcijos prototipo objekto. Kaip tiksliai tai veikia, nepatenka į šios dokumentacijos sritį. Vis dėlto yra paprastas šablonas, kurį galite naudoti visiems konfigūracijos failams.
Mūsų pavyzdyje klasės MyGCode apibrėžimas atrodo taip (atkreipkite dėmesį, kad eilutės, prasidedančios //, yra komentarai ir nėra būtini):
// Įtraukite GCodeBase.js, kuriame yra klasė 'GCodeBase',// naudojama kaip pagrindas mūsų pačių konfigūracijai:include("GCodeBase.js");
// Mūsų klasės konstruktorius:function MyGCode(documentInterface, newDocumentInterface) { // Iškvieskite bazinės klasės konstruktorių: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Išveskite mūsų klasę iš klasės GCodeBase:MyGCode.prototype = new GCodeBase();
// Rodomas pavadinimas, rodomas naudotojo sąsajoje:MyGCode.displayName = "My G-Code";Dabar sukūrėme naują, visiškai veikiančią konfigūraciją, vadinamą „My G-Code”, kuri paruošta naudoti QCAD/CAM ir sukuria pagrindinį G kodą.
Konfigūracijos nuostatos
Section titled “Konfigūracijos nuostatos”Aukščiau apibrėžtas konstruktorius iškviečia mūsų bazinės klasės GCodeBase konstruktorių. Konstruktoriuje galime nustatyti kai kuriuos savo konfigūracijos parametrus, tokius kaip norimas išvesties vienetas arba ar norime naudoti G41/G42 įrankio spindulio kompensacijai, ar apskaičiuoti įrankio kelio centrą.
Norėdami sukonfigūruoti išvesties vienetą (tai vienetas, kurio tikisi jūsų mašina ar valdiklis), galime nustatyti nario kintamąjį unit į Inch arba Millimeter, pavyzdžiui:
this.unit = RS.Inch;arba
this.unit = RS.Millimeter;Kiti nustatymai, kuriuos galima sukonfigūruoti konstruktoriuje, yra:
| Kintamasis | Galimos reikšmės | Numatytoji | Aprašymas |
|---|---|---|---|
this.outputOffsetPath |
true arba false | false | Nustatykite į true, kad apskaičiuotumėte įrankio spindulio kompensaciją, o ne naudotumėte G41/G42. |
this.lineNumber |
Skaičius | 10 | Pradinis skaičius, naudojamas eilučių numeravimui (N…). |
this.lineNumberIncrement |
Skaičius | 10 | Eilutės numerio padidinimas nuo eilutės prie eilutės. |
this.fileExtensions |
Masyvas | [ "nc", "cnc" ] |
Failų plėtinių sąrašas, iš kurio naudotojas gali pasirinkti eksportuodamas per šį postprocesorių. |
Visas konstruktorius gali atrodyti taip:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}G kodo išvesties apibrėžimas
Section titled “G kodo išvesties apibrėžimas”Kodo blokai
Section titled “Kodo blokai”G kodo išvestis yra struktūrizuota į kodo blokus, kurie įrašomi į išvesties failą naudojant CAM eksporto funkciją QCAD/CAM. Pavyzdžiui, pirmasis įrašomas kodo blokas yra kodo blokas „header”. Kiekvienas kodo blokas apibrėžiamas nario kintamajame, kuris jį identifikuoja pagal pavadinimą, pavyzdžiui, this.header turi kodo bloką failo antraštei.
Kodo blokus galima nepaisyti, kad juose būtų bet koks kodas / tekstas. Kodo blokuose paprastai yra kintamieji dabartinėms X/Y koordinatėms, eilutės numeriui, pastūmos greičiui ir t. t. išvesti.
Tarkime, viena linija eksportuojama į G kodą. Linija eksportuojama su įrankio spindulio kompensacija linijos kairėje (G41). Į išvesties failą įrašomi kodo blokai yra tokie:
| Kodo blokas | Aprašymas | Pavyzdinė išvestis |
|---|---|---|
header |
Išvesties antraštė (visada pirmasis kodo blokas). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Greitas judesys į saugos lygį. | G0 Z100 |
rapidMove |
Greitas judesys į pirmojo kontūro pirmąją poziciją (čia linijos įėjimo pradžia). | G0 X5 Y10 |
toolHeader |
Pirmasis blokas, kai naujas įrankis pradeda veikti (įrankio keitimas). | T1 |
rapidMoveZ |
Greitas judesys žemyn į prošvaisos lygį (kabant virš medžiagos). | G0 Z5 |
firstLinearMoveZ |
Pjovimas į medžiagą panardinimo greičiu. | G1 Z-5 F50 |
toolpathHeader |
Pirmasis naujo įrankio kelio blokas. | |
contourHeader |
Pirmasis naujo kontūro blokas įrankio kelyje. | |
singleZPassHeader |
Vieno Z praėjimo antraštė. Pjauname visą gylį per vieną praėjimą. | |
zPassFirstHeader |
Pirmoji vieno ar kelių Z praėjimų antraštė. | |
linearMoveCompensationLeft |
Tiesinis judesys į linijos pradžios tašką palei įėjimą, įjungiant įrankio spindulio kompensaciją. | G41 X10 Y10 F500 |
linearMove |
Tiesinis judesys palei liniją iki linijos pabaigos taško. | X30 Y10 |
linearMoveCompensationOff |
Tiesinis judesys tolyn nuo pabaigos taško palei išėjimą, išjungiant įrankio spindulio kompensaciją. | G40 X35 Y10 |
zPassLastFooter |
Paskutinė vieno ar kelių Z praėjimų poraštė. | |
singleZPassFooter |
Vieno Z praėjimo poraštė. | |
contourFooter |
Kontūro pabaiga. | |
toolpathFooter |
Įrankio kelio pabaiga. | |
linearMoveZ |
Judesys iš medžiagos į prošvaisos lygį. | Z5 |
rapidMoveZ |
Judesys į saugos lygį. | G0 Z100 |
toolFooter |
Šio įrankio pabaiga. | |
footer |
Programos pabaiga. | M30 |
Daugelis šių kodo blokų paprastai nenaudojami ir neduoda išvesties (tuščias kodo blokas).
Kintamieji
Section titled “Kintamieji”| Nario kintamasis | Kintamojo pavadinimas | Aprašymas |
|---|---|---|
| inputFileName | INFILENAME | Įvesties failo pavadinimas (pvz., DXF failas). |
| inputFilePath | INFILEPATH | Įvesties failo pavadinimas su visu keliu. |
| fileName | FILENAME | Išvesties failo pavadinimas. |
| filePath | FILEPATH | Išvesties failo pavadinimas su visu keliu. |
| dateTime | DATETIME | Eksporto data ir laikas. |
| lineNumber | N | Dabartinis eilutės numeris. |
| spindleSpeed | S | Suklio greitis, paprastai aps./min. |
| feedRate | F | Pastūmos greitis. |
| plungeRate | FP | Panardinimo greitis. |
| xHomePosition | XH | Pradžios padėtis, kaip sukonfigūruota CAM konfigūracijoje. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z saugos lygis įrankių keitimams ir pradžiai / pabaigai. |
| zClearance | ZU | Z prošvaisos lygis medžiagai priartėti. |
| zClearancePass | ZUP | Z prošvaisos lygis tarp kelių praėjimų. |
| zCuttingDepth | ZD | Z pjovimo lygis (bendras). |
| xFirstPosition | XF | Pirmojo kontūro pirmoji pozicija pirmajame įrankio kelyje. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Objekto pradžia (linijos / lanko pradžios taškas). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Dabartinė tikslinė pozicija. Dabartinės linijos / lanko pabaigos taškas. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Dabartinė tikslinė pozicija kaip santykinė koordinatė, atsižvelgiant į pradžios tašką. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Lanko centras, atsižvelgiant į pradžios tašką. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Lanko centras, absoliutus. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Lanko spindulys. |
| arcDiameter | DIAMETER | Lanko skersmuo. |
| arcSweep | SWEEP | Lanko apimtis (lanko dengiamas kampas radianais, neigiamas pagal laikrodžio rodyklę). |
| tool | T | Dabartinis įrankis. |
| toolRadius | TR | Įrankio spindulys. |
| toolDiameter | TD | Įrankio skersmuo. |
| toolpathOrder | TOOLPATH_ORDER | Įrankio kelio eiliškumas įrankio kelių sąraše, pradedant 0 pirmajam įrankio keliui. |
| toolCalls | TOOL_CALLS | Kiek kartų šis įrankis buvo naudotas. |
| toolpathName | TOOLPATH_NAME | Dabartinio įrankio kelio pavadinimas (naudotojo apibrėžtas). |
| programName | PROGRAM_NAME | Programos pavadinimas, kaip naudotojo sukonfigūruota CAM konfigūracijoje. |
| xMin | X_MIN | Minimalios brėžinio ribos. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Maksimalios brėžinio ribos. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Pavyzdžiai
Section titled “Pavyzdžiai”Antraštės ir poraštės keitimas
Section titled “Antraštės ir poraštės keitimas”Norėdami pridėti ar pakeisti G kodus ar M kodus, ar kitą informaciją antraštėje ar poraštėje, konfigūracija gali nepaisyti nario kintamųjų header ir footer konstruktoriuje, pavyzdžiui, taip:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absoliutūs I/J
Section titled “Absoliutūs I/J”Norėdami naudoti absoliučias reikšmes lankų centro I/J reikšmėms, galite nepaisyti lanko kodo blokų taip:
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]";Postprocesoriaus šablono failas
Section titled “Postprocesoriaus šablono failas”QCAD/CAM automatiškai sujungia DXF šablono failą su tokiu pat pavadinimu kaip postprocesoriaus failas (jei prieinamas) nustatydamas ar perjungdamas postprocesorių. Tarkime, postprocesorius vadinasi „MyGCode”, įgyvendintas faile postprocessors/MyGCode.js. Sukurkite DXF failą su įrankių apibrėžimais faile postprocessors/MyGCode.dxf. Šiame faile gali būti įrankių apibrėžimai, numatytieji sluoksniai arba prieinamo paviršiaus ploto kontūras. Pastaba: bet koks matomas šablono failo turinys sujungiant automatiškai patalpinamas užrakintame sluoksnyje, todėl jis yra tik matomas, bet nepasirenkamas.