QCAD/CAM postprocesor
QCAD/CAM môže exportovať CAD výkresy do rôznych formátov používaných v CAM (počítačom podporovaná výroba). Tieto formáty môžu byť dialekty G-kódu alebo iné, úplne odlišné formáty. Každý podporovaný CAM formát je definovaný v konfiguračnom súbore (alebo „postprocesore”), ktorý je súborom ECMAScript (JavaScript), ktorý implementuje detaily formátu. Všetky dostupné konfigurácie sú uložené v adresári postprocessors. Nové implementácie formátov možno pridať na to isté miesto.
Základná štruktúra
Section titled “Základná štruktúra”Každý konfiguračný súbor obsahuje triedu ECMAScript s rovnakým názvom ako súbor skriptu. Ak sa súbor skriptu volá MyGCode.js, trieda definovaná vnútri skriptu sa musí volať MyGCode.
Trieda ECMAScript musí priamo alebo nepriamo odvodzovať z triedy CamExporterV2, ktorú definuje QCAD/CAM. CamExporterV2 definuje základnú štruktúru konfiguračných tried CAM exportéra. Rôzne metódy v CamExporterV2 sa volajú na export hlavičky súboru, rôznych entít v CAD výkrese a päty. CamExporterV2 sa tiež stará o rôzne funkcie QCAD/CAM, napríklad kompenzáciu polomeru nástroja, nábeh / výbeh, rezanie vnútorných kontúr pred vonkajšími kontúrami, optimalizáciu dráhy atď.
CamExporterV2 sám o sebe nič nevydáva, ale sám by vytvoril prázdny súbor. CamExporterV2 ponúka textový prúd (QTextStream) na zápis do exportovaného súboru. Tento textový prúd je vystavený prostredníctvom členskej premennej this.stream.
Ak je požadovaný výstup dialekt G-kódu (napr. G1 X10 Y20 pre lineárny pohyb), konfiguráciu možno odvodiť z existujúcej konfigurácie pre G-kód s názvom GCodeBase, ktorá je definovaná v súbore GCodeBase.js. Tak je to pri väčšine ovládačov strojov. Jedna taká príkladová konfigurácia na výstup G-kódu v milimetroch je definovaná v súbore GCodeMM.js a dostupná v používateľskom rozhraní ako konfigurácia s názvom G-Code (G41/G42) [mm].
Odvodenie konfigurácie z GCodeBase
Section titled “Odvodenie konfigurácie z GCodeBase”Vytvorte súbor s jedinečným názvom podľa vášho výberu. Pre tento príklad nazývame našu novú konfiguráciu MyGCode a ukladáme ju do súboru s rovnakým názvom, t. j. MyGCode.js v adresári postprocessors vašej inštalácie QCAD/CAM.
Na vytvorenie a napísanie súboru môžete použiť svoj obľúbený editor obyčajného textu, napríklad Notepad v systéme Windows, TextEdit v systéme macOS alebo vim, Emacs atď. v systémoch Linux.
MyGCode.js musí definovať triedu s názvom MyGCode, aby bola platnou konfiguráciou pre QCAD/CAM. Hoci v ECMAScripte striktne povedané nie sú triedy, môžeme vytvoriť podobný koncept pripojením funkcií k prototypovému objektu konštruktorovej funkcie. Ako presne to funguje, je nad rámec tejto dokumentácie. Existuje však priamočiara šablóna, ktorú môžete použiť pre všetky konfiguračné súbory.
Pre náš príklad definícia triedy MyGCode vyzerá takto (všimnite si, že riadky začínajúce // sú komentáre a nie sú vyžadované):
// Zahrňte GCodeBase.js, ktorý obsahuje triedu 'GCodeBase',// použitú ako základ pre našu vlastnú konfiguráciu:include("GCodeBase.js");
// Konštruktor našej triedy:function MyGCode(documentInterface, newDocumentInterface) { // Zavolajte konštruktor základnej triedy: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Odvoďte našu triedu z triedy GCodeBase:MyGCode.prototype = new GCodeBase();
// Zobrazovaný názov zobrazený v používateľskom rozhraní:MyGCode.displayName = "My G-Code";Teraz sme vytvorili novú, plne funkčnú konfiguráciu s názvom „My G-Code”, ktorá je pripravená na použitie v QCAD/CAM a produkuje základný G-kód.
Nastavenia konfigurácie
Section titled “Nastavenia konfigurácie”Konštruktor, ktorý sme definovali vyššie, volá konštruktor našej základnej triedy GCodeBase. V konštruktore môžeme nastaviť niektoré parametre pre našu konfiguráciu, ako je požadovaná výstupná jednotka alebo či chceme použiť G41/G42 na kompenzáciu polomeru nástroja alebo vypočítať stred dráhy nástroja.
Na konfiguráciu výstupnej jednotky (to je jednotka očakávaná vaším strojom alebo ovládačom) môžeme nastaviť členskú premennú unit na Inch alebo Millimeter, napríklad:
this.unit = RS.Inch;alebo
this.unit = RS.Millimeter;Ďalšie nastavenia, ktoré možno konfigurovať v konštruktore, sú:
| Premenná | Možné hodnoty | Predvolené | Popis |
|---|---|---|---|
this.outputOffsetPath |
true alebo false | false | Nastavte na true na výpočet kompenzácie polomeru nástroja namiesto použitia G41/G42. |
this.lineNumber |
Číslo | 10 | Počiatočné číslo použité na číslovanie riadkov (N…). |
this.lineNumberIncrement |
Číslo | 10 | Zvýšenie čísla riadka z riadka na riadok. |
this.fileExtensions |
Pole | [ "nc", "cnc" ] |
Zoznam prípon súborov, z ktorých si používateľ môže vybrať pri exporte cez tento postprocesor. |
Úplný konštruktor by mohol vyzerať takto:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Definovanie výstupu G-kódu
Section titled “Definovanie výstupu G-kódu”Bloky kódu
Section titled “Bloky kódu”Výstup G-kódu je štruktúrovaný do blokov kódu, ktoré sa zapisujú do výstupného súboru pri použití funkcie CAM exportu v QCAD/CAM. Napríklad prvý zapisovaný blok kódu je blok kódu „header”. Každý blok kódu je definovaný v členskej premennej, ktorá ho identifikuje podľa názvu, napríklad this.header obsahuje blok kódu pre hlavičku súboru.
Bloky kódu možno prepísať tak, aby obsahovali akýkoľvek kód / text. Bloky kódu zvyčajne obsahujú premenné na výstup aktuálnych X/Y súradníc, čísla riadka, rýchlosti posuvu atď.
Povedzme, že jedna čiara sa exportuje do G-kódu. Čiara sa exportuje s kompenzáciou polomeru nástroja naľavo od čiary (G41). Bloky kódu, ktoré sa zapisujú do výstupného súboru, sú nasledujúce:
| Blok kódu | Popis | Príklad výstupu |
|---|---|---|
header |
Hlavička výstupu (vždy prvý blok kódu). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Rýchly pohyb na úroveň bezpečnosti. | G0 Z100 |
rapidMove |
Rýchly pohyb na prvú pozíciu prvej kontúry (tu začiatok nábehu pre čiaru). | G0 X5 Y10 |
toolHeader |
Prvý blok, keď nový nástroj vstupuje do akcie (výmena nástroja). | T1 |
rapidMoveZ |
Rýchly pohyb nadol na úroveň odstupu (vznášanie sa nad materiálom). | G0 Z5 |
firstLinearMoveZ |
Rezanie do materiálu pri rýchlosti ponoru. | G1 Z-5 F50 |
toolpathHeader |
Prvý blok novej dráhy nástroja. | |
contourHeader |
Prvý blok novej kontúry v dráhe nástroja. | |
singleZPassHeader |
Hlavička pre jeden Z prechod. Režeme celú hĺbku v jednom prechode. | |
zPassFirstHeader |
Prvá hlavička jedného alebo viacerých Z prechodov. | |
linearMoveCompensationLeft |
Lineárny pohyb na počiatočný bod čiary pozdĺž nábehu, zapnutie kompenzácie polomeru nástroja. | G41 X10 Y10 F500 |
linearMove |
Lineárny pohyb pozdĺž čiary na koncový bod čiary. | X30 Y10 |
linearMoveCompensationOff |
Lineárny pohyb preč od koncového bodu pozdĺž výbehu, vypnutie kompenzácie polomeru nástroja. | G40 X35 Y10 |
zPassLastFooter |
Posledná päta jedného alebo niekoľkých Z prechodov. | |
singleZPassFooter |
Päta pre jeden Z prechod. | |
contourFooter |
Koniec kontúry. | |
toolpathFooter |
Koniec dráhy nástroja. | |
linearMoveZ |
Pohyb von z materiálu na úroveň odstupu. | Z5 |
rapidMoveZ |
Pohyb na úroveň bezpečnosti. | G0 Z100 |
toolFooter |
Koniec pre tento nástroj. | |
footer |
Koniec programu. | M30 |
Mnohé z týchto blokov kódu sú zvyčajne nepoužité a neprodukujú výstup (prázdny blok kódu).
Premenné
Section titled “Premenné”| Členská premenná | Názov premennej | Popis |
|---|---|---|
| inputFileName | INFILENAME | Názov vstupného súboru (napr. súbor DXF). |
| inputFilePath | INFILEPATH | Názov vstupného súboru s úplnou cestou. |
| fileName | FILENAME | Názov výstupného súboru. |
| filePath | FILEPATH | Názov výstupného súboru s úplnou cestou. |
| dateTime | DATETIME | Dátum a čas exportu. |
| lineNumber | N | Aktuálne číslo riadka. |
| spindleSpeed | S | Otáčky vretena, zvyčajne ot/min. |
| feedRate | F | Rýchlosť posuvu. |
| plungeRate | FP | Rýchlosť ponoru. |
| xHomePosition | XH | Domovská pozícia, ako je nakonfigurovaná v CAM konfigurácii. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z úroveň bezpečnosti pre výmeny nástrojov a začiatok / koniec. |
| zClearance | ZU | Z úroveň odstupu na priblíženie k materiálu. |
| zClearancePass | ZUP | Z úroveň odstupu medzi viacerými prechodmi. |
| zCuttingDepth | ZD | Z úroveň rezania (celková). |
| xFirstPosition | XF | Prvá pozícia prvej kontúry v prvej dráhe nástroja. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Začiatok entity (počiatočný bod čiary / oblúka). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Aktuálna cieľová pozícia. Koncový bod aktuálnej čiary / oblúka. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Aktuálna cieľová pozícia ako relatívna súradnica, vzhľadom na počiatočný bod. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Stred oblúka, vzhľadom na počiatočný bod. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Stred oblúka, absolútny. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Polomer oblúka. |
| arcDiameter | DIAMETER | Priemer oblúka. |
| arcSweep | SWEEP | Rozsah oblúka (uhol pokrytý oblúkom v rad, záporný pre smer hodinových ručičiek). |
| tool | T | Aktuálny nástroj. |
| toolRadius | TR | Polomer nástroja. |
| toolDiameter | TD | Priemer nástroja. |
| toolpathOrder | TOOLPATH_ORDER | Poradie dráhy nástroja v zozname dráh nástroja, začínajúc 0 pre prvú dráhu nástroja. |
| toolCalls | TOOL_CALLS | Počet použití tohto nástroja. |
| toolpathName | TOOLPATH_NAME | Názov aktuálnej dráhy nástroja (definovaný používateľom). |
| programName | PROGRAM_NAME | Názov programu, ako ho nakonfiguroval používateľ v CAM konfigurácii. |
| xMin | X_MIN | Minimálne hranice výkresu. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Maximálne hranice výkresu. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Príklady
Section titled “Príklady”Zmena hlavičky a päty
Section titled “Zmena hlavičky a päty”Na pridanie alebo zmenu G-kódov alebo M-kódov alebo iných informácií v hlavičke alebo päte môže konfigurácia prepísať členské premenné header a footer v konštruktore, napríklad takto:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absolútne I/J
Section titled “Absolútne I/J”Na použitie absolútnych hodnôt pre hodnoty I/J pre stred oblúkov môžete prepísať bloky kódu oblúka takto:
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]";Šablónový súbor postprocesora
Section titled “Šablónový súbor postprocesora”QCAD/CAM automaticky zlúči DXF šablónový súbor s rovnakým názvom ako súbor postprocesora (ak je dostupný) pri nastavení alebo prepnutí postprocesora. Povedzme, že postprocesor sa volá „MyGCode”, implementovaný v postprocessors/MyGCode.js. Vytvorte DXF súbor s definíciami nástrojov v postprocessors/MyGCode.dxf. Tento súbor môže obsahovať definície nástrojov, predvolené vrstvy alebo obrys dostupnej plochy povrchu. Poznámka: Akýkoľvek viditeľný obsah šablónového súboru sa pri zlučovaní automaticky umiestni na uzamknutú vrstvu, takže je iba viditeľný, ale nie výberateľný.