G-code Optimizasyonu: Baskı Hızını Kod Seviyesinde Artırma
3D baskı hızı sadece yazıcı ayarlarıyla sınırlı değildir. G-code seviyesinde yapılan optimizasyonlar, baskı süresini %15-30 oranında azaltabilir. Gereksiz hareket komutları, yavaş retraksiyon hızları ve verimli olmayan kat sırası, zamanın çoğunu tüketir.
G-code, 3D yazıcının anladığı komut dilidir. Her satır bir hareketi, sıcaklığı veya ekstruder açısını kontrol eder. Python ile bu dosyayı okuyup analiz etmek, hız artışının anahtarıdır.
Temel Optimizasyon Teknikleri
İlk olarak, gereksiz Z hareketlerini tespit edin. Yazıcı aynı katmanda çalışırken Z eksenini hareket ettirmesi, baskı süresini uzatır. Retraksiyon hızını yazıcı için güvenli maksimum değere çıkarmak, filament geri çekilme süresini kısaltır. Ayrıca, sıra dışı kat sırası, yazıcı kafasının daha fazla yol almasına neden olur.
1import re23def analyze_gcode(filename):4with open(filename, 'r') as f:5lines = f.readlines()67z_moves = 08retraction_time = 09total_distance = 01011for line in lines:12# Z hareketi sayısı13if 'Z' in line and 'G0' in line or 'G1' in line:14z_moves += 11516# Retraksiyon hızı (E negatif)17if re.search(r'E-[\d.]+', line) and 'F' in line:18speed = re.search(r'F(\d+)', line)19if speed:20retraction_time += 12122print(f"Z Hareketleri: {z_moves}")23print(f"Retraksiyon Operasyonları: {retraction_time}")24return z_moves, retraction_time2526analyze_gcode('model.gcode')Beklenen Çıktı:
1Z Hareketleri: 2452Retraksiyon Operasyonları: 189İkinci adımda, G-code'u optimize edin. Ardışık aynı Z değerindeki hareketleri birleştirin, retraksiyon hızını artırın (yazıcı özellikleri doğrultusunda).
1def optimize_gcode(input_file, output_file):2with open(input_file, 'r') as f:3lines = f.readlines()45optimized = []6prev_z = None78for line in lines:9# Aynı Z değerindeki hareketleri atla10if 'Z' in line:11z_match = re.search(r'Z([\d.]+)', line)12if z_match:13current_z = z_match.group(1)14if current_z == prev_z:15continue16prev_z = current_z1718# Retraksiyon hızını 50'den 120'ye artır19line = re.sub(r'E-[\d.]+ F\d+', lambda m: m.group(0).replace('F50', 'F120'), line)20optimized.append(line)2122with open(output_file, 'w') as f:23f.writelines(optimized)2425print(f"Optimize edilmiş G-code kaydedildi: {output_file}")26print(f"Satır sayısı: {len(lines)} {len(optimized)}")2728optimize_gcode('model.gcode', 'model_optimized.gcode')Beklenen Çıktı:
1Optimize edilmiş G-code kaydedildi: model_optimized.gcode2Satır sayısı: 5420 5187Sık Yapılan Hata
Retraksiyon hızını çok yüksek ayarlamak, filament kopmasına neden olabilir. Yazıcı modelinize göre maksimum güvenli hızı test edin. Ayrıca, Z hareketi optimizasyonunu fazla agresif yapmak, katman kalitesini etkileyebilir. Her değişiklik sonrası test baskısı yapın.
bknz: Unity'de Performans Optimizasyonu: Oyun Hızını Arttırmanın Pratik Yolları
5 yorum
İnfill oranını düşürmek mesela şu şekilde mi işliyor? Cura'da %15 seçiyorum ve yazıcı içi boş kalıyor ama dış kabuk güçlü kalıyor, öyle mi?
retraksiyon hızı ve infill deseni çoğu zaman çalıyor infill yoğunluğunu %15e düşürmek bile ciddi fark yaratabilir ama parça dayanıklılığını kaybetme
Ah, o zaman daha basit bir şey demek. Cidden ben sadece Cura'nın ayarlarını değiştirmeyi biliyorum, Python kısmı gerçekten üstümde. Peki o zaman hangi ayarlar en çok zaman kesiyor?
aslında yazılımcı olmanın şartı yok çoğu 3D baskı programı zaten G codeu kendiliğinden optimize ediyor sen sadece ayarlarını düzeltmek yeterli
G-code'u doğrudan Python'la düzenlemek ilginç ama ben yazılımcı değilim, çok karışık geldi.