Baskı Süresi Tahmini: Gcode Analiz Aracı Geliştirme
3D yazıcı kullanıyorsan Gcode dosyalarının gerçek baskı süresini önceden bilmek çok işe yarar. Slicing yazılımları genellikle hatalı tahminler verir. Dosyayı satır satır analiz ederek hareket hızı, katman yüksekliği ve toplam hareket mesafesinden gerçekçi bir hesaplama yapabiliriz.
Problemi çerçevelersek: Gcode'da her hareket komutu (G1, G0) bir hız değeri (F parametresi) ve koordinatlar içerir. Tüm hareketlerin mesafesini toplayıp ortalama hızla böldüğümüzde dakika cinsinden baskı süresi çıkar. Ekstrüzyon hareketleri (G1 E...) ve boş hareketler (G0) ayrı hesaplanmalı.
1import re2import math34def estimate_print_time(gcode_file):5total_distance = 06total_time = 07current_pos = {'x': 0, 'y': 0, 'z': 0}8current_speed = 0910with open(gcode_file, 'r') as f:11for line in f:12line = line.strip()13if not line or line.startswith(';'):14continue1516# G1/G0 komutlarını bul17if line.startswith('G1') or line.startswith('G0'):18# Koordinatları ve hızı çıkar19x = re.search(r'X([\d.]+)', line)20y = re.search(r'Y([\d.]+)', line)21z = re.search(r'Z([\d.]+)', line)22f = re.search(r'F([\d.]+)', line)2324new_pos = current_pos.copy()25if x:26new_pos['x'] = float(x.group(1))27if y:28new_pos['y'] = float(y.group(1))29if z:30new_pos['z'] = float(z.group(1))31if f:32current_speed = float(f.group(1)) / 60 # mm/s'ye çevir3334# Mesafeyi hesapla (3D)35distance = math.sqrt(36(new_pos['x'] - current_pos['x'])**2 +37(new_pos['y'] - current_pos['y'])**2 +38(new_pos['z'] - current_pos['z'])**239)4041if distance > 0 and current_speed > 0:42total_distance += distance43total_time += distance / current_speed4445current_pos = new_pos4647minutes = total_time / 6048hours = minutes / 604950return {51'distance_mm': round(total_distance, 2),52'time_minutes': round(minutes, 1),53'time_hours': round(hours, 2),54'formatted': f"{int(hours)}h {int(minutes % 60)}m"55}5657# Kullanım58result = estimate_print_time('model.gcode')59print(f"Toplam mesafe: {result['distance_mm']} mm")60print(f"Tahmini süre: {result['formatted']}")Beklenen çıktı:
1Toplam mesafe: 45230.5 mm2Tahmini süre: 2h 34mSık yapılan hata: Hız değeri Gcode'da mm/dakika cinsindedir, hesaplamada mm/saniyeye çevirmek gerekir. Ayrıca G0 (hızlı hareket) komutları genellikle maksimum hızla çalışır, bu da tahminleri etkiler. Daha doğru sonuç için yazıcının maksimum hız değerlerini ayarlamakta fayda var.
0 yorum