AutoCAD – Bản vẽ

Lệnh undo trong CAD: Ctrl+Y không gọi REDO như bạn tưởng

Lệnh undo trong CAD có hai dạng U và UNDO khác nhau. Đọc tệp giao diện bản 2027 và Ctrl+Y hoá ra chạy MREDO chứ không phải REDO.

  • TS. Đỗ Quốc Hoàng
  • 9 phút đọc
Năm hình tròn trên AutoCAD 2027, sau ba lần bấm Ctrl+Z còn đúng hai Ảnh: AutoCAD 2027

Ai cũng biết bấm Ctrl+Z để lùi lại. Nhưng gõ UNDO thì máy hỏi một câu dài với sáu lựa chọn, gõ U thì nó làm luôn không hỏi gì, còn gõ REDO hai lần thì lần thứ hai chẳng thấy gì xảy ra. Ba thứ tưởng là một hoá ra là ba.

Bài này đọc thẳng tệp giao diện của AutoCAD 2027 để xem hai phím tắt ấy thật sự gọi lệnh gì, rồi đo lại trên máy. Kết quả có một chỗ khiến chúng tôi phải đo lại hai lần mới tin. Lệnh undo trong CAD là thứ dùng hàng trăm lần mỗi ngày, nên hiểu đúng nó tiết kiệm được nhiều phút vô ích. Viện có khóa AutoCAD cho ngành xây dựng dạy đủ phần thao tác nền.

Lệnh undo trong CAD: U và UNDO khác nhau ở đâu

Đây là hai lệnh riêng biệt, không phải viết tắt của nhau, và đó là hiểu lầm đầu tiên cần gỡ.

U lùi đúng một bước rồi kết thúc, không hỏi gì. Vẽ sáu hình tròn rồi gọi U ba lần: số đối tượng đi 6 → 5 → 4 → 3, mỗi lần đúng một bước.

UNDO thì mở ra cả một bộ lựa chọn. Gõ xong nó in ra dòng trạng thái rồi mới hỏi, chép nguyên văn từ bản 2027:

Current settings: Auto = On, Control = All, Combine = Yes, Layer = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back] <1>:

Mặc định trong ngoặc nhọn là 1, nên Enter một cái là nó hành xử y hệt U. Nhưng gõ một con số thì nó lùi bấy nhiêu bước một lượt. Thử với 8 đối tượng, gõ UNDO rồi 3, còn lại đúng 5.

Autodesk mô tả lệnh trong một câu trên trang UNDO của bản 2027: "Reverses the effect of commands".

Cả UNDO, REDO lẫn OOPS đều không có lệnh tắt và không có nút trên ribbon mặc định. Chỉ U có mục trong menu Edit, và MREDO nằm ở Edit → Redo. Chuyện đặt lệnh tắt cho tiện nằm ở bài lệnh tắt trong CAD.

Có một lệnh họ hàng ít người biết là OOPS. Nó khôi phục riêng nhóm đối tượng vừa bị xoá, mà không lùi các việc làm sau đó — khác hẳn U. Thử đúng tình huống ấy: vẽ ba hình, xoá một, vẽ thêm hai hình nữa, rồi gõ OOPS. Số đối tượng đi từ 4 lên 5, tức hình bị xoá quay lại còn hai hình mới vẫn nguyên. Nếu bấm U thay vào đó thì hai hình mới mới là thứ bị lùi. Hữu ích khi bạn lỡ xoá một cụm rồi làm tiếp một loạt việc khác, nay chỉ muốn lấy lại cụm ấy thôi. Cách sửa hàng loạt mà không phải hoàn tác nằm ở bài sửa text hàng loạt trong CAD.

Phím tắt undo và redo thật ra gọi lệnh gì

Đây là phần chúng tôi thấy chưa trang nào nói, và nó giải thích được cái chuyện REDO bấm lần hai không ăn.

Ctrl+Y gọi MREDO Ảnh: Phím tắt thật sự gọi lệnh gì, đọc từ acad.cuix rồi đo lại trên máy

Tệp acad.cuix của bản 2027 định nghĩa 43 phím tắt. Giải nén nó ra rồi đọc, hai dòng đáng chú ý là:

PhímLệnh thật sự chạy
Ctrl+Z_u
Ctrl+Y^C^C_mredo 1

Nghĩa là phím tắt undo và redo không đối xứng nhau. Ctrl+Z gọi U, còn Ctrl+Y không gọi REDO mà gọi MREDO với tham số 1.

Bấm Ctrl+Z ba lần: 5 → 4 → 3 → 2 hình. Bấm Ctrl+Y ba lần ngay sau đó: 2 → 3 → 4 → 5 hình. Cả hai chiều đều chạy đủ ba lần.

Ảnh đầu bài là hai đầu của phép thử ấy: năm hình tròn, và sau ba lần Ctrl+Z còn đúng hai.

Lệnh redo chỉ làm lại được một bước

Bây giờ mới đến chỗ lạ. Gõ chữ REDO trên dòng lệnh, nó làm lại một bước: 3 → 4 đối tượng. Gõ REDO lần thứ hai, không có gì xảy ra. Thử lại năm lần liên tiếp, số đối tượng đứng yên.

Ban đầu chúng tôi tưởng lệnh bị nuốt mất. Nhưng đọc tài liệu Autodesk thì đúng là vậy: REDO "reverses the effects of a single UNDO or U command" — nó chỉ đảo lại một lần hoàn tác, và không lặp được.

Muốn làm lại nhiều bước thì có MREDO, mà Autodesk mô tả là "reverses the effects of several previous UNDO or U commands". Gõ MREDO rồi 2, số đối tượng đi từ 4 lên 6, làm lại đúng hai bước một lượt.

Ghép hai điều lại thì mọi thứ khớp: lệnh redo gõ tay chỉ chạy được một lần, còn Ctrl+Y bấm bao nhiêu lần cũng được, vì mỗi lần bấm là một lệnh MREDO 1 mới. Ai quen gõ chữ redo rồi thắc mắc sao nó "hỏng" thì lý do là đây.

Người tìm bằng tiếng Anh hay gõ undo autocad hoặc redo autocad, cùng trỏ về bộ lệnh này.

Mark và Back: hai lựa chọn cần cẩn thận

Trong sáu lựa chọn của UNDO, hai cái nguy hiểm nhất đi liền nhau.

Autodesk mô tả cặp này trong một câu: "Mark places a mark in the undo information. Back undoes all the work done back to this mark". Nghĩa là bạn cắm một cái mốc, làm tiếp một loạt việc, rồi Back một cái là quay hết về mốc ấy.

Vấn đề nằm ở chỗ chưa cắm mốc nào mà gõ Back. và máy hỏi lại đúng một dòng:

This will undo everything. OK? <Y>

Chữ <Y> cuối dòng là mặc định. Ai quen bấm Enter cho nhanh là mất sạch cả phiên làm việc. Đây là một trong số ít chỗ trong AutoCAD mà Enter theo phản xạ gây hậu quả lớn.

Hai lựa chọn BEginEnd thì hiền hơn. Autodesk ghi: "Groups a sequence of actions into a set". Bạn mở nhóm, làm một loạt việc, đóng nhóm, thế là cả loạt ấy lùi được bằng một lần U. Tiện khi chạy một chuỗi thao tác mà muốn hoàn tác trọn gói.

Biến UNDOCTL đọc ra được gì

Muốn biết bộ hoàn tác đang ở trạng thái nào mà không phải gõ lệnh thì đọc biến UNDOCTL. Autodesk mô tả nó ngắn gọn: "Displays the options used in the UNDO command".

Trên máy chúng tôi biến này bằng 53. Nó là một mã bit, nên phải tách ra: 53 = 1 + 4 + 16 + 32.

BitAutodesk ghi
1"UNDO is turned on"
4"Auto is turned on"
16"Zoom and pan operations are grouped as a single action"
32"Layer property operations are grouped as a single action"

Bốn dòng ấy giải ra đúng bằng dòng trạng thái mà lệnh UNDO in ra: Auto = On, Control = All, Combine = Yes, Layer = Yes. Con số và câu chữ khớp nhau, nên đọc biến là đủ, khỏi cần gọi lệnh.

Bit 16 giải thích một chuyện hay gây khó chịu: phóng to thu nhỏ liên tục rồi bấm Ctrl+Z, máy lùi cả cụm zoom chứ không lùi từng lần. Đó là cố ý, không phải lỗi.

Còn bit 2 nghĩa là chỉ hoàn tác được một lệnh duy nhất, xảy ra khi ai đó đặt UNDO về chế độ One. Gặp bản vẽ mà Ctrl+Z chỉ lùi được một bước thì kiểm UNDOCTL trước tiên.

Ba điều nhiều nơi bỏ sót

Điều hay ngheBản 2027 thực sự làm gì
Ctrl+Y chính là lệnh REDOKhông. Tệp giao diện ghi nó chạy ^C^C_mredo 1
REDO nhiều lần thì làm lại nhiều bướcChỉ được một bước; muốn nhiều thì dùng MREDO
UUNDO là mộtU lùi một bước rồi thôi; UNDO có sáu lựa chọn, trong đó Back xoá cả phiên

Tóm lại lệnh undo trong cad chỉ cần nhớ ba thứ: U cho việc thường, UNDO kèm một con số khi cần lùi cả cụm, và tránh xa Back trừ khi đã cắm mốc bằng Mark.

Một thói quen đáng tập với bản vẽ lớn: trước khi bắt đầu một việc dễ hỏng — chỉnh hàng loạt chữ, chạy một lisp lạ, nhập bản vẽ ngoài vào — hãy gõ UNDO rồi M để cắm một cái mốc. Làm xong thấy không ổn thì UNDO rồi B đưa mọi thứ về đúng lúc trước đó, gọn hơn nhiều so với bấm Ctrl+Z hàng chục lần và đếm nhẩm xem đã đủ chưa.

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

Phím tắt undo trong AutoCAD là gì?

Ctrl+Z. Đọc trong tệp giao diện thì nó chạy lệnh U, tức lùi đúng một bước mỗi lần bấm.

Vì sao gõ REDO lần thứ hai không ăn?

REDO chỉ đảo lại được một lần hoàn tác. Dùng MREDO rồi nhập số bước, hoặc cứ bấm Ctrl+Y nhiều lần.

Làm sao lùi mười bước một lượt?

UNDO, rồi gõ 10, rồi Enter.

Bấm Ctrl+Z mà chỉ lùi được một bước?

Kiểm biến UNDOCTL. Nếu nó chứa bit 2 thì chế độ đang bị đặt về One, gõ UNDO rồi chọn Control để chỉnh lại.

Lựa chọn Back của UNDO có nguy hiểm không?

Có. Chưa cắm mốc mà gõ Back thì máy hỏi This will undo everything. OK? <Y>, và mặc định là đồng ý.

Vì sao hoàn tác lại lùi cả cụm zoom?

Do bit 16 của UNDOCTL: các thao tác phóng to và di chuyển màn hình được gộp thành một hành động.

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