Skip to content

QCAD/CAM järeltöötleja

QCAD/CAM saab eksportida CAD-jooniseid erinevatesse CAM-is (arvutipõhine tootmine) kasutatavatesse vormingutesse. Need vormingud võivad olla G-koodi dialektid või muud, täiesti erinevad vormingud. Iga toetatud CAM-vorming on määratud konfiguratsioonifailis (või “järeltöötlejas”), mis on ECMAScript (JavaScript) fail, mis rakendab vormingu üksikasjad. Kõik saadaolevad konfiguratsioonid salvestatakse kataloogi postprocessors. Uusi vormingurakendusi saab lisada samasse asukohta.

Iga konfiguratsioonifail sisaldab ECMAScripti klassi, mille nimi on sama mis skriptifailil. Kui skriptifail kannab nime MyGCode.js, peab skripti sees määratud klass kandma nime MyGCode.

ECMAScripti klass peab otseselt või kaudselt tulenema klassist CamExporterV2, mille määrab QCAD/CAM. CamExporterV2 määrab CAM-eksportija konfiguratsiooniklasside põhistruktuuri. CamExporterV2 erinevaid meetodeid kutsutakse faili päise, CAD-joonise erinevate objektide ja jaluse eksportimiseks. CamExporterV2 hoolitseb ka QCAD/CAM erinevate funktsioonide eest, näiteks tööriistaraadiuse kompensatsioon, sisenemine / väljumine, sisekontuuride lõikamine enne väliskontuure, tee optimeerimine jne.

CamExporterV2 ise midagi ei väljasta, vaid tekitaks üksinda tühja faili. CamExporterV2 pakub tekstivoogu (QTextStream) eksporditud faili kirjutamiseks. See tekstivoog on avatud liikmemuutuja this.stream kaudu.

Kui soovitud väljund on G-koodi dialekt (nt G1 X10 Y20 lineaarse liikumise jaoks), saab konfiguratsiooni tuletada olemasolevast G-koodi konfiguratsioonist nimega GCodeBase, mis on määratud failis GCodeBase.js. Nii on enamiku masinakontrollerite puhul. Üks selline näidiskonfiguratsioon G-koodi väljastamiseks millimeetrites on määratud failis GCodeMM.js ja saadaval kasutajaliideses konfiguratsioonina nimega G-Code (G41/G42) [mm].

Loo enda valitud unikaalse nimega fail. Selle näite puhul nimetame oma uue konfiguratsiooni MyGCode ja salvestame selle samanimelisse faili, st MyGCode.js oma QCAD/CAM paigalduse kataloogis postprocessors.

Faili loomiseks ja kirjutamiseks saad kasutada oma lemmiktekstiredaktorit, näiteks Notepad Windowsis, TextEdit macOS-is või vim, Emacs jne Linuxi süsteemides.

MyGCode.js peab määrama klassi nimega MyGCode, et olla QCAD/CAM-i jaoks kehtiv konfiguratsioon. Kuigi rangelt võttes ECMAScriptis klasse ei ole, saame luua sarnase kontseptsiooni, lisades funktsioone konstruktorfunktsiooni prototüübiobjektile. Kuidas see täpselt töötab, jääb selle dokumentatsiooni ulatusest välja. Siiski on olemas lihtne mall, mida saad kasutada kõigi konfiguratsioonifailide jaoks.

Meie näite puhul näeb klassi MyGCode määratlus välja selline (pane tähele, et //-ga algavad read on kommentaarid ega ole nõutavad):

// Kaasa GCodeBase.js, mis sisaldab klassi 'GCodeBase',
// mida kasutatakse meie enda konfiguratsiooni alusena:
include("GCodeBase.js");
// Meie klassi konstruktor:
function MyGCode(documentInterface, newDocumentInterface) {
// Kutsu baasklassi konstruktorit:
GCodeBase.call(this, documentInterface, newDocumentInterface);
}
// Tuleta meie klass klassist GCodeBase:
MyGCode.prototype = new GCodeBase();
// Kasutajaliideses kuvatav kuvanimi:
MyGCode.displayName = "My G-Code";

Nüüd oleme loonud uue, täielikult töötava konfiguratsiooni nimega “My G-Code”, mis on valmis kasutamiseks QCAD/CAM-is ja toodab põhilist G-koodi.

Ülal määratud konstruktor kutsub meie baasklassi GCodeBase konstruktorit. Konstruktoris saame määrata mõned oma konfiguratsiooni parameetrid, näiteks soovitud väljundühiku või selle, kas tahame tööriistaraadiuse kompensatsiooniks kasutada G41/G42 või arvutada tööriistatee keskpunkti.

Väljundühiku (see on ühik, mida sinu masin või kontroller ootab) konfigureerimiseks saame määrata liikmemuutuja unit väärtusele Inch või Millimeter, näiteks:

this.unit = RS.Inch;

või

this.unit = RS.Millimeter;

Muud konstruktoris konfigureeritavad seaded on:

Muutuja Võimalikud väärtused Vaikimisi Kirjeldus
this.outputOffsetPath true või false false Määra väärtusele true, et arvutada tööriistaraadiuse kompensatsioon G41/G42 kasutamise asemel.
this.lineNumber Arv 10 Reanummerdamiseks kasutatav algnumber (N…).
this.lineNumberIncrement Arv 10 Reanumbri suurendamine reast reani.
this.fileExtensions Massiiv [ "nc", "cnc" ] Faililaiendite loend, mille hulgast kasutaja saab valida selle järeltöötleja kaudu eksportimisel.

Täielik konstruktor võib välja näha selline:

function MyGCode(documentInterface, newDocumentInterface) {
GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch;
this.outputOffsetPath = true;
this.lineNumber = 1;
this.lineNumberIncrement = 1;
}

G-koodi väljund on struktureeritud koodiplokkideks, mis kirjutatakse väljundfaili QCAD/CAM-is CAM-ekspordi funktsiooni kasutamisel. Näiteks esimene kirjutatav koodiplokk on koodiplokk “header”. Iga koodiplokk on määratud liikmemuutujas, mis tuvastab selle nime järgi, näiteks this.header sisaldab faili päise koodiplokki.

Koodiplokke saab alistada, et need sisaldaksid mis tahes koodi / teksti. Koodiplokid sisaldavad tavaliselt muutujaid praeguste X/Y-koordinaatide, reanumbri, etteandekiiruse jne väljastamiseks.

Oletame, et üks joon eksporditakse G-koodi. Joon eksporditakse tööriistaraadiuse kompensatsiooniga joone vasakule (G41). Väljundfaili kirjutatavad koodiplokid on järgmised:

Koodiplokk Kirjeldus Näidisväljund
header Väljundi päis (alati esimene koodiplokk). G21 G17 G90 G40 G49 G80
rapidMoveZ Kiire liikumine ohutustasemele. G0 Z100
rapidMove Kiire liikumine esimese kontuuri esimesele positsioonile (siin joone sisenemise algus). G0 X5 Y10
toolHeader Esimene plokk, kui uus tööriist tegevusse astub (tööriistavahetus). T1
rapidMoveZ Kiire liikumine alla vabatasemele (hõljumine materjali kohal). G0 Z5
firstLinearMoveZ Materjali lõikamine sisenemiskiirusega. G1 Z-5 F50
toolpathHeader Uue tööriistatee esimene plokk.
contourHeader Uue kontuuri esimene plokk tööriistatee sees.
singleZPassHeader Ühe Z-läbimi päis. Lõikame kogu sügavuse ühe läbimiga.
zPassFirstHeader Ühe või mitme Z-läbimi esimene päis.
linearMoveCompensationLeft Lineaarne liikumine joone alguspunkti mööda sisenemist, tööriistaraadiuse kompensatsiooni sisselülitamine. G41 X10 Y10 F500
linearMove Lineaarne liikumine mööda joont joone lõpp-punkti. X30 Y10
linearMoveCompensationOff Lineaarne liikumine lõpp-punktist eemale mööda väljumist, tööriistaraadiuse kompensatsiooni väljalülitamine. G40 X35 Y10
zPassLastFooter Ühe või mitme Z-läbimi viimane jalus.
singleZPassFooter Ühe Z-läbimi jalus.
contourFooter Kontuuri lõpp.
toolpathFooter Tööriistatee lõpp.
linearMoveZ Liikumine materjalist välja vabatasemele. Z5
rapidMoveZ Liikumine ohutustasemele. G0 Z100
toolFooter Selle tööriista lõpp.
footer Programmi lõpp. M30

Paljud neist koodiplokkidest on tavaliselt kasutamata ja ei tooda väljundit (tühi koodiplokk).

Liikmemuutuja Muutuja nimi Kirjeldus
inputFileName INFILENAME Sisendfaili nimi (nt DXF-fail).
inputFilePath INFILEPATH Sisendfaili nimi koos täieliku teega.
fileName FILENAME Väljundfaili nimi.
filePath FILEPATH Väljundfaili nimi koos täieliku teega.
dateTime DATETIME Ekspordi kuupäev ja kellaaeg.
lineNumber N Praegune reanumber.
spindleSpeed S Spindli kiirus, tavaliselt p/min.
feedRate F Etteandekiirus.
plungeRate FP Sisenemiskiirus.
xHomePosition XH Kodupositsioon, nagu on konfigureeritud CAM-konfiguratsioonis.
yHomePosition YH
zHomePosition ZH
zSafety ZS Z ohutustase tööriistavahetuste ja alguse / lõpu jaoks.
zClearance ZU Z vabatase materjalile lähenemiseks.
zClearancePass ZUP Z vabatase mitme läbimi vahel.
zCuttingDepth ZD Z lõiketase (kokku).
xFirstPosition XF Esimese kontuuri esimene positsioon esimeses tööriistatees.
yFirstPosition YF
xStartPosition X1 Objekti algus (joone / kaare alguspunkt).
yStartPosition Y1
zStartPosition Z1
xPosition X Praegune sihtpositsioon. Praeguse joone / kaare lõpp-punkt.
yPosition Y
zPosition Z
xRelPosition XR Praegune sihtpositsioon suhtelise koordinaadina, suhtes alguspunktiga.
yRelPosition YR
zRelPosition ZR
iArcCenterInc I Kaare keskpunkt, suhtes alguspunktiga.
jArcCenterInc J
iArcCenterAbs IA Kaare keskpunkt, absoluutne.
jArcCenterAbs JA
arcRadius RADIUS Kaare raadius.
arcDiameter DIAMETER Kaare läbimõõt.
arcSweep SWEEP Kaare pöördenurk (kaare kaetud nurk radiaanides, negatiivne päripäeva jaoks).
tool T Praegune tööriist.
toolRadius TR Tööriista raadius.
toolDiameter TD Tööriista läbimõõt.
toolpathOrder TOOLPATH_ORDER Tööriistatee järjekord tööriistateede loendis, algades 0-st esimese tööriistatee jaoks.
toolCalls TOOL_CALLS Kordade arv, mil seda tööriista on kasutatud.
toolpathName TOOLPATH_NAME Praeguse tööriistatee nimi (kasutaja määratud).
programName PROGRAM_NAME Programmi nimi, nagu kasutaja on CAM-konfiguratsioonis konfigureerinud.
xMin X_MIN Joonise minimaalne ulatus.
yMin Y_MIN
zMin Z_MIN
xMax X_MAX Joonise maksimaalne ulatus.
yMax Y_MAX
zMax Z_MAX

Et lisada või muuta G-koode või M-koode või muud teavet päises või jaluses, saab konfiguratsioon alistada liikmemuutujad header ja footer konstruktoris, näiteks järgmiselt:

this.header = [ "[N] G0 Z100" ];
this.footer = [ "[N] G0 Z100", "[N] M30" ];

Et kasutada kaarte keskpunkti I/J väärtuste jaoks absoluutväärtusi, saad kaare koodiplokid alistada järgmiselt:

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 ühendab järeltöötleja määramisel või vahetamisel automaatselt sisse järeltöötleja failiga samanimelise DXF-mallifaili (kui saadaval). Oletame, et järeltöötleja kannab nime “MyGCode”, rakendatud failis postprocessors/MyGCode.js. Loo tööriistamääratlustega DXF-fail asukohta postprocessors/MyGCode.dxf. See fail võib sisaldada tööriistamääratlusi, vaikekihte või saadaoleva pinnaala kontuuri. Märkus: mis tahes mallifaili nähtav sisu paigutatakse ühendamisel automaatselt lukustatud kihile, seega on see ainult nähtav, kuid mitte valitav.