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 re
2
3def analyze_gcode(filename):
4with open(filename, 'r') as f:
5lines = f.readlines()
6
7z_moves = 0
8retraction_time = 0
9total_distance = 0
10
11for line in lines:
12# Z hareketi sayısı
13if 'Z' in line and 'G0' in line or 'G1' in line:
14z_moves += 1
15
16# 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 += 1
21
22print(f"Z Hareketleri: {z_moves}")
23print(f"Retraksiyon Operasyonları: {retraction_time}")
24return z_moves, retraction_time
25
26analyze_gcode('model.gcode')

Beklenen Çıktı:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1Z Hareketleri: 245
2Retraksiyon 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()
4
5optimized = []
6prev_z = None
7
8for line in lines:
9# Aynı Z değerindeki hareketleri atla
10if '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:
15continue
16prev_z = current_z
17
18# Retraksiyon hızını 50'den 120'ye artır
19line = re.sub(r'E-[\d.]+ F\d+', lambda m: m.group(0).replace('F50', 'F120'), line)
20optimized.append(line)
21
22with open(output_file, 'w') as f:
23f.writelines(optimized)
24
25print(f"Optimize edilmiş G-code kaydedildi: {output_file}")
26print(f"Satır sayısı: {len(lines)} {len(optimized)}")
27
28optimize_gcode('model.gcode', 'model_optimized.gcode')

Beklenen Çıktı:

1Optimize edilmiş G-code kaydedildi: model_optimized.gcode
2Satır sayısı: 5420 5187

Sı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ı

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz

5 yorum

  • adlı kullanıcıya yanıt verdi
    balkonkedisi

    İ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?

  • adlı kullanıcıya yanıt verdi
    berat_06

    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

  • adlı kullanıcıya yanıt verdi
    balkonkedisi

    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?

  • adlı kullanıcıya yanıt verdi
    berat_06

    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

  • balkonkedisi

    G-code'u doğrudan Python'la düzenlemek ilginç ama ben yazılımcı değilim, çok karışık geldi.