QCAD/CAM naknadni procesor
QCAD/CAM lahko izvozi risbe CAD v različne formate, uporabljene v CAM (računalniško podprta proizvodnja). Ti formati so lahko narečja G-kode ali drugi, popolnoma različni formati. Vsak podprt format CAM je določen v konfiguracijski datoteki (ali „naknadnem procesorju”), ki je datoteka ECMAScript (JavaScript), ki izvaja podrobnosti formata. Vse razpoložljive konfiguracije so shranjene v imeniku postprocessors. Nove implementacije formatov je mogoče dodati na isto mesto.
Osnovna struktura
Section titled “Osnovna struktura”Vsaka konfiguracijska datoteka vsebuje razred ECMAScript z enakim imenom kot datoteka skripta. Če se datoteka skripta imenuje MyGCode.js, se mora razred, določen znotraj skripta, imenovati MyGCode.
Razred ECMAScript mora neposredno ali posredno izhajati iz razreda CamExporterV2, ki ga določi QCAD/CAM. CamExporterV2 določa osnovno strukturo konfiguracijskih razredov izvoznika CAM. Različne metode v CamExporterV2 se pokličejo za izvoz glave datoteke, različnih entitet v risbi CAD in noge. CamExporterV2 skrbi tudi za različne funkcije QCAD/CAM, na primer kompenzacijo polmera orodja, vhod / izhod, rezanje notranjih kontur pred zunanjimi konturami, optimizacijo poti itd.
CamExporterV2 sam po sebi ničesar ne izpiše, ampak bi sam ustvaril prazno datoteko. CamExporterV2 ponuja besedilni tok (QTextStream) za pisanje v izvoženo datoteko. Ta besedilni tok je izpostavljen prek članske spremenljivke this.stream.
Če je želeni izhod narečje G-kode (npr. G1 X10 Y20 za linearno gibanje), je mogoče konfiguracijo izpeljati iz obstoječe konfiguracije za G-kodo, imenovane GCodeBase, ki je določena v datoteki GCodeBase.js. Tako je pri večini krmilnikov strojev. Ena taka primer konfiguracija za izpis G-kode v milimetrih je določena v datoteki GCodeMM.js in na voljo v uporabniškem vmesniku kot konfiguracija, imenovana G-Code (G41/G42) [mm].
Izpeljava konfiguracije iz GCodeBase
Section titled “Izpeljava konfiguracije iz GCodeBase”Ustvarite datoteko z edinstvenim imenom po vaši izbiri. Za ta primer našo novo konfiguracijo poimenujemo MyGCode in jo shranimo v datoteko z enakim imenom, tj. MyGCode.js v imeniku postprocessors vaše namestitve QCAD/CAM.
Za ustvarjanje in pisanje datoteke lahko uporabite svoj najljubši urejevalnik navadnega besedila, na primer Notepad v sistemu Windows, TextEdit v sistemu macOS ali vim, Emacs itd. v sistemih Linux.
MyGCode.js mora določiti razred, imenovan MyGCode, da je veljavna konfiguracija za QCAD/CAM. Čeprav v ECMAScript strogo gledano ni razredov, lahko ustvarimo podoben koncept s priključitvijo funkcij na prototipni objekt konstruktorske funkcije. Kako natančno to deluje, presega obseg te dokumentacije. Vendar obstaja preprosta predloga, ki jo lahko uporabite za vse konfiguracijske datoteke.
Za naš primer je definicija razreda MyGCode videti takole (upoštevajte, da so vrstice, ki se začnejo z //, komentarji in niso obvezne):
// Vključite GCodeBase.js, ki vsebuje razred 'GCodeBase',// uporabljen kot osnova za našo lastno konfiguracijo:include("GCodeBase.js");
// Konstruktor našega razreda:function MyGCode(documentInterface, newDocumentInterface) { // Pokličite konstruktor osnovnega razreda: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Izpeljite naš razred iz razreda GCodeBase:MyGCode.prototype = new GCodeBase();
// Prikazno ime, prikazano v uporabniškem vmesniku:MyGCode.displayName = "My G-Code";Zdaj smo ustvarili novo, popolnoma delujočo konfiguracijo, imenovano „My G-Code”, ki je pripravljena za uporabo v QCAD/CAM in ustvarja osnovno G-kodo.
Nastavitve konfiguracije
Section titled “Nastavitve konfiguracije”Konstruktor, ki smo ga določili zgoraj, pokliče konstruktor našega osnovnega razreda GCodeBase. V konstruktorju lahko nastavimo nekatere parametre za našo konfiguracijo, kot je želena izhodna enota ali če želimo uporabiti G41/G42 za kompenzacijo polmera orodja ali izračunati središče poti orodja.
Za konfiguracijo izhodne enote (to je enota, ki jo pričakuje vaš stroj ali krmilnik) lahko nastavimo člansko spremenljivko unit na Inch ali Millimeter, na primer:
this.unit = RS.Inch;ali
this.unit = RS.Millimeter;Druge nastavitve, ki jih je mogoče konfigurirati v konstruktorju, so:
| Spremenljivka | Možne vrednosti | Privzeto | Opis |
|---|---|---|---|
this.outputOffsetPath |
true ali false | false | Nastavite na true za izračun kompenzacije polmera orodja namesto uporabe G41/G42. |
this.lineNumber |
Število | 10 | Začetno število, uporabljeno za oštevilčenje vrstic (N…). |
this.lineNumberIncrement |
Število | 10 | Povečanje števila vrstice iz vrstice v vrstico. |
this.fileExtensions |
Polje | [ "nc", "cnc" ] |
Seznam pripon datotek, med katerimi lahko uporabnik izbira pri izvozu prek tega naknadnega procesorja. |
Celoten konstruktor bi lahko bil videti takole:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Določanje izhoda G-kode
Section titled “Določanje izhoda G-kode”Bloki kode
Section titled “Bloki kode”Izhod G-kode je strukturiran v bloke kode, ki se zapišejo v izhodno datoteko pri uporabi funkcije izvoza CAM v QCAD/CAM. Na primer, prvi zapisani blok kode je blok kode „header”. Vsak blok kode je določen v članski spremenljivki, ki ga identificira po imenu, na primer this.header vsebuje blok kode za glavo datoteke.
Bloke kode je mogoče preglasiti, da vsebujejo katero koli kodo / besedilo. Bloki kode običajno vsebujejo spremenljivke za izpis trenutnih koordinat X/Y, številke vrstice, hitrosti podajanja itd.
Recimo, da se ena črta izvozi v G-kodo. Črta se izvozi s kompenzacijo polmera orodja levo od črte (G41). Bloki kode, ki se zapišejo v izhodno datoteko, so naslednji:
| Blok kode | Opis | Primer izhoda |
|---|---|---|
header |
Glava izhoda (vedno prvi blok kode). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Hitro premikanje na varnostno raven. | G0 Z100 |
rapidMove |
Hitro premikanje na prvi položaj prve konture (tu začetek vhoda za črto). | G0 X5 Y10 |
toolHeader |
Prvi blok, ko novo orodje stopi v akcijo (menjava orodja). | T1 |
rapidMoveZ |
Hitro premikanje navzdol na raven prostosti (lebdenje nad materialom). | G0 Z5 |
firstLinearMoveZ |
Rezanje v material s hitrostjo potapljanja. | G1 Z-5 F50 |
toolpathHeader |
Prvi blok nove poti orodja. | |
contourHeader |
Prvi blok nove konture znotraj poti orodja. | |
singleZPassHeader |
Glava za en Z prehod. Celotno globino režemo v enem prehodu. | |
zPassFirstHeader |
Prva glava enega ali več Z prehodov. | |
linearMoveCompensationLeft |
Linearno premikanje na začetno točko črte vzdolž vhoda, vklop kompenzacije polmera orodja. | G41 X10 Y10 F500 |
linearMove |
Linearno premikanje vzdolž črte na končno točko črte. | X30 Y10 |
linearMoveCompensationOff |
Linearno premikanje stran od končne točke vzdolž izhoda, izklop kompenzacije polmera orodja. | G40 X35 Y10 |
zPassLastFooter |
Zadnja noga enega ali več Z prehodov. | |
singleZPassFooter |
Noga za en Z prehod. | |
contourFooter |
Konec konture. | |
toolpathFooter |
Konec poti orodja. | |
linearMoveZ |
Premikanje iz materiala na raven prostosti. | Z5 |
rapidMoveZ |
Premikanje na varnostno raven. | G0 Z100 |
toolFooter |
Konec za to orodje. | |
footer |
Konec programa. | M30 |
Mnogi od teh blokov kode so običajno neuporabljeni in ne ustvarijo izhoda (prazen blok kode).
Spremenljivke
Section titled “Spremenljivke”| Članska spremenljivka | Ime spremenljivke | Opis |
|---|---|---|
| inputFileName | INFILENAME | Ime vhodne datoteke (npr. datoteka DXF). |
| inputFilePath | INFILEPATH | Ime vhodne datoteke s celotno potjo. |
| fileName | FILENAME | Ime izhodne datoteke. |
| filePath | FILEPATH | Ime izhodne datoteke s celotno potjo. |
| dateTime | DATETIME | Datum in čas izvoza. |
| lineNumber | N | Trenutna številka vrstice. |
| spindleSpeed | S | Hitrost vretena, običajno vrt/min. |
| feedRate | F | Hitrost podajanja. |
| plungeRate | FP | Hitrost potapljanja. |
| xHomePosition | XH | Domači položaj, kot je konfiguriran v konfiguraciji CAM. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Z varnostna raven za menjave orodij in začetek / konec. |
| zClearance | ZU | Z raven prostosti za približevanje materialu. |
| zClearancePass | ZUP | Z raven prostosti med več prehodi. |
| zCuttingDepth | ZD | Z raven rezanja (skupaj). |
| xFirstPosition | XF | Prvi položaj prve konture v prvi poti orodja. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Začetek entitete (začetna točka črte / loka). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Trenutni ciljni položaj. Končna točka trenutne črte / loka. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Trenutni ciljni položaj kot relativna koordinata, glede na začetno točko. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Središče loka, glede na začetno točko. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Središče loka, absolutno. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Polmer loka. |
| arcDiameter | DIAMETER | Premer loka. |
| arcSweep | SWEEP | Zamah loka (kot, ki ga pokriva lok v rad, negativen za smer urnega kazalca). |
| tool | T | Trenutno orodje. |
| toolRadius | TR | Polmer orodja. |
| toolDiameter | TD | Premer orodja. |
| toolpathOrder | TOOLPATH_ORDER | Vrstni red poti orodja na seznamu poti orodja, začenši z 0 za prvo pot orodja. |
| toolCalls | TOOL_CALLS | Kolikokrat je bilo to orodje uporabljeno. |
| toolpathName | TOOLPATH_NAME | Ime trenutne poti orodja (določeno s strani uporabnika). |
| programName | PROGRAM_NAME | Ime programa, kot ga je uporabnik konfiguriral v konfiguraciji CAM. |
| xMin | X_MIN | Najmanjši obseg risbe. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Največji obseg risbe. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Primeri
Section titled “Primeri”Spreminjanje glave in noge
Section titled “Spreminjanje glave in noge”Za dodajanje ali spreminjanje G-kod ali M-kod ali drugih informacij v glavi ali nogi lahko konfiguracija preglasi članski spremenljivki header in footer v konstruktorju, na primer takole:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Absolutna I/J
Section titled “Absolutna I/J”Za uporabo absolutnih vrednosti za vrednosti I/J za središče lokov lahko preglasite bloke kode loka takole:
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]";Datoteka predloge naknadnega procesorja
Section titled “Datoteka predloge naknadnega procesorja”QCAD/CAM samodejno združi datoteko predloge DXF z enakim imenom kot datoteka naknadnega procesorja (če je na voljo) pri nastavljanju ali preklopu naknadnega procesorja. Recimo, da se naknadni procesor imenuje „MyGCode”, implementiran v postprocessors/MyGCode.js. Ustvarite datoteko DXF z definicijami orodij v postprocessors/MyGCode.dxf. Ta datoteka lahko vsebuje definicije orodij, privzete sloje ali oris razpoložljive površine. Opomba: Vsaka vidna vsebina datoteke predloge se pri združevanju samodejno postavi na zaklenjen sloj, tako da je samo vidna, ne pa izbirljiva.