2 puan yazan GN⁺ 2025-11-25 | 1 yorum | WhatsApp'ta paylaş
  • µcad, Rust ile geliştirilmiş, kodla 2D eskizler ve 3D nesneler tanımlayıp bunları STL·SVG olarak dışa aktarabilen açık kaynaklı bir CAD programlama dili ve metin tabanlı geometri sistemi
  • Dilin merkezinde parametrik geometrik nesneler yer alıyor; temel şekiller Boolean işlemleriyle birleştirilerek karmaşık formlar oluşturuluyor ve 3D baskı·CNC işleme formatlarında render ediliyor
  • Statik bir tip sistemi ve birim tabanlı Quantity literalleri kullanarak modeller 50mm, 10°, 50% gibi değerlerle tanımlanabiliyor; ayrıca geometrik model ağacını kurmak için Models tipi sunuluyor
  • Modüller·fonksiyonlar·part workbench'i·use ifadesi, std::geo2d·std::geo3d gibi standart kütüphaneler ve TOML verisini içe aktaran std::import özelliği sayesinde yeniden kullanılabilir tasarım kodu ve veri odaklı modelleme kurulabiliyor
  • Programlama yaklaşımıyla CAD iş akışı isteyen kullanıcıların inceleyebileceği bir proje; örnekler, dokümantasyon ve canlı kodlama materyalleri birlikte sunuluyor

µcad genel bakış

  • µcad, 2D eskizleri ve 3D nesneleri kodla tanımlayıp üreten açık kaynak bir CAD programlama dili
    • Temel kavram parametrik geometrik modelleme
  • Temel şekilleri birleştirerek karmaşık formlar oluşturabilir, sonucu STL·SVG olarak render edip 3D baskı veya CNC çalışmalarında kullanabilirsiniz

Dil tasarımı ve modelleme yaklaşımı

  • µcad, parametreli geometrik tanımları merkeze alarak model yapısını kuran bir parametrik modelleme dili
    • Şekiller kodla tanımlanır ve yalnızca parametreleri değiştirerek farklı varyasyonlar üretilebilir
  • Sphere, Cube, Cylinder gibi nesneler Boolean birleşimleriyle sentezlenir; revolve·dizi·dönüşüm işlemleriyle 3D formlar oluşturulur
  • CsgCube·Spirograph·Gears·Dome gibi örnekler üzerinden 2D eskiz tabanlı 3D üretim, tekrar eden yapıların oluşturulması ve dişli profilleri gibi farklı modelleme kalıpları gösteriliyor

Tip sistemi ve birim literalleri

  • µcad statik bir tip sistemi kullanır ve değişkenler değiştirilemezdir
  • Quantity tipi sayesinde mm, °, % birimleri doğrudan model oluşturmada kullanılabilir
    • 10°·4m²·50% gibi gösterimler doğrudan model parametresi olarak kullanılabilir
  • Models tipi, geometrik model ağacını ifade eden bir yapı olup kod tabanlı CAD modelinin düğüm yapısını taşır

Modül sistemi ve standart kütüphaneler

  • mod, use, fn, part gibi yapılarla modül düzeni kurularak büyük tasarımlar birden fazla kod birimine ayrılabilir
  • std::geo2d, std::geo3d, std::math, std::ops gibi standart kütüphaneler geometri işlemleri·matematik·matrisler·eskiz oluşturmayı destekler
  • part, eskiz ve 3D parçalar oluşturup dönüştürmek için kullanılan birimdir

Veri içe aktarma ve hata ayıklama

  • std::import ile TOML dosyalarından parametreler alınarak modele yansıtılabilir
    • Hazır parça ölçülerini ve standartlarını modele kolayca enjekte etme yöntemi
  • std::debug::assert_eq gibi araçlarla içe aktarılan değerler doğrulanabilir

Araç zinciri ve kurulum

  • Rust tabanlı CLI aracı microcad-cli ile modeller çalıştırılabilir ve render alınabilir
    • Kurulum: cargo install microcad-cli
    • Şu anda alfa aşamasında ve işlevler eklenmeye devam ediyor
  • microcad-viewer ile render sonuçları görselleştirilebilir
  • Geliştirme codeberg.org üzerindeki depoda sürdürülüyor ve dağıtım crates.io üzerinden yapılıyor

Örnekler ve canlı kodlama materyalleri

  • Spirograph, Lego Bricks, Gears, Dome gibi çeşitli örnekler resmî blogda yayımlanmış durumda
    • Dişli profili üretimi, spirograph modelleme, kubbe yapısı oluşturma gibi programlamalı CAD kullanım örnekleri sunuluyor
  • Tüm örnekler, dilin kullanım biçimini adım adım anlamayı sağlayacak şekilde kod ve canlı kodlama videolarıyla birlikte sunuluyor

Proje durumu

  • Proje erken aşamada ve genişlemeyi sürdürüyor
  • “The µcad book” dokümantasyon çalışmasıyla dilin tamamı sistemli biçimde belgeleniyor

1 yorum

 
GN⁺ 2025-11-25
Hacker News yorumları
  • Web sitesinden ve örneklerden LEGO ifadesi kaldırılmalı
    LEGO, marka koruması konusunda çok katıdır ve üçüncü tarafların bu adı kullanmasını istemez
    Bunun nedeni, markanın jenerikleşip ticari marka hakkını kaybetme riskinden endişe etmeleridir
    İlgili haber: "Lego sues Dutch firm over anti-terror blocks using name and shape" (archive bağlantısı)

  • Ana sayfanın ilk ekranında basit bir kod örneği ve üretilen eskizin doğrudan gösterilmesi iyi olurdu

  • zoo ve onun dili KCL ile boundary representation (BREP) tabanlı CAD yazıyordum
    µcad de aynı amaca sahip gibi görünüyor
    Kişisel olarak KCL'nin pipeline yaklaşımını daha çok beğeniyorum
    Ancak zoo'nun yalnızca bulut tabanlı bir kernel dayatması, ciddi bir vendor lock-in sorunu yaratıyor ve bundan hoşlanmıyorum
    µcad'in bunu nasıl çözdüğü ise henüz net değil

  • OpenSCAD'in en iyi yanı, kodu kaydettikten hemen sonra sonucu 3D görünümde anında görebilmeniz
    ucad'de de böyle anlık bir iş akışının mümkün olup olmadığını merak ediyorum

    • Bu anlık deneyim, GPU'nun stencil buffer özelliğini kullanan OpenCSG sayesinde mümkün oluyor (opencsg.org)
      Gerçek 3D kesişim hesapları yapmadan, 2D ekrana hızlı çizim yapılmasını sağlıyor
      OpenSCAD bunu AST ile soyutlayarak OpenCSG, CGAL, Manifold gibi farklı motorlara iletebilir hale getirdi
      Teorik olarak her türlü CAD bunu uygulayabilir, ancak uygulaması zordur
    • VS Code'da önizleme yapabilen bir eklenti var gibi görünüyor (ilgili belge)
    • Ayrı bir viewer/preview özelliği geliştiriliyor ve Prototype Fund desteği aldığı söyleniyor
  • OpenSCAD ve CadQuery kullandım ama arayüz ve kernel kısıtları nedeniyle rahatsız ediciydi
    Onshape veya Fusion 360 ile karşılaştırıldığında özellikleri yetersiz kalıyor
    FreeCAD de çok gelişti ama hâlâ başlangıç ve orta seviye kullanıcılar için kullanması zor
    Açık kaynak CAD'in bir gün gerçekten düzgün bir alternatif olmasını umuyorum

    • OpenSCAD'in güçlü yanı programatik modelleme yapabilmesi, zayıf yanı ise matematiksel düşünme gerektirmesi
      Fornjot gibi yeni kernel'ler deneyen projeler de var
    • GUI tabanlı araç istiyorsanız SolveSpace veya Dune3D önerilir
    • FreeCAD'in yeni arayüzü ve OpenSCAD entegrasyonlu sürümü de oldukça iyi
    • Ama 2020'den beri kullanan biri olarak söyleyebilirim ki temel sorunlar hâlâ aynı; sadece renderer biraz daha hoş görünüyor
  • Bu projede bir constraint solver yok ya da buna dair planlar belgelenmemiş
    Basit kısıtlar için sürekli trigonometrik hesapları elle sürdürmek istemiyorum

  • Lego brick eğitimi gibi web notebook ortamında doğrudan çalıştırılabilen bir sürümün olmaması üzücü
    MachineBlocks'un SCAD hızlandırılmış kursu gibi, kurulum olmadan denenebilen bir biçim güzel olurdu

  • Bunun AutoCAD'e alternatif sayılabilecek bir şey olup olmadığını merak ediyorum
    Revit vb. araçlara aktarımı mümkün kılacak dosya formatı uyumluluğu da var mı, bilmek isterim

  • Gerçekten ilginç bir proje
    CAD ile elle uğraşmaktan hoşlanmayan bir programcı olarak bu yaklaşım çok daha sezgisel geliyor
    Yine de gear örneğine bakınca, kütüphanenin temel primitiflerini anlamak için belgeleri dikkatle okumak gerekecek gibi
    Topluluk büyüdükçe daha fazla şeklin ekleneceğini düşünüyorum

  • İterasyonu iyi destekleyen bir CAD dili arıyordum
    Kendi evimi tasarlarken, duvar üretim detaylarını loop tabanlı kodla otomatikleştirebilmenin güzel olacağını düşünmüştüm
    Ama for döngüsü olmayınca bu tür işler fazla zorlaşıyor ve sonunda vazgeçtim

    • FreeCAD'de BIM (Yapı Bilgi Modellemesi) özellikleri var, bu yüzden mimari tasarım için uygun
    • Yinelemeli yapılar istiyorsanız build123d uygun olabilir