AutoCAD – Bản vẽ

Lệnh actrecord trong CAD: ghi lại thao tác rồi gọi lại như một lệnh

Lệnh actrecord trong CAD ghi lại chuỗi thao tác thành một lệnh mới, không cần biết lập trình. Bài viết đo tệp sinh ra và chỉ rõ giới hạn lớn nhất của nó.

  • TS. Đỗ Quốc Hoàng
  • 8 phút đọc
Ghi một thao tác vẽ đường tròn rồi gọi lại: máy chép nguyên toạ độ tuyệt đối vào tệp macro Ảnh: Sơ đồ của Viện Tin học Xây dựng

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àoBắt đầu ghiDừng ghi
Lệnh đầy đủACTRECORDACTSTOP
Lệnh tắtARRARS
Ribbonkhông cókhông có
Menu cổ điểnTools → Action Recorder → RecordTools → 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ướcLàm gì
1ACTRECORD — máy bắt đầu ghi
2Làm những thao tác muốn ghi, bình thường như mọi khi
3ACTSTOP — 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ảnh0
Đang ghi1

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

ACTSTOP là hiện ngay một hộp thoại tên Action Macro gồm:

ÔDùng để
Action Macro Command NameTên sẽ gõ ở dòng lệnh để gọi lại
File NameTên tệp, máy tự đặt theo tên lệnh
Folder PathThư mục chứa tệp
DescriptionGhi chú cho chính mình
Restore pre-playback viewCó trả màn hình về chỗ cũ không
Check for inconsistencies when playback beginsCó 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.

Ghi và phát lại macro Ảnh: Macro chép nguyên toạ độ tuyệt đối vào tệp

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ệpActMacro001.actmx
Kích thước5.477 byte
Dạng tệpJSON
Thư mụcgiá 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 đối2000.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 recorderLISP
Cần biết lập trìnhkhông
Thời gian làm một việc đơn giảnvài phútvài chục phút
Làm được việc phụ thuộc lựa chọn của người dùngrất hạn chếđược
Tính toán, vòng lặp, điều kiệnkhôngđược
Chép sang máy khácchép tệp .actmxnạ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óiBản 2027 thực tế thế nào
Phải mở bảng Action Recorder mới ghi đượcACTRECORD là ghi; kiểm bằng biến ACTRECORDERSTATE
Macro chạy theo chỗ mình bấm chuộtNó chép toạ độ tuyệt đối vào tệp
Macro thay được LISPKhô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ư LISPKhô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ì?

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.

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 lập trình phần mềm trong xây dựng