AutoCAD – Bản vẽ

Xuất CAD sang Excel: vì sao CSV mất dấu tiếng Việt và cách ra tệp .xlsx đúng dữ liệu

Xuất CAD sang Excel bằng TABLEEXPORT thì tệp CSV mất dấu tiếng Việt; dán Ctrl+V chỉ ra một hình. DATAEXTRACTION xuất thẳng .xlsx đúng chữ, đúng số liệu.

  • TS. Đỗ Quốc Hoàng
  • 8 phút đọc
Bốn trang của trình hướng dẫn DATAEXTRACTION trên AutoCAD 2027: chọn đối tượng, chọn thuộc tính, tinh chỉnh dữ liệu và chọn đầu ra Ảnh: Ảnh chụp AutoCAD 2027

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áchLệnhKết quả trong Excel
Xuất bảng ra CSVTABLEEXPORTRa ô dữ liệu, nhưng mất dấu tiếng Việt
Chọn bảng, Ctrl+C, sang Excel Ctrl+VCOPYCLIPMột hình đối tượng AutoCAD, không có ô nào
Trích dữ liệu ra tệp .xlsxDATAEXTRACTIONRa ô 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:

TrangTênViệc cần làm
1BeginChọn Create a new data extraction, bấm Next, đặt tên tệp mẫu (đuôi .dxex)
2Define Data SourceĐể mặc định để lấy bản vẽ hiện hành
3Select ObjectsChọn loại đối tượng cần lấy
4Select PropertiesChọn thuộc tính, tức các cột
5Refine DataGộp hàng, sắp xếp cột
6Choose OutputTick Output data to external file (.xlsx .csv .mdb .txt), chọn đường dẫn
8FinishBấ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 địnhHệ quả trong tệp .xlsx
Trang 3 tick mọi loại đối tượngNgoà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ính52 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ácMỗ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:

  1. Trang 3: bỏ tick Display all object types, rồi chọn Display blocks only.
  2. 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ỏ.
  3. 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:

CountNameLayer
2CUATường
3COTTườ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ệcNên dùng
Bảng có tiếng Việt, cần số liệu trong ExcelDATAEXTRACTION, xuất .xlsx
Bảng chỉ có số và chữ không dấuTABLEEXPORT ra CSV cho nhanh
Chỉ cần hình bảng để minh hoạCtrl+C, Ctrl+V
Xuất toạ độ điểmLisp 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.

Về tác giả

TS. Đỗ Quốc Hoàng — Phó Viện trưởng Viện Tin học Xây dựng, Trường Đại học Xây dựng Hà Nội, chuyên gia phát triển phần mềm cho ngành xây dựng