Download AutoCad Bản Quyền

Lisp tính tổng diện tích hatch: nạp đúng trên AutoCAD 2026

Lisp tính tổng diện tích hatch: link tải, mật khẩu giải nén, cách chạy lệnh TKH, cách qua hộp thoại chặn lisp của AutoCAD 2026 và cách làm không cần lisp.

  • autocad123.vn
  • 16/08/2023

Lisp tính tổng diện tích hatch là tiện ích cộng dồn diện tích các vùng hatch trong bản vẽ, tách riêng theo từng layer, rồi ghi kết quả thành chữ ngay trên bản vẽ. Lệnh gọi là TKH. Bài này giữ nguyên tệp tải về của trang và nói rõ tệp đó làm gì. Kèm theo là phần mà bản viết năm 2020 chưa thể có: cách nạp lisp trên AutoCAD 2026, chỗ mà phần lớn người dùng bị chặn lại mà không biết.

Tóm tắt. Tệp tải về là tkh.lsp, nén RAR, mật khẩu giải nén autocad123. Lệnh TKH gom hatch theo layer, nhân diện tích với 0,000001 rồi ghi kèm chữ m2, nghĩa là chỉ đúng khi bản vẽ dùng đơn vị milimét. Trên AutoCAD 2026 mặc định SECURELOAD bằng 1 và danh sách thư mục tin cậy TRUSTEDPATHS rỗng. Nạp tệp từ thư mục lạ sẽ bung hộp thoại Security. Đây là lý do số một khiến người đọc kêu lisp không chạy. Lisp còn cần Express Tools. Nếu chỉ cần con số, AutoCAD 2026 có sẵn ô Cumulative Area trong bảng Properties.

Lisp tính tổng diện tích hatch làm được gì

Đọc thẳng mã nguồn trong tệp thì trình tự của lệnh TKH như sau. Nó chỉ nhận đối tượng loại HATCH, kể cả mẫu tô do lisp hatch bê tông cốt thép sinh ra; các đối tượng khác trong vùng chọn bị bỏ qua. Với mỗi hatch, nó đọc thuộc tính Area, nhân với 0,000001 rồi cộng dồn vào ô của layer chứa hatch đó. Duyệt xong, nó sắp danh sách theo tên layer. Rồi lần lượt tạo một dòng chữ cho mỗi layer, dạng tên layer, dấu hai chấm, con số và chữ m2, để bạn rê chuột đặt vào chỗ mong muốn.

Vài chi tiết đáng chú ý nằm trong mã. Chiều cao chữ lấy bằng biến DIMTXT nhân DIMSCALE, tức ăn theo cỡ chữ kích thước của bản vẽ chứ không phải một con số cố định. Con số làm tròn tới hai chữ số thập phân. Hatch nào mà AutoCAD không trả về được diện tích thì lisp cho bằng 0, in cảnh báo ra dòng lệnh và tô sáng đối tượng đó. Nên biết trước điều này, vì một hatch hỏng sẽ làm tổng bị thiếu chứ không báo lỗi ầm ĩ.

Cũng nên nói rõ nguồn gốc. Dòng đầu tệp ghi free lisp from cadviet.com và dẫn về chủ đề thống kê diện tích hatch theo layer trên diễn đàn CADViet. Đây là lisp chia sẻ tự do của cộng đồng, trang chỉ đóng gói lại cho tiện tải. Cùng lối cộng dồn như vậy nhưng làm với đường thay vì với mảng tô thì có lisp đo tổng chiều dài các đoạn thẳng.

Lệnh TKH gom diện tích theo layer Hatch 1 layer SAN 20 triệu Hatch 2 layer SAN 10 triệu Hatch 3 layer TUONG 2 triệu Cộng theo layer, rồi nhân 0,000001 để đổi milimét vuông sang mét vuông Chữ đặt lên bản vẽ SAN : 30.00m2 Chữ đặt lên bản vẽ TUONG : 2.00m2 Mỗi layer một dòng chữ, mỗi dòng phải chọn một điểm đặt riêng. Hatch 1 và Hatch 2 đè nhau 4 mét vuông thì phần đè vẫn bị cộng hai lần.

Hình 1. Lisp không hợp nhất vùng chồng lấn. Nó cộng thẳng thuộc tính Area của từng hatch, nên hai hatch đè lên nhau sẽ đẩy tổng lớn hơn diện tích thật. Số trong hình tính theo milimét vuông.

Tải tệp về và mở ra: bên trong có gì

Tệp tải về là một kho nén RAR đặt trên Google Drive:

Tải lisp tính tổng diện tích hatch

Mật khẩu giải nén là autocad123, viết thường. Bên trong là tệp cần dùng: tkh.lsp, dung lượng 2 476 byte, ghi ngày 24 tháng 3 năm 2020. Chỉ một tệp duy nhất, không có bản cài đặt nào khác.

Chọn chỗ lưu ngay từ đầu. Đừng để tệp nằm trong thư mục Downloads rồi nạp từ đó. Hãy tạo một thư mục cố định, ví dụ D:\lisp, tên thư mục và các cấp cha nên viết không dấu. Nếu bạn định gom nhiều tiện ích về một chỗ thì bộ lisp cad tổng hợp cũng nên nằm chung trong thư mục này. Lý do nằm ở mục ngay sau: AutoCAD 2026 chỉ cho phép nạp mã từ thư mục nằm trong danh sách tin cậy, và bạn sẽ phải khai báo thư mục này một lần.

Nạp lisp trên AutoCAD 2026: ba chốt chặn

Đây là chỗ khác biệt lớn nhất so với thời bài viết ra đời. Từ khoảng bản 2014, Autodesk siết việc nạp tệp chứa mã, gồm LSP, FAS, VLX và tệp macro VBA của AutoCAD. Cơ chế đó vẫn còn nguyên trên AutoCAD 2026.

Gõ TKH mà báo Unknown command: soát ba chốt Chốt 1. Đã nạp tệp chưa? APPLOAD nạp cho một phiên. Đóng AutoCAD là mất. Muốn giữ thì bỏ tệp vào Startup Suite. Chốt 2. Thư mục có được tin cậy không? SECURELOAD bằng 1 là mặc định. Thư mục lạ thì hiện hộp thoại Security, bấm nhầm Do Not Load là lệnh không tồn tại. Đặt bằng 2 thì chặn hẳn. Chốt 3. Máy có Express Tools không? Lisp gọi các hàm acet. Thiếu Express Tools thì nạp được nhưng chạy tới đâu lỗi tới đó. Qua đủ ba chốt thì gõ TKH mới ăn.

Hình 2. Ba chốt soát theo đúng thứ tự. Đa số trường hợp lisp không chạy dừng lại ở chốt 2.

Chốt 1: nạp tệp bằng APPLOAD

APPLOAD, trỏ tới tệp lisp rồi bấm Load; các bước bấm có hướng dẫn kèm ảnh trong bài cách load lisp trong CAD. Đây là cách nạp cho phiên làm việc hiện tại. Bài cũ khuyên load xong thì tắt AutoCAD rồi mở lại. Điều đó ngược hoàn toàn: tắt AutoCAD là mất luôn phần vừa nạp. Muốn lần sau mở bản vẽ đã có sẵn lệnh, trong hộp thoại APPLOAD hãy bấm nút Contents ở khung Startup Suite rồi thêm tệp vào đó. Từ đó mỗi phiên AutoCAD tự nạp.

Chốt 2: thư mục tin cậy và biến SECURELOAD

Việc cho phép hay chặn nằm ở biến SECURELOAD, còn danh sách thư mục được tin cậy nằm ở biến TRUSTEDPATHS. Tài liệu Autodesk giải thích ba giá trị của SECURELOAD như sau. Đặt bằng 0 thì nạp thẳng, không hỏi gì. Đặt bằng 1 thì tệp trong thư mục tin cậy nạp thẳng, tệp ở nơi khác sẽ hiện cảnh báo để bạn quyết định. Đặt bằng 2 thì chỉ nạp tệp trong thư mục tin cậy, ngoài ra chặn hẳn không hỏi. Mặc định của AutoCAD là 1, còn danh sách thư mục tin cậy trên máy mới cài thì rỗng.

Vậy với tệp vừa tải về, AutoCAD sẽ bung hộp thoại tên Security - Unsigned Executable File. Nội dung báo rằng không xác minh được nhà phát hành và tệp không nằm trong thư mục tin cậy.

Hộp thoại Security - Unsigned Executable File của AutoCAD khi nạp tệp lisp chưa ký từ thư mục không tin cậy

Hình 3. Hộp thoại chặn tệp lisp chưa ký nằm ngoài thư mục tin cậy. Ba nút ở đáy quyết định lisp của bạn có chạy hay không.

Hộp thoại có ba nút:

Nút trong hộp thoạiNó làm gìKhi nào chọn
Always LoadNạp và ghi thư mục đó vào danh sách tin cậy, lần sau không hỏi nữaKhi bạn chắc chắn về nguồn tệp và định dùng lâu dài
Load OnceNạp cho lần này, không ghi nhớ gìDùng thử một lần
Do Not LoadKhông nạp. Gõ TKH sẽ báo Unknown commandKhi bạn không rõ tệp ở đâu ra

Cách gọn gàng hơn là khai báo trước. Vào OPTIONS, thẻ Files, mục Trusted Locations, bấm Add rồi trỏ tới thư mục chứa lisp. Từ đó mọi tệp trong thư mục nạp thẳng, không hỏi.

Hai điểm nhỏ nhưng hay vướng. Thứ nhất, hai thư mục Program Files và Program Files x86 cùng toàn bộ thư mục con luôn được tin cậy sẵn, không cần khai báo. Thứ hai, muốn tin cậy cả cây thư mục con thì đường dẫn khai trong TRUSTEDPATHS phải kết thúc bằng dấu chéo ngược và ba dấu chấm.

Và một điểm hay bị nhầm: khai vào Trusted Locations chỉ là cấp quyền chạy. Nó không thêm thư mục vào đường dẫn tìm kiếm tệp hỗ trợ. Nếu bạn muốn gọi tệp bằng tên ngắn thay vì đường dẫn đầy đủ thì phải thêm thư mục vào Support File Search Path nữa.

Chốt 3: lisp này cần Express Tools

Bên trong tệp có ba lời gọi tới nhóm hàm mở đầu bằng acet. Nhóm này thuộc bộ Express Tools chứ không phải AutoLISP lõi. Chúng lo việc tắt tiếng dòng lệnh và cho phép rê chuột kéo chữ tới chỗ đặt.

Hệ quả thực tế: AutoCAD LT không chạy được lisp này. LT tuy đã hỗ trợ AutoLISP từ bản 2024 nhưng không có Express Tools. Trên bản đầy đủ, nếu lúc cài bạn bỏ chọn Express Tools thì cũng phải cài bổ sung.

Ngoài ra, ngay dòng đầu, lisp đọc biến ACADVER và chỉ chạy khi số hiệu lớn hơn 16,1, tức từ AutoCAD 2006 trở đi. AutoCAD 2026 báo ACADVER là 25,1 nên qua ải này thoải mái.

Chạy lệnh TKH theo đúng thứ tự

Sau khi nạp xong, các bước như sau. Gõ TKH rồi Enter. Dòng lệnh hiện lời nhắc chọn các đối tượng hatch để tính diện tích. Quét chọn vùng cần tính rồi Enter. Có thể quét cả bản vẽ, lisp tự lọc lấy hatch. Với mỗi layer có hatch, lisp tạo một dòng chữ bám theo con trỏ, bạn bấm chọn điểm đặt cho từng dòng. Xong hết, dòng lệnh báo đã thực hiện xong.

Nếu vùng chọn không có hatch nào, lisp hiện hộp thoại báo không có hatch được chọn. Nếu có hatch mà AutoCAD không tính nổi diện tích, hatch đó bị tô sáng và được tính là 0. Hãy tìm đúng những đối tượng đó mà sửa biên, đừng bỏ qua.

Bốn giới hạn phải biết trước khi tin con số

Giới hạnBiểu hiệnCách xử lý
Chỉ đúng với bản vẽ đơn vị milimétMã nhân cứng hệ số 0,000001 rồi ghi chữ m2. Bản vẽ vẽ bằng mét sẽ ra số nhỏ hơn thực tế một triệu lầnKiểm đơn vị bản vẽ trước. Nếu vẽ bằng mét thì nhân lại kết quả với một triệu
Hatch chồng nhau bị cộng hai lầnTổng lớn hơn diện tích thậtDọn hatch trùng trước khi tính, hoặc trừ tay phần chồng lấn ra khỏi kết quả
Hatch biên hở hoặc quá phức tạpĐối tượng bị tô sáng, phần diện tích tính bằng 0Sửa lại biên cho kín rồi chạy lại, đừng lấy kết quả cũ
Chữ ghi ra là chữ tĩnhSửa hatch xong con số cũ vẫn nằm đó, không tự cập nhậtChạy lại lệnh và xóa chữ cũ, hoặc dùng Field như mục dưới

Thêm một chi tiết dễ hụt chân. Chiều cao chữ bằng DIMTXT nhân DIMSCALE. Nếu bản vẽ đặt DIMSCALE bằng 0 để tỉ lệ kích thước chạy theo khung nhìn thì tích số thành 0 và chữ sinh ra không dùng được. Trường hợp đó hãy đặt tạm DIMSCALE về 1 trước khi chạy lệnh.

Không cần lisp: cách làm sẵn có trong AutoCAD 2026

Nếu bạn chỉ cần con số chứ không cần chữ ghi tự động theo layer, AutoCAD 2026 làm được ngay, không phải cài thêm gì.

Chọn nhiều hatch rồi đọc Cumulative Area

Chọn các hatch cần tính, mở bảng Properties bằng lệnh PROPERTIES hoặc tổ hợp Ctrl và phím 1. Ở nhóm Geometry, chọn một hatch thì bảng hiện ô Area, chọn nhiều hatch thì bảng hiện ô Cumulative Area. Con số này tính theo đơn vị bản vẽ. Bản vẽ milimét sẽ cho số milimét vuông, bạn tự chia cho một triệu để ra mét vuông. Muốn lọc nhanh theo layer thì dùng lệnh QSELECT, đặt Object type là Hatch và thêm điều kiện Layer.

Dùng Field để con số tự cập nhật

Đây là thứ lisp không làm được. Chèn một dòng chữ bằng lệnh MTEXT, trong trình soạn thảo chọn chèn Field, chọn nhóm Objects, chọn Object rồi bấm vào hatch, chọn thuộc tính Area. Hộp thoại còn có ô hệ số quy đổi để bạn nhập thẳng 0,000001 và thêm hậu tố mét vuông. Khi hatch đổi hình dạng, con số tự cập nhật theo. Muốn cập nhật ngay thì gõ UPDATEFIELD.

Cần bảng tổng theo layer thì dùng Data Extraction

Lệnh DATAEXTRACTION rút thuộc tính đối tượng ra bảng, cách khai báo từng bước xem bài Data Extraction trong AutoCAD. Chọn loại đối tượng Hatch, lấy hai cột Layer và Area, rồi bật tùy chọn gộp các dòng giống nhau. Kết quả xuất ra bảng đặt trong bản vẽ hoặc tệp CSV để đưa sang Excel. Cách này chậm hơn lisp vài bước nhưng cho ra dữ liệu chứ không phải chữ, và chạy được trên mọi máy.

Lưu ý về lệnh AREA

Nhiều người thử lệnh AREA với tùy chọn Object rồi bấm vào hatch và không được. Đó là đúng. Tùy chọn Object của lệnh AREA nhận đường tròn, elip, spline, đa tuyến, đa giác, miền và solid, không nhận hatch. Với hatch thì đi đường Properties hoặc Field như trên.

Câu hỏi thường gặp

Gõ TKH mà AutoCAD báo Unknown command thì làm sao?

Đi theo ba chốt ở hình 2. Soát lần lượt: đã APPLOAD chưa, hộp thoại Security có hiện ra và bạn có lỡ bấm Do Not Load không, và máy đã cài Express Tools chưa. Nếu bạn có tắt AutoCAD rồi mở lại sau khi nạp thì lệnh mất là chuyện bình thường, phải nạp lại hoặc thêm vào Startup Suite.

Kết quả ra số rất nhỏ so với thực tế thì sai ở đâu?

Gần như chắc chắn do đơn vị bản vẽ. Lisp mặc định bản vẽ vẽ bằng milimét. Nếu bản vẽ vẽ bằng mét, một phòng 20 mét vuông sẽ được báo là 0,00002. Nhân kết quả với một triệu, hoặc sửa hệ số trong mã nếu bạn biết sửa.

Đường dẫn có dấu tiếng Việt thì lisp có chạy không?

Lời khuyên cũ là để tệp ở thư mục tên không dấu, và vẫn nên theo. Bạn còn phải gõ đường dẫn đó vào Trusted Locations và vào Startup Suite. Dấu tiếng Việt chỉ làm rắc rối thêm chứ không được lợi gì.

AutoCAD LT có dùng được lisp này không?

Không. AutoCAD LT từ bản 2024 đã chạy được AutoLISP, nhưng không có Express Tools nên các hàm acet trong tệp này không tồn tại. Trên LT hãy dùng cách Cumulative Area trong bảng Properties.

Có cần tắt AutoCAD rồi mở lại sau khi nạp không?

Không, và không nên. Lệnh có hiệu lực ngay khi APPLOAD báo nạp thành công. Tắt rồi mở lại chỉ khiến bạn phải nạp lại từ đầu, trừ khi đã thêm tệp vào Startup Suite.