Module 9 — Digital Fabrication
Thời lượng: ~6 giờ · Độ khó: Trung bình–Nâng cao
Mục tiêu: Xuất model từ GH sang CNC/laser cut/3D print với quy trình tự động hóa đánh số, nesting và bill of materials.
9.1 — Unroll Surfaces (Trải Phẳng)
Unroll = biến bề mặt 3D thành hình phẳng 2D để cắt CNC hoặc laser.
Chỉ developable surfaces (hình trụ, hình nón, ruled surface giữa 2 đường thẳng song song) mới unroll chính xác. Double-curved surfaces (sphere, dome) không thể unroll mà không có biến dạng.
Unroll trong GH
Component: Unroll Surface (nằm trong Surface > Analysis)
Input:
- Brep/Surface (S) → surface cần trải
- Curves (C) → các đường trên surface (fold lines, edges)
Output:
- Surfaces (S) → surface đã trải
- Curves (C) → các đường tương ứng đã trải
Lưu ý:
- Cần Join các faces liên tiếp trước khi Unroll
- Mỗi "strip" của cylindrical surface nên unroll riêng
Kiểm tra sai số
Sau khi Unroll:
Area gốc 3D vs Area phẳng 2D → nên bằng nhau
Nếu khác nhau nhiều → surface có double curvature → cần approximate
Trải Double-Curved Approximation
Với dome/vault:
1. Chia nhỏ thành nhiều panels (Isotrim)
2. Mỗi panel nhỏ → approximated as developable
3. Unroll từng panel → chấp nhận sai số nhỏ
4. Hoặc dùng PanelingTools ptUnrollFace (tự động hóa)
9.2 — Waffle Structure (Slot Joint)
Waffle = hệ lưới tấm phẳng cắt nhau bằng slot joints — phổ biến trong mô hình kiến trúc và interior.
Logic Waffle
1. Solid/Surface gốc
2. Cắt bằng mặt phẳng theo hướng X → X-ribs
3. Cắt bằng mặt phẳng theo hướng Y → Y-ribs
4. Tại giao điểm: tạo slot notch (chiều sâu = nửa chiều cao rib)
5. Unroll tất cả ribs → phẳng để cắt laser
Implementation trong GH
Step 1: Cutting planes
Series (Start, Step, Count) → X positions
Unit X × X positions → Move reference plane → list of XZ planes
Brep|Plane → tất cả X-ribs curves
Loft hoặc Extrude curves → X-rib surfaces
Tương tự cho Y-ribs
Step 2: Notches
Giao điểm X-rib vs Y-rib:
- Brep|Brep intersection → list of lines
- Tại mỗi giao điểm: Extrude slot (width = material thickness + tolerance)
- Boolean Difference: rib - slot → rib với notch
Step 3: Unroll
Unroll mỗi rib (chúng là planar surfaces)
[Ảnh: Waffle model 3D → từng rib tách rời → rib đã có notches → flat layout]
9.3 — 3D Print Preparation
STL Export từ GH
Component: Mesh → bake thành Rhino
Trong Rhino: Export → .stl
GH Workflow chuẩn bị:
1. Đảm bảo geometry là Closed Solid Mesh
2. Mesh Repair (nếu cần)
3. Check: Mesh Naked Edges → phải = 0
4. Combine Meshes (nếu nhiều parts) hoặc giữ riêng (nếu cần support riêng)
Scale kiểm tra
Scale to Print Size:
Slider: Print Scale (1:50, 1:100, ...)
Scale component → geometry tương ứng
Volume → kiểm tra thể tích → ước tính thời gian in
9.4 — Nesting (Sắp Xếp Tấm Cắt)
Nesting = sắp xếp các tấm phẳng sau khi Unroll vào sheet vật liệu để tối ưu hóa lãng phí.
Manual Nesting trong GH
Pack Rectangles (Bounding Box approach):
1. Bounding Box của mỗi Unrolled surface
2. Bin Pack 2D: sắp xếp vào sheet size (1220×2440mm)
3. Move mỗi surface theo packed position
4. Export layout → DXF/PDF
Thêm Cut Lines và Sheet Border
Rectangle (Sheet size: 2440×1220)
All Unrolled Surfaces + Rectangle → 2D layout
Export: File → Export Selected → .dxf
9.5 — Panel Numbering Tự Động (Text Tag 3D + Bill of Materials)
Tự Động Đánh Số Panels
Component: Text Tag 3D (hoặc Cyclops Text nếu đã có)
Input:
- Text → "Panel " + Item Index (bằng Concatenate)
- Plane → center plane của mỗi panel
- Size → font size
Kết quả: Mỗi panel có nhãn số tự động
Bake text → nhãn xuất hiện trong Rhino
Bill of Materials (BOM) CSV
GH → Excel/CSV tự động:
Data columns (dùng Panel component với merge):
- Panel ID: "P" + index (Concatenate)
- Width: từ Bounding Box
- Height: từ Bounding Box
- Area: từ Area component
- Material: từ slider hoặc cố định
Gộp thành CSV string:
Concatenate: ID + "," + Width + "," + Height + "," + Area
Panel (multiline) → tất cả rows
Dùng Script component (Python/C#) để ghi ra .csv:
Python script:
import rhinoscriptsyntax as rs
rows = x # list of CSV rows
with open(r"C:\output\BOM.csv", "w") as f:
f.write("ID,Width,Height,Area\n")
for row in rows:
f.write(row + "\n")
[Ảnh: 3D model với Text Tag 3D numbers + 2D nested layout + BOM CSV preview]
Bài tập Module 9 — Mô Hình Vỏ Pavilion 1:50
Đề bài: Chuẩn bị tất cả output để in mô hình tỷ lệ 1:50 của dome pavilion.
Input: Dome parametric từ Module 5 (cơ bản) hoặc vòm tự thiết kế
Tasks:
1. Waffle Structure:
- 8 X-ribs + 8 Y-ribs
- Slot width = 3mm (cardboard 3mm)
- Slot depth = 50% chiều cao rib
- Unroll tất cả ribs
2. Panel skin (phần mái):
- Chia dome thành 32 panels (LunchBox Diamond hoặc Isotrim)
- Kiểm tra tính developable
- Unroll panels (PanelingTools hoặc native Unroll)
3. Numbering:
- X-ribs: "XR-01" → "XR-08"
- Y-ribs: "YR-01" → "YR-08"
- Panels: "P-01" → "P-32"
4. Nesting Layout:
- Sheet A1 (841×594mm) × 3 sheets
- Sắp xếp ribs vào sheet 1+2, panels vào sheet 3
5. BOM:
- CSV cho tất cả panels (ID, Width, Height, Area)
- Tổng diện tích (để tính vật liệu cần mua)
Liên kết kiến thức
Nền tảng cần nắm
Chủ đề liên quan