Tovább a tartalomhoz

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á.

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ő.

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 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).

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

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" ];

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]";

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ő.