Cửa Đi Dynamic SketchUp: Xoay Được & Thay Đổi Kích Thước

Dynamic Resizable Rotatable Door With Handle

Cửa đi Dynamic Component trong SketchUp là một trong những ứng dụng thực tế nhất của hệ thống Dynamic Components — cho phép bạn tạo ra một cánh cửa có thể mở/đóng bằng animation một click, thay đổi chiều rộng và chiều cao theo tham số, và hoán đổi mẫu cánh cửa hay tay nắm mà không cần vẽ lại từ đầu. Với thiết kế kiến trúc nội thất, đây là loại component tiết kiệm thời gian bậc nhất: thay vì duy trì hàng chục bản cửa kích thước khác nhau, bạn chỉ cần một DC duy nhất, nhập kích thước vào Component Options là xong.

Kỹ thuật cốt lõi của bài này xoay quanh ba việc: đặt gốc tọa độ (origin) đúng mép bản lề để animation RotZ xoay đúng chỗ, dùng công thức Parent!LenX/Parent!LenZ để neo chi tiết (tay nắm, bản lề) theo kích thước tổng, và lồng component đúng tầng để tránh lỗi “cửa lia” khi đổi trục. Ba kỹ thuật này không xuất hiện trong tài liệu chính thức của Trimble mà chỉ rút ra được qua thực hành — và đây là lý do nhiều người làm DC cửa xong thấy animation bị sai góc hoặc tay nắm nhảy ra ngoài cánh cửa.

Lưu ý phiên bản (2026): Dynamic Components vẫn được Trimble hỗ trợ đầy đủ trên SketchUp 2026, tương thích từ bản 2022 trở lên. Tuy nhiên, khả năng tạo và sửa DC (bảng Component Attributes) chỉ có ở SketchUp Pro và Studio (~$399/năm). Bản Free (Web) và Go chỉ dùng được DC có sẵn qua công cụ Interact — không tự dựng được. Nếu bạn đang dùng bản Free, hãy tải model mẫu ở link bên dưới; nếu muốn tự làm theo bài thì cần bản desktop Pro.

Dynamic Resizable Rotatable Door With Handle
Cửa đi Dynamic Xoay và thay đổi được kích thước trong SketchUp

Video Hướng Dẫn Vẽ Cửa Đi Dynamic Component SketchUp — Xoay & Thay Đổi Kích Thước

Tải model mẫu

Dynamic-Resizable-Rotatable-Door.skp — model đầy đủ khung + cánh + tay nắm, có thể tải về dùng ngay hoặc mổ xẻ xem công thức bên trong.

Tính Năng Nổi Bật

  • Animation mở/đóng một click — Dùng công cụ Interact (phím tắt I), bấm vào cánh cửa là cửa xoay từ 0° sang 90° rồi bấm lại về 0°. Hàm ANIMATE("RotZ", 0, 90) trên thuộc tính onClick xử lý toàn bộ vòng lặp này. Nếu muốn cửa mở chậm hơn để thấy chuyển động, thay bằng ANIMATESLOW("RotZ", 0, 90) — góc chuyển động giống hệt nhưng tốc độ giảm một nửa, phù hợp khi trình chiếu cho khách hàng.
  • Chiều rộng và chiều cao tham số hóa — Thuộc tính LenX (chiều rộng cánh) và LenZ (chiều cao) được gán vào Component Options với nhãn thân thiện như “Chiều rộng cửa” và “Chiều cao cửa”. Người dùng chỉ cần nhập số trong hộp thoại — mọi sub-component (khung, cánh, tay nắm) tự co giãn theo công thức tham chiếu tương đối, không cần kéo tay.
  • Tay nắm neo theo công thức — Vị trí tay nắm được tính bằng công thức tham chiếu Parent!LenXParent!LenZ. Khi cửa to hơn, tay nắm tự trượt sang phải hoặc lên cao đúng tỉ lệ. Đây là điểm khác biệt so với cách làm thông thường: nếu đặt tọa độ tay nắm bằng con số cố định, mỗi lần đổi kích thước cửa tay nắm sẽ nằm sai vị trí.
  • Hoán đổi mẫu cánh cửa và tay nắm — Cấu trúc component lồng nhau cho phép bạn swap nội dung bên trong mà không ảnh hưởng đến tham số tổng thể. Chỉ cần xóa geometry bên trong cánh cửa và paste mẫu mới vào — LenX/LenZ/RotZ vẫn nguyên, không cần gán lại công thức.
  • Lồng component đúng tầng để animation chạy đúng — Cánh cửa là component con nằm trong component cha (toàn bộ cửa). RotZ gán vào component con, LenX/LenZ gán vào component cha. Cấu trúc phân tầng này là bắt buộc: nếu gán tất cả vào cùng một tầng, SketchUp sẽ không phân biệt được đâu là “xoay” đâu là “kéo dãn” và sinh ra hành vi không đoán trước được.
  • Khung cửa co giãn độc lập với cánh — Khung là component riêng với LenX/LenZ tham chiếu Parent!LenX/Parent!LenZ. Điều này đảm bảo khi đổi kích thước, gap giữa khung và cánh không thay đổi (ví dụ: khung dày 5cm thì ở mọi kích thước cửa cũng vẫn 5cm), thay vì bị kéo dãn méo theo cánh.

Các Bước Thực Hiện Chi Tiết

  1. Vẽ và tạo component khung cửa
    Vẽ khung cửa (4 thanh: 2 đứng, 1 ngang trên, 1 ngưỡng dưới). Chọn toàn bộ, bấm Create Component. Vào Window → Component Attributes, thêm thuộc tính LenX với giá trị bằng chiều rộng thực đo được (ví dụ 900mm) và LenZ bằng chiều cao (2100mm). Thêm hai thuộc tính này vào Component Options với label tiếng Việt để dễ dùng.
  2. Điều chỉnh trục tọa độ khung cửa
    Đây là bước hay bị bỏ qua. Click chuột phải vào khung cửa → Change Axes. Đặt gốc ở góc dưới-trái của khung (điểm neo khi kéo dãn). Trục X chạy theo chiều rộng, trục Z chạy theo chiều cao. Nếu gốc không ở đúng vị trí, cửa sẽ “nhảy” khi bạn thay đổi LenX.
  3. Vẽ và tạo component cánh cửa — đặt trục tại mép bản lề
    Vẽ tấm cánh cửa (geometry 2D hoặc 3D tùy mức chi tiết). Chọn, Create Component. Quan trọng: Trước khi gán bất kỳ thuộc tính nào, dùng Change Axes đặt gốc tọa độ của component cánh cửa về đúng cạnh bản lề (mép trái hoặc phải tùy chiều mở). Đây là điểm xoay cho RotZ — nếu để gốc ở giữa tấm cánh, cửa sẽ xoay quanh tâm thay vì quanh bản lề.
  4. Lồng cánh cửa vào component trung gian (bước tránh lỗi animation)
    Chọn component cánh cửa vừa tạo, bọc thêm một component cha nữa (Create Component lần hai). Đổi trục của component cha này về cùng vị trí mép bản lề. Gán RotZonClick vào component bên trong (cánh thật), KHÔNG phải component bọc ngoài. Pattern lồng này là cách duy nhất để SketchUp xử lý đúng đồng thời cả animation xoay lẫn tham số kích thước mà không sinh ra giá trị góc nền lệch (vd -180°).
  5. Gán thuộc tính animation cho cánh cửa
    Trong Component Attributes của cánh cửa bên trong, thêm thuộc tính RotZ với giá trị khởi tạo 0 (cửa đóng). Thêm thuộc tính onClick với giá trị ANIMATE("RotZ", 0, 90). Thử ngay: đóng Component Attributes, chọn công cụ Interact, bấm vào cánh cửa — cửa phải xoay 90° quanh đúng mép bản lề.
  6. Tạo component cha bao toàn bộ (khung + cánh)
    Chọn cả khung lẫn cánh cửa, Create Component lần cuối. Đặt gốc của component cha ở góc dưới-trái khung (điểm đặt khi insert vào bản vẽ). Thêm thuộc tính LenXLenZ vào component cha này — đây là nơi người dùng cuối sẽ nhập kích thước.
  7. Gán công thức co giãn cho khung và cánh theo Parent
    Vào Component Attributes của khung (double-click để chỉnh sub-component): đổi giá trị LenX của khung thành công thức =Parent!LenXLenZ thành =Parent!LenZ. Tương tự cho cánh cửa: LenX của cánh thường bằng =Parent!LenX - 10mm (trừ đi độ dày khung hai bên).
  8. Thêm tay nắm và neo vị trí bằng công thức
    Tay nắm thường lấy từ 3D Warehouse hoặc vẽ sẵn. Quan trọng là đừng tích hợp tay nắm ngay từ đầu (dễ làm lệch tọa độ gốc của cánh). Sau khi animation và co giãn kích thước đã chạy đúng, mới kéo tay nắm vào. Trong Component Attributes của tay nắm, đặt thuộc tính vị trí X = =Parent!LenX * 0.85 (85% chiều rộng từ bản lề) và Z = =Parent!LenZ * 0.5 (giữa chiều cao). Con số 0.85 và 0.5 là ví dụ — điều chỉnh theo thiết kế cụ thể.

Mẹo Sử Dụng Hiệu Quả

  • Dùng ANIMATESLOW khi demo cho khách hàng
    ANIMATE mặc định xoay nhanh, có thể không nhận ra đang “mở cửa”. Khi trình bày, đổi sang ANIMATESLOW("RotZ", 0, 90) — chuyển động kéo dài khoảng 2 giây, khách hàng thấy ngay đây là cửa hoạt động thật sự. Sau demo có thể đổi lại ANIMATE cho workflow hàng ngày.
  • Mở cửa nhiều góc: thêm step vào ANIMATE
    Hàm ANIMATE nhận nhiều hơn 2 giá trị: ANIMATE("RotZ", 0, 45, 90) sẽ tạo ba trạng thái (đóng → nửa mở → mở hẳn), bấm Interact lần lượt qua ba trạng thái. Dùng cho cửa đôi hoặc khi muốn thể hiện góc mở khác nhau trong cùng một component.
  • Kiểm tra trục ngay khi component vừa tạo, trước khi gán công thức
    Lỗi phổ biến nhất là gán LenX/RotZ rồi mới phát hiện trục sai, rồi dùng Change Axes để sửa — lúc này SketchUp thường reset các giá trị thuộc tính hoặc sinh ra offset lạ. Đúng thứ tự: (1) tạo geometry, (2) set trục, (3) rồi mới gán thuộc tính DC.
  • Dùng “Scale Definition” sau khi thay đổi kích thước lớn
    Sau khi kéo dãn component đến kích thước chuẩn (ví dụ cửa phòng ngủ tiêu chuẩn 800mm × 2000mm), click chuột phải → Scale Definition. Điều này “đặt lại” kích thước gốc của component về đúng 800×2000, tránh việc SketchUp lưu một “scale factor” ẩn có thể gây lỗi khi bạn nhập lại kích thước sau này.
  • Tách tay nắm thành component riêng hoàn toàn độc lập với DC
    Nếu tay nắm có geometry phức tạp (nhiều mặt, nhiều chi tiết), đừng gán LenX/LenY cho nó — chỉ gán tọa độ vị trí X/Y/Z. Lý do: SketchUp cố gắng kéo dãn tay nắm theo LenX của parent → méo hình. Chỉ gán vị trí, còn hình dạng giữ nguyên bằng cách đặt ScaleTool = hidden trong Component Attributes (ẩn scale handles để người dùng không vô tình kéo dãn tay nắm).

Yêu Cầu Hệ Thống

  • SketchUp Pro hoặc Studio — phiên bản 2022 trở lên (Windows và macOS). Cần Pro/Studio để tạo và sửa Component Attributes. Bản Free (Web) và Go chỉ dùng được DC có sẵn qua Interact Tool.
  • Plugin Dynamic Components — đã tích hợp sẵn trong SketchUp Pro, không cần cài thêm. Kích hoạt qua Window → Extension Manager nếu chưa thấy bảng Component Attributes.
  • Windows 10/11 hoặc macOS 12+ — theo yêu cầu tối thiểu của SketchUp 2022+.
  • RAM tối thiểu 4GB — DC cửa đơn giản không nặng, nhưng file kiến trúc đầy đủ với nhiều DC phức tạp cần 8GB+ để mượt.
Nguyen Huu Khanh

Architect turned developer