Python ile STL Dosyasını Mesh Hatalarından Temizle
3D modelleme ve CAD işlemlerinde STL dosyaları sık kullanılır, ancak yüzey (mesh) hatalarıyla karşılaşmak kaçınılmazdır. Delik, kesişen üçgenler, normal vektör problemleri gibi sorunlar baskıya veya işlemeye hazır olmayan modeller oluşturur. Python'da bu hataları tespit etmek ve basit olanları otomatik düzeltmek mümkün.
Yaygın mesh hataları: Açık kenarlar (open edges), delikler, kendini kesen yüzeyler ve yanlış yönlendirilmiş normaller. NumPy-STL ve Trimesh kütüphaneleri bu sorunları çözmek için güçlü araçlar sunar.
İlk olarak gerekli kütüphaneleri kur:
1pip install numpy-stl trimesh numpyBasit hata tespiti ve düzeltme örneği:
1import trimesh2import numpy as np34# STL dosyasını yükle5mesh = trimesh.load('model.stl')67# Mesh bilgilerini kontrol et8print(f"Üçgen sayısı: {len(mesh.faces)}")9print(f"Köşe sayısı: {len(mesh.vertices)}")10print(f"Kapalı mı: {mesh.is_watertight}")1112# Açık kenarları bul13open_edges = mesh.edges_unique[~mesh.edges_unique_length > 0]14print(f"Açık kenar sayısı: {len(open_edges)}")1516# Mesh'i düzelt17mesh.remove_degenerate_faces() # Dejenere üçgenleri sil18mesh.remove_duplicate_faces() # Kopya yüzeyleri sil19mesh.merge_vertices() # Çakışan köşeleri birleştir2021# Normal vektörleri yeniden hesapla22mesh.fix_normals()2324# Düzeltilmiş dosyayı kaydet25mesh.export('model_temiz.stl')2627print(f"Düzeltme sonrası - Kapalı mı: {mesh.is_watertight}")Beklenen çıktı:
1Üçgen sayısı: 15002Köşe sayısı: 20003Kapalı mı: False4Açık kenar sayısı: 245Düzeltme sonrası - Kapalı mı: TrueDaha karmaşık durumlar için `mesh.fill_holes()` delik kapatmaya çalışır, fakat başarı modele bağlıdır. Eğer mesh hala sorunlu kalırsa, Meshmixer veya Netfabb gibi profesyonel araçlara başvurman gerekebilir.
Sık yapılan hata: Dosyayı yükledikten hemen sonra kaydetmek. Hataları düzeltmeden önce orijinal dosyayı her zaman yedekle ve `is_watertight` kontrolünü yap. Büyük dosyalarda işlem zaman alabilir; sabırlı ol.
0 yorum