AutoCAD – Bản vẽ

Lệnh 3DARRAY trong CAD: mảng theo hàng, cột, tầng và mảng tròn quanh trục bất kỳ

Lệnh 3DARRAY trong CAD (3A) tạo mảng 3D: hàng theo Y, cột theo X, tầng theo Z, hoặc mảng tròn quanh trục bất kỳ. Kết quả là các khối rời, một lần U xoá hết.

  • TS. Đỗ Quốc Hoàng
  • 9 phút đọc
Lệnh 3DARRAY: mảng chữ nhật theo ba trục và mảng tròn quanh trục Z với lựa chọn quay Yes và No Ảnh: Sơ đồ của Viện Tin học Xây dựng

Dựng cột cho một khung nhà nhiều tầng, xếp bu lông quanh một mặt bích, hay rải cọc dưới móng đều là việc lặp một khối theo quy luật. Trong không gian 3D, việc ấy cần thêm một trục thứ ba: tầng theo phương đứng, hoặc một trục quay không nằm trên mặt phẳng XY. Lệnh 3DARRAY trong CAD làm đúng điều đó bằng một chuỗi câu hỏi ngắn trên dòng lệnh.

Bài này thử 3DARRAY trên AutoCAD 2027, bản vẽ mẫu acadiso.dwt, với một hộp 100 × 100 × 100 đặt ở gốc toạ độ. Mảng 2D và các kiểu mảng mới có ở bài lệnh array trong CAD. Cách dựng hộp và các khối cơ bản có ở bài vẽ khối 3D trong CAD. Muốn học bài bản, Viện có khoá AutoCAD cho ngành xây dựng.

Cách gọi lệnh 3DARRAY

Cách gọiỞ đâu
Gõ 3DARRAY hoặc tắt 3ADòng lệnh
MenuModify → 3D Operations → 3D Array
Thanh công cụModeling → 3D Array

Vị trí và lệnh tắt lấy từ tệp acad.cuix và acad.pgp của bản 2027. Lệnh không có nút trên ribbon của không gian làm việc Drafting & Annotation, nên gõ 3A là nhanh nhất.

Lần đầu gọi trong một phiên làm việc, dòng lệnh in Initializing... 3DARRAY loaded. Đó là dấu hiệu 3DARRAY là một chương trình AutoLISP nạp khi cần. Trong nhật ký dòng lệnh, nó lần lượt gọi _.COPY, _.ARRAY và _.UCS để làm việc.

Tài liệu Autodesk về 3DARRAY ghi rằng chức năng của lệnh đã được thay bằng lệnh ARRAY mới. Dù vậy, lệnh vẫn chạy trên bản 2027 và vẫn có trong menu.

Array 3D trong CAD: mảng chữ nhật hàng, cột, tầng

Gõ 3A, chọn hộp, Enter. Máy hỏi kiểu mảng, rồi hỏi lần lượt:

Enter the type of array [Rectangular/Polar] <R>:R
Enter the number of rows (---) <1>: 2
Enter the number of columns (|||) <1>: 3
Enter the number of levels (...) <1>: 4
Specify the distance between rows (---): 200
Specify the distance between columns (|||): 300
Specify the distance between levels (...): 400

Kết quả là 24 hộp. Đọc toạ độ trọng tâm của chúng thì thấy mỗi đại lượng đi theo một trục:

Đại lượngTrụcTrọng tâm các hộp
Hàng, cách 200YY = 50, 250
Cột, cách 300XX = 50, 350, 650
Tầng, cách 400ZZ = 50, 450, 850, 1 250

Khoảng cách tính từ tâm tới tâm, không phải khe hở giữa hai hộp. Trọng tâm theo X cách nhau đúng 300, nên với hộp rộng 100, khe hở giữa hai cột hộp là 200.

Chỗ dễ nhầm là hàng đi theo Y chứ không theo X. Ký hiệu trong câu hỏi gợi ý đúng điều ấy: (---) là các hàng nằm ngang xếp chồng lên nhau, (|||) là các cột đứng xếp cạnh nhau.

Khoảng cách âm thì mảng đi ngược chiều trục. Với 1 hàng, 1 cột, 3 tầng và khoảng tầng -400, trọng tâm các hộp ở Z = 50, −350, −750: mảng xếp xuống dưới hộp gốc.

Máy chỉ hỏi khoảng cách cho đại lượng nào lớn hơn 1. Nhập 1 hàng, 1 cột, 3 tầng thì câu hỏi duy nhất là Specify the distance between levels (...). Điều này quan trọng khi viết sẵn chuỗi lệnh hay kịch bản: số câu trả lời phải khớp số câu hỏi thật, nếu không các con số còn thừa sẽ bị dòng lệnh hiểu thành lệnh khác.

Hộp 100 × 100 × 100 sau 3DARRAY: 2 hàng theo Y, 3 cột theo X, 4 tầng theo Z, tổng 24 khối rời. Góc nhìn SE Isometric, kiểu hiển thị Realistic Ảnh: Ảnh chụp AutoCAD 2027

24 khối rời và một lần U

Cả 24 hộp là khối đặc riêng rẽ (AcDb3dSolid), không có liên kết nào giữa chúng. Sửa một hộp không làm các hộp khác đổi theo.

Dù bên trong lệnh gọi nhiều lệnh con, gõ U một lần ngay sau 3DARRAY là xoá cả 24, trả về đúng một hộp gốc. Lỡ nhập sai số tầng thì chỉ cần một U.

Mảng tròn 3D trong CAD: Polar quanh trục bất kỳ

Chọn P ở câu hỏi kiểu mảng. Máy hỏi:

Enter the number of items in the array: 6
Specify the angle to fill (+=ccw, -=cw) <360>: 360
Rotate arrayed objects? [Yes/No] <Y>: Y
Specify center point of array: 0,0,0
Specify second point on axis of rotation: 0,0,100

Khác với mảng tròn 2D chỉ cần một tâm, ở đây phải cho hai điểm để xác định trục quay trong không gian. Hai điểm 0,0,0 và 0,0,100 là trục Z đứng. Với hộp đặt ở X = 450 đến 550, sáu hộp có trọng tâm cách trục đúng 500, trên mặt phẳng ngang Z = 50. Toạ độ trọng tâm là (500, 0), (250, 433), (−250, 433), (−500, 0), (−250, −433), (250, −433).

Đổi trục thì vòng mảng đổi mặt phẳng. Lấy trục là X, từ 0,0,0 đến 100,0,0, với bốn phần tử và hộp đặt lệch 500 theo Y. Trọng tâm bốn hộp là (50, 500, 0), (50, 0, 500), (50, −500, 0), (50, 0, −500): vòng mảng dựng đứng trong mặt phẳng YZ. Đây là việc mảng tròn 2D không làm được, ví dụ rải các nan quanh một trục nằm ngang.

Góc điền khác 360 thì phần tử đầu và cuối nằm ở hai đầu cung. Với 4 phần tử và góc 180, trọng tâm các hộp ở góc 0°, 60°, 120° và 180°: bước góc là 180 chia 3, không phải 180 chia 4.

Sau mảng tròn, biến WORLDUCS vẫn là 1. Nói cách khác, hệ toạ độ người dùng mà lệnh dùng tạm bên trong đã được trả về, bản vẽ vẫn ở WCS.

Hộp 200 × 40 sau 3DARRAY Polar, 6 phần tử, 360°, Rotate = Yes, trục đi qua 0,0,0 và 0,0,100. Trụ giữa chỉ đánh dấu trục quay Ảnh: Ảnh chụp AutoCAD 2027

Rotate arrayed objects: Yes hay No

Câu hỏi Rotate arrayed objects? quyết định các bản sao có quay theo vòng hay không. Hộp vuông thì khó thấy khác biệt, nên thử với một hộp dài 200 × 40 đặt từ 400,−20 đến 600,20, bốn phần tử quanh trục Z:

Lựa chọnKích thước nhìn từ trênTrọng tâm các hộp
Yes200×40, 40×200, 200×40, 40×200(500, 0), (0, 500), (−500, 0), (0, −500)
No200×40 cả bốn(500, 0), (−80, 620), (−700, 40), (−120, −580)

Với Yes, mỗi hộp quay 90° theo vòng, trọng tâm nằm đều trên vòng tròn bán kính 500. Với No, hộp giữ nguyên hướng. Nhưng trọng tâm của chúng không nằm trên vòng tròn ấy, khoảng cách tới trục dao động từ 500 đến khoảng 700. Vì vậy, muốn các bản sao cách đều trục, hãy chọn Yes, là giá trị mặc định.

3DARRAY và ARRAYRECT: chọn lệnh nào

Lệnh ARRAYRECT mới cũng có lựa chọn Levels cho tầng. Chạy nó với cùng hộp, 2 hàng × 3 cột × 4 tầng và bật liên kết (AS = Yes), kết quả là một đối tượng AcDbBlockReference, tức một mảng liên kết. Tắt liên kết thì ARRAYRECT cũng cho 24 khối rời như 3DARRAY.

3DARRAYARRAYRECT có Levels
Kết quả24 khối rời1 mảng liên kết (khi AS = Yes)
Loại đối tượngAcDb3dSolid × 24AcDbBlockReference × 1
Hỏi đápChuỗi câu hỏi cố định, hết câu là xongBảng lựa chọn [ASsociative/Base point/Rows/Columns/Levels/eXit]

3DARRAY hợp khi cần một chuỗi khối rời để sửa từng cái sau đó, hoặc khi viết kịch bản vì chuỗi câu hỏi cố định. Mảng liên kết hợp khi số lượng còn đổi. Cách mảng liên kết hoạt động có ở bài lệnh array trong CAD.

Một ví dụ: cột cho khung nhà ba tầng

Khung nhà có lưới cột 3 nhịp × 2 nhịp, nhịp 6 000 theo X, 4 500 theo Y, chiều cao tầng 3 600:

  1. Dựng một cột 300 × 300 cao 3 600 tại gốc bằng BOX.
  2. 3A, chọn cột, R.
  3. Số hàng 3 (theo Y, ba trục), số cột 4 (theo X, bốn trục), số tầng 3.
  4. Khoảng hàng 4500, khoảng cột 6000, khoảng tầng 3600.

Ra 3 × 4 × 3 = 36 cột rời. Nhập sai, gõ U một lần là về lại một cột. Để xem khung từ nhiều phía, dùng các cách ở bài xoay khung nhìn 3D trong CAD.

Lệnh 3A trong CAD với LISP: một bẫy nhỏ

Vì 3DARRAY tự nó là một chương trình LISP, không thể chọn đối tượng bằng một biến LISP như !h khi đang trong lệnh. Dòng lệnh báo:

Can't reenter LISP.
*Invalid selection*

Các con số gõ tiếp sau đó bị hiểu thành câu trả lời cho câu hỏi chọn đối tượng, và lệnh treo lại ở Remove objects:. Hãy chọn bằng L (đối tượng vừa vẽ), bằng khung chọn, hoặc bằng cách bấm chuột. Nếu lệnh đã treo, bấm Esc vài lần để thoát.

Ba điều hay nghe nhưng không đúng

Hay ngheTrên bản 2027
Hàng trong 3DARRAY đi theo trục XHàng đi theo Y, cột đi theo X, tầng đi theo Z
Góc 180 với 4 phần tử thì bước góc là 45°Bước là 60°: phần tử đầu và cuối nằm ở hai đầu cung
Chọn Rotate = No thì các khối vẫn nằm đều trên vòng trònKhối giữ hướng nhưng lệch khỏi vòng tròn

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

Lệnh 3darray trong CAD dùng để làm gì?

Để lặp một khối theo hàng, cột và tầng trong không gian 3D, hoặc quanh một trục quay bất kỳ. Lệnh tắt là 3A.

Hàng, cột, tầng trong 3DARRAY đi theo trục nào?

Hàng theo Y, cột theo X, tầng theo Z. Khoảng cách âm cho mảng đi ngược chiều trục.

Mảng tròn quanh trục nằm ngang làm thế nào?

Chọn P, rồi cho hai điểm trục nằm ngang, ví dụ 0,0,0 và 100,0,0. Vòng mảng sẽ dựng đứng trong mặt phẳng YZ.

Tạo sai thì bỏ thế nào?

Gõ U một lần ngay sau lệnh. Toàn bộ các bản sao bị xoá, còn lại khối gốc.

Kết quả của 3DARRAY có liên kết như ARRAY mới không?

Không. 3DARRAY cho các khối rời. Muốn mảng liên kết có tầng, dùng ARRAYRECT với lựa chọn Levels và liên kết bật.

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