Sửa lỗi Dynamic Component trong SketchUp — Lỗi scale và công thức

Fix Dynamic Components Sketchup

Bất kỳ ai xây dựng hoặc gỡ lỗi Dynamic Components đều từng gặp lỗi Dynamic Component làm model nhảy lung tung, sai tỉ lệ, hoặc công thức ngừng chạy — kể cả khi lập trình đúng. Đây là lỗi cực kỳ phổ biến, đặc biệt khi bạn dựng các model tùy biến có độ phức tạp cao. Mình tạo ra nguyên cả bộ model dynamic cho sản xuất đồ nội thất nên có thống kê chi tiết về các lỗi và nguyên nhân. Những hành vi này không thay đổi qua bản SketchUp 2026 hiện tại, nên mọi điều dưới đây vẫn đúng dù bạn dùng bản cũ hay bản thuê bao mới nhất.

Fix Dynamic Components Sketchup
Phát hiện và sửa lỗi Dynamic Components Sketchup

Lỗi scale và lỗi công thức của Dynamic Components SketchUp

Lỗi này có nhiều nguyên nhân, trước hết bạn cần kiểm tra lập trình của mình có đúng không; khi đã chắc đúng thì nguyên nhân có thể là:

  • Đố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 dùng plugin ABF để cắt CNC sẽ thấy rõ khi buộc phải dùng group trong dựng hình.
  • Lỗi xảy ra khi dùng thuộc tính copies.
  • Công cụ Scale không còn tự kích hoạt Redraw như các bản cũ — sau khi bạn scale một Dynamic Component, SketchUp giữ nguyên phép biến đổi scale thô trên instance thay vì tính lại công thức, nên hình học trông bị méo cho đến khi bạn chuột phải và chọn Dynamic Components > Redraw.
  • Nếu DC của bạn nằm trong một Group thường, scale Group sẽ “nướng” một phép scale không đều vào transform của đối tượng cha mà công thức của các con không đọc ngược lại được — hãy giữ các đối tượng dynamic là Component (không phải Group) ở mọi cấp lồng để LenX/LenY/LenZ luôn đọc được.

Kích thước thực tế sai so với thiết lập:

Đây là lỗi phổ biến nhất, đặc biệt khi bạn ít kinh nghiệm vẽ dynamic component.

  • Nguyên nhân đầu tiên cần nghĩ đến là đối tượng con bên trong có lớn hơn đối tượng cha hay không.
  • Đố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ẽ không hiển thị đúng như lập trình.
  • Khi bạn đổi trục tọa độ của model, chỉ cần một model con bất kỳ trong component bị đổi trục tọa độ là sẽ sai.
  • Khi bạn sửa mặt, điểm của đối tượng con trong model bị lệch ra khỏi hệ tọa độ. Lỗi này rất mệt và khó phát hiện.
  • Component lấy tham số từ một đối tượng khác mà bạn đã xóa trước đó nhưng nó vẫn còn tồn tại. Lỗi này xảy ra thất thường nếu bạn copy qua lại giữa các component.
  • Sai khi thiết lập đơn vị nhập vào. Ví dụ bạn cần độ dài mà tùy chọn option lại là text thì hiển nhiên sẽ sai; lỗi này rất thường gặp, nếu không để ý sẽ khó tìm ra.
  • Giá trị LenX nhập dưới dạng số trần được hiểu theo đơn vị của model, nhưng cũng ô đó gõ “600” khi model đặt theo Inches sẽ âm thầm thành 600 inch — hãy luôn gõ kèm hậu tố đơn vị (600mm) trong công thức để kết quả không đổi khi đơn vị file đổi.

SketchUp báo lỗi hàm:

  • Nguyên nhân đầu tiên là cú pháp của hàm, cần chuẩn chính xác đến từng dấu phẩy. Nếu bạn thường dùng Excel cũng sẽ thấy 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ự đặc biệt; ví dụ người dùng Việt Nam để dấu tiếng Việt trong tên component thì mọi thứ sẽ sai.
  • Một điểm tinh vi: công thức dùng dấu phẩy làm dấu phân cách đối số (ROUND(x, 0)), nhưng nếu cài đặt vùng của Windows dùng dấu phẩy làm dấu thập phân, SketchUp sẽ đọc sai cùng công thức đó — hãy đặt định dạng số của hệ điều hành dùng dấu chấm để tránh tình trạng hàm chạy trên máy này mà hỏng trên máy khác.

Bảng Option và Attribute của component bị trống:

  • Nguyên nhân là phần mềm không đọc được dữ liệu của Component.
  • Khi bạn dùng ký tự đặc biệt trong hàm.
  • Sai cú pháp hàm.
  • Hộp thoại Options trống trong khi các attribute vẫn còn trong bảng Component Attributes gần như luôn có nghĩa là có tham chiếu vòng — hai attribute tham chiếu lẫn nhau — mà engine từ chối tính và lặng lẽ làm trống cả hộp thoại thay vì chỉ ra ô gây lỗi.

Cách gỡ lỗi và kiểm tra lỗi Dynamic Component:

  • Kiểm tra trục tọa độ của từng component con và component cha.
  • Kiểm tra tên của component cha.
  • Thử các hàm.
  • Copy sang file mới để thử lại và tìm lỗi.
  • 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 khi 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 khay Window Outliner để thấy các đối tượng con và đối tượng copy tự sinh ra.
  • Chuột phải model, Dynamic Component -> Redraw để model tính toán lại sau khi bạn đã sửa lỗi.
  • Mở Ruby Console (Window > Ruby Console) trước khi bấm Redraw — engine DC in ra đúng attribute và thông báo lỗi ở đó khi một công thức hỏng, nhanh hơn nhiều so với việc mò từng ô trong bảng Attributes.

Thủ thuật dựng model dynamic

  • Đặt tên component, đặc biệt là tên trong bảng dynamic component, cần chuẩn: không khoảng trắng, không ký tự đặc biệt. An toàn trước đã. Các mẹo sau sẽ giúp bạn không phụ thuộc vào cách đặt tên này.
  • Dùng hàm Parent! thay cho tên của component; cách này giúp bạn không phụ thuộc tên component, bạn có thể đổi tên component cha thoải mái, có thể copy component con sang component cha khác và tự động nhận lại tham số từ component cha mới.
  • Hạn chế tối đa dùng tên component trong hàm, hãy dùng Parent! và truyền tham số của component con lên cha để có thể tiếp tục dùng Parent! lấy tham số cho các component cha khác.
  • Hạn chế ẩn đối tượng, đặc biệt là đối tượng chứa nhiều mesh vì model sẽ rất nặng.
  • Luôn chú ý trục tọa độ khi tạo đối tượng.
  • Hạn chế dùng Group trong quá trình dựng Dynamic Components.
  • Nếu dùng Group thì cần make unique nó (việc này cần một plugin mà SketchUp không có mặc định).
  • Chỉ xây dựng tham chiếu attribute bằng Parent! và đường dẫn con — không bao giờ bọc một DC đang chạy tốt vào một component mới rồi đổi tên giữa dự án, vì chuỗi công thức phân giải tên tại thời điểm tính và chỉ một cấp bị đổi tên cũng làm hỏng mọi đối tượng con đã tham chiếu đến nó.

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 ra lỗi và cách khắc phục. Bài học đã liệt kê các lỗi có thể xảy ra. Ở các phần tiếp theo, 3dshouse sẽ bổ sung công cụ để tự động sửa các lỗi ít nhìn thấy và tự động chuẩn hóa model.

Thêm công cụ SketchUp của 3dshouse
  • BevelUp — bo tròn hoặc vát cạnh thành hình học thật, chỉ một cú nhấp
  • Decimify — giảm số mặt (polygon) cho model nặng
  • Tracepen — chuyển ảnh thành mặt SketchUp
  • TileUp — biến một mặt thành gạch 3D thật, kèm bảng bóc tách
  • Texturic — tạo texture gạch liền mạch kèm bản đồ PBR
  • SheetUp — biến mô hình SketchUp thành bảng khối lượng và dự toán chi phí
  • PatchUp — turn selected edges into faces, flat or curved
Nguyen Huu Khanh

Architect turned developer

Thuê tôi: viết plugin & phần mềm 3D theo yêu cầu. Từ $45/giờ.

khanhnhkts@gmail.com · 0914340133 · Zalo