QCAD/CAM Son İşlemci
QCAD/CAM, CAD çizimlerini CAM’de (bilgisayar destekli üretim) kullanılan çeşitli formatlara aktarabilir. Bu formatlar G-Code lehçeleri veya diğer, tamamen farklı formatlar olabilir. Desteklenen her CAM formatı, format ayrıntılarını uygulayan bir ECMAScript (JavaScript) dosyası olan bir yapılandırma dosyasında (veya “son işlemci”) tanımlanır. Mevcut tüm yapılandırmalar postprocessors dizininde saklanır. Yeni format uygulamaları aynı konuma eklenebilir.
Temel Yapı
Section titled “Temel Yapı”Her yapılandırma dosyası, betik dosyasıyla aynı ada sahip bir ECMAScript sınıfı içerir. Betik dosyası MyGCode.js olarak adlandırılırsa, betik içinde tanımlanan sınıf MyGCode olarak adlandırılmalıdır.
ECMAScript sınıfı, QCAD/CAM tarafından tanımlanan CamExporterV2 sınıfından doğrudan veya dolaylı olarak türetilmelidir. CamExporterV2, CAM dışa aktarıcı yapılandırma sınıflarının temel yapısını tanımlar. CamExporterV2’deki çeşitli yöntemler, dosya başlığını, CAD çizimindeki çeşitli nesneleri ve alt bilgiyi dışa aktarmak için çağrılır. CamExporterV2 ayrıca QCAD/CAM’in çeşitli özelliklerini de üstlenir, örneğin takım yarıçapı telafisi, giriş / çıkış, iç konturları dış konturlardan önce kesme, yol optimizasyonu vb.
CamExporterV2 kendi başına hiçbir şey çıkarmaz, ancak tek başına boş bir dosya üretir. CamExporterV2, dışa aktarılan dosyaya yazmak için bir metin akışı (QTextStream) sunar. Bu metin akışı, üye değişken this.stream aracılığıyla açığa çıkarılır.
İstenen çıktı bir G-Code lehçesiyse (ör. doğrusal hareket için G1 X10 Y20), yapılandırma, GCodeBase.js dosyasında tanımlanan GCodeBase adlı G-Code için mevcut yapılandırmadan türetilebilir. Bu, çoğu makine denetleyicisi için geçerlidir. G-Code’u Milimetre olarak çıkarmak için böyle bir örnek yapılandırma, GCodeMM.js dosyasında tanımlanır ve kullanıcı arabiriminde G-Code (G41/G42) [mm] adlı yapılandırma olarak mevcuttur.
GCodeBase’den Yapılandırma Türetme
Section titled “GCodeBase’den Yapılandırma Türetme”Kendi seçtiğiniz benzersiz bir adla bir dosya oluşturun. Bu örnek için, yeni yapılandırmamızı MyGCode olarak adlandırıyoruz ve onu aynı ada sahip bir dosyada, yani QCAD/CAM kurulumunuzun postprocessors dizini altında MyGCode.js olarak saklıyoruz.
Dosyayı oluşturmak ve yazmak için favori düz metin düzenleyicinizi kullanabilirsiniz, örneğin Windows’ta Not Defteri, macOS’te TextEdit veya Linux sistemlerinde vim, Emacs vb.
MyGCode.js, QCAD/CAM için geçerli bir yapılandırma olması için MyGCode adlı bir sınıf tanımlamalıdır. ECMAScript’te kesin olarak konuşursak sınıflar olmasa da, işlevleri bir kurucu işlevin prototip nesnesine ekleyerek benzer bir kavram oluşturabiliriz. Bunun tam olarak nasıl çalıştığı bu belgenin kapsamı dışındadır. Ancak, tüm yapılandırma dosyaları için kullanabileceğiniz basit bir şablon vardır.
Örneğimiz için, MyGCode sınıfının tanımı şöyle görünür (// ile başlayan satırların yorum olduğunu ve gerekli olmadığını unutmayın):
// Kendi yapılandırmamız için temel olarak kullanılan// 'GCodeBase' sınıfını içeren GCodeBase.js'yi dahil edin:include("GCodeBase.js");
// Sınıfımızın kurucusu:function MyGCode(documentInterface, newDocumentInterface) { // Temel sınıfın kurucusunu çağırın: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Sınıfımızı GCodeBase sınıfından türetin:MyGCode.prototype = new GCodeBase();
// Kullanıcı arabiriminde gösterilen görünen ad:MyGCode.displayName = "My G-Code";Şimdi, QCAD/CAM’de kullanılmaya hazır olan ve temel G-Code üreten “My G-Code” adlı yeni, tam işlevsel bir yapılandırma oluşturduk.
Yapılandırma Tercihleri
Section titled “Yapılandırma Tercihleri”Yukarıda tanımladığımız kurucu, temel sınıfımız GCodeBase’in kurucusunu çağırır. Kurucuda, yapılandırmamız için istenen çıktı birimi veya takım yarıçapı telafisi için G41/G42 kullanmak isteyip istemediğimiz ya da takım yolunun merkezini hesaplamak gibi bazı parametreleri ayarlayabiliriz.
Çıktı birimini (bu, makinenizin veya denetleyicinizin beklediği birimdir) yapılandırmak için, üye değişken unit’i Inch veya Millimeter olarak ayarlayabiliriz, örneğin:
this.unit = RS.Inch;veya
this.unit = RS.Millimeter;Kurucuda yapılandırılabilecek diğer ayarlar şunlardır:
| Değişken | Olası Değerler | Varsayılan | Açıklama |
|---|---|---|---|
this.outputOffsetPath |
true veya false | false | G41/G42 kullanmak yerine takım yarıçapı telafisini hesaplamak için true olarak ayarlayın. |
this.lineNumber |
Sayı | 10 | Satır numaralandırması için kullanılan başlangıç numarası (N…). |
this.lineNumberIncrement |
Sayı | 10 | Satırdan satıra satır numarası artışı. |
this.fileExtensions |
Dizi | [ "nc", "cnc" ] |
Kullanıcının bu son işlemci aracılığıyla dışa aktarırken seçebileceği dosya uzantılarının listesi. |
Eksiksiz bir kurucu şöyle görünebilir:
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}G-Code Çıktısını Tanımlama
Section titled “G-Code Çıktısını Tanımlama”Kod Blokları
Section titled “Kod Blokları”G-Code çıktısı, QCAD/CAM’de CAM dışa aktarma işlevi kullanılırken çıktı dosyasına yazılan kod bloklarına yapılandırılır. Örneğin, yazılan ilk kod bloğu “header” kod bloğudur. Her kod bloğu, onu ada göre tanımlayan bir üye değişkende tanımlanır, örneğin this.header dosya başlığı için kod bloğunu içerir.
Kod blokları, herhangi bir kodu / metni içerecek şekilde geçersiz kılınabilir. Kod blokları tipik olarak geçerli X/Y koordinatlarını, satır numarasını, ilerleme hızını vb. çıkarmak için değişkenler içerir.
Diyelim ki tek bir çizgi G-Code’a aktarılıyor. Çizgi, çizginin soluna takım yarıçapı telafisiyle (G41) aktarılır. Çıktı dosyasına yazılan kod blokları şunlardır:
| Kod bloğu | Açıklama | Örnek çıktı |
|---|---|---|
header |
Çıktının başlığı (her zaman ilk kod bloğu). | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
Güvenlik seviyesine hızlı hareket. | G0 Z100 |
rapidMove |
İlk konturun ilk konumuna hızlı hareket (burada çizgi için girişin başlangıcı). | G0 X5 Y10 |
toolHeader |
Yeni bir takım harekete geçtiğinde ilk blok (takım değişimi). | T1 |
rapidMoveZ |
Boşluk seviyesine hızlı aşağı hareket (malzemenin üzerinde havada). | G0 Z5 |
firstLinearMoveZ |
Dalma hızında malzemeye kesme. | G1 Z-5 F50 |
toolpathHeader |
Yeni bir takım yolunun ilk bloğu. | |
contourHeader |
Bir takım yolu içindeki yeni bir konturun ilk bloğu. | |
singleZPassHeader |
Tek Z geçişi için başlık. Tüm derinliği tek bir geçişte kesiyoruz. | |
zPassFirstHeader |
Tek veya birden fazla Z geçişinin ilk başlığı. | |
linearMoveCompensationLeft |
Giriş boyunca çizginin başlangıç noktasına doğrusal hareket, takım yarıçapı telafisini açar. | G41 X10 Y10 F500 |
linearMove |
Çizgi boyunca çizginin bitiş noktasına doğrusal hareket. | X30 Y10 |
linearMoveCompensationOff |
Çıkış boyunca bitiş noktasından uzağa doğrusal hareket, takım yarıçapı telafisini kapatır. | G40 X35 Y10 |
zPassLastFooter |
Tek veya birkaç Z geçişinin son alt bilgisi. | |
singleZPassFooter |
Tek Z geçişi için alt bilgi. | |
contourFooter |
Kontur sonu. | |
toolpathFooter |
Takım yolu sonu. | |
linearMoveZ |
Malzemeden boşluk seviyesine hareket. | Z5 |
rapidMoveZ |
Güvenlik seviyesine hareket. | G0 Z100 |
toolFooter |
Bu takım için son. | |
footer |
Program sonu. | M30 |
Bu kod bloklarının çoğu tipik olarak kullanılmaz ve çıktı üretmez (boş kod bloğu).
Değişkenler
Section titled “Değişkenler”| Üye değişken | Değişken adı | Açıklama |
|---|---|---|
| inputFileName | INFILENAME | Girdi dosyası adı (ör. DXF dosyası). |
| inputFilePath | INFILEPATH | Tam yollu girdi dosyası adı. |
| fileName | FILENAME | Çıktı dosyası adı. |
| filePath | FILEPATH | Tam yollu çıktı dosyası adı. |
| dateTime | DATETIME | Dışa aktarma tarihi ve saati. |
| lineNumber | N | Geçerli satır numarası. |
| spindleSpeed | S | İş mili hızı, genellikle dev/dak. |
| feedRate | F | İlerleme hızı. |
| plungeRate | FP | Dalma hızı. |
| xHomePosition | XH | CAM yapılandırmasında yapılandırılan başlangıç konumu. |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | Takım değişimleri ve başlangıç / bitiş için Z güvenlik seviyesi. |
| zClearance | ZU | Malzemeye yaklaşmak için Z boşluk seviyesi. |
| zClearancePass | ZUP | Birden fazla geçiş arasındaki Z boşluk seviyesi. |
| zCuttingDepth | ZD | Z kesme seviyesi (toplam). |
| xFirstPosition | XF | İlk takım yolundaki ilk konturun ilk konumu. |
| yFirstPosition | YF | |
| xStartPosition | X1 | Nesnenin başlangıcı (çizgi / yay başlangıç noktası). |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | Geçerli hedef konum. Geçerli çizgi / yayın bitiş noktası. |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | Başlangıç noktasına göre göreceli koordinat olarak geçerli hedef konum. |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | Yay merkezi, başlangıç noktasına göre. |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | Yay merkezi, mutlak. |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | Yay yarıçapı. |
| arcDiameter | DIAMETER | Yay çapı. |
| arcSweep | SWEEP | Yay taraması (yayın kapsadığı açı radyan cinsinden, saat yönünde negatif). |
| tool | T | Geçerli takım. |
| toolRadius | TR | Takım yarıçapı. |
| toolDiameter | TD | Takım çapı. |
| toolpathOrder | TOOLPATH_ORDER | Takım yolları listesinde takım yolu sırası, ilk takım yolu için 0 ile başlar. |
| toolCalls | TOOL_CALLS | Bu takımın kaç kez kullanıldığı. |
| toolpathName | TOOLPATH_NAME | Geçerli takım yolunun adı (kullanıcı tanımlı). |
| programName | PROGRAM_NAME | CAM yapılandırmasında kullanıcı tarafından yapılandırılan program adı. |
| xMin | X_MIN | Çizimin minimum kapsamı. |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | Çizimin maksimum kapsamı. |
| yMax | Y_MAX | |
| zMax | Z_MAX |
Örnekler
Section titled “Örnekler”Başlığı ve Alt Bilgiyi Değiştirme
Section titled “Başlığı ve Alt Bilgiyi Değiştirme”Başlığa veya alt bilgiye G-Code’lar veya M-Code’lar veya diğer bilgileri eklemek veya değiştirmek için, bir yapılandırma kurucudaki header ve footer üye değişkenlerini geçersiz kılabilir, örneğin şu şekilde:
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];Mutlak I/J
Section titled “Mutlak I/J”Yayların merkezi için I/J değerleri için mutlak değerler kullanmak amacıyla, yay kod bloklarını şu şekilde geçersiz kılabilirsiniz:
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]";Son İşlemci Şablon Dosyası
Section titled “Son İşlemci Şablon Dosyası”QCAD/CAM, son işlemciyi ayarlarken veya değiştirirken son işlemci dosyasıyla aynı ada sahip bir DXF şablon dosyasını (varsa) otomatik olarak birleştirir. Diyelim ki son işlemci “MyGCode” olarak adlandırılıyor, postprocessors/MyGCode.js içinde uygulanmış. postprocessors/MyGCode.dxf içinde takım tanımlarıyla bir DXF dosyası oluşturun. Bu dosya takım tanımları, varsayılan katmanlar veya mevcut yüzey alanının ana hatlarını içerebilir. Not: Şablon dosyasının görünür herhangi bir içeriği, birleştirme sırasında otomatik olarak kilitli bir katmana yerleştirilir, böylece yalnızca görünür ancak seçilebilir değildir.