QCAD/CAM utófeldolgozó
A QCAD/CAM CAD-rajzokat különféle, CAM-ban (számítógéppel támogatott gyártás) használt formátumokba exportálhat. Ezek a formátumok lehetnek G-kód nyelvjárások vagy más, teljesen eltérő formátumok. Minden támogatott CAM-formátum egy konfigurációs fájlban (vagy “utófeldolgozóban”) van meghatározva, amely egy ECMAScript (JavaScript) fájl, amely a formátum részleteit implementálja. Az összes elérhető konfiguráció a postprocessors könyvtárban van tárolva. Új formátumimplementációk ugyanahhoz a helyhez adhatók hozzá.
Alapszerkezet
Szekció neve “Alapszerkezet”Minden konfigurációs fájl egy ECMAScript-osztályt tartalmaz, amelynek neve megegyezik a szkriptfájl nevével. Ha a szkriptfájl neve MyGCode.js, a szkripten belül definiált osztály nevének MyGCode-nak kell lennie.
Az ECMAScript-osztálynak közvetlenül vagy közvetve a CamExporterV2 osztályból kell származnia, amelyet a QCAD/CAM határoz meg. A CamExporterV2 meghatározza a CAM-exportáló konfigurációs osztályok alapszerkezetét. A CamExporterV2 különféle metódusait a fájlfejléc, a CAD-rajz különféle entitásainak és a lábléc exportálására hívják meg. A CamExporterV2 gondoskodik a QCAD/CAM különféle funkcióiról is, például a szerszámsugár-kompenzációról, be- / kivezetésről, a belső kontúrok külső kontúrok előtti vágásáról, útvonaloptimalizálásról stb.
A CamExporterV2 önmagában nem ad ki semmit, hanem önmagában egy üres fájlt hozna létre. A CamExporterV2 egy szövegfolyamot (QTextStream) kínál az exportált fájlba való íráshoz. Ez a szövegfolyam a this.stream tagváltozón keresztül érhető el.
Ha a kívánt kimenet egy G-kód nyelvjárás (pl. G1 X10 Y20 egy lineáris mozgáshoz), a konfiguráció a GCodeBase nevű, meglévő G-kód konfigurációból származtatható, amely a GCodeBase.js fájlban van meghatározva. Ez a helyzet a legtöbb gépvezérlő esetén. Egy ilyen példakonfiguráció a G-kód milliméterben történő kiadására a GCodeMM.js fájlban van meghatározva, és a felhasználói felületen G-Code (G41/G42) [mm] nevű konfigurációként érhető el.
Konfiguráció származtatása a GCodeBase-ből
Szekció neve “Konfiguráció származtatása a GCodeBase-ből”Hozzon létre egy egyedi, tetszőleges nevű fájlt. Ehhez a példához az új konfigurációnkat MyGCode-nak nevezzük, és egy azonos nevű fájlba tároljuk, azaz MyGCode.js a QCAD/CAM-telepítés postprocessors könyvtárában.
A fájl létrehozásához és megírásához használhatja kedvenc egyszerű szövegszerkesztőjét, például a Notepadot Windowson, a TextEditet macOS-en vagy a vim, Emacs stb. programot Linux-rendszereken.
A MyGCode.js-nek egy MyGCode nevű osztályt kell meghatároznia ahhoz, hogy érvényes konfiguráció legyen a QCAD/CAM számára. Bár szigorúan véve az ECMAScriptben nincsenek osztályok, hasonló koncepciót hozhatunk létre azzal, hogy függvényeket csatolunk egy konstruktorfüggvény prototípus-objektumához. Hogy ez pontosan hogyan működik, az e dokumentáció keretein kívül esik. Van azonban egy egyszerű sablon, amelyet az összes konfigurációs fájlhoz használhat.
A példánkban a MyGCode osztály definíciója így néz ki (vegye figyelembe, hogy a //-vel kezdődő sorok megjegyzések, és nem szükségesek):
// Illessze be a GCodeBase.js-t, amely a 'GCodeBase' osztályt tartalmazza,// amelyet saját konfigurációnk alapjaként használunk:include("GCodeBase.js");
// Osztályunk konstruktora:function MyGCode(documentInterface, newDocumentInterface) { // Hívja meg az alaposztály konstruktorát: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Származtassa osztályunkat a GCodeBase osztályból:MyGCode.prototype = new GCodeBase();
// A felhasználói felületen megjelenített megjelenítendő név:MyGCode.displayName = "My G-Code";Most létrehoztunk egy új, teljesen működő, “My G-Code” nevű konfigurációt, amely készen áll a QCAD/CAM-ben való használatra, és alapvető G-kódot állít elő.
Konfigurációs beállítások
Szekció neve “Konfigurációs beállítások”A fent definiált konstruktor meghívja az alaposztályunk, a GCodeBase konstruktorát. A konstruktorban beállíthatunk néhány paramétert a konfigurációnkhoz, például a kívánt kimeneti egységet, vagy hogy a szerszámsugár-kompenzációhoz G41/G42-t akarunk-e használni, vagy kiszámítjuk a szerszámútvonal középpontját.
A kimeneti egység (ez az az egység, amelyet a gépe vagy vezérlője elvár) konfigurálásához beállíthatjuk a unit tagváltozót Inch vagy Millimeter értékre, például:
this.unit = RS.Inch;vagy
this.unit = RS.Millimeter;A konstruktorban konfigurálható egyéb beállítások:
| Változó | Lehetséges értékek | Alapértelmezett | Leírás |
|---|---|---|---|
this.outputOffsetPath |
true vagy false | false | Állítsa true-ra a szerszámsugár-kompenzáció kiszámításához a G41/G42 használata helyett. |
this.lineNumber |
Szám | 10 | A sorszámozáshoz használt kezdőszám (N…). |
this.lineNumberIncrement |
Szám | 10 | A sorszám növelése sorról sorra. |
this.fileExtensions |
Tömb | [ "nc", "cnc" ] |
A fájlkiterjesztések listája, amelyek közül a felhasználó választhat az ezen az utófeldolgozón keresztül történő exportáláskor. |
Egy teljes konstruktor így nézhet ki:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}A G-kód kimenet meghatározása
Szekció neve “A G-kód kimenet meghatározása”Kódblokkok
Szekció neve “Kódblokkok”A G-kód kimenet kódblokkokba van strukturálva, amelyeket a kimeneti fájlba írnak a QCAD/CAM CAM-exportfunkciójának használatakor. Például az első kódblokk, amelyet írnak, a “header” kódblokk. Minden kódblokk egy tagváltozóban van meghatározva, amely név szerint azonosítja, például a this.header a fájlfejléc kódblokkját tartalmazza.
A kódblokkok felülírhatók úgy, hogy bármilyen kódot / szöveget tartalmazzanak. A kódblokkok jellemzően változókat tartalmaznak az aktuális X/Y koordináták, a sorszám, az előtolási sebesség stb. kiadásához.
Tegyük fel, hogy egyetlen vonalat exportálunk G-kódba. A vonalat szerszámsugár-kompenzációval exportáljuk a vonal bal oldalára (G41). A kimeneti fájlba írt kódblokkok a következők:
| Kódblokk | Leírás | Példakimenet |
|---|---|---|
header |
A kimenet fejléce (mindig az első kódblokk). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Gyors mozgás a biztonsági szintre. | G0 Z100 |
rapidMove |
Gyors mozgás az első kontúr első pozíciójára (itt a vonal bevezetésének kezdete). | G0 X5 Y10 |
toolHeader |
Első blokk, amikor egy új szerszám lép működésbe (szerszámcsere). | T1 |
rapidMoveZ |
Gyors mozgás lefelé a szabad szintre (lebegés az anyag felett). | G0 Z5 |
firstLinearMoveZ |
Vágás az anyagba merülési sebességgel. | G1 Z-5 F50 |
toolpathHeader |
Egy új szerszámútvonal első blokkja. | |
contourHeader |
Egy új kontúr első blokkja egy szerszámútvonalon belül. | |
singleZPassHeader |
Fejléc egyetlen Z-áthaladáshoz. A teljes mélységet egyetlen áthaladással vágjuk. | |
zPassFirstHeader |
Egyetlen vagy több Z-áthaladás első fejléce. | |
linearMoveCompensationLeft |
Lineáris mozgás a vonal kezdőpontjához a bevezetés mentén, a szerszámsugár-kompenzáció bekapcsolása. | G41 X10 Y10 F500 |
linearMove |
Lineáris mozgás a vonal mentén a vonal végpontjáig. | X30 Y10 |
linearMoveCompensationOff |
Lineáris mozgás a végponttól el a kivezetés mentén, a szerszámsugár-kompenzáció kikapcsolása. | G40 X35 Y10 |
zPassLastFooter |
Egyetlen vagy több Z-áthaladás utolsó lábléce. | |
singleZPassFooter |
Lábléc egyetlen Z-áthaladáshoz. | |
contourFooter |
Kontúr vége. | |
toolpathFooter |
Szerszámútvonal vége. | |
linearMoveZ |
Mozgás ki az anyagból a szabad szintre. | Z5 |
rapidMoveZ |
Mozgás a biztonsági szintre. | G0 Z100 |
toolFooter |
Ennek a szerszámnak a vége. | |
footer |
Program vége. | M30 |
Sok ilyen kódblokk jellemzően használatlan, és nem állít elő kimenetet (üres kódblokk).
Változók
Szekció neve “Változók”| Tagváltozó | Változónév | Leírás |
|---|---|---|
| inputFileName | INFILENAME | Bemeneti fájlnév (pl. DXF-fájl). |
| inputFilePath | INFILEPATH | Bemeneti fájlnév teljes elérési úttal. |
| fileName | FILENAME | Kimeneti fájlnév. |
| filePath | FILEPATH | Kimeneti fájlnév teljes elérési úttal. |
| dateTime | DATETIME | Az exportálás dátuma és időpontja. |
| lineNumber | N | Aktuális sorszám. |
| spindleSpeed | S | Orsófordulat, jellemzően ford/perc. |
| feedRate | F | Előtolási sebesség. |
| plungeRate | FP | Merülési sebesség. |
| xHomePosition | XH | Kiindulási pozíció a CAM-konfigurációban beállított módon. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z biztonsági szint szerszámcserékhez és kezdéshez / befejezéshez. |
| zClearance | ZU | Z szabad szint az anyag megközelítéséhez. |
| zClearancePass | ZUP | Z szabad szint több áthaladás között. |
| zCuttingDepth | ZD | Z vágási szint (összesen). |
| xFirstPosition | XF | Az első kontúr első pozíciója az első szerszámútvonalban. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Entitás kezdete (vonal / ív kezdőpontja). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Aktuális célpozíció. Az aktuális vonal / ív végpontja. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Aktuális célpozíció relatív koordinátaként, a kezdőponthoz viszonyítva. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Ív középpontja, a kezdőponthoz viszonyítva. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Ív középpontja, abszolút. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Ív sugara. |
| arcDiameter | DIAMETER | Ív átmérője. |
| arcSweep | SWEEP | Ív söprése (az ív által lefedett szög radiánban, negatív az óramutató járásával megegyező irányban). |
| tool | T | Aktuális szerszám. |
| toolRadius | TR | Szerszámsugár. |
| toolDiameter | TD | Szerszámátmérő. |
| toolpathOrder | TOOLPATH_ORDER | Szerszámútvonal sorrendje a szerszámútvonalak listájában, 0-val kezdve az első szerszámútvonalhoz. |
| toolCalls | TOOL_CALLS | Ahányszor ezt a szerszámot használták. |
| toolpathName | TOOLPATH_NAME | Az aktuális szerszámútvonal neve (felhasználó által meghatározott). |
| programName | PROGRAM_NAME | Programnév a felhasználó által a CAM-konfigurációban beállított módon. |
| xMin | X_MIN | A rajz minimális kiterjedése. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | A rajz maximális kiterjedése. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Példák
Szekció neve “Példák”A fejléc és a lábléc módosítása
Szekció neve “A fejléc és a lábléc módosítása”G-kódok vagy M-kódok vagy más információk hozzáadásához vagy módosításához a fejlécben vagy a láblécben egy konfiguráció felülírhatja a header és footer tagváltozókat a konstruktorban, például a következőképpen:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Abszolút I/J
Szekció neve “Abszolút I/J”Ahhoz, hogy abszolút értékeket használjon az ívek középpontjának I/J értékeihez, felülírhatja az ív kódblokkokat a következőképpen:
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]";Utófeldolgozó sablonfájl
Szekció neve “Utófeldolgozó sablonfájl”A QCAD/CAM az utófeldolgozó beállításakor vagy váltásakor automatikusan összefésül egy, az utófeldolgozó fájllal azonos nevű DXF-sablonfájlt (ha elérhető). Tegyük fel, hogy az utófeldolgozó neve “MyGCode”, amely a postprocessors/MyGCode.js fájlban van implementálva. Hozzon létre egy DXF-fájlt a szerszámdefiníciókkal a postprocessors/MyGCode.dxf helyen. Ez a fájl tartalmazhat szerszámdefiníciókat, alapértelmezett rétegeket vagy a rendelkezésre álló felület körvonalát. Megjegyzés: A sablonfájl bármely látható tartalma összefésüléskor automatikusan egy zárolt rétegre kerül, így csak látható, de nem kijelölhető.