- OpenSCAD kullanarak basit bir pil tutucu tasarlanırken kod tabanlı CAD'in temel kavramlarını inceleyen bir örnek
- Daha önce Autodesk Fusion ile AA·AAA piller için parametrik bir kutu yapılmıştı; bu model OpenSCAD ile yeniden uygulanarak öğrenme süreci ilerletildi
- Kodda
numRows, numColumns, batteryType gibi değişkenler değiştirilerek özelleştirilmiş tutucular üretilebiliyor ve pahalı CAD yazılımları olmadan da aynı sonuç elde edilebiliyor
difference() ve translate() kullanılarak kutu ve deliklerin tekrar tekrar oluşturulup çıkarıldığı bir yapı var; basit ama verimli bir tasarım yaklaşımı
- Karmaşık modellerde sınırlamaları olsa da, spacer, bearing drift gibi basit geometrik yapıları üretmek için kullanışlı bir araç olarak değerlendiriliyor
OpenSCAD ile pil tutucu tasarımı
- AA ve AAA piller için temel kutu tipi bir düzenleyici, Autodesk Fusion'da tasarlandıktan sonra OpenSCAD ile yeniden oluşturuldu
- Mevcut Fusion modeli, değişkenleri ayarlayarak pil boyutu ile satır ve sütun sayısını değiştirebilen parametrik bir yapıya sahip
- Tamamlanan model Printables'a yüklendi
- OpenSCAD, kod yazarak 3D nesneler oluşturan bir CAD aracı ve basit yapılı modelleri öğrenmek için uygun
- Yazar, OpenSCAD eğitimlerinin bir bölümünü referans alarak yaklaşık bir saat pratik yaptı
- Ortaya çıkan çalışma
battery_holder_generator.scad dosyası olarak paylaşıldı
Kod yapısı ve çalışma biçimi
- Başlıca değişkenler olarak
AA, AAA, heightCompartment, thicknessWall, numRows, numColumns, batteryType vb. tanımlanıyor
widthBox, lengthBox, depthBox bu değişkenlerin kombinasyonlarından hesaplanıyor
difference() fonksiyonu ile önce temel kutu (cube) oluşturuluyor, ardından içeride pil yuvaları tekrar tekrar çıkarılıyor
for döngüsü ve translate() ile deliklerin konumu hesaplanıyor, cube() ile her delik oluşturuluyor
let() kullanılarak startColumn ve startRow değerlerinin döngü içinde tanımlanması gereken kısmın kafa karıştırıcı olduğu belirtiliyor
OpenSCAD ve Fusion karşılaştırması
- Aynı model, Fusion ve OpenSCAD'de ayrı ayrı oluşturulduktan sonra slicer içinde karşılaştırıldı
- Sonuçta çıktıların neredeyse aynı olduğu görüldü; OpenSCAD, hafif kod tabanlı yaklaşımıyla hızlı değişikliklere izin veriyor
- Pahalı CAD yazılımları olmadan da aynı seviyede sonuçlar elde edilebiliyor
Kullanım alanları ve sınırlar
- Karmaşık tasarımlar için uygun olmasa da, spacer, bearing drift gibi basit geometrik yapılar üretmekte çok kullanışlı
- Günlük hayatta sık gereken basit parçaların üretimini otomatikleştirmede güçlü bir tarafı var
- OpenSCAD'in kod merkezli tasarım yaklaşımı, tekrarlı ve düzenli yapılar üretmede verimli
Sonuç
- OpenSCAD, basit 3D modelleri hızlıca oluşturabilen kod tabanlı bir CAD aracı olarak değerlendiriliyor
- Yazar bunu, “sadece bir kutu çizip delikler açmak ama oldukça hoş” diye ifade ediyor
- Gelecekte basit tasarım işlerinde Fusion'dan daha pratik olabilir
2 yorum
Ben
freecad'i şiddetle tavsiye ediyorumHacker News yorumları
OpenSCAD, programcı zihniyetine tam uyan bir CAD aracı
Her şeyi parametrik hale getirebildiğiniz için, bir kez yaptığınız proje muhafazasını sadece birkaç değişkeni değiştirerek farklı sürümlerde üretebiliyorsunuz
En güncel nightly build’de Manifold backend’i etkinleştirince render süresi dakikalardan saniyelere düşüyor
Resmi 2021 sürümü artık fazla eski olduğu için kullanması zor
BOSL2 kütüphanesi fillet, rounding, attachment gibi özellikler ekleyerek OpenSCAD’i oyuncak seviyesinden pratik bir tasarım aracına dönüştürüyor
Git dostu olması da çok iyi; Fusion 360’ın ikili dosyalarına kıyasla .scad dosyalarındaki değişiklikleri karşılaştırmak çok daha kolay
OpenSCAD’in sınırlarını hissedince Python ile SDF (signed distance function) tabanlı 3D mesh üretim kütüphanesi sdf’yi kendim yazdım
Python’ın esnek mantığını kullanarak modeller kurulabiliyor ve mevcut 3D mesh’ler içe aktarılıp erozyon, genişletme, kesme, oyma gibi işlemler yapılabiliyor
Bu projede hâlâ yapılacak çok iş var ama bu alana büyük ilgi duyduğumu düşünüyorum
STL, bir bitmap gibi üçgen koordinatlarını saklarken STEP, bir vektör çizimi gibi modeli oluşturan komutları saklıyor
GUI tabanlı CAD araçlarının çoğu STEP tabanlı olduğu için uyumlulukları iyi
Eğer SDF yalnızca STL üretiyorsa, GUI CAD ile uyumluluk açısından Build123d veya CadQuery öğrenmek daha iyi olmaz mı diye düşünüyorum
Build123d, Fusion360 ya da FreeCAD’de olduğu gibi önce 2D sketch çizip sonra 3D’ye dönüştürme yaklaşımını benimsediği için GUI ile kod tabanlı CAD arasında gidip gelmek kolay
Meshlab gibi araçlarda hata mesajları çok anlaşılmaz olduğu için başarısız olmuştum; bu yaklaşımla çalışmak çok daha sezgisel görünüyor
OpenSCAD’i yakın zamanda kullanmaya başladım; çoğu CAD sayısız özellik öğrenmenizi isterken OpenSCAD tek sayfalık bir A4 cheat sheet ile anlatılabiliyor
2021 sürümü yerine git master kullanırsanız çok daha hızlı ve güncel özelliklere sahip oluyor
BOSL2 kütüphanesi sayesinde geleneksel CAD’in karmaşık özelliklerini kendiniz uygulamak zorunda kalmıyorsunuz ve iç yapısını görebildiğiniz için öğrenmesi de keyifli
GUI CAD’de 0.25 mm’lik bir değişiklik için tüm delikleri ve cutout’ları yeniden ayarlamak gerektiğinden çok zorlanıyordum; kod tabanlı yaklaşım bu sorunu ortadan kaldırıyor
BOSL2’nin varsayılan center origin yaklaşımı sayesinde dönüşümler çok daha kolaylaşıyor
OpenSCAD’de nesne kavramı olmadığı için box1.width gibi erişimlerin mümkün olmaması üzücü
Build123d denedim ama çok hatalı ve belgeleri de yetersizdi. Umarım zamanla düzelir
OpenSCAD’in güçlü yanı; küre, silindir ve küpü matematiksel olarak birleştirerek modellemeyi kolaylaştırması
Zayıf yanı ise modellemenin sınırlarının da bu matematiksel birleştirme yaklaşımıyla belirlenmesi
Python desteği sunan PythonSCAD fork’unun yakında ana sürüme entegre edilmesi planlanıyor
Cıvata gibi bir modeli yapmak için her parçayı ayrı üretip üst üste bindirmek gerekiyor
Gerçek parçalarla hizalamak için çok fazla manuel hesap yapmak gerekiyor ve sabit kodlanmış ölçüleri değiştirmek de zor
En güncel beta sürümündeki renderer çok daha hızlı, mutlaka denenmeli
GitHub deposuna bakabilirsiniz
Hafif bir 3D modelleyici olarak OpenSCAD’in sadeliğini seviyorum
Devasa bir GUI CAD yerine, grafik programlama yapar gibi temel şekiller ve dönüşümlerle model oluşturabiliyorsunuz
Kodu uzun süre sonra yeniden açsanız bile birkaç satıra bakınca hemen anlayabiliyorsunuz
Matematiksel hesap gerektiren kısıtlarda GUI CAD’in sketch araçları çok daha basit
CAD’de adım adım geri gidip yapıyı görebiliyorsunuz; script çözümlemeye gerek kalmıyor
OpenSCAD, kendi editörü yerine harici editör kullanmanıza izin veriyor
Harici editörde kaydedince önizleme otomatik olarak yenileniyor
Harici editör ayar kılavuzu
Bir zamanlar OpenSCAD’e giriş için “10 temel kavram” adlı bir eğitim yazmıştım
Eğitim bağlantısı
İpucu:
$fndeğişkeniyle çözünürlük ayarı yapılabilir$fn = $preview ? 32 : 64;Görsel pürüzsüzlükten çok analiz doğruluğu önemli olduğu için 32–64 civarı uygun olur
Gerçekten kullanışlı modeller üretmek emek istiyor ama eksiksiz bir parametrik modeli 2 KB’lık bir metin dosyasıyla ifade edebilmek inanılmaz çekici
Git diff anlamlı şekilde çalışıyor ve customizer paneliyle modeli bir uygulama gibi ayarlayabiliyorsunuz
FreeCAD’in dev XML dosyalarına göre çok daha verimli
Ama chamfer veya rounding gibi özelliklerin yerleşik gelmemesi ve bunların cone ya da sphere ile yapılan Minkowski işlemleriyle oluşturulması can sıkıcı olabiliyor