Kịch bản demo dùng chung nhóm với Phần 1 — AutoCAD + MCP + Claude.
Các lệnh BBW, OO1, OO2, CS11 bên dưới là macro
AutoLISP/VBA gọi vào các module BeamWidths, OBJ_NearestText,
QSTools_Beam. Điểm mới của demo này: thay vì gõ tay từng lệnh trên AutoCAD,
Claude điều khiển AutoCAD MCP gọi lần lượt từng lệnh, dừng lại đúng chỗ cần con
người kiểm tra bằng mắt (đặc biệt là các đối tượng bị tô màu đỏ —
chưa xác minh được), rồi mới đi tiếp.
OO1) chỉ nhận những
trường hợp chắc chắn khớp (khoảng cách gần + diện tích đúng bằng size ghi trong Text),
mọi trường hợp còn nghi ngờ đều bị tô đỏ để con người xử lý tay ở OO2 — Claude giúp
gọi đúng lệnh và giải thích kết quả chứ không tự quyết định thay con người ở những chỗ mập mờ📥 Bản vẽ mẫu dùng cho demo này (chọn 1 trong 2 file bên dưới tuỳ tầng muốn thực hành — cùng bộ file dùng cho demo dầm, vì mặt bằng kết cấu có sẵn cả Cột/Vách/Móng):
system(operation="status") thấy backend: "file_ipc"CS11)CDL): Import CheckDuplicateObjects.bas vào VBA
project (Compile → Save), rồi nạp thêm wrapper AutoLISP C:CDL — macro này KHÔNG
thuộc bộ cài QSTools gốc nên phải tự nạp:
Macro tự viết thêm, KHÔNG thuộc bộ cài QSTools gốc (CheckDuplicateObjects.bas,
wrapper C:CDL). Quét Polyline/Circle/Ellipse (không phân biệt layer, vì chạy
trước khi có layer CL_OBJ_*), phát hiện đối tượng bị copy/paste chồng khít lên
nhau (trùng bounding box + Area) rồi tự động XÓA bản trùng, chỉ giữ lại 1
bản/nhóm — tránh mất công gán tên/OO2 và đếm khối lượng 2 lần ở CS11. Toàn bộ
nằm trong 1 StartUndoMark/EndUndoMark — Ctrl+Z 1 lần là hoàn tác hết.
Hỏi Yes/No đầu tiên: quét toàn bộ bản vẽ (Yes) hay chỉ 1 vùng chọn tay bằng window/crossing (No — dừng chờ chọn vùng).
Xem MsgBox tổng kết: bao nhiêu nhóm trùng, Handle nào được giữ, Handle nào bị xóa. Nếu kết quả
không đúng ý, nhấn Ctrl+Z 1 lần để hoàn tác toàn bộ trước khi chuyển sang BBW.
Quét toàn bộ Text kích thước dạng NxM trong bản vẽ, đọc ra bề rộng, gom các đối tượng
Cột/Vách/Móng có cùng bề rộng vào chung 1 nhóm Layer — chuẩn bị dữ liệu nền cho bước gán tên tự
động ở OO1.
Theo comment gốc, bước này tự chạy xong không cần chọn thêm gì — nhưng giảng viên vẫn nên đợi
macro chạy xong rồi mới báo lớp chuyển sang OO1.
Với mỗi Polyline/Circle/Ellipse được chọn, tìm Text gần nhất (đo tới cạnh Polyline, không chỉ tới đỉnh) rồi đổi Layer, ví dụ:
Máy hỏi lần lượt, đúng thứ tự cố định: (1) chọn toàn bộ Polyline/Circle/Ellipse cần gán rồi Enter → (2) chọn toàn bộ Text/Mtext dùng để đối chiếu rồi Enter → (3) nhập khoảng cách tối đa (mm) → (4) hỏi có bật kiểm tra diện tích hay không (Yes nếu Text có ghi size để đối chiếu, No nếu bản vẽ chỉ ghi tên, size nằm ở bảng riêng).
AutoCAD dừng ở dòng lệnh chờ chọn đối tượng, chọn mẫu Text, nhập khoảng cách và trả lời hộp thoại Yes/No kiểm tra diện tích — giảng viên xác nhận từng bước rồi mới cho đi tiếp.
Xem MsgBox tổng kết cuối: bao nhiêu đối tượng gán được (giữ nguyên màu theo Text — đã xác minh),
bao nhiêu bị tô đỏ (Layer CL_OBJ_XXX hoặc gán
được nhưng chưa xác minh) — số đỏ này sẽ xử lý ở OO2.
Lặp lại: nhìn trên màn hình tìm những Polyline/Circle/Ellipse còn đang màu
đỏ (chưa gán được hoặc gán sai) → chọn 1 đối tượng đỏ đó → chọn 1 Text tương ứng → tự
động gán CL_OBJ_<tên> + đổi màu theo Text đó. Nếu Text không có size và đối
tượng là Polyline, macro tự tính diện tích/chu vi thật để suy ra kích thước, ghép thành
<tên>_(LxW).
AutoCAD lặp lại hỏi chọn đối tượng → chọn Text cho từng cặp — giảng viên bấm chọn tới khi hết đối tượng đỏ, rồi nhấn Enter/Esc để dừng vòng lặp.
Nhìn lại toàn bộ mặt bằng — nếu không còn đối tượng nào tô màu đỏ thì mới chuyển sang
CS11.
Sau khi toàn bộ Cột/Vách/Móng đã có Layer dạng
CL_OBJ_<Tên> (không còn CL_OBJ_XXX): nhập chiều cao/chiều
dày một lần dùng chung cho cả lượt xuất → quét chọn toàn bộ Polyline đã gán tên → với mỗi
Polyline, đọc tên từ Layer (bỏ tiền tố CL_OBJ_), tính lại Dài × Rộng từ diện
tích/chu vi thật, ghi 1 dòng ra Excel (Dài, Rộng, Cao, Chu vi, Diện tích, công thức khối lượng
Bê tông + Ván khuôn cạnh, hyperlink về file DWG nguồn).
AutoCAD hỏi chiều cao/chiều dày, sau đó chờ quét chọn (window/crossing) toàn bộ Polyline cần xuất trên màn hình — đây là bước thao tác tay duy nhất trong chuỗi, Claude không tự quét chọn đối tượng trên màn hình được.
Xem MsgBox tổng kết: số dòng ghi được / số bị bỏ qua — nếu còn bị bỏ qua nhiều, quay lại kiểm tra
còn sót Layer CL_OBJ_XXX nào chưa xử lý ở OO2 không.
[tuỳ chọn] CDL (quét trùng lặp, tự xóa) → BBW (tự chạy) → OO1 (gán tự động) → OO2 (xử lý màu đỏ) → CS11 (select tay + xuất Excel)
OO1 có thêm bước tự
kiểm tra diện tích đối chiếu với size ghi trong Text trước khi chấp nhận ghép —
giảm rủi ro gán nhầm tên do Text gần nhất tình cờ nằm cạnh đối tượng khác