2 poin oleh GN⁺ 2025-11-25 | 1 komentar | Bagikan ke WhatsApp
  • µcad adalah bahasa pemrograman untuk CAD open-source yang diimplementasikan dengan Rust, serta merupakan sistem geometri berbasis teks yang mendefinisikan sketsa 2D dan objek 3D lewat kode lalu mengekspornya ke STL·SVG
  • Di pusat bahasanya terdapat objek geometri parametrik, dengan struktur yang menggabungkan bentuk dasar melalui operasi boolean untuk membuat bentuk kompleks dan merendernya ke format untuk pencetakan 3D·pemesinan CNC
  • Menggunakan sistem tipe statis dan literal Quantity berbasis satuan untuk mendefinisikan model dengan nilai seperti 50mm, 10°, 50%, serta menyediakan sistem tipe yang menyusun pohon model geometri melalui tipe Models
  • Melalui modul·fungsi·workbench part·sintaks use, pustaka standar seperti std::geo2d·std::geo3d, serta fitur std::import untuk mengambil data TOML, µcad membangun kode desain yang dapat digunakan ulang dan pemodelan berbasis data
  • Ini adalah proyek yang dapat dijadikan referensi oleh pengguna yang menginginkan alur kerja CAD bergaya pemrograman, dengan contoh·dokumentasi·materi live coding yang disediakan bersama

Ikhtisar µcad

  • µcad adalah bahasa pemrograman CAD open-source untuk mendefinisikan dan membuat sketsa 2D serta objek 3D lewat kode
    • Konsep intinya adalah pemodelan geometri parametrik
  • Dengan menggabungkan bentuk dasar untuk membuat bentuk kompleks, hasilnya dapat dirender ke STL·SVG untuk digunakan dalam pencetakan 3D atau pekerjaan CNC

Desain bahasa dan pendekatan pemodelan

  • µcad adalah bahasa pemodelan parametrik yang menyusun struktur model dengan definisi geometri berparameter sebagai pusatnya
    • Bentuk dideklarasikan lewat kode, dan berbagai variasi dapat dibuat hanya dengan mengubah parameternya
  • Sphere, Cube, Cylinder dan lainnya dapat disintesis melalui kombinasi boolean, lalu membentuk geometri 3D melalui revolve, array, dan transformasi
  • Melalui contoh seperti CsgCube·Spirograph·Gears·Dome, µcad menunjukkan berbagai pola pemodelan seperti pembuatan 3D berbasis sketsa 2D, pembuatan struktur berulang, dan profil roda gigi
Iklan

Sistem tipe dan literal satuan

  • µcad menggunakan sistem tipe statis dan variabel bekerja secara immutable
  • Melalui tipe Quantity, satuan seperti mm, °, % dapat digunakan langsung untuk menyusun model
    • Notasi seperti 10°·4m²·50% dapat dipakai apa adanya sebagai parameter model
  • Tipe Models adalah struktur yang merepresentasikan pohon model geometri, memuat struktur node dari model CAD berbasis kode

Sistem modul dan pustaka standar

  • Dengan komposisi modul menggunakan mod, use, fn, part, rancangan besar dapat dipecah menjadi beberapa unit kode
  • Pustaka standar seperti std::geo2d, std::geo3d, std::math, std::ops mendukung operasi geometri·matematika·matriks·penyusunan sketsa
  • part digunakan sebagai unit untuk membuat dan mentransformasikan sketsa serta part 3D

Impor data dan debugging

  • Dengan std::import, parameter dapat diambil dari file TOML lalu diterapkan ke model
    • Cara ini memudahkan memasukkan spesifikasi komponen siap pakai ke dalam model
  • Nilai yang diimpor dapat diverifikasi menggunakan std::debug::assert_eq dan sejenisnya
Iklan

Toolchain dan instalasi

  • Menjalankan dan merender model dilakukan dengan alat CLI berbasis Rust microcad-cli
    • Instalasi dengan cargo install microcad-cli
    • Saat ini masih berada pada tahap alpha dan fitur terus ditambahkan
  • Hasil render dapat divisualisasikan melalui microcad-viewer
  • Pengembangan repositori berlangsung di codeberg.org dan distribusinya melalui crates.io

Contoh dan materi live coding

  • Berbagai contoh seperti Spirograph, Lego Bricks, Gears, Dome dipublikasikan di blog resmi
    • Menyediakan contoh penggunaan CAD pemrograman seperti pembuatan profil roda gigi, pemodelan spirograph, dan pembuatan struktur kubah
  • Semua contoh disediakan bersama kode dan video live coding sehingga cara penggunaan bahasa dapat dipahami secara bertahap

Status proyek

  • Proyek ini masih dalam tahap awal dan terus dikembangkan
  • Dokumentasi “The µcad book” sedang disusun untuk menata keseluruhan bahasa secara sistematis

1 komentar

 
GN⁺ 2025-11-25
Komentar Hacker News
  • Penyebutan LEGO sebaiknya dihapus dari situs web dan contoh
    LEGO sangat ketat dalam melindungi merek dagang, dan tidak ingin pihak ketiga menggunakan namanya
    Alasannya, mereka khawatir mereknya menjadi kata umum dan kehilangan hak merek dagang
    Artikel terkait: "Lego sues Dutch firm over anti-terror blocks using name and shape" (tautan archive)

  • Akan bagus jika halaman depan situs langsung menampilkan contoh kode sederhana dan sketsa yang dihasilkan

  • Saya telah menulis CAD berbasis boundary representation (BREP) menggunakan zoo dan bahasanya, KCL
    Sepertinya µcad juga punya tujuan yang sama
    Secara pribadi saya lebih menyukai gaya pipeline di KCL
    Namun, saya kurang suka karena zoo memaksa kernel khusus cloud sehingga ketergantungan vendor-nya tinggi
    Masih belum jelas bagaimana µcad menyelesaikan masalah ini

  • Hal terbaik dari OpenSCAD adalah setelah menyimpan kode, kita bisa langsung melihat hasilnya secara instan di tampilan 3D
    Saya penasaran apakah workflow seinstan ini juga memungkinkan di ucad

    • Keinstanan ini dimungkinkan oleh OpenCSG yang menggunakan stencil buffer GPU (opencsg.org)
      Metodenya menggambar cepat ke layar 2D tanpa menghitung irisan 3D yang sebenarnya
      OpenSCAD mengabstraksikan struktur ini sebagai AST agar bisa dikirim ke berbagai engine seperti OpenCSG, CGAL, dan Manifold
      Secara teori, CAD apa pun bisa diimplementasikan, tetapi tingkat kesulitannya tinggi
    • Sepertinya ada plugin yang memungkinkan pratinjau di VS Code (dokumentasi terkait)
    • Fitur viewer/preview terpisah sedang dikembangkan, dan katanya mendapat dukungan dari Prototype Fund
  • Saya pernah memakai OpenSCAD dan CadQuery, tetapi terasa tidak nyaman karena keterbatasan UI dan kernel
    Dibandingkan Onshape atau Fusion 360, fiturnya masih kurang
    FreeCAD juga sudah banyak berkembang, tetapi tetap sulit digunakan bagi pengguna tingkat pemula hingga menengah
    Saya berharap CAD open source suatu hari bisa menjadi alternatif yang benar-benar layak

    • Kelebihan OpenSCAD adalah bisa melakukan pemodelan secara terprogram, sedangkan kekurangannya adalah butuh cara berpikir matematis
      Ada juga proyek seperti Fornjot yang mencoba kernel baru
    • Jika menginginkan alat berbasis GUI, saya merekomendasikan SolveSpace atau Dune3D
    • UI baru FreeCAD dan versi dengan integrasi OpenSCAD juga cukup bagus
    • Namun, dari sudut pandang pengguna sejak 2020, masalah dasarnya masih sama, hanya renderernya yang sedikit lebih enak dilihat
  • Proyek ini tampaknya belum memiliki solver Constraint, atau setidaknya rencananya belum didokumentasikan
    Saya ingin menghindari harus menjaga perhitungan trigonometri secara manual hanya untuk constraint sederhana

  • Sayang sekali tidak ada versi yang bisa langsung dijalankan di lingkungan notebook web seperti tutorial Lego brick
    Akan bagus jika ada bentuk yang bisa dicoba tanpa instalasi seperti SCAD crash course milik MachineBlocks

  • Saya penasaran apakah ini lebih dekat ke pengganti AutoCAD
    Saya juga ingin tahu apakah ada kompatibilitas format file agar bisa diimpor ke Revit dan sebagainya

  • Ini proyek yang sangat menarik
    Sebagai programmer yang tidak suka mengerjakan CAD secara manual, pendekatan seperti ini terasa jauh lebih intuitif
    Namun, melihat contoh gear-nya, sepertinya kita tetap perlu membaca dokumentasi dengan saksama untuk memahami primitive dasar library
    Jika komunitasnya membesar, kemungkinan akan ada lebih banyak bentuk yang ditambahkan

  • Saya sedang mencari bahasa CAD yang mendukung iterasi dengan baik
    Saat merancang rumah tinggal sendiri, saya sempat berpikir akan bagus jika detail pembuatan dinding bisa diotomatisasi dengan kode berbasis loop
    Tetapi tanpa for loop, pekerjaan seperti ini terlalu sulit, jadi akhirnya saya menyerah

    • FreeCAD memiliki fitur BIM (Building Information Modeling) sehingga cocok untuk desain arsitektur
    • Jika menginginkan struktur berulang, build123d mungkin cocok