Lisp cộng tổng text là cách cộng nhanh một loạt con số đang nằm rời rạc trên bản vẽ, thay vì gõ lại từng số vào máy tính bỏ túi. Gói tải gắn ở bài này làm được cả bốn phép cộng, trừ, nhân và chia. Bài này cho luôn mật khẩu giải nén, tách rõ bốn nhánh của lệnh, và nói thẳng những trường hợp lệnh trả về con số sai.
Tóm tắt. Tệp tải về mang tên lạ, nhưng bên trong đúng là lisp cần tìm. Mật khẩu giải nén là xaydungso.vn, viết thường hết. Lệnh gọi là TINH. Nhánh cộng và nhân nhận cả một lô chữ quét chọn một lượt. Nhánh trừ và chia thì chỉ nhận đúng hai đối tượng. Kết quả được ghi đè lên một dòng chữ có sẵn mà bạn chỉ vào. Mã chỉ đọc đối tượng TEXT một dòng, nên MTEXT và thuộc tính khối nằm ngoài tầm với.
Gói tải của bài lisp cộng tổng text chứa gì
Gói tải về gồm đúng một tệp lisp và một ảnh JPG. Dung lượng ghi theo số byte.
| Hạng mục | Nội dung |
|---|---|
| Tệp trên Google Drive | 74.327 byte, định dạng RAR 4 |
| Tên tệp khi tải về | TINH-lăng trụ tứ giác đều.rar |
| Ruột gói | Một tệp lisp và một ảnh JPG hướng dẫn 81.356 byte |
| Mật khẩu giải nén | xaydungso.vn |
| Tệp lisp | TINH-cong tru nhan chia text.lsp, 1.617 byte |
| Ngày tệp lisp | 22 tháng 10 năm 2019 |
| Số dòng mã | 46 dòng, thuần ký tự ASCII |
| Tên lệnh khai báo | (defun c:tinh …), tức gõ TINH |
| Nguồn gốc ghi trong mã | Diễn đàn cadviet.com, chủ đề số 4077 |
Hai chi tiết cần nói trước. Thứ nhất, tên tệp trên Google Drive nhắc tới lăng trụ tứ giác đều, chẳng liên quan gì tới CAD. Đừng vì thế mà tưởng tải nhầm. Bên trong đúng là tệp lisp của bài này.
Thứ hai, ảnh JPG kèm trong gói là tờ hướng dẫn bảo bạn mở Google, tra một từ khoá hình học, vào trang đầu tiên rồi kéo xuống chân bài lấy mật khẩu. Bỏ qua tờ đó, không phải đi vòng nữa. Mật khẩu đã in ngay dưới đây.
Lisp cộng trừ nhân chia text, lệnh TINH
Một tệp .lsp duy nhất, 46 dòng mã. Cộng hoặc nhân cả một lô chữ số quét chọn một lượt, trừ và chia hai số, rồi ghi kết quả vào dòng chữ bạn chỉ.
- Định dạng LSP, đóng trong RAR
- Dung lượng tải 74.327 byte
- Số tệp lisp 1
- Lệnh TINH
Mật khẩu giải nén: xaydungso.vn
Nạp tệp vào AutoCAD 2026
Chép tệp .lsp vào một thư mục cố định, ví dụ D:\CAD\lisp. Đừng để nó nằm trong thư mục Downloads, vì mỗi lần dọn máy là mất.
Sau đó làm ba việc. Gõ OPTIONS, sang thẻ Files, thêm thư mục vừa tạo vào cả Support File Search Path lẫn Trusted Locations. Gõ APPLOAD, trỏ tới tệp rồi bấm Load, các bước kể kỹ ở bài cách dùng lệnh appload. Cuối cùng mở Startup Suite ngay trong hộp thoại đó và thêm tệp vào, để mở bản vẽ nào cũng có sẵn lệnh, đúng như cách làm trong bài cách load lisp trong CAD.
Bước Trusted Locations không bỏ được trên bản 2026. Các bản cũ chỉ hiện hộp thoại cảnh báo tệp chưa ký số, bấm nút là chạy tiếp. Bản 2026 siết chặt hơn: tệp nằm ngoài thư mục tin cậy có thể bị bỏ qua trong im lặng, không báo lỗi gì. Gõ TINH thấy Unknown command dù vừa Load xong thì gần như chắc chắn là vì lý do này, chứ không phải tệp hỏng.
Bốn nhánh của lệnh TINH
Bài cũ ở địa chỉ này mô tả năm bước giống nhau cho cả bốn phép tính. Đọc mã thì thấy không phải vậy. Hai nhánh cộng và nhân chạy theo một kiểu, hai nhánh trừ và chia chạy theo kiểu khác hẳn.
Hình 1. Bốn dấu đi vào hai lối khác nhau, rồi gặp lại nhau ở bước ghi kết quả. Hai bước cuối luôn chạy, dù bạn chọn phép tính nào.
Nhánh cộng và nhân
Đây là nhánh hay dùng nhất. Gõ TINH, gõ dấu +, rồi quét chọn tất cả các con số cần cộng và Enter. Lệnh đã cài sẵn bộ lọc, nên quét trùm cả bản vẽ cũng chỉ dính chữ chứ không dính đường nét. Nhánh nhân làm y hệt, chỉ khác dấu.

Hình 2. Bố cục quen thuộc khi dùng lệnh này. Mười con số nằm rải trên bản vẽ, và một dòng chữ để trống bên phải chờ nhận kết quả. Dòng chữ nhận kết quả phải có sẵn từ trước, lệnh không tự tạo ra nó.
Có một cái bẫy nhỏ ở nhánh nhân. Nếu trong vùng quét lẫn một dòng chữ không phải số, lệnh coi dòng đó bằng 0. Phép nhân gặp một số 0 là ra 0. Vậy nên nhân xong thấy kết quả bằng 0 thì đừng nghĩ lệnh hỏng, hãy soát lại vùng vừa quét.
Nhánh trừ và chia
Hai nhánh này không quét chọn được. Mã dùng lệnh chọn từng đối tượng một, hỏi hai lần liên tiếp. Với phép trừ, lần bấm thứ nhất là số bị trừ, lần thứ hai là số trừ. Với phép chia, lần thứ nhất là số bị chia. Bấm ngược thứ tự là ra kết quả khác hẳn.
Hai nhánh này cũng không có bộ lọc. Bấm nhầm vào một đường thẳng hay một khối là lệnh dừng luôn bằng thông báo lỗi kiểu bad argument type. Bấm Enter bỏ qua cũng vậy. Phép chia mà số chia bằng 0 thì lệnh báo divide by zero rồi thoát, không ghi được gì.
Ghi kết quả và số chữ số thập phân
Sau khi tính xong, lệnh in ngay con số ra dòng lệnh. Muốn xem tổng thôi thì nhìn dòng lệnh là đủ. Nhưng lệnh vẫn hỏi tiếp, chờ bạn bấm vào một dòng chữ để ghi kết quả vào đó. Nội dung cũ của dòng chữ ấy bị thay hẳn.
Câu hỏi cuối là số chữ số sau dấu phẩy. Lần chạy đầu tiên trong mỗi bản vẽ, giá trị mặc định là 0, nghĩa là kết quả bị làm tròn thành số nguyên. Cộng ra 12,5 mà thấy hiện 13 thì là vì vậy. Gõ 2 rồi Enter là có hai chữ số thập phân, và lần sau lệnh nhớ luôn con số đó.
Kết quả ghi ra là chữ tĩnh, không dính dáng gì tới các số nguồn. Sửa một số nguồn thì phải chạy lại lệnh. Muốn con số tự cập nhật theo thì phải đi đường khác, dùng công cụ Field như trong bài lisp link Text với Text.
Lisp cộng tổng text bỏ qua những gì
Đây là chỗ hay gây hiểu lầm nhất. Bộ lọc trong mã đóng cứng ở chuỗi TEXT, tức loại chữ một dòng. Mọi thứ khác đều vô hình với lệnh.
Hình 3. Bên trái là thứ lệnh nhìn thấy, bên phải là thứ nó không thấy. Khung dưới nguy hiểm hơn cả: chữ vẫn được cộng, nhưng con số lấy ra không phải con số bạn đọc trên màn hình.
Bốn loại chữ nằm ngoài tầm với
Loại thứ nhất là MTEXT, chữ nhiều dòng gõ bằng lệnh Mtext. Bản vẽ làm những năm gần đây dùng MTEXT nhiều hơn TEXT, nên đây là lý do phổ biến nhất khiến tổng bị thiếu. Loại thứ hai là thuộc tính khối, tức phần chữ điền vào khung tên hay ký hiệu cao độ. Loại thứ ba là mọi chữ nằm bên trong định nghĩa block. Loại thứ tư là con số do lệnh ghi kích thước sinh ra.
Còn một trường hợp dễ quên: chữ nằm trên lớp đang khoá thì không chọn được, nên cũng không được cộng. Quét cả bản vẽ mà tổng vẫn hụt thì mở bảng Layer soát lại các ổ khoá trước đã. Nếu việc bạn cần không phải cộng mà là đếm xem mỗi dòng chữ lặp bao nhiêu lần, hãy dùng lisp thống kê text thay cho lệnh này.
Dấu phân cách hàng nghìn làm sai kết quả
Mã đổi chữ thành số bằng hàm atof. Hàm này đọc từ đầu chuỗi, lấy phần số, và dừng ngay ở ký tự đầu tiên không hợp lệ. Nó chỉ coi dấu chấm là dấu thập phân.
Hệ quả rất khó chịu với bảng thống kê viết theo lối Việt Nam. Chuỗi 1.234,56 bị đọc thành 1,234. Chuỗi 12,5 bị đọc thành 12. Chữ nào bắt đầu bằng ký hiệu, ví dụ đường kính thép, thì ra 0. Cách chắc ăn là để các số cần cộng ở dạng trơn, chỉ có chữ số và dấu chấm thập phân. Ghi thêm đơn vị ở sau thì vẫn đúng, vì phần số đứng trước.
Hai chỗ nên sửa trong mã
Tệp lisp mở được bằng Notepad. Hai chỗ dưới đây sửa rất nhanh, và sửa xong thì lisp cộng tổng text chạy chắc tay hơn hẳn.
Khai báo biến cục bộ
Dòng đầu tiên của mã là (defun c:tinh(), không có danh sách biến cục bộ. Mười một biến trong lệnh vì thế đều là biến chung của bản vẽ, trong đó có cả tên ss rất dễ đụng với lisp khác đang chạy cùng.
Sửa dòng đó thành (defun c:tinh (/ ptinh ss kqua ent sobitru sotru sobichia sochia obj ssle1) là hết. Biến ssle cố ý để ngoài danh sách, vì chính nó giữ số chữ số thập phân cho lần chạy sau.
Cho lệnh nhận cả MTEXT
Trong mã có hai chỗ viết '((0 . "TEXT")), một ở nhánh cộng và một ở nhánh nhân. Đổi cả hai thành '((0 . "TEXT,MTEXT")) là lệnh chọn được cả chữ nhiều dòng. Bộ lọc chấp nhận nhiều tên loại đối tượng ngăn nhau bằng dấu phẩy.
Sửa xong thì nhớ điều này. Nội dung MTEXT có thể mang theo mã định dạng, ví dụ đoạn đổi phông nằm trong dấu ngoặc nhọn ở đầu chuỗi. Khi đó phần số không còn đứng đầu nữa, và hàm atof trả về 0. Đoạn MTEXT dài quá một ngưỡng còn bị cắt làm nhiều mảnh, mã hiện tại chỉ đọc mảnh cuối. Nghĩa là sửa bộ lọc giúp được với MTEXT đơn giản, còn MTEXT có định dạng thì vẫn phải làm cách khác.
Lỗi thường gặp
| Hiện tượng | Vì sao | Cách xử |
|---|---|---|
| Gõ TINH báo Unknown command | Tệp chưa nạp, hoặc đã nạp nhưng vừa mở sang bản vẽ khác | Nạp lại bằng APPLOAD rồi thêm vào Startup Suite |
| Load xong vẫn không có lệnh, không báo lỗi | Tệp nằm ngoài thư mục tin cậy nên bản 2026 bỏ qua | Thêm thư mục vào Trusted Locations trong OPTIONS |
| Tổng thiếu mất vài số | Những số đó là MTEXT, thuộc tính khối hoặc số của Dim | Đổi bộ lọc thành TEXT,MTEXT hoặc gõ lại bằng lệnh TEXT |
| Quét cả bản vẽ mà vẫn hụt | Chữ nằm trên lớp đang khoá | Mở khoá lớp rồi quét lại |
| Kết quả bị làm tròn thành số nguyên | Lần chạy đầu, số chữ số thập phân mặc định là 0 | Gõ 2 ở câu hỏi cuối, lệnh nhớ cho các lần sau |
| Nhân ra đúng số 0 | Trong vùng quét có một dòng chữ không phải số | Quét lại đúng vùng chỉ có chữ số |
| Số hàng nghìn cộng ra rất nhỏ | Chữ viết kiểu 1.234,56 nên chỉ lấy được 1,234 | Bỏ dấu phân cách hàng nghìn ở các số cần cộng |
| Lệnh dừng, báo bad argument type | Ở nhánh trừ hoặc chia đã bấm nhầm vào đối tượng không phải chữ | Gõ lại lệnh, bấm đúng vào dòng chữ số |
Câu hỏi thường gặp
Tên lệnh TINH có đụng lệnh nào có sẵn của AutoCAD không?
Không. Trong tệp acad.pgp của AutoCAD 2026 bản tiếng Anh không có lệnh tắt nào tên TINH. Cái gần giống là TI, tắt của TILEMODE, nhưng đó là tên khác nên hai bên không tranh nhau. Gõ TINH khi chưa nạp lisp thì AutoCAD chỉ báo không biết lệnh.
Chạy được trên AutoCAD LT không?
Đừng trông cậy vào LT. Từ bản LT 2024 trở đi thì LT đã chạy được AutoLISP, nhưng nhóm hàm ActiveX thì LT không hỗ trợ. Tệp này gọi tới nhóm đó ngay dòng thứ hai của lệnh, và gọi lần nữa ở bước ghi kết quả. Trên LT vì thế lệnh không chạy trọn vẹn. Bản LT trước 2024 và bản chạy trên máy Mac thì không nạp được tệp lisp.
Lỡ ghi đè nhầm lên một dòng chữ quan trọng thì sao?
Gõ U một lần là lấy lại được. Lệnh chỉ sửa đúng một đối tượng và chỉ sửa ở bước cuối cùng, nên một bước hoàn tác là đủ. Đừng chạy lại lệnh để ghi đè lần nữa, vì nội dung cũ đã mất hẳn sau lần đầu.
Muốn cộng diện tích các hình chứ không phải cộng chữ thì dùng gì?
Lệnh này chỉ đọc chữ, không tính được diện tích. Việc đó cần một công cụ khác, xem bài lisp tính tổng diện tích các hình trong CAD. Cũng có thể dùng thẳng lệnh AREA có sẵn với tuỳ chọn cộng dồn, nhưng cách đó phải chỉ từng hình một.
![[Tổng hợp] Các cách đo kích thước trong AutoCAD](https://autocad123.vn/wp-content/uploads/2017/12/cac-cach-kich-thuoc-trong-autocad.png)














