Skip to content

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.

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

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.

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;
}

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

Č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

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

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

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