Bảng thống kê cửa, cột, thép đã có trong bản vẽ, giờ cần đưa sang Excel để tính tiếp hay nộp kèm hồ sơ. Gõ lại tay thì lâu và dễ sai. Có ba đường để xuất CAD sang Excel, nhưng chỉ một đường giữ được chữ tiếng Việt. Bài này thử cả ba trên cùng một bản vẽ có chữ "Tường 220", "Cột 300x300", rồi mở từng tệp kết quả để xem còn lại gì.
Muốn học trọn cách lập bảng và bóc khối lượng từ bản vẽ, Viện có khoá AutoCAD cho ngành xây dựng.
Ba đường, ba kết quả
| Cách | Lệnh | Kết quả trong Excel |
|---|---|---|
| Xuất bảng ra CSV | TABLEEXPORT | Ra ô dữ liệu, nhưng mất dấu tiếng Việt |
| Chọn bảng, Ctrl+C, sang Excel Ctrl+V | COPYCLIP | Một hình đối tượng AutoCAD, không có ô nào |
| Trích dữ liệu ra tệp .xlsx | DATAEXTRACTION | Ra ô dữ liệu, giữ nguyên tiếng Việt |
Ba phần dưới đi qua từng đường với kết quả đọc từ chính các tệp xuất ra.
Lệnh tableexport trong CAD: nhanh nhưng mất dấu
TABLEEXPORT xuất một bảng AutoCAD ra tệp CSV. Gõ lệnh, máy hỏi Select a table:, bấm vào bảng, rồi hộp Export Data mở ra để đặt tên tệp.
Hộp lưu tệp này luôn hiện ra, kể cả khi biến FILEDIA đã đặt về 0. Lệnh này không hỏi tên tệp trên dòng lệnh như nhiều lệnh khác. Ai định chạy bằng script cần biết trước điều đó.
Bảng mẫu có bốn hàng: tiêu đề BẢNG THỐNG KÊ gộp ba ô, hàng tên cột, và hai hàng Tường 220, Cột 300x300. Đọc lại trong AutoCAD thì chữ trong ô đúng là tiếng Việt có dấu. Còn tệp CSV xuất ra thì như sau:
"B?NG TH?NG KÊ", ,
"Tên","S? lu?ng","Chi?u dài"
"Tu?ng 220","12","3450.5"
"C?t 300x300","8","3300"
Tệp được ghi theo bảng mã ANSI cũ, không phải Unicode. Ký tự nào không có trong bảng mã ấy bị thay bằng dấu ?: "Tường" thành Tu?ng, "Cột" thành C?t. Chữ đã mất ngay trong tệp, nên mở bằng Excel theo cách nào cũng không lấy lại được. Ô tiêu đề gộp ba ô thì ra một ô chữ và hai ô rỗng.
Nếu bảng chỉ có số và chữ không dấu thì TABLEEXPORT vẫn dùng tốt. Có tiếng Việt thì phải đi đường khác.
Ctrl+C rồi Ctrl+V: Excel nhận một hình chứ không nhận số
Chọn bảng trong AutoCAD, Ctrl+C, sang Excel Ctrl+V. Excel không dán ra các ô, mà dán một đối tượng AutoCAD nhúng, mang mã AutoCAD.Drawing.26. Ô A1 vẫn trống. Bạn nhìn thấy bảng nhưng không tính toán, không sắp xếp, không cộng được gì.
Cách này chỉ hợp khi cần minh hoạ bảng trong một trang tính, không dùng để lấy số liệu. Chuyện dán sang Word cũng tương tự, có bài riêng: copy CAD sang Word.
Lệnh dataextraction trong CAD: tám trang, ra tệp .xlsx
DATAEXTRACTION, gõ tắt DX, là đường đúng. Tài liệu Autodesk mô tả lệnh này "Exports object property, block attribute, and drawing information to a data extraction table or to an external file", tức xuất thuộc tính đối tượng, thuộc tính block và thông tin bản vẽ ra bảng hoặc ra tệp ngoài. Đọc tệp giao diện của bản 2027, lệnh nằm ở ribbon Annotate → Tables → Extract Data, và Insert → Linking & Extraction → Extract Data; menu Tools → Data Extraction.
Điều kiện đầu tiên: bản vẽ phải được lưu. Gọi lệnh trên một bản vẽ chưa lưu lần nào, AutoCAD không vào trình hướng dẫn mà hiện hộp "Data Extraction - Unsaved Drawing" với hai nút Save và Cancel.
Trình hướng dẫn có tám trang, tên nguyên văn trên bản 2027:
| Trang | Tên | Việc cần làm |
|---|---|---|
| 1 | Begin | Chọn Create a new data extraction, bấm Next, đặt tên tệp mẫu (đuôi .dxex) |
| 2 | Define Data Source | Để mặc định để lấy bản vẽ hiện hành |
| 3 | Select Objects | Chọn loại đối tượng cần lấy |
| 4 | Select Properties | Chọn thuộc tính, tức các cột |
| 5 | Refine Data | Gộp hàng, sắp xếp cột |
| 6 | Choose Output | Tick Output data to external file (.xlsx .csv .mdb .txt), chọn đường dẫn |
| 8 | Finish | Bấm Finish; tệp Excel và tệp mẫu .dxex được tạo lúc này |
Bản vẽ mẫu có block COT chèn ba lần và block CUA chèn hai lần, tất cả trên layer tên "Tường". Tệp .xlsx xuất ra có trang tính tên Summary, và cột Layer ghi đúng "Tường", đủ dấu. Đây là khác biệt quyết định so với CSV của TABLEEXPORT.
Chuyển bảng thống kê từ CAD sang Excel cho gọn
Để mặc định cả tám trang thì tệp Excel rất khó dùng. Kết quả từ bản vẽ mẫu:
| Mặc định | Hệ quả trong tệp .xlsx |
|---|---|
| Trang 3 tick mọi loại đối tượng | Ngoài block COT, CUA, còn có cả Line và Polyline nằm bên trong block |
| Trang 4 tick mọi thuộc tính | 52 cột, gồm cả tên tệp, ngày tạo, kích thước tệp, toạ độ |
| Toạ độ mỗi block một khác | Mỗi block một hàng với Count = 1, dù đã tick Combine identical rows |
Muốn có bảng đếm gọn thì cắt bớt ngay trong trình hướng dẫn:
- Trang 3: bỏ tick Display all object types, rồi chọn Display blocks only.
- Trang 4: ở khung Category filter bên phải có năm nhóm
3D Visualization,Drawing,General,Geometry,Misc. Bỏ tick cả, chỉ giữ General. Nhóm Geometry chứa toạ độ nên phải bỏ. - Trang 5: để nguyên tick Combine identical rows và Show count column.
Chạy lại trên cùng bản vẽ mẫu, tệp .xlsx chỉ còn 2 hàng, 9 cột:
| Count | Name | Layer |
|---|---|---|
| 2 | CUA | Tường |
| 3 | COT | Tường |
Không còn cột toạ độ, các block cùng tên có mọi cột giống nhau nên được gộp làm một hàng, cột Count cho đúng số lượng. Việc đếm block thuần tuý thì có cách nhanh hơn, ở bài đếm block trong CAD.
Ba chỗ hay làm người mới lúng túng
Nút Next ở trang 6 mờ đi. Hai ô đầu ra, Insert data extraction table into drawing và Output data to external file, mặc định đều trống. Chưa tick ô nào thì nút Next không bấm được. Tick ô thứ hai, bấm nút ba chấm để chọn nơi lưu và định dạng.
Trang 3 mặc định lọc theo đối tượng đang dùng. Ô Display objects currently in-use only được tick sẵn, nên danh sách chỉ gồm những loại đối tượng đang có mặt trong bản vẽ. Với bản vẽ mẫu, danh sách có đúng bốn dòng: COT, CUA, Line, Polyline. Thấy thiếu một loại nào đó thì kiểm lại ô này trước.
Tệp Excel được tạo lúc bấm Finish, không phải trước đó. Trang 8 ghi rõ: "Any external files to create will be created when clicking Finish." Bấm Cancel trước khi tới Finish là không có tệp nào cả.
Xuất bảng CAD sang Excel: chọn đường nào
| Việc | Nên dùng |
|---|---|
| Bảng có tiếng Việt, cần số liệu trong Excel | DATAEXTRACTION, xuất .xlsx |
| Bảng chỉ có số và chữ không dấu | TABLEEXPORT ra CSV cho nhanh |
| Chỉ cần hình bảng để minh hoạ | Ctrl+C, Ctrl+V |
| Xuất toạ độ điểm | Lisp xuất toạ độ |
| Lấy số liệu từ Excel đưa vào bản vẽ | Lisp nhập toạ độ từ Excel, hoặc DATALINK |
Bản dòng lệnh -DATAEXTRACTION chỉ hỏi Enter the template file path for the extraction:, tức cần một tệp mẫu đã lưu từ trình hướng dẫn. Trình hướng dẫn tự lưu tệp mẫu đuôi .dxex khi bấm Finish; tệp của bản vẽ mẫu nặng 24 KB. Trang 1 cũng có ô Use previous extraction as a template để dựng lần sau từ tệp ấy. Các lệnh trường dữ liệu có liên quan nằm ở bài lệnh field trong CAD.
Câu hỏi thường gặp
Cách xuất CAD sang Excel giữ được tiếng Việt?
Dùng DATAEXTRACTION và chọn Output data to external file dạng .xlsx. Tệp giữ đủ dấu tiếng Việt.
Vì sao TABLEEXPORT làm mất dấu tiếng Việt?
Tệp CSV được ghi theo bảng mã ANSI cũ. Ký tự tiếng Việt không có trong bảng mã ấy bị thay bằng dấu ? ngay khi ghi tệp.
Copy bảng CAD sang Excel sao không ra số?
Ctrl+V trong Excel dán một đối tượng AutoCAD nhúng, không dán ô dữ liệu.
Vì sao DATAEXTRACTION báo Unsaved Drawing?
Bản vẽ chưa được lưu lần nào. Lưu bản vẽ trước rồi gọi lại lệnh.
Vì sao tệp Excel có quá nhiều cột và hàng?
Mặc định lấy mọi loại đối tượng và mọi thuộc tính. Bỏ bớt ở trang 3 và trang 4 của trình hướng dẫn.
Có chạy DATAEXTRACTION bằng dòng lệnh được không?
Có, bằng -DATAEXTRACTION, nhưng nó cần một tệp mẫu .dxex đã lưu từ trình hướng dẫn.