Câu hỏi được tìm nhiều nhất quanh lệnh scale trong CAD không phải là cách dùng nó, mà là cách bắt nó kéo giãn theo một phương thôi. Câu trả lời thẳng: nó không làm được, bằng thiết kế.
Bài này chỉ ra đường đi thật sự — biến hình thành block rồi chèn với hai hệ số khác nhau — kèm tệp lisp SC1 của Viện làm sẵn việc đó, có mã nguồn in đầy đủ. Muốn học trọn bộ lệnh chỉnh sửa thì xem khóa AutoCAD Xây Dựng.
Lệnh scale trong CAD chỉ phóng đều, và dòng nhắc nói thẳng điều đó
Chứng cứ nằm ngay trong câu máy hỏi, chép nguyên văn từ bản 2027:
Specify scale factor or [Copy/Reference]:
Một hệ số. Không có chỗ nào khai riêng phương ngang và phương đứng. Đó là lý do lệnh không bao giờ làm méo hình, và cũng là lý do nó không giúp được khi bạn cần kéo giãn một chiều.
Lấy hình thật: một chữ nhật 2000 × 1000, gọi lệnh với hệ số 2.
| Trước | Sau |
|---|---|
| 2000 × 1000 | 4000 × 2000 |
Cả hai cạnh cùng nhân hai. Hình vẫn đúng tỉ lệ, chỉ to lên.
Đây không phải thiếu sót mà là chủ ý. Trang SCALE của Autodesk mô tả lệnh bằng đúng một câu: "Enlarges or reduces selected objects, keeping the proportions of the object the same after scaling". Giữ nguyên tỉ lệ là việc lệnh được giao, nên đòi nó làm méo hình là đòi sai chỗ.
Cách gọi lệnh scale trong CAD và từng bước trên dòng lệnh
Theo tệp giao diện acad.cuix của bản 2027.
| Lối vào | Nội dung |
|---|---|
| Lệnh đầy đủ | SCALE |
| Lệnh tắt | SC |
| Ribbon | Home → Modify → Scale |
| Menu cổ điển | Modify → Scale |
| Thanh công cụ | Modify → Scale |
Dòng giữa trong bảng dưới chép nguyên văn từ AutoCAD 2027.
| Bước | Máy hỏi | Bạn làm |
|---|---|---|
| 1 | Select objects: | Chọn hình, xong Enter |
| 2 | Specify base point: | Bấm điểm đứng yên khi phóng |
| 3 | Specify scale factor or [Copy/Reference]: | Gõ hệ số, hoặc gõ C, hoặc gõ R |
Bước 2 là chỗ hay bị xem nhẹ. Cũng trang trên của Autodesk mô tả: "The base point you specify identifies the point that remains in the same location as the selected objects change size". Điểm gốc là điểm không nhúc nhích; mọi thứ khác chạy ra xa hay co lại về phía nó. Chọn nhầm điểm gốc thì hình đúng cỡ nhưng nằm sai chỗ.
Lựa chọn Copy giữ lại bản gốc và phóng ra một bản mới. Lựa chọn Reference cho phép khai bằng số đo thật thay vì hệ số:
Specify reference length <1.00>:
Specify new length or [Points] <1.00>:
Với chữ nhật 2000 × 1000, khai chiều dài cũ 2000 và chiều dài mới 3000 thì ra 3000 × 1500. Vẫn là phóng đều.
Vì sao STRETCH không phải là scale 1 chiều
Rất nhiều bài hướng dẫn chỉ sang lệnh STRETCH — lệnh tắt là S — như là cách scale một phương. Đó là nhầm lẫn về bản chất.
STRETCH không nhân hệ số. Nó dời các đỉnh nằm trong khung chọn đi một khoảng cách cố định. Với một hình chữ nhật thì hai việc ấy trông giống nhau, nên nhiều người tưởng là một. Đặt cạnh nhau các loại đối tượng khác thì khác biệt lộ ra ngay.
Bốn đối tượng, một hình chữ nhật 2000 × 1000, một đường tròn bán kính 500, một dòng chữ cao 300 và một thẻ block. Cùng một lần kéo 2000 theo phương ngang, khung chọn cắt ngang chỉ cắt qua hình chữ nhật:
| Đối tượng | Rộng trước | Rộng sau | Kết quả |
|---|---|---|---|
| Hình chữ nhật | 2000 | 4000 | giãn ra đúng 2000 |
| Đường tròn | 1000 | 1000 | không đổi, cũng không dời |
| Dòng chữ | 4264,46 | 4264,46 | không đổi |
| Thẻ block | 800 | 800 | không đổi |
Hàng thứ hai là trường hợp ngược lại, và nó quan trọng ngang hàng thứ nhất. Mở khung chọn rộng ra cho trùm hết điểm định nghĩa của cả bốn:
| Đối tượng | Rộng trước | Rộng sau | Dời chỗ |
|---|---|---|---|
| Hình chữ nhật | 2000 | 2000 | 2000 |
| Đường tròn | 1000 | 1000 | 2000 |
| Dòng chữ | 4264,46 | 4264,46 | 2000 |
| Thẻ block | 800 | 800 | 2000 |
Lần này không cái nào đổi kích thước, cả bốn chỉ dời đi. Lệnh biến thành lệnh dời.
Ba con số chốt lại: bán kính đường tròn giữ nguyên 500 ở cả hai vế, chiều cao chữ giữ nguyên 300, hệ số X của thẻ block giữ nguyên 1. Một đường tròn bị kéo giãn một phương thì phải thành elip — ở đây nó không hề thành elip, vì không có phép giãn nào xảy ra.
Kết luận gọn: STRETCH hữu ích, nhưng nó chỉ đổi khoảng cách giữa những đỉnh mà khung chọn bắt được. Nó không phải là scale 1 chiều trong cad.
Scale 1 chiều trong CAD bằng cách chèn block: từng bước
Đây mới là đường đi thật, và nó dùng chức năng sẵn có chứ không cần cài thêm gì. Ý tưởng: một thẻ block nhận hai hệ số riêng cho phương X và phương Y.
Bước 1 — gom hình thành một khối. Gõ B để gọi BLOCK, đặt tên, chọn điểm gốc, chọn các hình, bấm OK. Cách tạo và sửa khối nằm ở bài block trong CAD.
Bước 2 — chèn khối bằng lệnh gạch ngang. Phải gõ -INSERT có dấu gạch nối ở đầu. Gõ INSERT không gạch nối thì máy mở bảng Blocks, mà bảng ấy chỉ có một ô tỉ lệ chung nếu không mở khoá tỉ lệ. Dãy câu hỏi chép nguyên văn từ bản 2027:
| Bước | Máy hỏi nguyên văn | Bạn làm |
|---|---|---|
| 1 | Enter block name or [?]: | Gõ tên khối vừa tạo |
| 2 | Specify insertion point or [Basepoint/Scale/X/Y/Z/Rotate/Explode/REpeat]: | Bấm chỗ đặt, hoặc gõ toạ độ |
| 3 | Enter X scale factor, specify opposite corner, or [Corner/XYZ] <1>: | Gõ hệ số phương ngang, ví dụ 2 |
| 4 | Enter Y scale factor <use X scale factor>: | Gõ hệ số phương đứng, ví dụ 1 |
| 5 | Specify rotation angle <0>: | Enter nếu không xoay |
Bước 4 là cả câu chuyện. Mặc định của nó là lấy theo X, nên gần như ai cũng Enter cho qua và không bao giờ biết mình vừa bỏ lỡ chỗ khai hệ số đứng riêng.
Kết quả đo trên một khối gồm chữ nhật 1000 × 600, đường tròn bán kính 200 và dòng chữ:
| Lần chèn | Rộng | Cao |
|---|---|---|
| Đối chứng, X = 1 và Y = 1 | 1000 | 887,86 |
| X = 2 và Y = 1 | 2000 | 887,86 |
Bề rộng nhân đúng hai, chiều cao không nhúc nhích.
Bước 3 — sửa lại hệ số lúc nào cũng được. Đây là ưu điểm lớn nhất của đường này. Chọn thẻ block, mở bảng Properties bằng Ctrl+1, rồi sửa thẳng ô Scale X. Dãy đo được khi đổi tới đổi lui trên cùng một thẻ:
| Hệ số X | Rộng | Cao |
|---|---|---|
| 1 | 1000 | 887,86 |
| 2 | 2000 | 887,86 |
| 0,5 | 500 | 887,86 |
| 1 | 1000 | 887,86 |
Quay về đúng con số ban đầu. Không có bước nào mất mát, khác hẳn cách nổ hình ra rồi sửa tay.
Bước 4 — nổ ra nếu cần hình thường. Gõ X để gọi EXPLODE. Chỗ này có một điều cần biết trước, và đây là phần các trang khác không nói. Nổ một thẻ block có hệ số X khác Y thì thành phần bên trong đổi loại:
| Trong khối | Nổ bản X = 1, Y = 1 | Nổ bản X = 2, Y = 1 |
|---|---|---|
| Đường tròn bán kính 200 | đường tròn, rộng 400 | elip, rộng 800 |
| Đa tuyến kín 1000 × 600 | đa tuyến, rộng 1000 | 4 đoạn thẳng rời, hai đoạn dài 2000 |
| Dòng chữ rộng 737,82 | chữ rộng 737,82 | chữ rộng 1475,65 |
Đường tròn thành elip là đương nhiên, không phải lỗi: một hình tròn bị kéo một phương thì đúng là elip. Nhưng đa tuyến vỡ thành bốn đoạn rời thì đáng biết trước, vì sau đó nó không còn báo diện tích nữa. Cách tính diện tích nằm ở bài tính diện tích trong CAD.
Một điều nữa nên cân nhắc: chữ trong khối bị kéo méo theo. Khung tên chèn với hệ số X khác Y sẽ ra chữ gầy hoặc chữ béo. Và nếu kiểu chữ đang dùng font .shx không có glyph tiếng Việt thì mọi dấu hiện ra thành dấu hỏi, bề rộng vì thế cũng sai theo — bài lisp xuất toạ độ có phép thử đủ 41 font Unicode đi kèm AutoCAD.
Lisp scale 1 chiều trong CAD: tệp SC1 của Viện
Làm tay bốn bước trên thì đúng nhưng chậm. Đó là lý do có nhiều tệp lisp scale 1 chiều trong cad lưu hành, thường mang tên lệnh XSC hoặc 1SC. Chúng đều làm đúng một việc: gom hình vào một block tạm, chèn lại với hai hệ số khác nhau, rồi nổ ra.
Đọc kỹ các bản đang lưu hành thì thấy ba chỗ thiếu. Bản phổ biến nhất để lại block tạm tên vkc_temp nằm mãi trong bản vẽ. Không bản nào cảnh báo rằng đường tròn sẽ thành elip và đa tuyến sẽ vỡ. Và có trang chỉ đưa link tải mà không in mã nguồn, nên không ai đọc được thứ mình sắp chạy trên máy.
Viện viết lại một bản và phát hành kèm mã nguồn đầy đủ.
APPLOAD, mã nguồn in ngay dưới đây.Hai lệnh sau khi nạp:
| Lệnh | Việc |
|---|---|
SC1 | phóng một phương rồi nổ ra hình thường |
SC1X | phóng một phương nhưng giữ thành thẻ block, để sửa lại hệ số sau |
Phần ruột làm việc, đúng như trong tệp tải:
(setq ten (iic-ten-tam))
(command "_.-BLOCK" ten p0 ss "")
(if (= phuong "X")
(command "_.-INSERT" ten p0 hs 1.0 0)
(command "_.-INSERT" ten p0 1.0 hs 0))
(setq e (entlast))
(if no
(progn (command "_.EXPLODE" e) (setq ss2 (ssget "_P")))
(setq ss2 (ssadd e (ssadd))))
(iic-xoa-block ten)
Ba điểm khác bản đang lưu hành. Tên block tạm sinh theo số thứ tự còn trống rồi bị xoá ngay sau khi xong, nên bản vẽ không phình ra. Cả lệnh gói trong một bước hoàn tác, bấm U một lần là về nguyên trạng. Và khi chạy xong, lệnh in ra bảng đối chiếu số lượng từng loại đối tượng trước với sau, để không ai phải đoán.
CIRCLE : 1 -> 0
POLYLINE : 1 -> 0
TEXT : 1 -> 1
ELLIPSE : 0 -> 1 (mới sinh ra)
LINE : 0 -> 4 (mới sinh ra)
Phép chạy thử trên bản 2027 lấy chữ nhật 2000 × 1000, đường tròn bán kính 300 và dòng chữ Tường 220 rộng 2093,25. Phương X, hệ số 2. Chữ nhật ra bốn đoạn thẳng dài 4000 và cao 1000. Đường tròn ra elip 1200 × 600. Chữ ra rộng 4186,49, đúng gấp đôi. Mọi kích thước phương ngang nhân đúng hai, phương đứng không đổi một đơn vị.
Nạp tệp bằng APPLOAD. Nếu máy hiện hộp Security - Unsigned Executable File thì đó là biến SECURELOAD, cách xử lý nằm ở bài lệnh APPLOAD trong CAD.
Một lưu ý cuối: đừng đưa đường kích thước vào vùng chọn. Nổ ra là dim mất liên kết, con số không tự cập nhật nữa.
Lệnh scale theo 2 điểm: hai cách khai bằng số đo thật
Người hỏi câu này thường đang cần khớp một hình vào hai mốc có sẵn, chứ không cần một hệ số.
Cách thứ nhất nằm trong chính lệnh SCALE. Chọn Reference, rồi ở câu Specify new length or [Points] <1.00>: gõ P. Từ đó khai chiều dài mới bằng cách bấm hai điểm trên bản vẽ.
Cách thứ hai là lệnh ALIGN, lệnh tắt AL. Lệnh này vừa dời, vừa xoay, vừa phóng trong một lượt:
Specify first source point:
Specify first destination point:
Specify second source point:
Specify second destination point:
Specify third source point or <continue>:
Scale objects based on alignment points? [Yes/No] <N>:
Câu cuối là câu quyết định. Trả lời Y thì hình được phóng sao cho hai điểm nguồn nằm đúng vào hai điểm đích. Mặc định là N, nên ai Enter cho nhanh sẽ thấy hình dời và xoay mà không phóng.
Cần nói rõ: ALIGN cũng phóng đều. Nó không phải đường để kéo một phương.
Cách scale trong CAD cho đúng tỉ lệ in
Một nhầm lẫn đáng nói, vì nó làm hỏng cả bộ hồ sơ. Người mới hay phóng to nhỏ hình trong model cho vừa khung tên, rồi in. Cách ấy làm sai mọi con số: dim đo ra không còn là kích thước thật.
Nguyên tắc là dựng hình đúng kích thước thật trong model, rồi đặt tỉ lệ ở khung nhìn của layout. Cách làm nằm ở bài layout trong CAD.
Chỉ có một tình huống nên phóng hình trong model: khi bản vẽ nhận về dựng sai đơn vị, chẳng hạn vẽ bằng mét trong khi hồ sơ của bạn theo milimét. Lúc ấy phóng hệ số 1000 một lần cho cả bản vẽ là đúng, vì bạn đang sửa đơn vị chứ không phải sửa tỉ lệ in.
Ba điều hay nghe nhưng không đúng
| Điều hay nghe | Bản 2027 thực sự làm gì |
|---|---|
| Lệnh scale khai được hệ số X riêng và Y riêng | Dòng nhắc chỉ có Specify scale factor or [Copy/Reference]:, đúng một hệ số |
Gõ S gọi STRETCH là scale được một phương | S đúng là STRETCH, nhưng nó chỉ dời đỉnh: đường tròn, chữ và thẻ block không đổi kích thước một chút nào |
ALIGN kéo được một phương vì nó hỏi tới hai cặp điểm | Nó phóng đều; hai cặp điểm chỉ để tính ra một hệ số duy nhất |
Câu hỏi thường gặp
Scale 1 chiều trong CAD bằng lệnh nào?
Không có lệnh scale nào làm được. Đường đi là biến hình thành block rồi chèn bằng -INSERT với hệ số X khác hệ số Y, hoặc dùng tệp lisp SC1 ở trên để làm gọn bốn bước ấy thành một lệnh.
Gõ STRETCH có thay được không?
Không. STRETCH dời các đỉnh nằm trong khung chọn đi một khoảng cố định chứ không nhân hệ số. Đường tròn vẫn là đường tròn, chữ vẫn nguyên bề rộng, thẻ block vẫn nguyên hệ số.
Nổ khối ra thì đường tròn đi đâu?
Thành elip, và đó là kết quả đúng. Muốn giữ đường tròn tròn thì để nguyên dạng thẻ block, dùng lệnh SC1X thay vì SC1.
Phóng xong thì dim có tự cập nhật không?
Có, nếu dim gắn liền với hình và bạn chọn cả dim khi phóng bằng SCALE. Nhưng với đường block thì ngược lại: nổ ra là dim mất liên kết, nên đừng đưa dim vào vùng chọn.
Điểm gốc nên bấm vào đâu?
Vào một điểm bạn muốn giữ nguyên vị trí, thường là góc dưới trái hoặc tâm hình. Bấm bừa một chỗ trống thì hình đúng cỡ nhưng văng đi xa.
Lệnh scale 2 chiều trong cad có tồn tại không?
Không có lệnh mang tên ấy. Bản thân SCALE vốn đã phóng theo cả hai chiều cùng lúc, nên cụm từ này thường là cách người dùng gọi chính lệnh SCALE.