Bất kể ai làm quen với Dynamic Components đều gặp tình trạng mô hình nhảy lung tung, sai kích thước tỷ lệ dù bạn lập trình đúng. Đây là lỗi cực kỳ phổ biến, đặc biệt khi bạn dựng models tùy biến có độ phức tạp cao. Mình tạo ra nguyên cả bộ models dynamic cho sản xuất đồ nội thất nên thống kê lại chi tiết các lỗi và nguyên nhân.

Lỗi mô hình nhảy lung tung
Lỗi này rất nhiều lý do, đầu tiên bạn cần kiểm tra lập trình bạn có đúng ko, khi đã chắc đúng thì nguyên nhân có thể như sau:
- Đối tượng con bên trong không nhận được đúng tham số từ component cha.
- Đối tượng cha là group, ai có sử dụng plugin Abf để cắt CNC sẽ thấy rõ khi buộc phải sử dụng group trong dựng hình.
- Lỗi xảy ra khi sử dụng thuộc tính copies.
- Bạn vô tình dùng công cụ Scale (phím S) để kéo co giãn một Dynamic Component thay vì sửa trực tiếp giá trị LenX/LenY/LenZ. Khi đó SketchUp KHÔNG đổi transform của component cha — nó âm thầm reset cha về tỷ lệ 1x rồi nhồi phép biến đổi vào các đối tượng con bên trong. Kết quả là lần kéo giãn sau hoặc khi component cha tính lại, mô hình nhảy về sai vị trí. Quy tắc bất di bất dịch: với DC chỉ chỉnh kích thước bằng ô LenX/LenY/LenZ trong bảng thuộc tính, không bao giờ chạm công cụ Scale lên nó.
Lỗi kích thước thực tế không đúng như lập trình:
Đây là lỗi siêu phổ biến nhất là khi bạn ít kinh nghiệm vẽ dynamic component.
- Nguyên nhân đầu tiên cần nghĩ đến có chính là đối tượng con bên trong lớn hơn đối tượng cha.
- Đối tượng con bị ẩn mà bạn không để ý, lúc này kích thước của đối tượng cha sẽ hiển thị không đúng như lập trình.
- Khi bạn thay đổi trục tọa độ của mô hình, chỉ cần bất kì mô hình con nào trong component bị thay đổi trục tọa độ.
- Khi bạn sửa mặt, điểm của đối tượng con trong mô hình và lệch ra khỏi hệ tọa độ. Lỗi này rất mệt mỏi và khó phát hiện.
- Component nhận tham số từ 1 đối tượng khác bạn đã xóa trước đó nhưng nó vẫn tồn tại. Lỗi này thất thường xảy ra nếu bạn copy qua lại giữa các components.
- Sai khi thiết lập đơn vị nhập vào. Ví dụ bạn đang muốn độ dài mà tùy chọn option lại là text thì hiển nhiên sẽ sai, và lỗi này rất thường gặp, nếu không để ý sẽ khó tìm ra lỗi.
- Bản copy của một DC đã kéo giãn thường KHÔNG ăn theo kích thước của bản gốc — đây là hành vi cố hữu của SketchUp, không phải lỗi của bạn. Một điểm cực kỳ khó chịu khác: bảng Component Attributes chỉ hiện thuộc tính của bản gốc, không bao giờ mở được attribute của một bản copy (copy chỉ nhìn thấy trong Outliner). Nên khi một bản copy hiển thị sai số, đừng cố dò trong bảng thuộc tính — hãy xóa nó và copy lại từ bản gốc đã đúng.
Sketchup báo hàm lỗi:
- Nguyên nhân đầu tiên chính là cú pháp của hàm, cần chuẩn cú pháp chính xác đến từng dấu phẩy. Nếu như bạn thường sử dụng exel bạn cũng sẽ thấy rằng nếu hàm sai bất kì ký tự nào đều báo lỗi.
- Đặt tên component không chuẩn, có khoảng trắng hoặc ký tự đặt biệt, ví dụ người sử dụng tiếng việt có dấu vào tên component thì trước sau gì cũng lỗi.
Lỗi bảng Option và Attribute trắng :
- Nguyên nhân do phần mềm không thể đọc được dữ liệu của Component, thường lỗi này xảy ra khi bạn sử dụng ký tự đặc biệt hoặc tiếng việt có dấu trong tên và hàm.
Cách bước kiểm tra lỗi:
- Kiểm tra trục tọa độ của từng component con và cha.
- Kiểm tra tên gọi của component cha.
- Kiểm tra các hàm.
- Copy qua file mới để thử lại và tìm lỗi.
- Sử dụng tính năng Purge Unused để xóa các đối tượng ẩn.
- Kiểm tra đơn vị trong bảng option trong quá trình thiết lập. đơn vị nhập vào, đơn vị của đối tượng.
- Vào Menu-View-Hidden Geometry để hiển thị các đối tượng ẩn, xem kích thước và vị trí đã đúng chưa.
- Thường xuyên theo dõi Window tray Outline để thấy các đối tượng con và đối tượng copy tự sinh ra.
- Click phải models, Dynamic Component ->Redraw để mô hình tính toán lại sau khi bạn đã sửa lỗi.
- Khi model có hàng chục DC mà việc click phải Redraw từng cái quá mệt và dễ sót, mở Ruby Console (Window > Ruby Console) và chạy lệnh redraw toàn bộ một lần:
$dc_observers.get_latest_class.redraw_with_undo(*Sketchup.active_model.entities.to_a). Đây là cách duy nhất ép TẤT CẢ Dynamic Component tính lại trong một thao tác. - Nếu một component đã hỏng nặng không cứu được nhưng bạn cần giữ nguyên các giá trị LenX/LenY/LenZ đã chỉnh, dùng click phải > Dynamic Components > Swap Component để thay bằng một định nghĩa mới sạch: SketchUp sẽ chuyển toàn bộ thuộc tính kích thước hiện tại sang instance mới, đỡ phải nhập lại từ đầu.
Thủ thuật dựng hình dynamic chuẩn
- Đặt tên component, đặc biệt là tên trong bảng dynamic component cần chuẩn, không có khoảng trắng, không có dấu tiếng việt. An toàn trước đã. Các thủ thuật sau sẽ giúp bạn ko lệ thuộc cách đặt tên này.
- Sử dụng hàm Parent! thay cho tên của component, cách này sẽ giúp bạn không lệ thuộc tên của components, bạn có thể đổi tên component cha thoải mái, có thể copy component con qua component cha khác và tự động nhận lại tham số từ component cha mới.
- Hạn chế tối đa sử dụng tên gọi của component trong hàm, dùng Parent! và truyền tham số của các component con lên cha để có thể tiếp tục dùng Parent! để lấy tham số cho component cha khác.
- Hạn chế ẩn hiện đối tượng, đặc biệt đối tượng chứa nhiều mesh vì sẽ làm models rất nặng.
- Luôn để ý trục tọa độ ngay khi tạo đối tượng.
- Hạn chế sử dụng Group trong quá trình dựng hình Dynamic Components.
- Nếu sử dụng Group cần make unique nó. ( cái này cần plugin mặc định sketchup không có).
- Chỉ sửa kích thước qua ô LenX/LenY/LenZ, tuyệt đối không dùng công cụ Scale lên DC (lý do đã giải thích ở phần lỗi nhảy hình). Nếu lỡ tay Scale một component thường rồi mới gắn thuộc tính dynamic, hãy reset tỷ lệ về 1 trước qua click phải > Scale Definition, nếu không mọi giá trị LenX bạn nhập sau đó sẽ bị nhân lệch.
Một lưu ý nhỏ về môi trường: từ 2020 SketchUp đã chuyển hẳn sang mô hình thuê bao theo tài khoản (named-user), dòng hiện tại là SketchUp 2026, nhưng cơ chế Dynamic Components và các lỗi nêu trên gần như không đổi suốt nhiều phiên bản — Trimble không còn phát triển thêm tính năng cho DC, nên những bí quyết này vẫn còn nguyên giá trị.
Với Dynamic Component không có cách nào khác ngoài việc bạn phải thường xuyên thực hành để nhận biết lỗi và cách khách phục. Bài học đã thông kê các lỗi có thể xảy ra. Trong các phần tiếp theo 3dshouse sẽ bổ sung các công cụ để tự động sửa các lỗi ít nhìn thấy và tự động chuẩn hóa mô hình.

English