Postprocesor QCAD/CAM
QCAD/CAM umí exportovat CAD výkresy do různých formátů používaných v CAM (počítačem podporovaná výroba). Tyto formáty mohou být dialekty G-kódu nebo jiné, zcela odlišné formáty. Každý podporovaný CAM formát je definován v konfiguračním souboru (neboli “postprocesoru”), což je soubor ECMAScript (JavaScript), který implementuje podrobnosti formátu. Všechny dostupné konfigurace jsou uloženy v adresáři postprocessors. Nové implementace formátů lze přidat na stejné místo.
Základní struktura
Sekce “Základní struktura”Každý konfigurační soubor obsahuje třídu ECMAScript se stejným názvem jako soubor skriptu. Pokud se soubor skriptu jmenuje MyGCode.js, třída definovaná uvnitř skriptu se musí jmenovat MyGCode.
Třída ECMAScript musí být přímo nebo nepřímo odvozena od třídy CamExporterV2, kterou definuje QCAD/CAM. CamExporterV2 definuje základní strukturu konfiguračních tříd CAM exportéru. Různé metody v CamExporterV2 se volají za účelem exportu hlavičky souboru, jednotlivých entit v CAD výkresu a patičky. CamExporterV2 se rovněž stará o různé funkce QCAD/CAM, například o kompenzaci poloměru nástroje, nájezd / výjezd, řezání vnitřních kontur před vnějšími, optimalizaci drah atd.
CamExporterV2 sama o sobě nic nevypisuje, ale sama by vytvořila prázdný soubor. CamExporterV2 nabízí textový proud (QTextStream) pro zápis do exportovaného souboru. Tento textový proud je zpřístupněn prostřednictvím členské proměnné this.stream.
Pokud je požadovaným výstupem dialekt G-kódu (např. G1 X10 Y20 pro lineární pohyb), lze konfiguraci odvodit od existující konfigurace pro G-kód s názvem GCodeBase, která je definována v souboru GCodeBase.js. To platí pro většinu strojních řídicích systémů. Jedna taková ukázková konfigurace pro výstup G-kódu v milimetrech je definována v souboru GCodeMM.js a je v uživatelském rozhraní dostupná jako konfigurace s názvem G-Code (G41/G42) [mm].
Odvození konfigurace od GCodeBase
Sekce “Odvození konfigurace od GCodeBase”Vytvořte soubor s jedinečným názvem dle vaší volby. Pro tento příklad nazveme naši novou konfiguraci MyGCode a uložíme ji do souboru se stejným názvem, tj. MyGCode.js, v adresáři postprocessors vaší instalace QCAD/CAM.
K vytvoření a zápisu souboru můžete použít svůj oblíbený editor prostého textu, například Notepad ve Windows, TextEdit v macOS nebo vim, Emacs atd. v systémech Linux.
MyGCode.js musí definovat třídu s názvem MyGCode, aby byl platnou konfigurací pro QCAD/CAM. Přestože v ECMAScriptu striktně vzato žádné třídy neexistují, můžeme vytvořit podobný koncept připojením funkcí k objektu prototype konstruktorové funkce. Jak přesně to funguje, je nad rámec této dokumentace. Existuje však přímočará šablona, kterou můžete použít pro všechny konfigurační soubory.
Pro náš příklad vypadá definice třídy MyGCode takto (všimněte si, že řádky začínající // jsou komentáře a nejsou povinné):
// Include GCodeBase.js which contains the class 'GCodeBase',// used as base for our own configuration:include("GCodeBase.js");
// Constructor of our class:function MyGCode(documentInterface, newDocumentInterface) { // Call constructor of base class: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Derive our class from class GCodeBase:MyGCode.prototype = new GCodeBase();
// Display name shown in user interface:MyGCode.displayName = "My G-Code";Nyní jsme vytvořili novou, plně funkční konfiguraci s názvem “My G-Code”, která je připravena k použití v QCAD/CAM a produkuje základní G-kód.
Předvolby konfigurace
Sekce “Předvolby konfigurace”Konstruktor, který jsme definovali výše, volá konstruktor naší základní třídy GCodeBase. V konstruktoru můžeme nastavit některé parametry naší konfigurace, jako je požadovaná výstupní jednotka nebo zda chceme použít G41/G42 pro kompenzaci poloměru nástroje, případně vypočítat střed dráhy nástroje.
Pro konfiguraci výstupní jednotky (to je jednotka očekávaná vaším strojem nebo řídicím systémem) můžeme nastavit členskou proměnnou unit na Inch nebo Millimeter, například:
this.unit = RS.Inch;nebo
this.unit = RS.Millimeter;Další nastavení, která lze konfigurovat v konstruktoru, jsou:
| Proměnná | Možné hodnoty | Výchozí | Popis |
|---|---|---|---|
this.outputOffsetPath |
true nebo false | false | Nastavte na true pro výpočet kompenzace poloměru nástroje namísto použití G41/G42. |
this.lineNumber |
Číslo | 10 | Počáteční číslo použité pro číslování řádků (N…). |
this.lineNumberIncrement |
Číslo | 10 | Přírůstek čísla řádku mezi jednotlivými řádky. |
this.fileExtensions |
Pole | [ "nc", "cnc" ] |
Seznam přípon souborů, ze kterých si uživatel může vybrat při exportu tímto postprocesorem. |
Úplný konstruktor může vypadat takto:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Definování výstupu G-kódu
Sekce “Definování výstupu G-kódu”Bloky kódu
Sekce “Bloky kódu”Výstup G-kódu je strukturován do bloků kódu, které se zapisují do výstupního souboru při použití funkce CAM export v QCAD/CAM. Například prvním zapisovaným blokem kódu je blok “header”. Každý blok kódu je definován v členské proměnné, která jej identifikuje podle názvu, například this.header obsahuje blok kódu pro hlavičku souboru.
Bloky kódu lze přepsat tak, aby obsahovaly libovolný kód / text. Bloky kódu obvykle obsahují proměnné pro výpis aktuálních souřadnic X/Y, čísla řádku, posuvu atd.
Řekněme, že se do G-kódu exportuje jedna čára. Čára je exportována s kompenzací poloměru nástroje vlevo od čáry (G41). Bloky kódu, které se zapisují do výstupního souboru, jsou následující:
| Blok kódu | Popis | Ukázkový výstup |
|---|---|---|
header |
Hlavička výstupu (vždy první blok kódu). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Rychloposuv na bezpečnostní úroveň. | G0 Z100 |
rapidMove |
Rychloposuv na první pozici první kontury (zde začátek nájezdu pro čáru). | G0 X5 Y10 |
toolHeader |
První blok, když se uvádí do činnosti nový nástroj (výměna nástroje). | T1 |
rapidMoveZ |
Rychloposuv dolů na úroveň přiblížení (nad materiálem). | G0 Z5 |
firstLinearMoveZ |
Zaříznutí do materiálu rychlostí zanoření. | G1 Z-5 F50 |
toolpathHeader |
První blok nové dráhy nástroje. | |
contourHeader |
První blok nové kontury v rámci dráhy nástroje. | |
singleZPassHeader |
Hlavička pro jeden Z průchod. Řežeme celou hloubku v jediném průchodu. | |
zPassFirstHeader |
První hlavička jednoho nebo více Z průchodů. | |
linearMoveCompensationLeft |
Lineární pohyb do počátečního bodu čáry podél nájezdu se zapnutím kompenzace poloměru nástroje. | G41 X10 Y10 F500 |
linearMove |
Lineární pohyb podél čáry do koncového bodu čáry. | X30 Y10 |
linearMoveCompensationOff |
Lineární pohyb pryč od koncového bodu podél výjezdu s vypnutím kompenzace poloměru nástroje. | G40 X35 Y10 |
zPassLastFooter |
Poslední patička jednoho nebo více Z průchodů. | |
singleZPassFooter |
Patička pro jeden Z průchod. | |
contourFooter |
Konec kontury. | |
toolpathFooter |
Konec dráhy nástroje. | |
linearMoveZ |
Pohyb ven z materiálu na úroveň přiblížení. | Z5 |
rapidMoveZ |
Pohyb na bezpečnostní úroveň. | G0 Z100 |
toolFooter |
Konec pro tento nástroj. | |
footer |
Konec programu. | M30 |
Mnoho z těchto bloků kódu obvykle zůstává nevyužito a neprodukuje žádný výstup (prázdný blok kódu).
Proměnné
Sekce “Proměnné”| Členská proměnná | Název proměnné | Popis |
|---|---|---|
| inputFileName | INFILENAME | Název vstupního souboru (např. soubor DXF). |
| inputFilePath | INFILEPATH | Název vstupního souboru s úplnou cestou. |
| fileName | FILENAME | Název výstupního souboru. |
| filePath | FILEPATH | Název výstupního souboru s úplnou cestou. |
| dateTime | DATETIME | Datum a čas exportu. |
| lineNumber | N | Aktuální číslo řádku. |
| spindleSpeed | S | Otáčky vřetena, obvykle ot/min. |
| feedRate | F | Posuv. |
| plungeRate | FP | Rychlost zanoření. |
| xHomePosition | XH | Domovská pozice dle konfigurace v konfiguraci CAM. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Bezpečnostní úroveň Z pro výměny nástroje a začátek / konec. |
| zClearance | ZU | Úroveň přiblížení Z pro přiblížení k materiálu. |
| zClearancePass | ZUP | Úroveň přiblížení Z mezi více průchody. |
| zCuttingDepth | ZD | Úroveň řezání Z (celková). |
| xFirstPosition | XF | První pozice první kontury v první dráze nástroje. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Začátek entity (počáteční bod čáry / oblouku). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Aktuální cílová pozice. Koncový bod aktuální čáry / oblouku. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Aktuální cílová pozice jako relativní souřadnice vzhledem k počátečnímu bodu. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Střed oblouku vzhledem k počátečnímu bodu. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Střed oblouku, absolutní. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Poloměr oblouku. |
| arcDiameter | DIAMETER | Průměr oblouku. |
| arcSweep | SWEEP | Rozsah oblouku (úhel pokrytý obloukem v rad, záporný pro směr hodinových ručiček). |
| tool | T | Aktuální nástroj. |
| toolRadius | TR | Poloměr nástroje. |
| toolDiameter | TD | Průměr nástroje. |
| toolpathOrder | TOOLPATH_ORDER | Pořadí dráhy nástroje v seznamu drah nástroje, počínaje 0 pro první dráhu nástroje. |
| toolCalls | TOOL_CALLS | Kolikrát byl tento nástroj použit. |
| toolpathName | TOOLPATH_NAME | Název aktuální dráhy nástroje (definovaný uživatelem). |
| programName | PROGRAM_NAME | Název programu dle konfigurace uživatelem v konfiguraci CAM. |
| xMin | X_MIN | Minimální rozsah výkresu. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Maximální rozsah výkresu. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Příklady
Sekce “Příklady”Změna hlavičky a patičky
Sekce “Změna hlavičky a patičky”Chcete-li přidat nebo změnit G-kódy či M-kódy nebo jiné informace v hlavičce nebo patičce, může konfigurace přepsat členské proměnné header a footer v konstruktoru, například takto:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absolutní I/J
Sekce “Absolutní I/J”Chcete-li pro hodnoty I/J středu oblouků použít absolutní hodnoty, můžete přepsat bloky kódu oblouku 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]";Šablonový soubor postprocesoru
Sekce “Šablonový soubor postprocesoru”QCAD/CAM automaticky vloží šablonový soubor DXF se stejným názvem jako soubor postprocesoru (je-li k dispozici) při nastavení nebo přepnutí postprocesoru. Řekněme, že se postprocesor jmenuje “MyGCode” a je implementován v postprocessors/MyGCode.js. Vytvořte soubor DXF s definicemi nástrojů v postprocessors/MyGCode.dxf. Tento soubor může obsahovat definice nástrojů, výchozí vrstvy nebo obrys dostupné pracovní plochy. Poznámka: Jakýkoli viditelný obsah šablonového souboru je při vkládání automaticky umístěn na uzamčenou vrstvu, takže je pouze viditelný, ale nelze jej vybrat.