Có những việc lặp đi lặp lại đến phát chán: đặt lại tỉ lệ kiểu kích thước, dọn một bộ lớp theo đúng thứ tự, đổi đơn vị rồi chỉnh giới hạn bản vẽ. Mỗi lần mười thao tác giống hệt nhau, ngày làm mấy chục bản vẽ.
Lệnh actrecord trong CAD cho phép ghi lại đúng chuỗi ấy một lần rồi gọi lại như một lệnh mới, không cần biết lập trình. Bài này đo tệp macro sinh ra, và nói thẳng giới hạn khiến nó không thay được LISP. Muốn học trọn bộ công cụ tăng tốc thì xem khóa AutoCAD nâng cao.
Cách gọi lệnh actrecord trong CAD
Đọc từ tệp giao diện acad.cuix và tệp acad.pgp của bản 2027, tính theo không gian làm việc mặc định.
| Đường vào | Bắt đầu ghi | Dừng ghi |
|---|---|---|
| Lệnh đầy đủ | ACTRECORD | ACTSTOP |
| Lệnh tắt | ARR | ARS |
| Ribbon | không có | không có |
| Menu cổ điển | Tools → Action Recorder → Record | Tools → Action Recorder → Stop |
Hai lệnh đi liền nhau: một cái bật, một cái tắt. Lệnh actstop là cái cần nhớ nhất, vì quên nó là máy cứ ghi tiếp mọi thứ bạn làm.
Trang ACTRECORD của Autodesk mô tả một câu: "Starts the recording of an action macro." Chữ "recording" nói đúng bản chất — máy chép lại chứ không hiểu việc bạn làm, và đó là gốc rễ của giới hạn nói ở phần dưới.
Ghi macro trong CAD: từng bước một
Cách làm rất ngắn.
| Bước | Làm gì |
|---|---|
| 1 | Gõ ACTRECORD — máy bắt đầu ghi |
| 2 | Làm những thao tác muốn ghi, bình thường như mọi khi |
| 3 | Gõ ACTSTOP — hiện hộp thoại đặt tên |
| 4 | Đặt tên rồi bấm OK |
Có một cách kiểm chắc chắn máy đang ghi hay không: đọc biến ACTRECORDERSTATE.
| Giá trị | |
|---|---|
| Lúc rảnh | 0 |
| Đang ghi | 1 |
Gõ tên biến ở dòng lệnh là đọc được. Đây là cách duy nhất chắc chắn khi bảng Action Recorder không hiện trên màn hình.
Hộp thoại đặt tên hiện ra khi dừng ghi
Gõ ACTSTOP là hiện ngay một hộp thoại tên Action Macro gồm:
| Ô | Dùng để |
|---|---|
| Action Macro Command Name | Tên sẽ gõ ở dòng lệnh để gọi lại |
| File Name | Tên tệp, máy tự đặt theo tên lệnh |
| Folder Path | Thư mục chứa tệp |
| Description | Ghi chú cho chính mình |
| Restore pre-playback view | Có trả màn hình về chỗ cũ không |
| Check for inconsistencies when playback begins | Có kiểm trước khi chạy không |
Ô đầu tiên là ô quan trọng nhất và hay bị bỏ qua. Tên mặc định là ActMacro001, ActMacro002, rồi tới ActMacro020 là chẳng ai nhớ cái nào làm gì. Đặt tên có nghĩa ngay từ đầu — kiểu DONLOP, DATTYLEDIM — thì sau này gõ ra dùng được luôn.
Tệp macro nằm ở đâu và trông như thế nào
Ghi thử một macro chỉ vẽ đúng một đường tròn, rồi soi tệp sinh ra.
| Đo cái gì | Giá trị |
|---|---|
| Tên tệp | ActMacro001.actmx |
| Kích thước | 5.477 byte |
| Dạng tệp | JSON |
| Thư mục | giá trị của biến ACTRECPATH |
Năm nghìn byte cho một macro vẽ đúng một đường tròn. Bên trong là JSON, mở bằng trình soạn văn bản đọc được, dòng đầu ghi số hiệu bản AutoCAD đã ghi nó.
Thư mục chứa tệp nằm trong hồ sơ người dùng, đọc bằng biến ACTRECPATH. Biết đường dẫn ấy là biết cách chép macro sang máy khác: chỉ việc chép tệp .actmx vào đúng thư mục tương ứng bên máy kia.
Phát lại macro bằng chính tên của nó
Đây là chỗ hay nhất: không cần nạp gì, không cần bảng nào. Gõ thẳng tên macro ở dòng lệnh như gõ một lệnh bình thường.
Máy chạy lại toàn bộ chuỗi thao tác rồi in ra:
Command: ACTMACRO001
CIRCLE
Specify center point for circle or [3P/2P/Ttr (tan tan radius)]: 2000.000000000000,2000.000000000000
Specify radius of circle or [Diameter]: 300.000000000000
Command: Playback of action macro complete
Chạy xong máy còn hiện một hộp báo nhỏ tên Action Macro – Playback Complete, bấm Close là xong.
Hộp báo ấy nhỏ nhưng có ích. Nó cho biết macro đã chạy hết chứ không dừng giữa chừng vì một lệnh nào đó không thực hiện được. Khi macro dài mà bản vẽ không đổi gì rõ rệt, đó là dấu hiệu duy nhất phân biệt "chạy xong rồi" với "chạy được nửa đường".
Vì macro trở thành một cái tên gõ được ở dòng lệnh, nó dùng chung được với mọi thứ khác: đặt vào nút trên thanh công cụ, gán cho một phím tắt, hay gọi từ một macro khác. Cách đặt lệnh tắt có trong bài lệnh tắt trong CAD.
Giới hạn lớn nhất: macro ghi toạ độ tuyệt đối
Nhìn kỹ hai dòng máy in ra khi phát lại sẽ thấy điều quyết định.
Máy không ghi "vẽ một đường tròn ở chỗ người dùng bấm". Nó ghi toạ độ tuyệt đối — 2000.000000000000,2000.000000000000 — và bán kính cũng là con số cứng 300.000000000000.
Nghĩa là lần nào phát lại cũng vẽ đúng chỗ cũ, đúng cỡ cũ. Rất hợp với ba loại việc sau.
- Đặt lại các biến hệ thống theo một bộ chuẩn
- Dọn lớp, đổi kiểu kích thước, đặt đơn vị
- Chạy một chuỗi lệnh không phụ thuộc vị trí chuột
Và rất không hợp với ba loại việc sau.
- Vẽ hình ở chỗ người dùng chỉ mỗi lần một khác
- Thao tác trên đối tượng mà người dùng chọn
- Bất cứ việc gì cần tính toán trên số liệu của bản vẽ
Có cách chữa một phần. Ngay lúc ghi, tại chỗ cần người dùng chỉ điểm, hãy dùng tính năng tạm dừng để macro hỏi lại khi phát. Nhưng mỗi chỗ tạm dừng đều phải chuẩn bị từ lúc ghi, và không có cách nào cho macro tự quyết định.
Action recorder hay LISP
Hai công cụ cùng nhắm một việc, nhưng khác hẳn về tầm với.
| Action recorder | LISP | |
|---|---|---|
| Cần biết lập trình | không | có |
| Thời gian làm một việc đơn giản | vài phút | vài chục phút |
| Làm được việc phụ thuộc lựa chọn của người dùng | rất hạn chế | được |
| Tính toán, vòng lặp, điều kiện | không | được |
| Chép sang máy khác | chép tệp .actmx | nạp tệp .lsp |
Kết luận thẳng: việc lặp cố định thì dùng macro, việc cần suy nghĩ thì phải viết LISP. Một bộ lớp chuẩn, một bộ biến chuẩn, một chuỗi đặt kiểu chữ — macro làm trong năm phút. Còn thống kê thép, xuất toạ độ, cắt kích thước hàng loạt thì phải LISP. Viện đã phát hành sẵn vài bộ: xem bài lisp thống kê thép và bài lisp xuất toạ độ. Cách nạp tệp LISP có trong bài lệnh appload trong CAD.
Có một cách dùng macro mà ít người nghĩ tới, lại hợp với văn phòng nhiều người: dùng nó làm bản ghi quy trình. Một macro đặt chuẩn bản vẽ mới, chép cho cả phòng, thì ai cũng bắt đầu từ cùng một bộ lớp, cùng một kiểu kích thước, cùng một đơn vị. Không phải nhắc nhau nữa, và hồ sơ ghép lại không còn cảnh mỗi người một kiểu.
Ưu điểm nữa là ai cũng sửa được. Tệp macro mở ra đọc được, mà cách sửa dễ nhất thì không phải sửa tệp: chỉ cần ghi lại từ đầu, đặt trùng tên, thế là xong. Với một phòng vẽ không có ai chuyên lập trình, đó là khác biệt giữa "có công cụ dùng chung" và "không có".
Mấy điều hay nghe nhưng không đúng
| Người ta hay nói | Bản 2027 thực tế thế nào |
|---|---|
| Phải mở bảng Action Recorder mới ghi được | Gõ ACTRECORD là ghi; kiểm bằng biến ACTRECORDERSTATE |
| Macro chạy theo chỗ mình bấm chuột | Nó chép toạ độ tuyệt đối vào tệp |
| Macro thay được LISP | Không tính toán, không vòng lặp, không điều kiện |
| Muốn dùng phải nạp như LISP | Không nạp gì; gõ thẳng tên macro là chạy |
| Macro nằm trong bản vẽ | Nằm trong tệp .actmx riêng, ở thư mục ACTRECPATH |
Câu hỏi thường gặp
Lệnh actrecord trong AutoCAD gõ tắt là gì?
Gõ ARR để bắt đầu ghi và ARS để dừng. Không có nút trên ribbon.
Làm sao biết máy đang ghi hay không?
Đọc biến ACTRECORDERSTATE: 0 là đang rảnh, 1 là đang ghi.
Macro lưu ở đâu?
Trong một tệp .actmx đặt ở thư mục mà biến ACTRECPATH trỏ tới, nằm trong hồ sơ người dùng.
Chép macro sang máy khác thế nào?
Chép tệp .actmx vào đúng thư mục ACTRECPATH của máy kia là gọi được ngay.
Vì sao phát lại thì hình vẽ ra đúng chỗ cũ?
Vì macro ghi toạ độ tuyệt đối. Muốn hỏi lại vị trí thì phải cài chỗ tạm dừng ngay lúc ghi.
Macro có thay được LISP không?
Không. Macro chỉ lặp lại một chuỗi cố định; việc cần tính toán, vòng lặp hay điều kiện thì phải viết LISP.