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 numpy

Basit hata tespiti ve düzeltme örneği:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import trimesh
2import numpy as np
3
4# STL dosyasını yükle
5mesh = trimesh.load('model.stl')
6
7# Mesh bilgilerini kontrol et
8print(f"Üçgen sayısı: {len(mesh.faces)}")
9print(f"Köşe sayısı: {len(mesh.vertices)}")
10print(f"Kapalı mı: {mesh.is_watertight}")
11
12# Açık kenarları bul
13open_edges = mesh.edges_unique[~mesh.edges_unique_length > 0]
14print(f"Açık kenar sayısı: {len(open_edges)}")
15
16# Mesh'i düzelt
17mesh.remove_degenerate_faces() # Dejenere üçgenleri sil
18mesh.remove_duplicate_faces() # Kopya yüzeyleri sil
19mesh.merge_vertices() # Çakışan köşeleri birleştir
20
21# Normal vektörleri yeniden hesapla
22mesh.fix_normals()
23
24# Düzeltilmiş dosyayı kaydet
25mesh.export('model_temiz.stl')
26
27print(f"Düzeltme sonrası - Kapalı mı: {mesh.is_watertight}")

Beklenen çıktı:

1Üçgen sayısı: 1500
2Köşe sayısı: 2000
3Kapalı mı: False
4Açık kenar sayısı: 24
5Düzeltme sonrası - Kapalı mı: True

Daha 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.

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