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

Hướng Dẫn Sử Dụng: Bóc Khối Lượng Dầm
Qua AutoCAD MCP + Claude

Tài liệu hướng dẫn thao tác thực tế trên bản vẽ của bạn. Toàn bộ các lệnh BM1BM15 (cùng bước chuẩn bị CBT, BBW/BWH, ALO/ALO1) bên dưới là lệnh của bộ QSTools bản DLL — đúng các nút bạn thấy trên ribbon tab AI_STR. Qua AutoCAD MCP, Claude gọi thẳng chính những lệnh đó bằng (command "BM1")(command "BM15"). Điểm lợi khi dùng cách này: thay vì gõ tay từng lệnh trên AutoCAD, bạn ra yêu cầu bằng lời, Claude điều khiển AutoCAD MCP gọi lần lượt từng lệnh, dừng lại đúng chỗ bạn cần kiểm tra bằng mắt, rồi mới đi tiếp.

🔄 Tài liệu ứng với QSTools phiên bản hiện hành — bộ lệnh dầm hiện là BM1BM15 (+ các lệnh phụ BM5A, BM5B, BM9A, BM9B, BM10A, BM10B) và 3 lệnh dọn BMD / BMU / BMS (tên cũ BBD/BBU/BBS đã bỏ). Toàn bộ chuỗi hỗ trợ cả dầm cung tròn. Hai bảng thông số QS SettingsSTSET ở mục bên dưới quyết định kết quả của nhiều bước — xem trước khi bắt tay vào chạy.

⚠️ Ba điểm khác với các bản trước — nếu bạn đã quen QSTools bản cũ thì đọc lại đúng 3 bước này: BM8 đổi sang phân loại theo hình dạng nút (ngã tư / chữ T / góc — không còn luật "ai rộng hơn chạy suốt" áp cho mọi kiểu nút) · BM10 tách thêm layer QS_CL_DFWCOL cho đầu dầm giáp cột/vách · BM14/BM15 mở bảng tick 3 mục để chọn xuất thành phần nào.

🎯 Bạn sẽ đạt được gì
🗺️ Bản đồ quy trình — bấm vào lệnh để nhảy tới bước đó
Cấu hình QSUNITS STSET
Chuẩn bị CBT BBW/ BWH ALO+ ALO1
Chuỗi chính BM1 BM2 BM3 BM4 BM5 BM6 BM7 BM8 BM9 BM10 BM11 BM12 BM13 BM14/BM15
Thêm khi cần BM9B · BM10A · BM10B chèn vào đúng chỗ trong chuỗi trên
Soát lại Rà "XXX" → BM9A
Cam = bước bắt buộc  ·  Vàng = chỉ chạy khi bản vẽ cần  ·  Xanh = tiện ích, chạy lúc nào cũng được.
Tick ô "đã xong" ở mỗi bước để đánh dấu bạn đang làm tới đâu — trình duyệt tự nhớ, đóng máy mở lại vẫn còn.
✅ Chuẩn bị trước khi chạy

📥 Bản vẽ mẫu để bạn chạy thử (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. QSTools bản DLL đã nạp — gõ thử BM1 trên dòng lệnh AutoCAD thấy lệnh chạy (nhấn ESC thoát) là được; nếu báo "Unknown command" thì mở lại AutoCAD hoặc cài lại QSTools
  5. Mở sẵn Excel để nhận kết quả xuất khối lượng ở bước cuối (BM14 hoặc BM15)
⚠️ Cách Claude gọi lệnh: mọi lệnh trong tài liệu này đều là lệnh của bản DLL, gọi qua MCP bằng execute_lisp với cú pháp (command "BM1"). Gọi kiểu (C:BM1) sẽ không chạy — dạng (C:xxx) chỉ dùng được cho hàm AutoLISP, còn lệnh DLL nằm trong bảng lệnh của AutoCAD nên phải gọi bằng (command "…").
⏱ Vì gọi bằng (command "…"), lệnh sẽ khởi động rồi dừng ngay tại dòng lệnh AutoCAD chờ bạn chọn đối tượng / trả lời lựa chọn. Với các lệnh mở hộp thoại (BM5, BM9, BM10…), Claude có thể báo hết thời gian chờ trong lúc hộp thoại còn mở — không sao, cứ thao tác xong trên AutoCAD rồi báo Claude đi tiếp.
📦 Cài đặt Skill cho Claude

Toàn bộ quy trình (chuẩn bị CBT/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à QSTools bản DLL đã cài như mục "Chuẩn bị trước khi chạy" ở trên thì mới chạy được các lệnh BM1BM15.
🧊 Bấm nút trên ribbon hay gọi qua Claude — giống hay khác?

Hoàn toàn giống nhau. Bấm nút BM9 trên ribbon AI_STR và nhờ Claude gọi (command "BM9") qua MCP đều chạy đúng một bản DLL — cùng thuật toán, cùng thông số, cùng kết quả. Bạn được dùng đầy đủ mọi tính năng mới nhất ở cả 2 đường, ví dụ:

👉 Vậy nên chọn đường nào là tuỳ tiện tay: đang chat với Claude thì để Claude gọi; đang thao tác trên AutoCAD thì bấm nút cho nhanh. Xen kẽ giữa chừng cũng không sao.

📜 Quy trình từng bước — 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ờ bạn chọn đối tượng/nhập lựa chọn, hoặc bạn cần xem kết quả trước khi bảo Claude gọi bước tiếp theo. Sau mỗi lần gọi lệnh, hãy nhìn dòng lệnh AutoCAD xem nó đang chờ gì, xử lý xong rồi mới đi tiếp — đừng yêu cầu Claude gọi liên tiếp nhiều lệnh trong 1 lần chat.
CBT
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 CBT để 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 → (command "CBT")
⏸ Đ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.

✅ Xong đúng thì thấy

Tên dầm trước bị tách làm nhiều mảnh nay là một text liền — click thử chỉ chọn được 1 đối tượng.

❌ Hay sai chỗ này

Chạy CBT sau BM9: lúc đó BM9 đã đọc tên sai rồi, phải mở BM9A sửa lại từng chỗ. Ghép text trước, luôn.

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 → (command "BBW")
⏸ Đ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.

✅ Xong đúng thì thấy

Text tên dầm đổi màu theo nhóm bề rộng — mỗi bề rộng một màu, nhìn là thấy dầm nào cùng loại.

❌ Hay sai chỗ này

Ô Beam dimension unit trong QS Settings để sai mm/cm ⇒ nhóm ra sai 10 lần. Kiểm ô đó trước khi chạy.

BWH
Chuẩn bị (thay cho BBW) — Gom text tên dầm theo 3 tiêu chí
Chọn text + trả lời 1 lựa chọn
Việc macro làm

Bản mở rộng của BBW: cũng tô màu text tên dầm theo nhóm, nhưng cho bạn chọn gom theo tiêu chí nào thay vì luôn theo bề rộng.

  • Width — theo bề rộng (giống hệt BBW).
  • Height — theo chiều cao dầm.
  • Both — theo cả cặp WxH, mỗi tiết diện một màu riêng.

Hỏi ngay trên dòng lệnh (không mở hộp thoại) và nhớ lựa chọn lần trước — Enter là dùng lại. Đơn vị mm/cm lấy thẳng từ ô Beam dimension unit trong QS Settings, không hỏi lại.

"Chạy BWH, tôi sẽ chọn text tên dầm rồi gom theo Both."
execute_lisp → (command "BWH")
⏸ Điểm dừng

Chờ bạn quét chọn text/mtext, sau đó trả lời [Width/Height/Both] trên dòng lệnh.

✅ Xong đúng thì thấy

Text đổi màu theo đúng tiêu chí đã chọn; bảng tổng kết liệt kê từng nhóm kèm số lượng.

❌ Hay sai chỗ này

Chọn Both trên bản vẽ ghi tiết diện lộn xộn sẽ ra rất nhiều nhóm màu, nhìn còn rối hơn — bắt đầu bằng Width.

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 → (command "ALO")
⏸ Đ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".

✅ Xong đúng thì thấy

Vùng sàn nằm trên layer QS_Slab_Full_Area_(150) / QS_Slab_Step_Area_(±50), bao kín khu vực cần bóc.

❌ Hay sai chỗ này

Quên chạy ⇒ BM11 báo "no slab zone" và mọi dầm bị tính một bề dày sàn duy nhất.

ALO1
Chuẩn bị — Gán bề dày sàn cho LỖ MỞ
Chỉ khi bản vẽ có lỗ mở
Việc macro làm

Đi cặp với ALO. Mỗi đối tượng trên layer QS_Slab_Open_* (Area / MEP / Tank / Ramp / Staircase) được tra bề dày sàn tại chỗ nó nằm, rồi đổi tên layer thành QS_Slab_Open_Area_(200) — mang sẵn con số đó.

Cách tra giống hệt BM11: vùng Full lấy số ghi trong tên, vùng Step lấy vùng Full bao ngoài gần nhất rồi cộng bậc — bậc lồng bậc không cộng dồn.

Lỗ nằm vắt qua ranh giới 2 bề dày thì lệnh không đoán bừa: nó đo tỉ lệ diện tích lỗ nằm trong từng vùng; vùng nào chiếm từ OpenZoneMinRatio (mặc định 0,95) trở lên mới được coi là chủ. Dưới ngưỡng ⇒ để nguyên và đưa vào mục cần xử lý kèm tỉ lệ từng vùng.

"Chạy ALO1 để gán bề dày sàn cho các lỗ mở."
execute_lisp → (command "ALO1")
⏸ Điểm dừng

Chạy một lượt rồi hiện bảng tổng kết — đọc mục cần xử lý trước khi đi tiếp.

✅ Xong đúng thì thấy

Layer lỗ mở đổi thành dạng QS_Slab_Open_Area_(200), mang sẵn bề dày tại chỗ.

❌ Hay sai chỗ này

Lỗ vắt qua 2 bề dày không được gán — phải tự tách lỗ làm 2 rồi chạy lại, đừng bỏ qua.

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ó). Hỗ trợ cả dầm cung tròn — ghép 2 cung cùng tâm (lệch tâm ≤ ArcCenterTol, mặc định 50mm) thành centerline cung ở bán kính trung bình. Chọn được vùng làm việc hoặc cả bản vẽ.

🌀 Nhận cả cung "bị polygon hoá" (14/08). Nhiều bản vẽ có mặt tường/dầm cong được vẽ thành một chuỗi đoạn thẳng ngắn chứ không phải cung thật — bên kia là cung, bên này là 14 đoạn thẳng, nên phép ghép cặp cung–cung không bao giờ khớp và đoạn cong đó mất tim. Lệnh nay dò ra chuỗi đoạn thẳng nằm trên cùng một đường tròn rồi coi như cung. Ba thông số trong STSET: PolyArcMinSeg (4), PolyArcMaxTurn (30°), PolyArcTol (2 mm) — đặt PolyArcMinSeg nhỏ hơn 3 là tắt hẳn tính năng này.

🗑️ Hộp thoại "đã có tim, xoá đi vẽ lại?" nay tôn trọng vùng chọn (13/08). Trả lời No chỉ xoá tim trong vùng bạn đã chọn, không còn quét cả bản vẽ — quan trọng với bản vẽ gộp nhiều mặt bằng. Nó cũng thôi xoá lây vạch ván khuôn DFW của bên kia.

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

AutoCAD dừng ở dòng lệnh chờ chọn layer dầm trước khi macro chạy — bạn xác nhận đúng layer/phạm vi rồi mới đ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.

✅ Xong đúng thì thấy

Mỗi dầm có đúng một đường tim trên layer QS_CL_BEAM_<bề rộng>.

❌ Hay sai chỗ này

Chọn nhầm layer mép dầm ⇒ tim vẽ lệch hoặc thiếu hàng loạt. Nhìn qua vài dầm trước khi sang bước sau.

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 — áp cho cả cung tròn (cùng tâm + cùng bán kính + chồng lấn góc ≥50%). Ngưỡng: DedupDist, OvlMin, OvlRatio trong STSET.

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

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

✅ Xong đúng thì thấy

Số tim giảm; không còn 2 tim chồng nhau trong cùng một layer.

❌ Hay sai chỗ này

Đặt DedupDist quá lớn ⇒ 2 dầm song song sát nhau bị coi là trùng và mất một cái.

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 để bạn 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 → (command "BM3")
Điểm dừng bắt buộc

Đây là điểm dừng bắt buộc — bạn phải tự duyệt phần highlight, vì máy có thể chọn nhầm (giữ dầm nhỏ, xoá dầm to). Duyệt kỹ ở đây tiết kiệm rất nhiều công sửa về sau.

✅ Xong đúng thì thấy

Không còn tim trùng nhau giữa các layer bề rộng khác nhau.

❌ Hay sai chỗ này

Duyệt qua loa: bước này xoá tim thật nếu bạn xác nhận nhầm — xem kỹ từng cặp được hỏi.

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. Với dầm cung tròn: snap đầu line thẳng về đúng đầu cung cùng layer. Dọn luôn text END DFW còn sót.

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

Macro hiện menu chờ chọn chế độ nối — Layer hay Size — bạn trả lời thẳng trên dòng lệnh AutoCAD (không trả lời qua Claude), xong thì báo "xong" cho Claude đi tiếp.

✅ Xong đúng thì thấy

Các đoạn tim thẳng hàng đã nối liền; khe hở giữa chúng biến mất.

❌ Hay sai chỗ này

Chế độ By Layer với JoinWidthTol lớn có thể nối 2 dầm khác bề rộng thật thành một — đoạn gộp lấy bề rộng LỚN HƠN nên thừa khối lượng.

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 để hình học liền mạch trước khi trim. Giới hạn kéo = WidthFactor × bề rộng dầm (mặc định 1.5), không đọc được bề rộng thì dùng ExtendDefLimit (600mm). Mép dầm nhận cả LWPOLYLINE; cung tròn được kéo dài theo đường cong.

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

Chờ chọn layer mép dầm bằng form pick trên màn hình (chỉ vào 1 đối tượng mép dầm là xong, khỏi tìm tên layer trong danh sách) — lệnh nhớ layer đã chọn cho lần sau.

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

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

✅ Xong đúng thì thấy

Đầu tim còn hở đã chạm tới mép dầm/bê tông; không còn đầu lửng giữa không trung.

❌ Hay sai chỗ này

WidthFactor quá lớn ⇒ tim bị kéo dài quá đà, xuyên qua cả dầm bên cạnh.

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 → (command "BM6")
⏸ Đ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 — xem qua rồi mới xác nhận.

✅ Xong đúng thì thấy

Phần tim nằm trong vùng bê tông cột/vách đã bị cắt bỏ.

❌ Hay sai chỗ này

Layer bê tông chọn thiếu ⇒ tim vẫn chờm vào cột, khối lượng đếm trùng phần giao. Chạy BM7 để soát lại.

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 — để bạn 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 → (command "BM7")
⏸ Điểm dừng

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.

✅ Xong đúng thì thấy

Không còn đoạn nào bị highlight, tức không còn tim chờm vào bê tông quá CheckOverlapTol.

❌ Hay sai chỗ này

Thấy còn lỗi mà bỏ qua đi tiếp: sai số này đi thẳng vào bảng khối lượng cuối cùng.

BM8
Bước 8 — Trim giao cắt
Nhập góc + xác nhận
Việc macro làm

Bản cũ chỉ có một luật: chỗ nào 2 dầm gặp nhau thì dầm rộng hơn chạy suốt, dầm kia bị cắt — áp y hệt cho mọi kiểu nút. Hậu quả: ở ngã ba, dầm bị đâm mà hẹp hơn sẽ bị chẻ đôi, sinh ra 2 "đầu dầm giả" — trong khi kết cấu thực tế chỉ vách/cột bê tông mới chia đôi dầm, dầm gặp dầm không ai thiết kế bẻ gãy.

Bản mới phân loại nút theo HÌNH DẠNG trước, rồi mới áp luật:

  • Ngã tư (cả 2 dầm đều xuyên qua) → dầm rộng hơn chạy suốt, dầm hẹp bị cắt làm 2. Bằng bề rộng thì dầm nằm ngang chạy suốt.
  • Chữ T (1 dầm kết thúc trên dầm kia) → dầm chạy suốt KHÔNG BAO GIỜ bị chẻ, bất kể bề rộng; chỉ đầu dầm đâm vào bị thụt về đúng mép.
  • Góc (cả 2 cùng kết thúc tại đó) → dầm rộng hơn kéo dài ra mép ngoài, dầm hẹp thụt vào ⇒ ô góc thuộc trọn về dầm rộng, không còn vùng "không của ai".

Ranh giới "xuyên qua" hay "đầu mút thò dư" do CornerStubFactor quyết định (xem Bảng 2). Vẫn tính cả trường hợp 2 dầm chỉ chạm nhau (dung sai TouchTol) và trim tim thẳng tại chỗ gặp cung tròn.

📐 Nút xiên đã được sửa (08/08). Nửa bề rộng đo vuông góc với dầm, nhưng phép lùi/kéo lại đo dọc trục — hai phương này chỉ trùng nhau ở đúng 90°. Nay lượng lùi được chia sin(góc giữa 2 tim): ở nút 45° trước đây cắt thiếu 41%. Kèm theo, khi hai tim bằng bề rộngkhông tim nào nằm ngang (rất hay gặp ở mặt bằng xoay), trước đây không tim nào bị cắt ⇒ ô giao đếm hai lần; nay tim nào gần nằm ngang hơn thì thắng và giữ trọn ô góc.

🔴 Số liệu có thể khác bản cũ — và đây là chuyện tốt. Trước 14/08, hàm đọc bề rộng của BM8/WC8 lấy đoạn sau dấu _ cuối cùng, nên mọi tim đã gắn hậu tố (_AAC do WCM, _(300x500) do BM9) đều trả bề rộng 0 ⇒ lệnh không cắt gì và cũng không báo gì. Nay đọc đúng nên nó bắt đầu thật sự cắt ở những bản vẽ trước đây im lặng. Bản vẽ cũ chạy lại sẽ ra số khác — hãy chạy lại cả chuỗi thay vì so hai bảng cũ/mới.
"Chạy BM8 để trim các chỗ dầm giao nhau."
execute_lisp → (command "BM8")
⏸ Điểm dừng

Lệnh mở hộp thoại hỏi góc giao tối thiểu (mặc định 20°) — 2 tim lệch góc nhỏ hơn giá trị này coi như song song, không đụng tới. Ngay trong hộp thoại có tóm tắt 3 luật ở trên. Nhập xong lệnh chạy một lượt và hiện bảng tổng kết đếm riêng từng loại nút.

⚠️ Bản vẽ đã trim bằng luật cũ KHÔNG tự lành. Dầm đã bị chẻ đôi ở ngã ba vẫn là 2 tim rời — chạy lại BM8 không ghép chúng lại được. Muốn hưởng luật mới thì phải dựng lại tim từ BM1.
✅ Xong đúng thì thấy

Bảng tổng kết đếm riêng từng loại nút (ngã tư / chữ T / góc), số liệu khớp với những gì bạn thấy trên bản vẽ.

❌ Hay sai chỗ này

Nhập góc giao tối thiểu quá lớn ⇒ nhiều nút bị coi là song song và không được trim chút nào.

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).

📌 Đơn vị text tiết diện KHÔNG còn hỏi — lấy từ ô Beam dimension unit trong QS Settings (xem bảng 1 ở trên), lệnh in ra dòng lệnh đang đọc là mm hay cm. Nếu bản vẽ ghi tiết diện 2 chiều cao (250x600/500), đặt MultiSizeMode trong STSET = 1 (lấy max) hoặc 2 (lấy trung bình) để tên layer gọn lại còn 1 giá trị.

🆕 Ba thay đổi ngày 12/08:

  • Tôn trọng vùng chọn. Trước đây dù chọn một vùng nhỏ, lệnh vẫn đổi tên mọi tim cùng layer ở khắp bản vẽ.
  • Toạ độ text lấy tâm khung bao thay vì điểm chèn. Text tên dầm trên dầm nghiêng hầu như luôn căn giữa, mà điểm chèn của text căn giữa nằm ở chỗ khác hẳn ⇒ đo khoảng cách sai và bị đẩy sang _XXX. Kết quả trên bản vẽ cũ sẽ xê dịch — theo hướng đúng hơn.
  • Nhận cả POLYLINE, không chỉ line và cung.

🔗 Chế độ PAIR (mặc định TẮT): pick một đối tượng mẫu → mọi line/cung/polyline trên layer đó ghép với text gần nhất và chuyển sang QS_CL_BEAM_<W>_<text>, bề rộng suy từ WxH trong chính text. Ghép không được thì để nguyên đối tượng — không tạo layer rác, không gán _XXX — và liệt kê riêng.

📌 Text vuông góc vẫn gán được. Góc chỉ là ưu tiên: không có text song song trong LabelAngTol thì lệnh lui về text gần nhất bất kể góc — nên đừng đổ lỗi cho thông số này khi dầm nghiêng không nhận tên.

"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 → (command "BM9")
⏸ Điểm dừng

Chờ chọn layer text và trả lời chế độ FULL TEXT / SIZE ONLY. 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 (command "BM9A") — click line sai rồi click text đúng — để sửa tay từng chỗ. BM9A có 2 chế độ: RELABEL line sẵn có, hoặc DRAW vẽ centerline mới rồi click text; giữ nguyên hình dạng cung khi relabel dầm cung tròn.)

✅ Xong đúng thì thấy

Tên layer đầy đủ dạng QS_CL_BEAM_300_D1(300x500); rất ít hoặc không có layer _XXX.

❌ Hay sai chỗ này

Nhiều _XXX mà vẫn đi tiếp ⇒ bảng Excel đầy dòng không tên. Chạy BM9B khoanh chúng lại rồi sửa bằng BM9A.

BM9B
Bước 9B — Khoanh vòng các dầm chưa có tên
Chọn vùng + xác nhận
Việc macro làm

Sau BM9, những dầm không tìm được text tên sẽ mang đuôi _XXX. Lệnh này vẽ vòng tròn quanh từng cái trên layer riêng QS_BEAM_XXXCheck để bạn nhìn bản vẽ là thấy ngay còn sót chỗ nào — thay vì phải xuất Excel rồi mới dò ngược.

Layer vòng tròn cố ý nằm ngoài họ QS_CL_BEAM* nên nó không bao giờ lọt vào bảng khối lượng hay bị các bước trim coi là tim dầm. Xoá bằng BMD như mọi layer khác.

"Chạy BM9B để khoanh các dầm còn _XXX cho tôi thấy."
execute_lisp → (command "BM9B")
⏸ Điểm dừng

Chờ chọn vùng làm việc, rồi hỏi có xoá vòng tròn của lần chạy trước không (nên chọn Yes).

✅ Xong đúng thì thấy

Các dầm chưa có tên bị khoanh tròn rõ ràng — không còn phải dò tay trong Excel.

❌ Hay sai chỗ này

Trả lời No ở câu hỏi xoá vòng cũ khi chạy lại ⇒ vòng tròn chồng lên nhau, càng nhìn càng rối.

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 — cơ sở để bước xuất Excel trừ giao ván khuôn. Tên layer thừa hưởng tên dầm từ BM9.

📌 Vạch DFW tách làm 2 layer tuỳ đầu dầm tì vào cái gì:

  • QS_CL_DFWBeam_* (màu đỏ) — đầu dầm tì vào dầm khác.
  • QS_CL_DFWCOL_* (màu magenta) — đầu dầm giáp bê tông cột/vách. Lệnh hỏi riêng layer bê tông để nhận biết; bê tông được ưu tiên hơn mép dầm khi một đầu vừa chạm cả hai.

Tách ra để bước xuất Excel bật/tắt riêng từng loại trừ (xem Bước 14). BM6 cố ý bỏ qua layer DFWCOL — nếu không nó sẽ xoá sạch đúng những vạch này vì chúng nằm trong vùng bê tông.

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

Chờ chọn chế độ DFW (bỏ đầu tì vào dầm khác / vẽ mọi đầu), chọn layer mép dầm và layer bê tông cột/vách bằng form pick trên màn hình. Với dầm cung tròn, vạch DFW vẽ theo hướng bán kính tại 2 đầu cung.

✅ Xong đúng thì thấy

Mỗi đầu dầm có một vạch ngắn; vạch giáp dầm và vạch giáp cột/vách nằm trên hai layer khác màu.

❌ Hay sai chỗ này

Không khai layer bê tông ⇒ mọi vạch rơi hết vào DFWBeam, sau đó không tách riêng phần giáp cột được nữa.

BM10A
Bước 10A — Vẽ hình tiết diện dầm từ tim
Chọn phạm vi + xác nhận
Việc macro làm

Từ mỗi tim, vẽ hình kín đúng bề rộng dầm, tim nằm chính giữa — tức là vệt dầm thật trên mặt bằng. Tim thẳng ra hình chữ nhật (2 đầu cắt vuông), tim cung tròn ra dải cong. Tim gốc giữ nguyên.

  • Dầm → QS_RECT_BEAM_<W>x<H> (bề rộng lấy từ tên layer, chiều cao đi vào tên hình)
  • Tường → QS_RECT_WALL_<bề dày>

Dùng để làm gì: hình là đối tượng thật nên bạn kéo/xoá/thêm được, và ALO2 (ván khuôn cột/vách) có thể ăn theo đúng cái bạn nhìn thấy thay vì tự dựng trong bộ nhớ.

"Chạy BM10A để vẽ hình tiết diện dầm từ tim."
execute_lisp → (command "BM10A")
⏸ Điểm dừng

Chờ chọn phạm vi [Selected/All]; nếu bản vẽ đã có hình cũ thì hỏi giữ hay xoá vẽ lại.

✅ Xong đúng thì thấy

Mỗi tim có một hình kín bao quanh đúng bề rộng dầm, nằm trên layer QS_RECT_*.

❌ Hay sai chỗ này

Dầm chưa gán tên (thiếu WxH) bị bỏ qua — lệnh liệt kê ra, sửa bằng BM9A rồi chạy lại.

BM10B
Bước 10B — Vẽ đường mặt ván khuôn dầm
Chọn phạm vi + layer bê tông
Việc macro làm

Cách khác để tính ván khuôn, thay cho vạch DFW của BM10. Mỗi tim sinh 4 đường — 2 mặt bên và 2 đầu — rồi cắt bỏ ngay đoạn nằm trong bê tông khác (cột, vách, hoặc dầm cắt qua). Cái gì bị che thì không còn đường, nên không phải trừ lại về sau.

Kết quả ra layer mang sẵn chiều cao: QS_FW_BEAM_<W>x<H> / QS_FW_WALL_<T>diện tích ván khuôn = tổng chiều dài đường × chiều cao đọc trong tên layer. Hai thông số tinh chỉnh: FwEdgeTol (sát tới đâu thì coi là nằm trên mặt kia) và FwMinSeg (mảnh ngắn hơn thì bỏ).

⚠️ BM10B và vạch DFW của BM10 là hai cách THAY THẾ nhau, không cộng vào nhau. BM10 vẽ vạch rồi để bước Excel trừ đi; BM10B thì cắt sẵn ngay trên bản vẽ. Dùng cả hai là trừ 2 lần.
"Chạy BM10B để vẽ đường mặt ván khuôn dầm."
execute_lisp → (command "BM10B")
⏸ Điểm dừng

Chờ 3 câu: phạm vi [Selected/All] → vẽ cho [Beam/Wall/Both] (mặc định Beam) → layer bê tông cột/vách (để trống là bỏ qua bước trừ này).

✅ Xong đúng thì thấy

Đường ván khuôn chạy dọc 2 bên và 2 đầu dầm, đứt đoạn đúng chỗ đâm vào cột/vách hay dầm khác.

❌ Hay sai chỗ này

🔴 Dùng BM10B rồi vẫn cộng vạch DFW của BM10 ⇒ trừ ván khuôn hai lần. Chọn một trong hai cách.

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 → (command "BM11")
⏸ Đ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". Mảnh ngắn hơn MinFragLen (STSET, mặc định 200mm) thì không phá tiếp.

✅ Xong đúng thì thấy

Dầm bị cắt thành mảnh tại ranh giới các vùng bề dày sàn; mảnh nằm trên QS_BCL_Beam_* mang bề dày trong tên.

❌ Hay sai chỗ này

Chưa chạy ALO ⇒ không có vùng nào để phá, lệnh báo "no slab zone" và không làm gì cả.

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 → (command "BM12")
⏸ Đ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.

✅ Xong đúng thì thấy

Trong Layer Manager hiện các nhóm lọc theo đúng thứ tự Dầm → Ván khuôn → Sàn → Tường.

❌ Hay sai chỗ này

Thêm họ layer mới mà quên chạy lại BM12 ⇒ nhóm thiếu, BM13 isolate sót đối tượng.

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 → (command "BM13")
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" — chọn sai nhóm ở đây thì bảng Excel ra sai phạm vi. Nếu chưa quen, hãy làm thử với 1 nhóm tiết diện trước rồi mới xuất các nhóm còn lại.

✅ Xong đúng thì thấy

Chỉ còn nhóm bạn chọn hiện trên màn hình; mọi thứ khác đã tắt.

❌ Hay sai chỗ này

Quên chạy SLO lưu trạng thái trước đó ⇒ sau khi xuất xong phải bật tay lại từng layer.

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).
  • Cả hai lệnh còn hỏi có bỏ ván khuôn đáy ở cột/nút T hay không — chọn 1 lần, lệnh nhớ cho lần sau.
Bảng tick 3 mục

Mở đầu lệnh là một hộp thoại cho tick độc lập 3 thành phần — tick đủ cả ba = bảng bóc đầy đủ, bỏ tick cái nào thì bỏ qua cái đó kể cả khi nó nằm trong vùng bạn chọn:

Mục tickLayerGhi vào Excel
Beam quantityQS_CL_BEAM_*Khối lượng dầm — chiều dài dương
Deduct beam-to-beamQS_CL_DFWBeam*Trừ ván khuôn chỗ dầm giao dầm — chiều dài ÂM
Deduct beam-to-column/wallQS_CL_DFWCOL*Trừ ván khuôn chỗ dầm giáp cột/vách — chiều dài ÂM
⚠️ Dòng trừ ghi chiều dài ÂM — nên bỏ tick một mục trừ làm tổng LỚN HƠN, không phải nhỏ đi. Đây là chỗ dễ hiểu ngược nhất: thấy tổng tăng lên thì đừng mừng, kiểm lại xem có bỏ sót mục trừ nào không.

📌 Thứ tự dòng trong Excel đã cố định: khối lượng DẦM → trừ giao DẦM → trừ giao CỘT/VÁCH (trước đây 2 nhóm trừ nằm xen kẽ theo thứ tự gặp trên bản vẽ, rất khó soát).

"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 → (command "BM14") / hoặc (command "BM15")
Lưu ý quan trọng

Đây là bước có thao tác tay — Claude gọi lệnh, nhưng bạn 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. Nói ngắn gọn: AI lo phần dọn dẹp và tính toán lặp lại, còn phạm vi chọn và lệnh xuất phù hợp vẫn do bạn quyết định.

✅ Xong đúng thì thấy

Excel có đủ 3 khối theo thứ tự: khối lượng dầm → trừ giao dầm → trừ giao cột/vách; tổng ở cuối hợp lý.

❌ Hay sai chỗ này

Bỏ tick một mục trừ làm tổng LỚN HƠN chứ không nhỏ đi — thấy tổng tăng thì kiểm lại bảng tick chứ đừng mừng.

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 → (command "BM9A")
⏸ Điểm dừng

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

✅ Xong đúng thì thấy

Không còn dòng nào ghi XXX trong Excel.

❌ Hay sai chỗ này

Sửa tên trên bản vẽ xong mà quên xuất lại Excel ⇒ bảng cũ vẫn còn nguyên dòng XXX.

🔗 Ván khuôn CỘT / VÁCH — liên quan trực tiếp tới bảng dầm

Hai lệnh ALO2CS12 thuộc quy trình cột/vách nhưng dính chặt vào bảng khối lượng dầm bạn vừa xuất, nên cần biết để không cộng trùng:

⚠️ Ba chỗ dễ cộng trùng — nhớ kỹ:
BM10B ↔ vạch DFW của BM10: hai cách thay thế nhau, dùng một thôi.
Cột U của CS11 vốn đã là ván khuôn — dùng CS12 thì để CS11 lấy phần bê tông, đừng cộng cả hai.
ALO2 ↔ dòng QS_CL_DFWCOLBM14/BM15 trừ: KHÔNG phải trùng nhau. Một cái trừ khỏi tổng DẦM (mặt đầu dầm), một cái trừ khỏi tổng CỘT (mảng mặt cột bị đầu dầm che). Hai mặt thật khác nhau của cùng một nút, không mặt nào được ghép ván khuôn.

📚 Chi tiết hai lệnh này ở Hướng dẫn tab AI_CWF — Cột / Vách / Móng. Phần tường xây (tim tường, cửa, chiều cao xây) nằm ở Hướng dẫn tab AI_WALL  ·  Hoàn thiện: Sàn / Trần / Tô trát — lệnh WC9 bên đó cần chính hình tiết diện dầm do BM10A vẽ ra.

🧰 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ự 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.
BMD
Xoá centerline / DFW / mảnh break theo layer chọn
Chọn layer + xác nhận
Việc macro làm

(Tên cũ BBD không còn dùng.) Xoá các đối tượng trên danh sách layer chọn — dùng khi cần làm lại centerline từ đầu (vẽ nhầm layer, dữ liệu lỗi nặng...). Lệnh liệt kê ra bảng tick, không tự xoá gì nếu bạn không tick. Nhận diện được:

  • Centerline dầm QS_CL_BEAM_* và mảnh do BM11 phá QS_BCL_BEAM_*
  • Vạch DFW cả 2 loại: *DFWBeam* (giáp dầm) và *DFWCOL* (giáp cột/vách)
  • Polyline cột/vách/móng đã gán tên QS_CL_OBJ_* (và tên cũ CL_OBJ_*)
  • Vòng tròn đánh dấu _XXX trên layer QS_BEAM_XXXCHECK
"Chạy BMD để xoá centerline/DFW dầm theo layer chọn, làm lại từ đầu."
execute_lisp → (command "BMD")
⏸ Đ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, hãy đọc kỹ và kiểm đúng phạm vi trước khi đồng ý.

✅ Xong đúng thì thấy

Đúng những nhóm layer bạn tick đã biến mất khỏi bản vẽ.

❌ Hay sai chỗ này

Tick nhầm QS_CL_OBJ_* ⇒ xoá luôn polyline cột/vách đã gán tên, phải chạy lại OO1/OO2.

QSULK
Mở khoá toàn bộ layer đang bị khoá
Chạy một phát, không hỏi gì
Việc macro làm

Quét toàn bộ layer của bản vẽ, layer nào đang khoá thì mở. Hay dùng khi nhận bản vẽ của người khác mà các lệnh QSTools không sửa được đối tượng.

Lệnh không đụng tới layer đang tắt hay đang đóng băng — chỉ đếm và báo số lượng để bạn biết. Tên có tiền tố QSLAYULK là lệnh gốc của AutoCAD, đặt trùng tên là chiếm mất nó.

"Chạy QSULK mở khoá hết layer đang bị khoá."
execute_lisp → (command "QSULK")
⏸ Điểm dừng

Không có điểm dừng — chạy xong hiện bảng tổng kết ngay.

✅ Xong đúng thì thấy

Bảng tổng kết liệt kê đúng những layer vừa được mở khoá.

❌ Hay sai chỗ này

Layer vẫn khuất sau khi chạy: nó đang tắt hoặc đóng băng chứ không phải bị khoá — dùng BMU hoặc bật tay.

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 → (command "BM7")
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.

✅ Xong đúng thì thấy

Không còn đoạn nào bị highlight, tức không còn tim chờm vào bê tông quá CheckOverlapTol.

❌ Hay sai chỗ này

Thấy còn lỗi mà bỏ qua đi tiếp: sai số này đi thẳng vào bảng khối lượng cuối cùng.

BMU / BMS
Bỏ đóng băng layer CL & reset trạng thái seri dầm
Khi layer bị ẩn/khoá
Việc macro làm

BMU (command "BMU") — bỏ freeze/off cho các layer centerline dầm khi bước trước đã ẩn chúng. BMS (command "BMS") — reset trạng thái/ghi nhớ của seri dầm để chạy lại từ đầu sạch sẽ. (Tên cũ BBU/BBS đã bỏ.)

"Chạy BMU để hiện lại các layer centerline dầm đang bị đóng băng."
execute_lisp → (command "BMU") / (command "BMS")
✅ Xong đúng thì thấy

Layer tim dầm hiện lại bình thường sau khi bước trước đã ẩn chúng.

❌ Hay sai chỗ này

Dùng BMS giữa chừng sẽ xoá ghi nhớ lựa chọn của cả seri — chỉ chạy khi muốn làm lại từ đầu.

QSGAP / QSPLX / QSPLD
Bộ lệnh soát & sửa hình học trước khi bóc
Mỗi lệnh có nhánh Check / Fix

Ba lệnh mới (19/08) chữa đúng những thứ làm hỏng số liệu mà CAD không hề cảnh báo:

  • QSGAP [Check/Weld] — tìm khe hở tócđầu mút treo làm BOUNDARY bị loang. Check khoanh đỏ kèm bảng phân bố độ rộng khe; Weld hàn lại và giữ nguyên handle.
  • QSPLX [Check/Fix] — polyline tự cắt. Diện tích .Area của hình tự cắt bị thiếu mà không báo gì; lệnh in cả diện tích CAD lẫn diện tích hình học thật, lệch nhau là hình đang xoắn. Fix có 3 kiểu [Unwind/KeepBig/Split].
  • QSPLD — bỏ đường vòng nôngBOUNDARY chui vào khe tường rồi quay lại. Luật đặt đúng nên không cắt góc thật.
execute_lisp → (command "QSGAP") · (command "QSPLX") · (command "QSPLD")
❌ Hay sai chỗ này

Đừng dùng OVERKILL toàn bản vẽ để thay mấy lệnh này: đo thật trên một bản vẽ, nó xoá 63% số đối tượng và làm hỏng biên. Chạy đúng vùng nhỏ quanh chỗ lỗi thôi.

QSBRK
Chẻ đối tượng tại mọi điểm giao
[All/Cutter]

All = mọi đối tượng đã chọn chẻ lẫn nhau · Cutter = chọn hai tập khác nhau, tập bị chẻ và tập làm dao (dao giữ nguyên).

execute_lisp → (command "QSBRK")
❌ Hay sai chỗ này
🔴 Đừng chạy trên tim QS_CL_BEAM / QS_CL_WALL. BM8WC8 cố ý không chẻ nút chữ T — chẻ ra là phá đúng cái luật vừa trim.
🔴 Handle đổi hết. Bảng Excel đã xuất trước đó (cột mã đối tượng, hyperlink, lệnh QSFIND/QSFCAD) sẽ trỏ vào đối tượng không còn tồn tại.
STL / SLO / QSLR
Bộ lệnh layer đi kèm (panel Layer Management)
Tiện ích
Việc từng lệnh làm
  • STL — tạo bộ layer chuẩn QS cho bản vẽ mới.
  • SLO (hay RLOhai tên, cùng một hộp thoại) — trạng thái ON/OFF layer của bản vẽ. Menu liệt kê sẵn các state đã lưu, rồi: <số> = khôi phục · S = lưu state mới (hỏi tên) · S2 = ghi đè state số 2 · D2 / D2,3,5 / D* = xoá. Xoá chỉ gỡ bản đã lưu, không đổi layer trong bản vẽ. Mỗi bản vẽ lưu được nhiều state. Bản vẽ chưa có state nào thì vào thẳng nhánh lưu.
  • QSLR — đổi tên / gộp layer (dùng khi tên layer bị lệch chuẩn giữa các bản vẽ).
"Chạy SLO lưu trạng thái layer hiện tại tên 'Truoc khi isolate', sau đó chạy BM13."
execute_lisp → (command "SLO") / (command "STL") / (command "QSLR")
Mẹo dùng

Trước khi BM13 isolate, chạy SLOS lưu lại 1 state — sau khi xuất Excel xong gọi SLO lần nữa rồi gõ số của state đó là hiện lại đúng như trước, không phải bật tay từng layer.

✅ Xong đúng thì thấy

Trạng thái layer khôi phục đúng như lúc lưu.

❌ Hay sai chỗ này

Xoá state bằng D* là mất hết bản lưu của bản vẽ đó, không hoàn tác được.

QSMODE / STSET
Gạt chế độ hỏi–không hỏi & mở bảng thông số
Tiện ích
Việc từng lệnh làm

QSMODE gạt nhanh InteractiveMode giữa 1 (hỏi đủ bước như thường) và 0 (QUICK mode — dùng lại giá trị đã lưu, bỏ bớt bước nhập tay; BM4BM9 vẫn luôn hỏi). STSET mở bảng 84 thông số ở mục "Hai bảng thông số phải biết" phía trên.

"Bật QUICK mode bằng QSMODE rồi chạy lại BM5 cho nhanh."
execute_lisp → (command "QSMODE") / (command "STSET")
⚠️ Lần đầu chạy nên để InteractiveMode = 1 để thấy rõ từng điểm dừng và kiểm được kết quả. QUICK mode chỉ nên bật khi bạn đã quen tay và chạy lại nhiều lần trên cùng bản vẽ.
✅ Xong đúng thì thấy

Dòng lệnh in ra chế độ đang dùng mỗi khi chạy lệnh liên quan.

❌ Hay sai chỗ này

Bật QUICK mode khi chưa quen ⇒ lệnh dùng lại giá trị cũ mà không hỏi, sai mà không biết vì sao.

📝 Lưu ý khi sử dụng
📚 Phụ lục tra cứu — hai bảng thông số

Phần này để tra khi cần, không phải đọc tuần tự. Hai bảng dưới quyết định kết quả của nhiều bước — nếu một lệnh cho ra số lạ, quay lại đây kiểm trước khi nghi bản vẽ.

⚙️ Hai bảng thông số phải biết: QS Settings & STSET

Trước khi bóc, cả bộ lệnh đọc thông số từ 2 bảng. Đây là chỗ hay bị bỏ qua nhất khiến kết quả sai mà không hiểu vì sao:

📐 Bảng 1 — QS Settings (lệnh QSUNITS)
Ô trong formÝ nghĩaẢnh hưởng lệnh nào
UnitsĐơn vị chiều dài ghi ra Excel (mm / cm / m)mọi lệnh xuất Excel (BM14, BM15, WC100, CS11, CS12…)
PrecisionSố chữ số thập phân làm tròn khi ghi Excelmọi lệnh xuất Excel
Scale ratio (times)Tỉ lệ bản vẽ — nhân vào kích thước đo đượccác lệnh đo chiều dài / diện tích
Concrete coverLớp bảo vệ bê tông (mm)nhóm lệnh thép (rebar)
Floor heightChiều cao tầng (mm) — mặc định 3300. Đo từ MẶT SÀN tầng này đến MẶT SÀN tầng trên (không phải chiều cao thông thuỷ). Các lệnh tự trừ tiếp bề dày sàn và bậc giật cấp để ra chiều cao thực xây/ván khuôn ⇒ đừng tự trừ trước rồi mới nhập, sẽ thiếu 2 lần.
Máy đã lỡ lưu 0 thì vẫn giữ 0 (bản cập nhật không tự đổi số đã lưu) — mở QSUNITS nhập lại 1 lần.
ALO2, WC9, WC100, QS_BrickWall_*
Beam dimension unitmm hay cm cho text tiết diện dầm trong bản vẽ. Text ghi 40x60 mà bảng đang đặt mm thì tên layer ra 40x60 (sai 10 lần); đặt cm mới ra 400x600. Đặt nhanh bằng lệnh QSBEAMUNITBM9, BM9A, WC4QS_BrickWall_03/04
Text heightChiều cao text của nhãn lệnh vẽ (lưu chung với họ lệnh Rectangle)QSCLT/QSCLT1, QSTH
Extend lengthKéo dài 2 đầu đối tượng vẽ (0 = không kéo)QSCLT/QSCLT1, QSEXL
⚠️ Lưu ý nếu bạn quen bản cũ: trước đây BM9 hiện hộp thoại hỏi "text tiết diện là mm hay cm?" mỗi lần chạy, còn BM9A thì không hỏi gì nên tên layer 2 lệnh ra lệch nhau (40x60 vs 400x600) → khối lượng sai 100 lần. Nay bỏ hẳn hộp thoại, cả 3 lệnh BM9/BM9A/WC4 lấy đúng ô Beam dimension unit ở bảng trên, và in ra dòng lệnh đang dùng đơn vị nào. Kiểm tra ô này TRƯỚC khi chạy BM9.
🎛️ Bảng 2 — STSET (84 thông số, lệnh STSET)

Giá trị lưu trong registry, dùng chung cho mọi lệnh của bộ QSTools. Cột "Mặc định" đúng bằng giá trị cứng của bản cũ ⇒ không sửa gì thì hành vi không đổi. Các dòng tô cam là những thông số hay phải chỉnh nhất khi bóc dầm.

📋 Bảng dưới liệt kê 32 thông số ảnh hưởng chuỗi bóc dầm. 52 thông số còn lại (nhóm Room* của seri lệnh phòng, Alo* của ALO2, Fw* của BM10B, OpenZoneMinRatio của ALO1, PlasterTrimTol, ExportSortMode của CS11) thuộc các lệnh chưa có mặt trong tài liệu này — mở STSET là thấy đủ 84, mỗi dòng có sẵn mô tả.

Thông sốMặc địnhÝ nghĩaLệnh
① Vẽ centerline & khử trùng
MaxGapMerge100 mmKhe hở tối đa để ghép 2 centerline thẳng hàng thành 1BM1
EdgeMargin5 mmBỏ qua line nằm sát mép bê tông trong khoảng nàyBM1, WC
ArcCenterTol50 mmLệch tâm tối đa để ghép 2 cung thành 1 dầm cung trònBM1
DedupDist70 mmKhoảng cách tối đa coi 2 centerline là trùng nhauBM2, BM3
TolAngle2 degDung sai góc để coi 2 line là song songBM1–BM3
OvlMin50 mmChiều dài chồng lấn tối thiểu mới xét là trùngBM2, BM3
OvlRatio0.02Tỉ lệ chồng lấn tối thiểu so với line ngắn hơnBM2, BM3
② Nối / kéo dài / trim
JoinWidthTol30 mmỞ chế độ Yes = By Layer, 2 line thẳng hàng vẫn nối được dù bề rộng layer lệch nhau tới mức này (vd 70 nối với 5090); đoạn gộp lấy layer bề rộng LỚN NHẤT. 0 = tắt, tên layer phải khớp tuyệt đối như bản cũ. Chế độ No = By Size không áp dung sai nàyBM4
WidthFactor1.5Hệ số × bề rộng dầm = giới hạn auto-extendBM5
ExtendDefLimit600 mmGiới hạn kéo dài khi không đọc được bề rộng từ tên layerBM5
MinCrossAng10 degDưới góc này coi như song song — không kéo dàiBM5
CheckOverlapTol10 mmNgưỡng báo lỗi "còn chờm vào bê tông"BM7, WC8
TouchTol10 mmNới thêm quá nửa bề rộng dầm chính để tính là "chạm nhau" khi trim giao cắtBM8
CornerStubFactor1.15 × bề rộngQuyết định BM8 xếp một nút vào loại nào. Một nhánh dài hơn bề rộng × hệ số này thì coi là dầm xuyên qua nút; ngắn hơn là đầu mút thò dư. Cả 2 xuyên qua = ngã tư · 1 xuyên qua = chữ T · không cái nào = góc. Đuôi thừa ngắn hơn ngưỡng ở nút góc bị cắt ngay tại điểm giao. 0 = tắt (hành vi cũ: không cắt gì). Hạ từ 2.0 xuống 1.15 ngày 08/08 sau khi đo trên nút thật: với 2.0 một nhánh thò 240 mm trên dầm/tường 180 vẫn bị xếp nhầm là "góc" thay vì ngã 3.BM8, WC8
DfwTrimMargin5 mmBiên an toàn khi trim vạch DFWBM10, BM14, BM15
③ Gán tên dầm
LabelAngTol15 degDung sai góc giữa text và centerline khi gán tênBM9, WC4
LabelWidthTol5 mmDung sai so bề rộng layer với W trong text WxHBM9
NeighborMaxGap2000 mmKhe hở tối đa để line _XXX thừa hưởng tên của line kềBM9 (bước B)
MultiSizeMode0Bản vẽ ghi tiết diện 2 chiều cao kiểu 250x600/5000 giữ cả 2 trong tên layer (250x600#500, như cũ) · 1 lấy giá trị lớn nhất (250x600) · 2 lấy trung bình làm tròn 1mm (250x550)BM9, BM9A, WC4
④ Phá theo vùng & chế độ chạy
MinFragLen200 mmMảnh ngắn hơn giá trị này thì không phá tiếpBM11
InteractiveMode11 = hỏi đủ các bước như thường · 0 = QUICK mode: dùng lại giá trị đã lưu, bỏ bớt bước nhập tay. Gạt nhanh bằng lệnh QSMODE (BM4 và BM9 vẫn luôn hỏi)toàn seri BM/WC
RibbonShortLabels00 = nhãn nút ribbon đầy đủ · 1 = chỉ mã lệnh (cửa sổ hẹp vẫn thấy nhiều panel). Gạt bằng lệnh QSRBLribbon
⑤ Thông số của lệnh khác (không dùng khi bóc dầm)
ConcEdgeMaxLen300 mmWC1: chỉ loại mép tường nằm trên mặt bê tông nếu mép ngắn hơn giá trị nàyWC1
MergeDistFactor3 × cao textKhoảng cách ghép text tên bị gãy = hệ số × chiều cao textCBT
MergeAngleTolDeg2 degDung sai góc khi ghép text bị gãyCBT
AreaTolOO10.05Sai số diện tích cho phép khi đối chiếu kích thước từ textOO1
CdlBboxTol0.01Dung sai bounding-box khi tìm đối tượng trùngCDL
CdlAreaTolPct0.0001Dung sai diện tích tương đối khi tìm trùngCDL
CdlAngleTol0.0001 radDung sai góc xoay khi tìm trùngCDL
LintelWidth0 mmBề rộng lanh tô khi pick 2 điểm theo tim (0 = phải pick 2 góc đối)QSCLT
LintelExtendLen0 mmKéo dài mỗi đầu lanh tô (0 = không kéo)QSCLT/QSCLT1
LintelTextHeight20 mmChiều cao text nhãn ghi cạnh lanh tôQSCLT/QSCLT1
⚠️ Sửa STSET là đổi hành vi mọi lệnh liên quan, không chỉ lệnh đang chạy. Lần đầu dùng, bạn nên mở STSET xem qua 1 lượt — nhất là MultiSizeModeInteractiveMode — rồi để nguyên mặc định mà chạy. Chỉ chỉnh khi bản vẽ có đặc thù và bạn đã biết rõ mình cần đổi gì.