Bóc khối lượng thép là việc tốn công nhất của một bộ bản vẽ kết cấu, và cũng là việc dễ sai nhất nếu cộng tay. Vì thế lisp thống kê thép trong CAD nằm trong nhóm tệp được tìm nhiều nhất, ngang với lisp đánh số và lisp in hàng loạt.
Bài này đưa ra một lisp thống kê thép trong CAD do Viện tự viết, chỉ một tệp .lsp duy nhất, tự vẽ bảng ngay trong bản vẽ. Mọi con số trong bài đều đo trên AutoCAD 2027 tại Viện. Muốn học trọn cách đọc và bóc bản vẽ kết cấu thì xem khóa AutoCAD Xây Dựng.
Bảng thống kê thép quy về đúng một phép nhân
Mọi bảng thống kê thép đều quy về một phép nhân. Biết chiều dài thì ra khối lượng, miễn là biết một mét thép đường kính ấy nặng bao nhiêu.
Công thức đầy đủ: tiết diện nhân khối lượng riêng, tức π/4 × d² × 10⁻⁶ × 7850, với d tính bằng milimét và kết quả ra kilôgam trên mét. Con số 7850 kg/m³ là khối lượng riêng của thép, và TCVN 1651-2:2018 về thép cốt bê tông cũng lấy mốc ấy khi quy đổi khối lượng danh nghĩa.
Trong nghề còn một mẹo nhẩm quen thuộc là lấy d² chia 162. Hai cách chênh nhau bao nhiêu? Chúng tôi tính cả hai cho toàn bộ dải đường kính hay dùng:
| Đường kính | Công thức đầy đủ (kg/m) | Mẹo d² chia 162 | Chênh |
|---|---|---|---|
| 6 | 0,222 | 0,222 | 0,1% |
| 10 | 0,617 | 0,617 | 0,1% |
| 12 | 0,888 | 0,889 | 0,1% |
| 16 | 1,578 | 1,580 | 0,1% |
| 20 | 2,466 | 2,469 | 0,1% |
| 25 | 3,853 | 3,858 | 0,1% |
| 32 | 6,313 | 6,321 | 0,1% |
Mẹo nhẩm sai chưa tới hai phần nghìn, tức là dùng để ước lượng ngoài công trường thì hoàn toàn được. Nhưng khi máy tính hộ thì không có lý do gì để dùng số làm tròn, nên tệp của Viện dùng công thức đầy đủ.
Lisp thống kê thép đang lưu hành: mạnh, nhưng là cả một gói
Chúng tôi tải bộ được chia sẻ rộng rãi nhất về và mở ra đọc. Đây là điểm cần nói ngay cho công bằng: mã nguồn của nó để mở, đọc được từng dòng, khác hẳn trường hợp tệp in hàng loạt mà chúng tôi gặp ở bài về lisp in hàng loạt.
Vài con số đo trên chính gói ấy. Tệp chính TK.LSP dài 1.070 dòng với 13 hàm và hai lệnh. Cả gói có 23 tệp, trong đó ngày tháng trải từ 1998 tới 2017.
Chúng tôi cũng kiểm phép tính khối lượng của nó, và nó đúng: dòng ấy nhân pi, 0.25, đường kính bình phương, 0.000001 rồi 7850. Đúng công thức đầy đủ, không phải bảng tra làm tròn.
Vậy vì sao vẫn viết thêm một tệp khác? Vì cái giá của một bộ 23 tệp nằm ở khâu cài.
Bộ ấy cần một hộp thoại .DCL, một thư viện ảnh .slb để hiện hình dạng thanh thép, và một tệp .DWG riêng để chèn khung bảng. Cả ba phải nằm đúng trong đường dẫn hỗ trợ của AutoCAD thì lệnh mới chạy. Chép thiếu một tệp là lệnh báo lỗi ở giữa chừng, và người dùng mới gần như không đoán ra thiếu cái gì.
Tệp của Viện đi hướng ngược lại: một tệp duy nhất, không hộp thoại, không thư viện ảnh, không chèn khối từ tệp khác. Bảng được vẽ bằng đường và chữ ngay trong bản vẽ đang mở.
Lisp thống kê thép tự động trong CAD: tệp TKT-IIC.lsp
Tải tệp TKT-IIC.lsp — 11 KB, hai lệnh, mã nguồn để mở, mọi dòng nhắc bằng tiếng Việt có dấu.
| Lệnh | Việc nó làm |
|---|---|
TKT | cộng dồn chiều dài theo từng đường kính rồi vẽ bảng thống kê |
TKTX | xóa kết quả đang cộng dồn để bắt đầu lại từ đầu |
Tệp được lưu bằng bảng mã UTF-8. Chúng tôi đo trên AutoCAD 2027 ngày 20/09/2026: hàm load đọc đúng, và princ in ra dòng lệnh đủ dấu, không rơi mất chữ nào. Nếu bạn mở tệp ra sửa thì nhớ lưu lại vẫn bằng UTF-8, lưu kiểu ANSI là mất dấu.
Cách làm việc rất thẳng. Bạn khai đường kính, quét chọn các nét thép mang đường kính ấy, khai số thanh giống hệt nhau, rồi lặp cho đường kính tiếp theo. Xong thì chỉ một điểm đặt bảng.
Lệnh đọc chiều dài thật của từng nét, kể cả nét cong, nên thanh thép uốn móc vẽ bằng đường đa tuyến vẫn tính đúng.
Phép thử của chúng tôi, để bạn tự kiểm lại bằng máy tính bỏ túi.
Nhóm thứ nhất: ba nét dài 3000, đường kính 12, bội số 2. Tổng chiều dài phải là 3 × 3000 × 2 = 18.000 mm, tức 18,00 m. Nhân 0,888 kg/m ra 15,98 kg. Máy ghi 18.00 và 16.0.
Nhóm thứ hai: bốn nét dài 1800, đường kính 18, bội số 3. Tổng 4 × 1800 × 3 = 21.600 mm, tức 21,60 m. Nhân 1,998 kg/m ra 43,15 kg. Máy ghi 21.60 và 43.1.
Dòng tổng: 39,60 m và 59,1 kg. Cả sáu con số đều khớp với phép nhân tay.
Thống kê thép từng bước: khai, chọn, cộng dồn
Bước 1 — Nạp tệp
Chép tệp vào thư mục lisp của bạn, gõ APPLOAD, trỏ tới tệp, bấm Load rồi Close. Nếu hộp thoại an toàn hiện ra thì khai thư mục ấy là nơi tin cậy, cách làm nằm ở bài về lisp đánh số thứ tự.
Bước 2 — Khai đường kính rồi quét chọn
Gõ TKT. Máy hỏi:
Đường kính thép (mm), nhập 0 để dừng <12.00>:
Chọn các nét thép có đường kính này:
Quét chọn mọi nét mang đường kính ấy rồi Enter.
Bước 3 — Khai số thanh giống hệt nhau
Số thanh giống hệt nhau (bội số) <1>:
Đây là chỗ tiết kiệm nhiều công nhất. Một mặt cắt dầm vẽ một lần nhưng lặp lại ở mười vị trí thì khai bội số 10, khỏi phải chép hình ra mười chỗ rồi quét chọn cả mười.
Máy báo ngay kết quả của nhóm vừa khai, ví dụ Ø12: tổng dài 18.00 m, khối lượng 16.0 kg.
Bước 4 — Lặp cho đường kính khác
Thống kê thêm đường kính khác? [Co/Khong]
Trả lời Co để khai tiếp. Kết quả của các nhóm được cộng dồn theo đường kính, nên khai cùng một đường kính ở hai chỗ khác nhau vẫn gộp về một dòng.
Bước 5 — Đặt bảng
Điểm đặt góc TRÊN TRÁI của bảng:
Chiều cao chữ trong bảng <150.00>:
Chiều cao chữ tính theo đơn vị bản vẽ, nên bản vẽ tỉ lệ 1:100 thì 150 là vừa. Bảng tự co giãn theo chiều cao ấy.
Vẽ xong, lệnh tự xóa số liệu đang cộng dồn và báo Số liệu đã được xóa, gõ TKT để thống kê đợt mới. Chỗ này chúng tôi sửa sau khi thử: bản đầu giữ nguyên số liệu, gõ TKT lần thứ hai là bảng ra gấp đôi.
Phông chữ: vì sao lệnh phải tự chọn kiểu chữ
Muốn bảng hiện tiếng Việt có dấu thì kiểu chữ đang dùng phải có glyph tiếng Việt. Chuyện này không hiển nhiên như nhiều người tưởng, nên chúng tôi đo hẳn.
Tài liệu About Unicode Font Descriptions của Autodesk viết rằng một phông Unicode "có thể hỗ trợ mọi ngôn ngữ và mọi nền tảng" nhờ bộ ký tự lớn. Câu ấy đúng về định dạng, nhưng định dạng Unicode không có nghĩa là trong tệp đã có sẵn hình chữ. Phông theo định dạng Unicode mà không vẽ hình chữ ờ thì AutoCAD vẫn phải thay bằng dấu hỏi. Đó chính là chỗ chúng tôi đem ra đo.
Chúng tôi thử cả 41 phông .shx Unicode mà AutoCAD 2027 cài sẵn. Phép đo có đối chứng: vẽ thử ký tự ờ rồi vẽ thử dấu ?, đọc bề rộng khung bao của cả hai. Phông nào thiếu glyph thì AutoCAD thay bằng dấu hỏi, nên hai bề rộng bằng nhau.
| Kết quả đo trên 41 phông .shx Unicode | Số phông |
|---|---|
| Có đủ glyph tiếng Việt | 0 |
Chỉ có chữ Đ, không có dấu thanh | 1 (GENISO.shx) |
| Không có, chữ ra dấu hỏi | 40 (gồm romans, simplex, txt, isocp) |
Nói cách khác, phông .shx đi kèm AutoCAD không vẽ được tiếng Việt. Các bản vẽ Việt Nam đời cũ giải quyết bằng bảng mã TCVN3 với bộ phông VH, nhưng đó là cách của hai chục năm trước và chữ ấy dán sang chỗ khác là hỏng.
Vì vậy trước khi vẽ bảng, lệnh TKT tự đo kiểu chữ hiện hành bằng đúng phép thử trên. Kiểu chữ của bản vẽ viết được tiếng Việt thì lệnh dùng luôn, tôn trọng phông riêng của hồ sơ. Không viết được thì lệnh tự tạo kiểu IIC-VN bằng phông TrueType có sẵn trong mọi máy Windows, và báo rõ trên dòng lệnh là nó đã làm gì.
Cách này giữ được điều quan trọng nhất: người dùng không phải cài thêm phông nào cả.
Bề rộng cột, và một lỗi chỉ ảnh chụp mới lộ
Chuyện này đáng kể lại, vì nó thuộc loại lỗi chỉ nhìn ảnh mới thấy.
Bản đầu tiên định bề rộng mỗi cột bằng cách đếm số ký tự rồi nhân với chiều cao chữ. Nghe thì hợp lý. Ảnh chụp cho thấy hàng tiêu đề tràn thẳng ra ngoài ô.
Bản thứ hai dùng hàm textbox có sẵn của AutoCAD, hàm trả về khung bao của một chuỗi chữ. Vẫn sai: với hàng tiêu đề, hàm báo bề rộng 1.245 đơn vị bản vẽ trong khi chữ vẽ ra thật rộng 1.697 đơn vị, vì kiểu chữ mang hệ số bề rộng mà hàm không áp dụng giống cách bộ vẽ áp dụng.
Bản bạn tải về đo thứ thật. Nó tạo ra đối tượng chữ, đọc khung bao của chính đối tượng ấy, rồi xóa đi. Chính xác, và đúng cho mọi phông và mọi hệ số bề rộng. Trong một bảng toàn số, tiêu đề đè lên nhau không phải chuyện thẩm mỹ: nó làm người đọc nghi ngờ cả những con số bên dưới.
Tệp này không làm gì, và vì sao
Nói rõ giới hạn thì người dùng đỡ mất thời gian.
Nó không tự đọc đường kính từ ghi chú trên bản vẽ. Bạn phải khai bằng tay cho từng nhóm. Lý do là ghi chú thép ở Việt Nam có hàng chục cách viết khác nhau, từ 2Ø12 tới 2-5-12 tới Ø12a200, và đoán sai một cách là sai cả bảng. Khai tay mất vài giây và không bao giờ đoán nhầm.
Nó không vẽ hình dạng thanh thép trong bảng. Bảng chỉ có đường kính, số thanh, tổng dài, khối lượng một mét và khối lượng. Muốn có cột hình dạng thì cần một thư viện hình, và đó chính là thứ làm gói kia nặng tới 23 tệp.
Nó không trừ phần nối chồng hay phần uốn móc. Nó cộng đúng chiều dài hình học của các nét bạn chọn. Nếu bản vẽ đã vẽ cả móc thì móc được tính; nếu chưa vẽ thì phải cộng thêm bằng tay.
Nó không thay hồ sơ dự toán. Bảng này là bản thống kê cốt thép để kiểm tra và để lên đơn đặt hàng, không phải phần mềm dự toán.
Bù lại, mỗi con số trong bảng đều truy được về một phép nhân bạn có thể kiểm bằng máy tính bỏ túi trong mười giây. Với một bảng khối lượng, tính chất ấy đáng giá hơn mọi tính năng.
Ba điều hay nghe nhưng không đúng
| Điều hay nghe | Thực tế |
|---|---|
| Phải tra bảng khối lượng thép | Một phép nhân là ra, và dùng cho mọi đường kính kể cả loại lạ |
| Mẹo lấy d² chia 162 là sai | Tính ra chênh chưa tới hai phần nghìn trên cả dải đường kính |
| Lisp thống kê nào cũng cần cả gói tệp đi kèm | Gói đang lưu hành cần 23 tệp; bảng vẽ bằng đường và chữ thì chỉ cần một |
Câu hỏi thường gặp
Lisp thống kê thép có tính được thanh uốn cong không?
Có. Lệnh đọc chiều dài thật của từng nét, kể cả cung tròn và đường đa tuyến có đoạn cong, nên thanh uốn móc vẽ đúng hình thì tính đúng.
Bảng thống kê thép ra sai số so với tính tay?
Kiểm lại ba chỗ: đơn vị bản vẽ có phải milimét không, bội số đã khai đúng chưa, và các nét được chọn có đúng là chiều dài thanh chứ không phải đường bao.
Dùng lisp thống kê thép trong CAD cho cả công trình một lượt được không?
Được, vì kết quả được cộng dồn cho tới khi bạn vẽ bảng hoặc gõ TKTX. Nhưng với hồ sơ lớn nên làm theo từng cấu kiện rồi cộng bảng, để còn kiểm được chỗ nào sai.
Chữ trong bảng ra toàn dấu hỏi thì sửa thế nào?
Không phải sửa gì. Lệnh tự đo kiểu chữ hiện hành trước khi vẽ; kiểu nào không có glyph tiếng Việt thì nó tạo kiểu IIC-VN bằng phông TrueType rồi mới viết. Nếu bảng cũ của bạn vẫn còn dấu hỏi thì xóa đi vẽ lại.
Vì sao chữ trong bảng lại tràn ra ngoài ô ở một số phông?
Không tràn. Tệp này đo bề rộng thật của từng chuỗi rồi mới định bề rộng cột, chứ không ước lượng theo số ký tự. Chúng tôi sửa đúng chỗ ấy sau khi nhìn ảnh chụp lần thử đầu tiên.
Muốn thêm một cột vào bảng thì sửa ở đâu?
Mở tệp bằng Notepad, tìm hàm vẽ bảng. Danh sách tiêu đề và danh sách ô nằm cạnh nhau ở đầu hàm, thêm vào cả hai là xong.