218 MIRRTEXT Xác định cách thức khi lấy đối xứng đối với văn bản. Bằng 0: giữ nguyên chiều văn bản; bằng 1: đổi chiều văn bản. TILEMODE Xác định không gian hiện hành là không gian mô hình hay không gian in. Bằng 0: không gian in; bằng 1: không gian mô hình. ZOOMFACTOR Xác định tỷ lệ phần trăm thu/phóng bản vẽ khi lăn phím chuột giữa. TEXTFILL Điều khiển cách hiển thị văn bản TrueType. Bằng 0: chỉ vẽ đường biên văn bản; bằng 1: vẽ cả đường biên và tô đầy văn bản. 5.2. Tạo mới đối tượng hình học Mô hình đối tượng trong AutoCAD thực chất là sự mô tả lại hầu như tất các các đối tượng mà người dùng có thể tạo ra trong AutoCAD theo cách vẽ thông thường, cho nên để lập trình tạo ra các đối tượng hình học bằng VBA thì người dùng cần phải thông thuộc cách tạo ra đối tượng đó bằng lệnh thông thường trực tiếp trong AutoCAD. Trong AutoCAD, để hỗ trợ người dùng thao tác nhanh, một đối tượng hình học có thể được tạo ra theo nhi ều phương thức khác nhau, chẳng hạn như khi tạo đường tròn trong AutoCAD, người dùng có thể tạo theo 4 cách khác nhau: Ø Ø Xác định tâm và bán kính, Ø Ø Xác định 2 điểm tạo nên đường kính đường tròn, Ø Ø Xác định ba điểm ngoại tiếp đường tròn, Ø Ø Xác định hai đường tang và bán kính. Hoặc để tạo một cung tròn, trong AutoCAD, người dùng có tới 11 phương thức để lựa chọn như hình bên. Tuy nhiên, vớ i VBA trong AutoCAD, mỗi đối tượng chỉ có thể được tạo bằng một phương thức với một loại thông số nhất định, ví dụ như đối với đường tròn, người lập trình chỉ có thể tạo ra với các thông số là vị trí tâm và bán kính của đường tròn. Hầu hết các đối tượng hình học trong AutoCAD, tuy khác nhau về hìh dáng, nhưng cách tạo ra chúng bằng VBA lại tương tự nhau, cho nên trong phần này chỉ giới thi ệu cách thức tạo ra một số đối tượng hình học chính trong AutoCAD, bao gồm: Ø Ø Đối tượng Point; Ø Ø Đối tượng dạng đường cong: Arc, Circle; Ø Ø Đối tượng văn bản: Text; Ø Ø Các đối tượng dạng đường có chiều dài hữu hạn như Line, Polyline 5.2.1. Xác định nơi chứa đối tượng AutoCAD nhóm các đối tượng hình học trong tập đối tượng ModelSpace, PaperSpace và trong đối tượ ng Block. Tuy nhiên, thường được sử dụng nhất là hai tập đối tượng ModelSpace và PaperSpace: Ø Ø ModelSpace (không gian mô hình) là một phần của bản vẽ, là nơi để người dùng tạo các đối tượng hình học để tạo nên mô hình hoặc bản vẽ mà người dùng dự định thiết kế. Hầu hết tất cả các thao tác xây dựng bản vẽ đều được thực hiện trên không gian mô hình. Trong AutoCAD, chỉ có một không gian mô hình, tương ứng với không gian mô hình này chính là thẻ Model nằm ở góc dưới màn hình bản vẽ trong AutoCAD. C C H H Ư Ư Ơ Ơ N N G G V V : : L L Ậ Ậ P P T T R R Ì Ì N N H H T T R R Ê Ê N N A A U U T T O O C C A A D D 219 Ø Ø PaperSpace (không gian in) cũng cho phép chứa các đối tượng hình học như trong không gian mô hình, tuy nhiên mục đích chính của không gian in là để phục vụ cho quá trình sắp xếp bản vẽ và in ấn. Không gian in thường chứa các khung nhìn theo một tỷ lệ định trước thể một phần của bản vẽ trong không gian mô hình, hoặc các bảng biểu, ghi chú,… Trong AutoCAD, người dùng có thể tạo nhiều không gian in khác nhau, mỗi không gian in tương ứng với một thẻ Layout nằm ở góc dướ i màn hình bản vẽ trong AutoCAD. Để truy cập đến các không gian in có trong bản vẽ, có thể sử dụng tập đối tượng Layouts có trong đối tượng kiểu Document. Tại một thời điểm, trong AutoCAD chỉ có một không gian là hiện hành, có thể là không gian mô hình hoặc không gian in. Để xác định xem không gian nào là không gian hiện hành, người lập trình có thể sử dụng thuộc tính ActiveSpace có trong đối tượng kiểu Document. Thuộc tính này chỉ nhận giá trị là 2 hằng số sau: Hằng số Giá trị tương ứng acModelSpace 1 acPaperSpace 0 Ví dụ sau sẽ hiển thị thông báo tương ứng với không gian hiện hành của AutoCAD: Sub VD_ActiveSpace() If ThisDrawing.ActiveSpace = acModelSpace Then MsgBox "Không gian hiện hành là không gian mô hình." Else MsgBox "Không gian hiện hành là không gian in." End If End Sub Ngoài ra người dùng còn có thể chuyển đổi giữa không gian in và không gian mô hình bằng cách gán giá trị cho thuộc tính ActiveSpace. Đoạn mã sau sẽ thực hiện thao tác này: Sub VD_ChuyenKhongGian() With ThisDrawing If .ActiveSpace = acModelSpace Then .ActiveSpace = acPaperSpace Else .ActiveSpace = acModelSpace End If End With End Sub Hoặc đơn giản hơn, chỉ cần sử dụng một dòng lệnh sau: Sub VD_ChuyenKhongGian() ThisDrawing.ActiveSpace = (ThisDrawing.ActiveSpace + 1) Mod 2 End Sub GỢI Ý Có thể chuyển đổi giữa các không gian bằng cách gán giá trị cho biến hệ thống TILEMODE. Nếu TILEMODE=1, không gian mô hình sẽ là không gian hiện hành. Nếu bằng 0, không gian in sẽ là không gian hiện hành. 5.2.2. Khai báo và tạo đối tượng hình học Tất các các đối tượng trong AutoCAD (kể cả đối tượng hình học và phi hình học) đều có thể được khai báo trong VBA theo dạng thức Acad<TênĐốiTượng>. Chẳng hạn như đối tượng 220 đường thẳng – Line thì đối tượng tương ứng trong VBA sẽ có kiểu là AcadLine. Ví dụ sau minh hoạ cách khai báo một đối tượng đường tròn trong VBA: Dim CircleObj as AcadCircle Người dùng có thể tạo mới đối tượng hình học trong không gian mô hình hoặc trong không gian in. Để tạo đối tượng mới, sử dụng phương thức AddXXX có trong tập đối tượng ModelSpace và PaperSpace, trong đó XXX là tên của loại đối tượng hình học cần tạo. Cú pháp như sau: Set Biến_đối_tượng = Object.AddXXX(Danh_sách_tham_số) Trong đó, Object là tập đối tượng ModelSpace hoặc PaperSpace. Mỗi phương thức AddXXX sẽ trả về một đối tượng tham chiếu đến đối tượng vừa mới được tạo, vì vậy bắt buộc phải sử dụng câu lệnh Set trong khi tạo đối tượng và biến_đối_tượng phải có kiểu phù hợp với đối tượng trả về của phương thức AddXXX. Lấy ví dụ khi muốn tạo mới một đường tròn trong không gian mô hình, có thể sử dụng mẫu sau: Dim CircleObj as AcadCircle Set Circle = ThisDrawing.ModelSpace.AddCircle(CenterPoint, Radius) Sau khi tạo mới (hoặc hiệu chỉnh) đối tượng, thì kết quả hiển thị trên bản vẽ sẽ không được cập nhật ngay cho đến khi gọi phương thức Update của bản thân đối tượng đó, hoặc phương thức Update của đối tượng Application hoặc phương thức Regen của đối tượng Document. Trong một số trường hợp, AutoCAD cũng có tự động cập nhật ngay khi kết thúc Macro. Tuy nhiên, để chắc chắn, sau khi tạo mới (hoặc hiệu chỉnh) đối tượng, nên chủ động cập nhật lại những thay đổi này. 5.2.3. Tạo đối tượng Point Đối tượng Point đôi khi cũng rất hữu dụng, chẳng hạn như để tạo một nút hoặc là một điểm tham chiếu để từ đó ta tiến hành bắt điểm hoặc thực hiện lệnh Offset. Ngoài ra, khi thiết lập kiểu và kích thước cho đối tượng Point, người dùng có thể sử dụng nó để trình bày bản vẽ một cách hiệu quả. C C H H Ư Ư Ơ Ơ N N G G V V : : L L Ậ Ậ P P T T R R Ì Ì N N H H T T R R Ê Ê N N A A U U T T O O C C A A D D 221 TạođốitượngPoint Sử dụng phương thức AddPoint để thêm một điểm tại vị trí mong muốn. Cú pháp như sau: Set RetVal = object.AddPoint(Point) Tham số Giải thích Point Là tham số đầu vào kiểu Variant hoặc mảng 3 phần tử kiểu Double, chứa toạ độ của vị trí tạo đối tượng Point. RetVal Đối tượng kiểu Point, chứa tham chiếu đến đối tượng vừa mới được tạo. ThayđổikiểuhiểnthịcủađốitượngPoint Sau khi tạo đối tượng Point, người lập trình có thể thay đổi kiểu hiển thị của điểm bằng cách thiết lập giá trị cho các biến hệ thống PDMODE và PDSIZE. Đoạn mã sau sẽ tạo một đối tượng Point trong không gian mô hình ở tọa độ ( 5,5,0) và sau đó thay đổi kiểu hiển thị của đối tượng Point bằng cách cập nhật lại giá trị biến hệ thống PDMODE và PDSIZE. Sub VD_TaoDTPoint() Dim pointObj As AcadPoint Dim ToaDo(0 To 2) As Double ’ Xác định vị trí vẽ điểm ToaDo (0) = 5#: ToaDo (1) = 5#: ToaDo (2) = 0# ’ Tạo điểm mới Set pointObj = ThisDrawing.ModelSpace.AddPoint(ToaDo) ThisDrawing.SetVariable "PDMODE", 34 ThisDrawing.SetVariable "PDSIZE", 1 ZoomAll End Sub 5.2.4. Tạo đối tượng dạng đường thẳng 222 Đường thẳng là đối tượng hình học cơ bản hay được dùng nhất trong AutoCAD. Nhìn chung, ta có thể vẽ các đường thẳng bằng cách nhập vào tham số là tọa độ của các điểm của đường thẳng. Để tạo một đường thẳng, có thể sử dụng một trong những phương thức sau: Phương thức Giải thích AddLine Tạo đường thẳng đi qua hai điểm. AddLightweightPolyline Tạo đường đa tuyến 2D. AddMLine Tạo đường đa tuyến nét đôi. Add3DPoly Tạo đường đa tuyến 3D. TạođốitượngLine Phương thức thức AddLine sẽ tạo đối tượng Line, là một đoạn thẳng đi qua hai điểm: Set RetVal = object.AddLine(StartPoint, EndPoint) Tham số Giải thích StartPoint, EndPoint Là tham số đầu vào kiểu variant hoặc mảng 3 phần tử kiểu Double, chứa toạ độ điểm đầu và điểm kết thúc của đoạn thẳng. RetVal Đối tượng kiểu Line, tham chiếu đến đoạn thẳng vừa mới được tạo. Ví dụ sau tạo một đoạn thẳng trong không gian mô hình với toạ độ điểm đầu và điểm cuối là ( 1,1,0) và (5,5,0): Sub Example_AddLine() Dim lineObj As AcadLine Dim diemDau(0 To 2) As Double Dim diemCuoi(0 To 2) As Double ' Định điểm đầu và điểm cuối của đoạn thẳng diemDau(0) = 1#: diemDau(1) = 1#: diemDau(2) = 0# diemCuoi(0) = 5#: diemCuoi(1) = 5#: diemCuoi(2) = 0# ' Tạo đoạn thẳng trong không gian mô hình Set lineObj = ThisDrawing.ModelSpace.AddLine(diemDau, diemCuoi) ZoomAll End Sub Còn trong ví dụ sau, đoạn thẳng sẽ được tạo ra từ hai điểm bất kỳ do người dùng chọn trên màn hình. Đoạn thẳng này sẽ được tạo ra trên không gian mô hình hoặc không gian in, tuỳ thuộc vào không gian nào là hiện hành. Public Sub TestAddLine() Dim diemDau As Variant Dim diemCuoi As Variant Dim objEnt As AcadLine On Error Resume Next ' Lấy toạ độ điểm đầu và điểm cuối do người dùng nhập diemDau = ThisDrawing.Utility.GetPoint _ (, vbCr & "Chon diem dau: ") diemCuoi = ThisDrawing.Utility.GetPoint _ (diemDau, vbCr & "Chon diem cuoi: ") . tất các các đối tượng mà người dùng có thể tạo ra trong AutoCAD theo cách vẽ thông thường, cho nên để lập trình tạo ra các đối tượng hình học bằng VBA thì người dùng cần phải thông thuộc cách. tròn, người lập trình chỉ có thể tạo ra với các thông số là vị trí tâm và bán kính của đường tròn. Hầu hết các đối tượng hình học trong AutoCAD, tuy khác nhau về hìh dáng, nhưng cách tạo ra. nhất trong AutoCAD. Nhìn chung, ta có thể vẽ các đường thẳng bằng cách nhập vào tham số là tọa độ của các điểm của đường thẳng. Để tạo một đường thẳng, có thể sử dụng một trong những phương thức