Di Balik Layar
Bagaimana sistem CAD Solar Proa bekerja.
Desain Parametrik
Semua desain kapal dibuat menggunakan pemodelan CAD parametrik - geometri didefinisikan oleh parameter (dimensi, sudut, posisi) daripada bentuk tetap. Ini berarti:
- Ubah satu parameter, perbarui seluruh model - Menyesuaikan panjang lambung secara otomatis menskalakan tiang, balok silang, dan tali-temali
- Beberapa konfigurasi dari satu sumber - Model dasar yang sama menghasilkan konfigurasi beaching, close-haul, broad reach, dan pelayaran lainnya
- Transparansi desain - Setiap dimensi dapat dilacak ke nilai parameter
Sistem menggunakan FreeCAD (CAD sumber terbuka) dengan skrip Python yang membaca file parameter, membangun geometri 3D, dan mengekspor render dan file CAD.
Pipeline Build
Proses build mengubah file parameter menjadi output siap-website melalui serangkaian tahap:
Grafik ketergantungan dihasilkan otomatis dari Makefile
Deskripsi tahap:
| Tahap | Input | Output | Deskripsi |
|---|---|---|---|
| parameter | JSON Kapal + JSON Konfigurasi | Parameter gabungan | Menggabungkan dimensi kapal dengan konfigurasi layar (shipshape + plugin proyek) |
| design | Parameter | Model FreeCAD (.FCStd) | Membangun geometri 3D dari parameter |
| mass | Design (FreeCAD) | JSON properti massa | Menghitung volume, massa, dan daya apung (shipshape) |
| color | Design (FreeCAD) | Design berwarna | Menerapkan material dan warna untuk rendering |
| buoyancy | Design (FreeCAD), Properti massa | Properti daya apung | Mencari pose keseimbangan menggunakan iterasi Newton-Raphson (shipshape) |
| gz | Design (FreeCAD), Daya apung | JSON kurva GZ + PNG | Menghitung kurva lengan pemulih pada berbagai sudut kemiringan (shipshape) |
| render | Design berwarna (FreeCAD) | Gambar PNG | Menghasilkan tampilan isometrik, atas, depan, kanan |
| step | Model FreeCAD | File STEP | Mengekspor format CAD universal |
| validate | Parameter, Massa, GZ | JSON validasi | Validasi struktural: aka, tiang, tulang belakang, analisis terbalik |
Konfigurasi
Setiap konfigurasi pelayaran didefinisikan oleh file JSON yang menentukan sudut layar, rotasi rig, dan parameter dinamis lainnya:
constant/configuration/
├── beaching.json # Layar turun, di pantai
├── beamreach.json # Berlayar melintang angin
├── broadreach.json # Berlayar searah angin
├── closehaul.json # Berlayar melawan angin
├── closehaulreefed.json # Cuaca buruk
└── goosewing.json # Berlari searah angin
Sistem build menghasilkan semua kombinasi kapal × konfigurasi secara otomatis.
Konfigurasi saat ini:
Konfigurasi sandar pantai - kapal di darat dengan layar turun dan kemudi diangkat
Berlayar melintang angin
Berlayar searah angin
Berlayar melawan angin
Layar dikecilkan untuk cuaca buruk
Berlari searah angin
Otomatisasi
Setiap push ke branch utama memicu workflow GitHub Actions yang:
- Membangun semua model FreeCAD untuk setiap kombinasi kapal × konfigurasi
- Menghasilkan render (gambar PNG dari berbagai sudut kamera)
- Mengekspor file STEP untuk pertukaran CAD
- Menghitung properti massa dan memvalidasi daya apung
- Membangun situs Jekyll dengan semua aset yang dihasilkan
- Mendeploy ke GitHub Pages di solarproa.org
Ini memastikan website selalu mencerminkan kondisi terkini dari model CAD - render, spesifikasi, dan unduhan tidak pernah tidak sinkron.
Struktur Repositori
Kode spesifik desain berada di repo ini. Analisis yang tidak bergantung pada desain kapal tertentu (penggabungan parameter, massa, daya apung, kurva GZ) disediakan oleh pustaka shipshape. Validasi struktural berada di src/structural/.
solar-proa/
├── constant/
│ ├── boat/ # File parameter kapal (rp1.json, rp2.json, rp3.json)
│ ├── configuration/ # Konfigurasi pelayaran
│ └── material/ # Properti material (densitas, warna)
├── src/
│ ├── parameter/ # Perhitungan parameter turunan khusus SolarProa
│ ├── design/ # Pembangun model FreeCAD (central, mirror, rotation)
│ ├── color/ # Aplikasi material dan warna
│ ├── render/ # Generasi render
│ ├── step/ # Ekspor STEP
│ ├── lines/ # Generasi rencana garis
│ ├── structural/ # Validasi struktural (aka, tiang, tulang belakang, capsize)
│ └── buoyancy_design/ # Penempatan keseimbangan di FreeCAD
├── artifact/ # Output yang dihasilkan (model, render, data)
├── docs/ # Sumber website Jekyll
└── Makefile # Orkestrasi build
Alat & Teknologi
- FreeCAD 1.0 - CAD parametrik sumber terbuka
- Python 3 - Scripting dan otomatisasi
- shipshape - Pustaka rekayasa kelautan independen (parameter, massa, daya apung, GZ)
- GNU Make - Orkestrasi build dan pelacakan ketergantungan
- Jekyll - Generasi situs statis
- GitHub Actions - Pipeline CI/CD
- Graphviz - Visualisasi grafik ketergantungan
Sumber Terbuka
Seluruh proyek adalah sumber terbuka di bawah Lisensi Apache 2.0.
Repositori GitHub: github.com/shipshape-marine/solar-proa
Kontribusi, umpan balik, dan fork sangat diterima.
| ← Kembali ke Beranda | Lihat RP1 → | Lihat RP2 → | Lihat RP3 → |