Bambu Studio'da üç ayrı parçayı plakaya dizip projeyi 3mf olarak kaydediyorsun, aynı dosyayı OpenSCAD'de açıyorsun ve üç parça tek bir yığın hâlinde üst üste duruyor. Eylül 2024'te Bambu Lab forumunda açılan "OpenSCAD, Bambu Studio and .3mf files" konusu tam bu olayı anlatıyor. Konuyu açan kişi bir nozzle temizleyicinin üç parçasını basmış, ölçüyü biraz değiştirmek için dosyayı OpenSCAD'e taşımış ve şunu görmüş:

Bambu Studio'da sorunsuz biçimde üç ayrı parça olarak görünüyor. Aynı .3mf dosyasını OpenSCAD'de açtığımda üç parça da üst üste yığılmıştı.

Dosya bozuk değil. Parçaların plakadaki yerini taşıyan veri dosyanın içinde duruyor; onu okumayan taraf OpenSCAD. Konu forumda "çözüldü" işaretli, ama işaret teknik cevapta değil, konuyu açan kişinin OpenSCAD'i neden seçtiğini anlattığı mesajda duruyor; aşağıdaki bilgi konudaki dört ayrı kullanıcının yanıtından, kaynak koddan ve belirtimden geliyor.

import satırı menüden değil, koddan geliyor

Konudaki teknik yanıt kısa:

Kodun sözdizimi import("model.3mf", convexity=3); convexity parametresi isteğe bağlı ve yalnız önizleme çizimini etkiliyor. Bir içe aktarma menüsü yok, çünkü OpenSCAD çözümü böyle çalışmıyor.

OpenSCAD belgeleri de aynı yere basıyor: convexity, nesnenin OpenCSG önizleme kipinde doğru görünmesi için var ve son çizime hiçbir etkisi yok, çoğu durumda 10 vermek yetiyor. Sürüm koşulu da belli: sürüm notlarında "import() now supports SVG, 3MF and AMF" satırı 2019.05 başlığının altında duruyor, bundan eskisinde bu satır çalışmıyor.

"İçe aktarma menüsü yok" ifadesini yine de açmak gerekiyor. Menü çubuğunda Import diye bir madde gerçekten yok, ama OpenSCAD kaynağında dosya uzantılarını hazır satırlara eşleyen bir tablo var ve 3mf uzantısı orada import("...") satırına bağlı. Yani .3mf dosyasını OpenSCAD penceresinin üstüne sürükleyip bıraktığında program o satırı senin yerine düzenleyiciye yazıyor. File > Open ayrı bir işlevden geçiyor ama aynı tabloya bakıyor, sonuç aynı: düzenleyiciye import() satırı düşüyor. Tek pürüzü açma penceresinin süzgecinin yalnız *.scad ve *.csg göstermesi, dosya adını elle yazdığında sonuç değişmiyor.

Parçalar neden üst üste yığılıyor

Konuyu açan kişi kendi teşhisini de koyuyor:

Biraz daha düşününce her parça için yönelim verisi olmadığından şüpheleniyorum; OpenSCAD'de çalışması için her parçayı tek tek getirip her birine yönelim verisi girmem gerekecek.

Bu bir tahmin ve yarısı yanlış. Veri dosyada var.

3MF çekirdek belirtiminde model dosyasının sonundaki <build> bloğu basılacak her nesne için bir <item> taşıyor. item öğesi isteğe bağlı bir transform özniteliği alabiliyor, değeri 4x4'lük bir dönüşüm matrisi. Zorunlu olan tarafı şu: matris yazılmışsa tüketicinin nesneyi çıkarmadan önce onu uygulaması gerekiyor. Plakadaki yerleşim nesnenin köşe koordinatlarına gömülü değil, o matriste duruyor. Bambu Studio da matrisi yazıyor: proje kaydeden kodda build bloğunu üreten işlev her kopya için objectid, transform ve printable basıyor, transform hiçbir koşulda atlanmıyor.

Atlayan taraf OpenSCAD. Şubat 2021'de çıkan 2021.01 sürümünün 3mf içe aktarıcısında build bloğuna hiç bakılmıyor. Kod lib3mf'ten doğrudan mesh nesnelerinin listesini istiyor, üçgenlerin köşelerini geldiği gibi kopyalıyor ve arada hiçbir matris uygulamıyor. Sonucu forumda anlatılan şey: her nesne kendi yerel sıfır noktasında açılıyor, üçü de aynı yere düşüyor.

Bu eksik 25 Aralık 2024'te geliştirme dalında kapatıldı; commit'in başlığı doğrudan bunu söylüyor: "Read build-items and transformation matrices". Ama düzeltme bir kararlı sürüme girmedi. OpenSCAD'in indirme sunucusunda en yeni kararlı sürüm hâlâ 2021.01, build maddelerini okuyan kod yalnız gecelik derlemelerde. Forumdaki konu Eylül 2024 tarihli, yani o gün hiçbir OpenSCAD sürümü bu matrisleri okumuyordu.

Proje dosyası ile jenerik 3mf farkı

Konudaki bir başka öneri şu:

bbl'nin bir de jenerik 3mf dışa aktarımı var, sana daha iyi gelebilir.

Menü gerçekten var: File > Export > Export Generic 3MF. Proje kaydıyla arasındaki ayrımı 3mf uyarısı yazısında anlattım; burada yalnız arşivin içinde ne değiştiğine bakalım, çünkü OpenSCAD'in gördüğü şey orası. Save Project ve Save Project as dosyayı 3MF Production Extension ile yazıyor: model dosyasının kök etiketine requiredextensions="p" ekleniyor ve her nesnenin üçgenleri arşivde 3D/Objects altındaki kendi model parçasına taşınıyor. Ana model dosyasında kalan nesne o parçayı p:path özniteliği taşıyan bir component satırıyla gösteriyor; build bloğundaki item yalnız nesne kimliğini ve dönüşümü tutuyor. Export Generic 3MF bu uzantıyı kullanmıyor; tek model dosyası, zorunlu uzantı ilanı yok. Belirtim bu konuda sert: bir model dosyası desteklemediğin bir zorunlu uzantı ilan ediyorsa o dosyayı işlememen gerekiyor. Proje dosyan, uzantıyı tanımayan bir programın önünde meşru biçimde kapanabilir.

Buna karşılık dürüst olalım: jenerik 3mf üst üste binmeyi çözmüyor. Jenerik dışa aktarma da yerleşimi aynı yere, build maddesinin transform özniteliğine yazıyor ve 2021.01 orayı okumuyor. Jenerik 3mf dosyanın genel okunabilirliğini artırıyor, OpenSCAD'in bu belirli eksiğini kapatmıyor.

Tek parçayı STL olarak almak

Konudaki ilk yanıt pratik yolu söylüyor:

Daha kolay bir yaklaşım, 3MF dosyanı yükleyip sağ tıklayarak modelini ayrı bir STL olarak dışa aktarmak. Sonra onu SCAD'e geri aktarabilirsin.

Bu yol Bambu Studio kaynağında birebir duruyor. Plakada tek bir nesne seçiliyken 3B görünümde ya da soldaki nesne listesinde sağ tıkladığında nesne menüsü açılıyor ve içinde Export as one STL maddesi var; madde, seçim tek bir nesne ya da tek bir kopya olduğunda etkinleşiyor. Birden çok nesne seçtiğinde açılan menü ayrı: orada Export as one STL çoklu seçim için etkinleşiyor ve yanına Export as STLs geliyor.

Üç parçayı tek tek kurtarmak istiyorsan dosya menüsünde daha kısa bir yol var: File > Export > Export all objects as STLs. Burada program sana dosya adı değil klasör soruyor ve her nesneyi kendi adıyla ayrı bir .stl olarak o klasöre yazıyor; aynı adlı dosya varsa sonuna parantez içinde sayı ekliyor.

Hemen üstündeki Export all objects as one STL bütün nesneleri kopya dönüşümleriyle birlikte birleştirip tek mesh olarak yazıyor. Yerleşim açısından ikisi arasında fark yok: çoklu dışa aktarmada da her nesne kopya dönüşümüyle yazılıyor, yani üç dosyayı üç import() satırıyla çağırdığında parçalar birbirine göre doğru yerde duruyor. Tek katı seçeneğinin farkı düzeni korumak değil, üç parçayı tek gövdede birleştirmesi; karşılığında ayrı ayrı oynatamıyorsun.

Mesh geldi, parametre gelmedi

Parçalar yerli yerine otursa bile OpenSCAD'de elde ettiğin şey bir mesh. İçe aktarıcı dosyada birden çok mesh bulduğunda hepsini birleştirip tek gövde olarak döndürüyor ve bu davranış hem 2021.01'de hem bugünkü geliştirme dalında aynı. Tek bir import() satırı sana üç ayrı nesne vermiyor; üç nesne istiyorsan üç ayrı dosya ve üç ayrı satır gerekiyor.

Düzenlenebilirlik tarafı daha da net. Şubat 2026'da aynı konuya gelen bir kullanıcı, indirdiği parametrik vida üretecinin parametrelerini değiştiremediğini yazdı; yanıt kısa:

Ne Studio ne de Handy parametrik tasarımları kullanabiliyor. STL/CAD dosyasını indir, parametreleri ayarlamak için OpenSCAD'de aç. .3mf dosyaları yalnız belirli ölçülerdeki bağlantı elemanlarının modellerini içeriyor.

3mf içinden üçgenler çıkıyor, ölçü ve parametre çıkmıyor. Tek derdin modelin boyutuysa dilimleyicide ölçeklemek genelde daha kısa yol; araçlar model çevirme yazısında.

Son bir uyarı yine forumdan:

OpenSCAD gayet iyi çalışıyor, ama internette bulacağın ve kendin üreteceğin STL'lerin yarısı bozuk olacak: dilimleyicilerde falan bir şekilde çalışıyorlar ama delikleri varsa OpenSCAD için onarman gerekiyor.

OpenSCAD belgeleri de aynı yere geliyor: içe aktarılan mesh önizlemede sorunsuz görünebilir, ama kapalı (manifold) değilse onunla bir işlem yapmaya kalktığın anda CGAL hatası alıyorsun ya da nesne çıktıdan tamamen kayboluyor. Bunu dilimleyicinin ince duvarları atlamasıyla karıştırma; o başka bir sorun ve çözümü ince duvar yazısında.

Sırayla ne yapılır

  1. Parçaları ayrı ayrı istiyorsan dilimleyiciden File > Export > Export all objects as STLs ile üç dosya al, her birini kendi import() satırıyla çağır. Plakadaki konum her dosyanın geometrisinde geliyor.
  2. Tek gövde istiyorsan Export all objects as one STL kullan; aynı düzen, ama tek katı ve parçalar ayrı oynamıyor.
  3. 3mf'te ısrar ediyorsan sürümüne bak. 2021.01 build maddelerini okumuyor, gecelik derleme okuyor.
  4. Mesh onarımını hesaba kat. Önizlemede duran model ilk boolean işleminde kaybolabiliyor.
  5. Program seçimini ayrıca düşün. Forumdaki tartışmanın büyük kısmı OpenSCAD'in doğru araç olup olmadığına kaydı; hangi programın ne işe yaradığı program yazısında duruyor.

Özetle 3mf OpenSCAD'de tek satırla açılıyor, ama açılan şey plakadaki düzen değil nesnelerin ham hâli. Dosyadan ne beklediğini bilirsen hangi dışa aktarmayı seçeceğin de belli oluyor.