Skip to content

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.

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.

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.

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

Ü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

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

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

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.