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
193
2. Mở cửa sổ VBA Manager (lệnh VBAMAN).
3. Chọn New.
4. Chọn dự án VBA vừa được tạo trong danh sách các dự án, sau đó chọn Save As…
5. Trong hộp thoại Save As, chọn thư mục cài đặt của AutoCAD trong mục Save in; còn
trong mục File name nhập vào ACAD.DVB.
6. Chọn Save để lưu dự án và quay về cửa sổ VBA Manager.
3.4.2. Tạo và thử nghiệm Macro HelloWorld
7. Trong cửa sổ VBA Manager, chọn Macros…
để hiển thị hộp thoại Macros.
8. Chọn dự án ACAD.DVB trong mục Macros in:
9. Trong mục Macro name, nhập vào tên Macro là HelloWorld
10. Chọn Create. Màn hình VBAIDE sẽ được hiển thị, trong cửa sổ mã lệnh, con trỏ sẽ được
đặt ở vị trí của Macro vừa được tạo. Ta sẽ thấy được đoạn mã lệnh đã được tạo sẵn như
sau:
Sub HelloWorld()
End Sub
11. Thay đoạn mã lệnh trên bằng đoạn mã lệnh sau:
Sub HelloWorld()
Dim strMsg As String
strMsg = InputBox("Nhap thong diep chao mung", "HelloWorld")
Dim objText As AcadText
Dim pInsert(0 To 2) As Double
pInsert(0) = 50: pInsert(1) = 100: pInsert(2) = 0
Set objText = ThisDrawing.ModelSpace.AddText(strMsg, pInsert, 2.5)
ZoomExtents
End Sub
12. Đặt con trỏ vào giữa hai dòng Sub HelloWorld() và End Sub, sau đó nhấn phím F5 để
thực thi thử Macro. Một hộp thoại nhỏ sẽ hiện lên yêu cầu người dùng nhập vào một thông
điệp Ö Nhập vào thông điệp và nhấn OK Ö Thông điệp vừa nhập sẽ được vẽ trên không
gian mô hình của AutoCAD.
194
13. Trong màn hình của VBAIDE, chọn trình đơn File Ö Save để lưu tệp dự án ACAD.DVB.
Tiếp tục chọn trình đơn File Ö Close and Return to AutoCAD để trở về AutoCAD.
3.4.3. Tạo lệnh mới bằng AutoLISP
Các bước tiếp sau sẽ tiến hành tạo một tệp ACAD.LSP mới, khai báo một lệnh mới trong
AutoCAD thông qua AutoLISP và lệnh đó sẽ thực thi Macro HelloWorld vừa được tạo.
CHÚ Ý Nếu trong thư mục cài đặt của AutoCAD đã có tệp ACAD.LSP, chỉ cần sao chép
đoạn mã ở bước 15 và thêm vào cuối tệp ACAD.LSP đã có.
14. Khởi động chương trình soạn thảo văn bản, ví dụ như chương trình Notepad có sẵn trong
Windows. Trong Windows, chọn trình đơn Start Ö Run. Trong hộp thoại Run, nhập
notepad sau đó nhấn OK để khởi động trình soạn thảo văn bản Notepad.
15. Trong chương trình Notepad, nhập vào đoạn khai báo sau:
(defun C:Hello()
(command "-vbarun" "HelloWorld")
)
Trong đó Hello là lệnh được khai báo để đăng ký sử dụng trong AutoCAD. Còn HelloWorld
là tên Macro đã tạo ra trong VBA ở các bước trước.
16. Chọn trình đơn File Ö Save. Trong hộp thoại Save As…, chọn thưc mục cài đặt của
AutoCAD trong mục Save in, trong mục File name nhập vào ACAD.LSP Ö Chọn Save.
17. Thoát khỏi chương trình AutoCAD (nếu đang thao tác trên AutoCAD). Khởi động lại
chương trình AutoCAD. Trong dòng lệnh của AutoCAD, gõ lệnh
Hello. Thật bất ngờ, một
hộp thoại yêu cầu người dùng nhập thông điệp chào mừng xuất hiện - Macro HelloWorld
đã được thực thi.
Như vậy, bằng cách sử dụng VBA kết hợp với AutoLISP, người lập trình có thể tạo thêm rất
nhiều lệnh mới trong AutoCAD một cách dễ dàng.
Để hiểu hơn về AutoLISP, có thể đọc thêm tài liệu hướng dẫn có sẵn trong AutoCAD.
4. Hệ thống đối tượng trong AutoCAD
4.1. Mô hình đối tượng trong AutoCAD
AutoCAD được tạo thành từ nhiều thành phần khác nhau và chúng luôn có một mối liên hệ
chặt chẽ được quy định từ trước theo một cấu trúc nhất định. Nếu chỉ sử dụng AutoCAD với
các lệnh có sẵn để vẽ (mức độ thông thường) thì người dùng không cần biết đến cấu trúc này,
đối với họ, khả năng và mức độ tiện dụng của các lệnh này mới là quan trọng. Nhưng khi s
ử
dụng AutoCAD như là một ứng dụng nền để lập trình, thì lúc này có nhiều khái niệm phải được
hiểu theo cách khác, thiết thực cho việc lập trình. AutoCAD được coi như là một đối tượng
được cấu thành từ những đối tượng khác, những đối tượng con này, theo cách hiểu thông
thường, chính là các thành phần của AutoCAD. Trong từng đối tượng con đó, có thể có nhiều
đối tượng ở cấp độ thấp hơn n
ữa, hay nói cách khác, một đối tượng có thể bao gồm nhiều đối
tượng con với các cấp khác nhau. Các đối tượng này được tổ chức chặt chẽ theo một cấu trúc
cố định, và dựa vào cấu trúc tổ chức đối tượng này, AutoCAD cho người dùng cái nhìn tổng
quan về cấu tạo của nó cũng như chỉ cho người dùng biết cần phải làm như thế nào để tác động
lên một đối tượng cụ
thể (hay thành phần) của nó. Thông thường cấu trúc này được gọi là mô
hình đối tượng trong AutoCAD và được biểu diễn dưới dạng cấu trúc cây phân nhánh. Với cấu
trúc này, người dùng có thể dễ dàng truy cập đến đối tượng mình cần thao tác bằng cách tra cứu
theo nhánh của đối tượng đó.
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
195
Mỗi đối tượng trong cấu trúc trên sẽ tương đương với một thành phần của AutoCAD, ví dụ như
đối tượng
Preferences sẽ tương đương với hộp thoại sau trong AutoCAD:
Những thao tác bằng mã lệnh tác động lên đối tượng
Preferences sẽ tương đương với việc
người dùng thao tác trực tiếp lên hộp thoại Options từ trong AutoCAD.
Như vậy có thể thấy rằng, để lập trình tốt trên AutoCAD, người dùng, trước hết, phải quen
thuộc và thao tác thành thạo trên các thành phần (hay đối tượng) của AutoCAD.
Trong AutoCAD, có rất nhiều loại đối tượng khác nhau, chẳng hạn như:
Ø
Ø
Các đối tượng hình học: line, arc, text, dimension…
Ø
Ø
Thiết lập về
định dạng: linetype, dimension style…
Ø
Ø
Cấu trúc tổ chức: layer, group, block…
Ø
Ø
Đối tượng liên quan đến hiển thị bản vẽ: view, viewport,…
Ø
Ø
Và ngay cả bản vẽ và bản thân chương trình AutoCAD cũng được xem là đối tượng.
Mô hình đối tượng của AutoCAD trong VBA được thể hiện dưới dạng cấu trúc cây phân cấp,
trong đó đối tượng gốc là Application, chính là phiên bản AutoCAD đang chạy. Nhờ có mô
hình đối tượng mà người l
ập trình có thể biết được một đối tượng có thể cho phép truy cập đến
những đối tượng nào ở cấp tiếp theo.
Dưới đây là mô hình đối tượng rút gọn trong AutoCAD dùng cho việc lập trình bằng VBA. Mô
hình đối tượng đầy đủ có thể tham khảo trong tài liệu “ActiveX and VBA Developer's Guide” đi
kèm AutoCAD.
196
Hình V-6: Mô hình đối tượng trong AutoCAD.
Mỗi đối tượng (Object), cũng giống như một vật thể, đều có những tính chất và những hành vi
đặc trưng cho nó. Trong lập trình, tính chất của đối tượng được biểu diễn thông qua khái niệm
thuộc tính, còn hành vi được biểu diễn thông qua khái niệm phương thức. Chẳng hạn như đối
tượng
Application, là đối tượng thể hiện cho chương trình AutoCAD, có thuộc tính Caption
chứa tiêu đề của chương trình AutoCAD và phương thức
Quit dùng để thoát khỏi chương trình
AutoCAD. Để truy cập đến các thành phần (phương thức, thuộc tính, …) của đối tượng, ta sử
dụng quy tắc dấu chấm (.):
<Tên đối tượng>.<Tên phương thức/Thuộc tính>
Các đối tượng có những điểm chung nhau còn có thể được nhóm lại và được biểu diễn thông
qua tập đối tượng (collection). Mỗi một tập đối tượng có các phương thức và thuộc tính riêng
để người dùng tác động lên nó như: thêm đối tượng tập đối tượng bằng phương thức Add (đúng
với hầu hết các loại tập đối tượng), thuộc tính Count dùng để đếm số đối tượ
ng trong tập đối
tượng, phương thức Item sử dụng để truy cập bất kỳ đối tượng nào trong tập đối tượng.
4.2. Một số đối tượng chính trong AutoCAD
4.2.1. Đối tượng Application
Đối tượng Application là đối tượng thể hiện cho một phiên làm việc của AutoCAD, đối tượng
này sẽ được tự động tạo ra mỗi khi khởi động chương trình AutoCAD. Tất cả các thành phần
và thao tác thực hiện trong cửa sổ chính của chương trình AutoCAD đều được thể hiện thông
qua các phương thức và thuộc tính của đối tượng Application. Ví dụ, đối tượng Application có
thuộc tính Preferences trả về đố
i tượng Preferences. Đối tượng này cho phép truy cập đến các
A
pplication
Preferences
Documents
Document
ModelSpace
PaperSpace
PViewPort
DimStyles
Layers
Arc
Circle
Hatch
Line
MText
Point
Polyline
Ray
Text
…
Layouts
Linetypes
TextStyles
SelectionSets
Plot
DimStyle
Layer
Layout
Linetype
T
extStyle
SelectionSet
MenuGroups
Chú giải:
Tập đối tượng
Đối tượng
Utility
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
197
cấu hình bên trong của hộp thoại Option. Các thuộc tính khác của đối tượng Application cho
phép truy cập đến các dữ liệu riêng của chương trình chẳng hạn như tên và phiên bản chương
trình, kích thước, vị trí của cửa sổ . Các phương thức của đối tượng Application sẽ thực hiện
các thao tác như: tạo mới, mở, đóng bản vẽ hay thoát khỏi AutoCAD.
Đối tượng Application là đối tượng gốc trong mô hình đối tượng của AutoCAD. Từ
đối tượng
Application, ta có thể truy xuất đến bất kỳ đối tượng nào, chẳng hạn như đối tượng Application
có các liên kết đến bản vẽ AutoCAD thông qua tập đối tượng Documents, các trình đơn và
thanh công cụ AutoCAD thông qua tập đối tượng MenuBar và MenuGroups, và VBAIDE
thông qua một thuộc tính gọi là VBE.
Hình V-7: Các thành phần của đối tượng Application.
Đối tượng Application là đối tượng toàn cục. Điều này có nghĩa là tất cả các phương thức và
thuộc tính của đối tượng Application luôn có hiệu lực trong VBAIDE, tức là khi truy cập đến
các phương thức và thuộc tính của đối tượng Application đều không cần có tiền tố Application
ở trước nên hai câu mã lệnh dưới đây đều có tác dụng như nhau là thông báo nội dung thanh
tiêu đề của ứng dụng AutoCAD đang chạy:
MsgBox Application.Caption
MsgBox Caption
Thông báo có thể xuất hiện như hình dưới:
4.2.2. Đối tượng Document
Đối tượng Document, thực chất là một bản vẽ AutoCAD đang được mở, thuộc tập đối tượng
Documents (tương đương với tất cả các bản vẽ đang được mở), cho nên nó chứa tất cả các đối
tượng hình học và phi hình học trong một bản vẽ AutoCAD cũng như chứa hầu hết các đối
tượng (hay thành phần) khác của bản vẽ như
Views hay Viewports. Để truy cập đến các đối
tượng của một bản vẽ ta cần phải thông qua đối tượng Document tương ứng với bản vẽ đó. Như
trong mô hình đối tượng ở trên, các đối tượng hình học (đường thẳng, hình tròn, cung, …) được
truy cập thông qua tập đối tượng ModelSpace và PaperSpace, còn các đối tượng phi hình học
(layer, linetype, text style, …) được truy cập thông qua tập đối tượng có tên tương ứng, chẳng
hạn như Layers, Linetypes, TextStyles.