Dashboard
← Quay lại Bài Giảng: Tối Ưu QS + AI

Script Demo: Bóc Khối Lượng Dầm
Qua AutoCAD MCP + Claude

Kịch bản demo dùng cho Phần 1 — AutoCAD + MCP + Claude (08:15–12:00). Toàn bộ các lệnh BM1BM15 (cùng bước chuẩn bị CCBT, BBW, ALO) bên dưới là macro của bộ QSTools — bản DLL hiện trên ribbon tab AI_STR. Qua AutoCAD MCP, Claude gọi bản twin VBA tương ứng (C:CBM1)(C:CBM15). Đ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, rồi mới đi tiếp.

🎯 Mục tiêu demo
✅ Chuẩn bị trước khi chạy

📥 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):

📥 Skill cho Claude (quy trình chuẩn bị + BM1…BM15): autocad-beam-workflow.zip — xem cách cài đặt ở mục "📦 Cài đặt Skill cho Claude" bên dưới.

  1. Bản vẽ mặt bằng đã có sẵn line dầm theo layer chuẩn QS và text tên dầm/kích thước gần đó
  2. Cài đặt QSTool theo link sau: Circleqstools_SetupAI.exe
  3. AutoCAD MCP đã kết nối với Claude Desktop — kiểm tra bằng system(operation="status") thấy backend: "file_ipc"
  4. Mở sẵn Excel để nhận kết quả xuất khối lượng ở bước cuối (BM14 hoặc BM15)
⚠️ Qua MCP, Claude gọi bản twin VBA (C:CBM1)(C:CBM15) (và (C:CBBW), (C:CCBT), (C:CALO)) — mỗi lệnh là AutoLISP wrapper tự gọi -vbarun vào đúng module trong QSTools_Utilities.dvb. Lưu ý C:BM1… KHÔNG tồn tại (BM* chỉ là lệnh của bản DLL trên ribbon); qua MCP luôn dùng tiền tố C:CBM…. Nếu VBA project chưa nạp (vbaload), lệnh sẽ báo lỗi "project not found" — kiểm tra bước này TRƯỚC khi bắt đầu demo trước lớp.
📦 Cài đặt Skill cho Claude

Toàn bộ quy trình (chuẩn bị CCBT/BBW/ALO → chuỗi BM1BM15 → rà soát tên "XXX"/BM9A) đã được đóng gói sẵn thành Skill tên autocad-beam-workflow — Claude sẽ tự nhận diện và chạy đúng thứ tự khi bạn gõ yêu cầu như "bóc khối lượng dầm", "xử lý dầm"...

📥 Tải file skill: autocad-beam-workflow.zip

  1. Tải và giải nén file autocad-beam-workflow.zip — sẽ được 1 thư mục autocad-beam-workflow chứa SKILL.mdevals.json.
  2. Copy nguyên thư mục đó vào đường dẫn skill cá nhân trên máy bạn:
    C:\Users\<Tên_của_bạn>\.claude\skills\autocad-beam-workflow\
    (tự tạo thư mục skills nếu máy bạn chưa có).
  3. Mở lại Claude Desktop / Claude Code — skill sẽ tự được nhận diện, không cần cài đặt gì thêm.
  4. Kiểm tra bằng cách gõ: "Chạy quy trình bóc khối lượng dầm" hoặc gọi trực tiếp /autocad-beam-workflow.
⚠️ Skill chỉ chứa quy trình gọi lệnh (hướng dẫn cho Claude) — máy bạn vẫn cần có sẵn AutoCAD MCP kết nối và VBA project QSTools_Utilities.dvb đã nạp như mục "Chuẩn bị trước khi chạy" ở trên thì mới chạy được các lệnh BM1BM15.
📜 Kịch bản demo — chạy theo đúng thứ tự
Gần như mọi lệnh bên dưới đều dừng lại chờ tương tác — hoặc AutoCAD dừng ở dòng lệnh (command line) chờ chọn đối tượng/nhập lựa chọn, hoặc cần người xem kết quả trước khi ra lệnh cho Claude gọi bước tiếp theo. Giảng viên nên đọc to dòng lệnh sau mỗi lần gọi để lớp thấy AutoCAD đang chờ gì, rồi mới cho Claude đi tiếp — không nên gọi liên tiếp nhiều lệnh trong 1 lần chat.
CCBT
Chuẩn bị (tuỳ chọn) — Ghép text tên dầm bị gãy
Chỉ khi tên dầm bị tách
Việc macro làm

Chỉ chạy khi tên dầm trong bản vẽ bị gãy thành 2 text riêng (ví dụ B1(300x400) tách rời, kể cả khác layer). Vào lệnh hiện hộp 3 nút: YES = AUTO (quét vùng chọn → tự ghép mọi cặp thoả điều kiện: đủ gần + cùng góc xoay + khớp mẫu sốxsố), NO = MANUAL (tự pick từng cặp, không xét điều kiện), CANCEL = thoát. Giữ text "tên", nối _ (vd B1_(300x400)), xoá text kia.

Prompt mẫu gọi qua Claude
"Chạy CCBT để gom các text tên dầm bị gãy thành một trước khi phân loại bề rộng."
execute_lisp → (C:CCBT)
⏸ Điểm dừng

AUTO: chờ chọn vùng chứa text (Select objects) → hỏi hệ số khoảng cách. MANUAL: chờ pick text 1 → text 2, lặp, ESC để dừng. Xong hiện bảng báo cáo có thanh cuộn — kiểm tra vài cặp xem có ghép nhầm không trước khi chạy BBW.

BBW
Chuẩn bị — Phân loại tên dầm theo bề rộng
Chọn vùng + MsgBox
Việc macro làm

Quét text tên dầm, phân loại theo bề rộng vào layer Text_BW_<w> (mỗi bề rộng một màu), đồng thời lưu danh sách bề rộng vào registry (BeamWidthList). BM1 sau này đọc danh sách này để tự điền bề dày mặc định khi vẽ centerline.

"Chạy BBW để phân loại và tô màu text tên dầm theo bề rộng."
execute_lisp → (C:CBBW)
⏸ Điểm dừng

Chờ chọn vùng chứa text, sau đó hiện MsgBox Yes/No hỏi có lưu danh sách bề rộng vào registry không — trả lời Yes để BM1 dùng làm mặc định. Trả lời thẳng trên MsgBox, không hỏi qua Claude.

ALO
Chuẩn bị — Gán layer vùng SÀN
Bắt buộc trước BM11
Việc macro làm

Pick 1 layer vùng sàn (QS_Slab_Full_Area_* = nền, QS_Slab_Step_Area_* = bậc/vùng lồng trong), rồi vẽ mới hoặc gán một polyline kín cho vùng sàn tương ứng. Chạy nhiều lần cho từng vùng/bề dày sàn khác nhau.

"Chạy ALO để tôi khoanh vùng sàn theo từng bề dày trước khi phá dầm."
execute_lisp → (C:CALO)
⏸ Điểm dừng

Chờ chọn layer sàn → vẽ hoặc chọn polyline kín cho vùng đó. BẮT BUỘC trước BM11 — BM11 phá dầm + DFW theo chính các vùng sàn này; thiếu vùng thì BM11 báo "no slab zone".

BM1
Bước 1 — Vẽ centerline dầm
Chọn layer/đối tượng
Việc macro làm

Quét line dầm theo layer đã chọn, ghép cặp 2 mép dầm thành 1 centerline trên layer QS_CL_BEAM_*; tự merge + khử trùng (dedup) + trim + dedup lại. Bề dày tự điền từ registry do BBW lưu (nếu có).

Prompt mẫu gọi qua Claude
"Chạy BM1 để vẽ centerline dầm trên bản vẽ đang mở."
execute_lisp → (C:CBM1)
⏸ Điểm dừng

AutoCAD dừng ở dòng lệnh chờ chọn layer dầm trước khi macro chạy — giảng viên xác nhận đúng layer/phạm vi rồi mới cho đi tiếp.

Kiểm tra trước khi đi tiếp

Zoom nhanh vài vị trí dầm giao nhau — centerline phải nằm giữa 2 mép dầm, không lệch tâm.

BM2
Bước 2 — Dedup trong từng layer
Xác nhận
Việc macro làm

Trong cùng 1 layer, nếu có 2 centerline trùng nhau (do quét nhầm 2 lần), xoá bớt và chỉ giữ lại line dài nhất.

"Chạy BM2 để dọn centerline trùng nhau trong cùng layer."
execute_lisp → (C:CBM2)
⏸ Điểm dừng

AutoCAD dừng chờ xác nhận trước khi xoá các line trùng — giảng viên xem qua khu vực bị ảnh hưởng rồi mới xác nhận tiếp tục.

BM3
Bước 3 — Dedup xuyên layer
Cần duyệt tay
Việc macro làm

Xử lý 2 centerline trùng vị trí nhưng khác layer bề dày dầm (ví dụ 500 vs 400) — giữ lại line thuộc layer bề dày lớn hơn. Macro highlight để người dùng duyệt bằng mắt trước khi xoá.

"Chạy BM3, dừng lại cho tôi xem phần highlight trước khi macro xoá gì."
execute_lisp → (C:CBM3)
Điểm dừng bắt buộc

Đây là điểm dừng bắt buộc — giảng viên nên dừng lại giải thích cho lớp vì sao cần con người duyệt (tránh xoá nhầm dầm to lấy nhầm dầm nhỏ).

BM4
Bước 4 — Nối khoảng hở
Chọn menu Layer/Size
Việc macro làm

Nối các đoạn centerline bị đứt quãng — nối được mọi phương kể cả xiên — chọn nối theo Layer hoặc theo Size qua menu trên dòng lệnh.

"Chạy BM4, tôi sẽ chọn chế độ nối trên dòng lệnh AutoCAD."
execute_lisp → (C:CBM4)
⏸ Điểm dừng

Macro hiện menu chờ chọn chế độ nối — Layer hay Size — người dùng trả lời thẳng trên dòng lệnh AutoCAD (không hỏi qua Claude), rồi báo "xong".

BM5
Bước 5 — Auto Extend đầu centerline còn hở
Chọn layer mép + max
Việc macro làm

Kéo đầu centerline còn hở tới mép dầm gần nhất (trong khoảng ≤300mm) để hình học liền mạch trước khi trim.

"Chạy BM5 để kéo các đầu centerline còn hở tới mép dầm."
execute_lisp → (C:CBM5)
⏸ Điểm dừng

Chờ chọn layer mép dầm và nhập khoảng cách max (mặc định 300mm).

Tuỳ chọn thêm (bỏ qua được)

BM5A (C:CBM5A) — khép góc L / nút T.  BM5B (C:CBM5B) — fill door 2 phương.

BM6
Bước 6 — Trim centerline trong vùng bê tông
Xác nhận xoá
Việc macro làm

Trim các centerline còn nằm lấn vào vùng bê tông (cột/vách) — đồng thời xoá luôn các đoạn DFW nằm trong cột/vách.

"Chạy BM6 để trim centerline còn dính vào cột/vách."
execute_lisp → (C:CBM6)
⏸ Điểm dừng

AutoCAD dừng chờ xác nhận trước khi xoá các đoạn DFW nằm trong cột/vách — giảng viên xem qua rồi mới xác nhận.

BM7
Bước 7 — Kiểm tra sau trim
Xem highlight
Việc macro làm

Rà soát toàn bộ centerline, highlight các đoạn còn chờm vào bê tông quá 10mm — để người dùng biết còn sai sót ở đâu trước khi trim giao cắt.

"Chạy BM7, cho tôi biết còn bao nhiêu chỗ bị chờm vào bê tông."
execute_lisp → (C:CBM7)
Điểm dừng để giảng viên nhấn mạnh

Nếu BM7 còn báo lỗi, quay lại BM6 hoặc sửa tay tại các vị trí được highlight trước khi đi tiếp.

BM8
Bước 8 — Trim giao cắt
Xác nhận từng chỗ
Việc macro làm

Tại chỗ 2 dầm giao nhau, lấy dầm RỘNG HƠN làm dầm chính, lùi đầu dầm phụ về đúng mép dầm chính (giữ cả 2 bên ngã tư) — tránh tính trùng khối lượng ở chỗ giao nhau.

"Chạy BM8 để trim các chỗ dầm giao nhau."
execute_lisp → (C:CBM8)
⏸ Điểm dừng

AutoCAD dừng ở dòng lệnh trong lúc xử lý từng chỗ giao cắt — giảng viên theo dõi và xác nhận qua từng vị trí để lớp thấy rõ logic trim.

BM9
Bước 9 — Gán tên dầm
Chọn layer text + FULL/SIZE
Việc macro làm

Đổi layer centerline theo text tên dầm gần nhất — ví dụ QS_CL_BEAM_300QS_CL_BEAM_300_D1(300x500). Macro hỏi chế độ: FULL TEXT (giữ nguyên tên) hay SIZE ONLY (bỏ tên, chỉ giữ WxH, gom 1 layer/tiết diện; text không có WxH → _XXX).

"Chạy BM9 để gán tên dầm theo text gần nhất, tôi sẽ chọn FULL TEXT hay SIZE ONLY."
execute_lisp → (C:CBM9)
⏸ Điểm dừng

Chờ chọn layer text và trả lời chế độ + đơn vị (mm/cm). Sau khi chạy, rà nhanh vài chỗ xem tên gán đúng chưa — đây là dữ liệu quyết định độ chính xác của bảng khối lượng.

Ghi chú

(Nếu có nhãn gán sai, dùng BM9A (C:CBM9A) — click line sai rồi click text đúng — để sửa tay từng chỗ.)

BM10
Bước 10 — Vẽ vạch DFW 2 đầu dầm
Chọn chế độ DFW
Việc macro làm

Vẽ vạch ván khuôn đầu dầm (DFW) ở 2 đầu mỗi dầm, đặt trên layer QS_CL_DFWBeam_* (tên layer thừa hưởng tên dầm từ BM9). Đây là cơ sở để bước xuất Excel trừ giao ván khuôn.

"Chạy BM10 để vẽ vạch DFW 2 đầu mỗi dầm."
execute_lisp → (C:CBM10)
⏸ Điểm dừng

Chờ chọn chế độ DFW (bỏ đầu tì vào dầm khác / vẽ mọi đầu).

BM11
Bước 11 — Phá dầm & DFW theo vùng bề dày sàn
Chọn vùng làm việc
Việc macro làm

Phá centerline dầm vạch DFW tại ranh giới các vùng bề dày sàn (đã khoanh bằng ALO) thành các mảnh QS_BCL_Beam_* / QS_BCL_DFWBeam_* (suffix _<bề dày>_<stt>, giữ nguyên màu gốc) — để tính khối lượng chính xác theo từng vùng bề dày.

"Chạy BM11 để phá dầm và DFW theo các vùng bề dày sàn đã khoanh."
execute_lisp → (C:CBM11)
⏸ Điểm dừng

Chờ chọn vùng làm việc. Cần đã chạy ALO tạo vùng sàn — nếu chưa, BM11 báo "no slab zone".

BM12
Bước 12 — Tạo Layer Group trong Layer Manager
Kiểm nhóm tạo ra
Việc macro làm

Tạo sẵn các layer filter group theo thứ tự Dầm → Ván khuôn dầm → Sàn → Tường (kèm nhóm Text_BW cuối) trong Layer Manager (LA) — giúp bước sau isolate nhanh theo từng nhóm.

"Chạy BM12 để tạo nhóm layer."
execute_lisp → (C:CBM12)
⏸ Điểm dừng

Sau khi chạy, mở Layer Manager (LA) xem lại danh sách nhóm vừa tạo trước khi dùng ở bước BM13.

BM13
Bước 13 — Isolate nhóm cần xuất khối lượng
Chọn nhóm
Việc macro làm

Cô lập (isolate) chỉ hiện nhóm layer muốn xuất, ẩn hết các nhóm khác. Nhập 0 để hiện lại tất cả. Kèm hay không kèm nhóm Ván khuôn dầm khi isolate = có hay không trừ giao ván khuôn ở bước xuất.

"Chạy BM13, isolate nhóm dầm 300x500 (kèm nhóm ván khuôn để trừ giao) để tôi xuất khối lượng."
execute_lisp → (C:CBM13)
Vì sao cần chọn tay ở đây

Đây là bước quyết định "đang xuất khối lượng cho nhóm dầm nào" và "có trừ giao ván khuôn không" — giảng viên nên hỏi lớp chọn 1 nhóm cụ thể làm ví dụ trực quan.

BM14 / BM15
Bước 14 — Xuất khối lượng & ván khuôn dầm sang Excel
Chạy lệnh rồi select tay
Việc macro làm

Sau khi đã BM13 isolate đúng nhóm, chạy lệnh trước rồi mới quét chọn (select) các centerline đang hiện, Enter để xuất bảng khối lượng bê tông + ván khuôn sang Excel. Cả hai lệnh đều tính bê tông và trừ giao ván khuôn (đối tượng trên layer DFW ghi chiều dài âm để công thức Excel trừ đi; ván khuôn DFW tính 1 mặt). Chúng chỉ khác nhau ở nguồn bề dày sàn:

  • BM14 — Excel (auto thk): đọc bề dày từng vùng từ suffix layer do BM11 tạo (vd ..._150_1 → 150mm); DFW gộp theo layer. → Dùng khi ĐÃ chạy BM11 phá vùng.
  • BM15 — Excel (manual thk): một bề dày nhập tay cho mọi đối tượng, thêm mode PER LINE / TOTAL. → Dùng khi KHÔNG phá vùng (1 bề dày phẳng).
"Chạy BM14 để xuất khối lượng + ván khuôn (auto đọc bề dày từng vùng); tôi sẽ quét chọn line dầm khi macro yêu cầu."
execute_lisp → (C:CBM14) / hoặc (C:CBM15)
Lưu ý quan trọng

Đây là bước có thao tác tay — Claude gọi lệnh, nhưng người dùng phải tự quét chọn line trên màn hình rồi Enter. Chọn BM14 nếu đã phá vùng bề dày (BM11), chọn BM15 nếu chỉ 1 bề dày phẳng. Nhấn mạnh với lớp: AI lo phần dọn dẹp/tính toán lặp lại, con người vẫn quyết định phạm vi chọn và lệnh xuất phù hợp.

XXX → BM9A
Sau khi xuất — Rà soát dòng "XXX" trong Excel
Sửa từng dòng
Việc cần làm

Trong Excel, các dòng ghi XXX là centerline chưa gán tên / gán sai. Dùng nút "Find Item In AutoCAD" để nhảy tới centerline đó trên bản vẽ, rồi chạy BM9A sửa tên (click line sai → click text đúng). Lặp tới khi hết dòng XXX.

"Tôi đã Find Item tới line bị XXX, chạy BM9A để tôi sửa lại tên dầm này."
execute_lisp → (C:CBM9A)
⏸ Điểm dừng

Người dùng tìm dòng XXX + bấm Find Item trước, rồi Claude mới gọi BM9A cho từng chỗ.

🧰 Lệnh tiện ích bổ sung (không nằm trong chuỗi BM1→BM15 chính)
⚠️ Các lệnh dưới đây không nằm trong trình tự demo chính — chỉ dùng khi cần làm lại từ đầu, dọn dẹp, hoặc xử lý tình huống phát sinh. Không gọi tuỳ tiện giữa chừng khi đang chạy chuỗi BM1→BM15.
CBBD
Xoá centerline / DFW / mảnh break theo layer chọn
Chọn layer + xác nhận
Việc macro làm

Xoá các đối tượng trên danh sách layer chọn — centerline dầm (QS_CL_BEAM_*), vạch DFW (QS_CL_DFWBeam_*) và các mảnh do BM11 phá (QS_BCL_Beam_* / QS_BCL_DFWBeam_*) — dùng khi cần làm lại centerline từ đầu (vẽ nhầm layer, dữ liệu lỗi nặng...).

"Chạy CBBD để xoá centerline/DFW dầm theo layer chọn, làm lại từ đầu."
execute_lisp → (C:CBBD)
⏸ Điểm dừng

AutoCAD chờ chọn danh sách layer rồi hỏi xác nhận — đây là thao tác xoá dữ liệu, giảng viên nên đọc kỹ và xác nhận đúng phạm vi trước khi đồng ý.

BM7
Kiểm tra centerline còn chờm bê tông (chạy lại khi cần)
Xem highlight
Việc macro làm

Có thể gọi lại bất cứ lúc nào sau khi trim để rà soát các centerline còn chờm vào bê tông >10mm — highlight các đoạn lỗi. Nếu còn lỗi, quay lại BM6 hoặc sửa tay trước khi xuất khối lượng.

"Chạy lại BM7 để kiểm tra còn chỗ nào centerline chờm vào bê tông không."
execute_lisp → (C:CBM7)
Khi nào dùng

Dùng như bước kiểm tra chất lượng — chạy lại sau khi sửa tay để chắc chắn đã sạch trước khi sang BM8/BM9.

🔁 Tóm tắt trình tự đã demo

[Chuẩn bị] CCBT (nếu tên gãy) → BBW (nhóm width) → ALO (khoanh vùng sàn)

BM1 (chọn layer) → BM2 (xác nhận) → BM3 (duyệt tay) → BM4 (chọn menu) → BM5 (auto extend) → BM6 (trim bê tông) → BM7 (kiểm tra) → BM8 (trim giao cắt) → BM9 (gán tên) → BM10 (vẽ DFW) → BM11 (phá theo vùng sàn) → BM12 (tạo nhóm) → BM13 (isolate nhóm) → BM14/BM15 (select tay, xuất Excel)

→ Rà "XXX" trong Excel + BM9A (sửa từng dòng)

📝 Ghi chú giảng viên