10 minute read
3. Macro
4. Chọn nút lệnh Embed. Sau khi người dùng nhúng dự án vào bản vẽ, VBAIDE sẽ sao chép toàn bộ dự án độc lập và nhúng vào bản vẽ AutoCAD, nghĩa là tại thời điểm có hai dự án VBA giống nhau cùng tồn tại, một là dự án độc lập và một là dự án nhúng trong bản vẽ.
Để tách dự án nhúng khỏi một bản vẽ
Advertisement
1. Mở cửa sổ VBA Manager. 2. Trong mục Drawing, chọn bản vẽ có chứa dự án cần tách. 3. Chọn nút lệnh Extract. 4. Nếu cần lưu lại dự án, chọn nút lệnh Yes ở hộp thoại xuất hiện sau đó, nếu không có thể chọn No.
2.3. Quản lý dự án VBA từ dòng lệnh
AutoCAD có cung cấp một số câu lệnh liên quan đến việc quản lý dự án VBA và để thực thi Macro trong VBA. Dưới đây là danh sách các câu lệnh có liên quan:
Lệnh Giải thích
VBAIDE Mở VBAIDE. Nếu chưa có dự án nào được mở, AutoCAD sẽ tự tạo một dự án lập mới, sau đó mới hiển thị VBAIDE. VBAMAN Hiển thị trình quản lý dự án VBA – VBA Manager, qua đó người dùng có thể thực hiện các thao tác trên dự án VBA. VBANEW Tạo mới dự án độc lập. VBALOAD Tải tệp dự án VBA (tệp *.dvb) vào trong VBAIDE. Hộp thoại mở dự án VBA sẽ được hiển thị để người dùng lựa chọn tệp dự án cần mở. -VBALOAD Tải tệp dự án VBA vào trong VBAIDE như lệnh VBALOAD, nhưng không hiển thị hộp thoại, người dùng phải nhập tên tệp từ dòng lệnh của AutoCAD VBAUNLOAD Đóng dự án VBA đang được mở trong VBAIDE. Trên dòng lệnh AutoCAD xuất hiện dấu nhắc, nhắc người dùng nhập tên tệp chứa dự án cần đóng. VBARUN Thực thi Macro. AutoCAD sẽ hiển thị một hộp thoại cho người dùng chọn Macro cần thực thi. -VBARUN Thực thi Macro từ dòng lệnh của AutoCAD. Người dùng phải nhập tên của Macro cần thực thi ngay trên dòng lệnh của AutoCAD. Nếu có nhiều Macro trùng tên trong các mô-đun khác nhau, sử dụng cú pháp: <tên_mô_đun.tên_Macro>. VBASTMT Thực thi một biểu thức/câu lệnh của VBA từ dòng lệnh của AutoCAD. Khi kết hợp cách quản lý dự án VBA bằng dòng lệnh của AutoCAD với ngôn ngữ lập trình AutoLISP thì ta có thể gọi một dự án VBA hay sử dụng một chức năng của dự án VBA bằng một chương trình AutoLISP.
3. Macro
3.1. Khái niệm Macro trong AutoCAD
Cũng tương tự như trong Excel, khái niệm về Macro cũng được đưa vào trong AutoCAD như là một công cụ giúp cho người dùng có thể thực hiện nhanh hơn công việc của mình nhờ khả năng tự động thực hiện của AutoCAD thông qua Macro, mà thực chất là một chương trình VBA. Trong AutoCAD, để được là Macro thì chương trình này phải thỏa mãn đồng thời các quy định sau: Là một chương trình con dạng Sub;
Có phạm vi là Public; Đặt trong mô-đun chuẩn hoặc mô-đun ThisDrawing. Lưu ý rằng tên của Macro cũng chính là tên của chương trình con này. Trong Excel, các tính năng của ứng dụng mở rộng có thể được thể hiện ở dạng Macro (để thực thi một tác vụ nào đó) hoặc ở dạng hàm (khi muốn thực hiện tính toán, thao tác có trả về giá trị). Còn trong AutoCAD, với đặc tính sử dụng chủ yếu là các thao tác trên bản vẽ nên các tính năng của ứng dụng mở rộng được thể hiện chủ yếu thông qua Macro, hàm chỉ được sử dụng nội bộ bên trong các mô-đun của dự án VBA.
3.2. Tạo mới và Hiệu chỉnh Macro
Trong AutoCAD, do không có khả năng tạo Macro dạng kịch bản như trong Excel (mã lệnh của Macro được tự động sinh ra căn cứ vào sự ghi lại thao tác của người dùng trên Excel), nên để tạo mới hay hiệu chỉnh Macro trong AutoCAD, người dùng phải viết mã lệnh cho Macro trực tiếp trong VBAIDE. Như đã đề cập, bản chất của Macro chính là một chương trình con dạng Sub trong VBA, nên để tạo mới một Macro, người dùng có thể trực tiếp vào VBAIDE và tạo ra một chương trình con thỏa mãn các quy định liên quan đến Macro trong mục Error! Reference source not found.. AutoCAD sẽ tự động nhận diện tất cả các chương trình con phù hợp với các quy định này và xem chúng là các Macro. Tuy nhiên, người lập trình còn có thể thực hiện tạo một Macro mới thông qua giao diện hộp thoại Macros.
Tạo Macro thông qua hộp thoại Macros
1. Mở hộp thoại Macros bằng cách chọn trình đơn Tools Macro Macros… (hoặc sử dụng lệnh VBARUN từ dòng lệnh AutoCAD, hoặc nhấn phím tắt ALT+F8)
Hình V-4: Hộp thoại Macros
2. Trong mục Macros in, chọn nơi sẽ chứa Macro từ danh sách thả xuống. 3. Trong mục Macro name, nhập tên Macro cần tạo. 4. Chọn Create để tạo Macro mới. Nếu người dùng chưa chọn nơi chứa Macro ở bước ,
AutoCAD sẽ hiển thị hộp thoại yêu cầu người dùng chọn nơi chứa Macro.
Hình V-5: Lựa chọn nơi chứa Macro
5. Màn hình của VBAIDE sẽ được tự động hiện lên, và con trỏ chuột được đặt ngay vị trí cài đặt mã lệnh cho Macro mới. Lúc này ta đã có thể bắt đầu viết mã lệnh cho Macro mới. 6. Trong màn hình của VBAIDE chọn trình đơn File Close and Return to AutoCAD để trở về màn hình của AutoCAD sau khi hoàn thành việc viết mã lệnh cho Macro.
GỢI Ý Trong AutoCAD, để hiển thị hộp thoại Macros, người lập trình có thể sử dụng phím tắt là ALT+F8; còn để chuyển đổi qua lại giữa màn hình AutoCAD và VBAIDE, người lập trình có thể sử dụng phím tắt là ALT+F11.
Hiệu chỉnh Macro
1. Mở hộp thoại Macros. 2. Chọn Macro cần hiệu chỉnh trong danh sách các Macro. 3. Chọn Edit AutoCAD sẽ hiển thị VBAIDE và chuyển con trỏ vào vị trí chứa mã lệnh của
Macro để bắt đầu hiệu chỉnh Macro. Tất nhiên người dùng có thể hiệu chỉnh bất cứ Macro nào mà không cần sử dụng hộp thoại Macros. Người dùng chỉ cần khởi động VBAIDE và tìm chương trình con tương ứng với Macro cần hiệu chỉnh, mã lệnh của chương trình con này cũng chính là mã lệnh của Macro, do đó, hiệu chỉnh chương trình con này cũng chính là hiệu chỉnh Macro.
3.3. Thực thi Macro
Sau khi đã viết mã lệnh cho Macro, người dùng có thể thực thi Macro trực tiếp trong VBAIDE (tham khảo mục “Thực thi Macro trực tiếp từ VBAIDE” trang 106). Ngoài ra, cũng có thể thực thi Macro thông qua hộp thoại Macros, hoặc thực thi Macro từ dòng lệnh AutoCAD.
Để thực thi Macro thông qua hộp thoại Macros
1. Mở hộp thoại Macros.
2. Chọn Macro cần thực thi trong danh sách các Macro. 3. Chọn Run AutoCAD sẽ thực thi Macro được chọn.
Để thực thi Macro từ dòng lệnh AutoCAD
1. Tại dòng lệnh AutoCAD, gõ lệnh –VBARUN nhấn phím ENTER. 2. AutoCAD nhắc người dùng nhập tên Macro: Macro name: Nhập tên Macro và nhấn phím ENTER. Nếu có nhiều Macro trùng tên nằm trong các mô-đun khác nhau, cần sử dụng cấu trúc <Tên_mô-đun.Tên_Macro> để chọn đúng Macro cần thực thi.
3.4. Định nghĩa lệnh mới bằng AutoLISP
Có thể nói, một trong những điểm mạnh của AutoCAD chính là cửa sổ dòng lệnh. Thông qua cửa sổ dòng lệnh này, mọi thao tác đối với bản vẽ đều có thể được thực hiện một cách nhanh chóng bằng bàn phím với hệ thống các lệnh đã được định nghĩa sẵn. Để thực hiện một chức năng mới được tạo ra bằng cách lập trình trong VBA, hay nói cách khác là để thực thi một Macro, rõ ràng phải thực hiện qua khá nhiều bước. Cho nên, để tạo ra sự thuận tiện cho người sử dụng, nên định nghĩa lệnh mới, mà qua đó người sử dụng có thể thực thi Macro chỉ với một lệnh đơn giản, giống như khi cần vẽ đường thẳng, ta chỉ cần sử dụng lệnh line ở dòng lệnh AutoCAD. Sự kết hợp với AutoLISP là một giải pháp tốt và dễ dàng để thực hiện mục tiêu này. Với VBA, người dùng có thể tạo Macro để thực hiện một thao tác nào đó. Còn với AutoLISP, người dùng có thể định nghĩa một lệnh mới để thực thi Macro đã được tạo trong dự án VBA. Hay nói cách khác, AutoLISP là chiếc cầu nối nhằm tạo sự liên kết giữa dòng lệnh AutoCAD và Macro trong dự án VBA. Tuy nhiên, nếu chỉ được lưu trong những tệp dự án VBA và tệp AutoLISP thông thường thì những lệnh đó chỉ có hiệu lực khi người dùng tải đồng thời dự án VBA và tệp AutoLISP vào trong AutoCAD. Vì vậy, khi muốn các lệnh mới này có hiệu lực ngay khi sử dụng AutoCAD (nghĩa là người sử dụng không cần phải làm thêm bất cứ một thao tác nào khác, chỉ cần khởi động AutoCAD là có thể dùng được ngay các lệnh này) thì người lập trình sẽ phải lưu dự án VBA thành tệp có tên là ACAD.DVB và tệp AutoLISP sẽ được lưu với tên là ACAD.LSP, và cả hai tệp này phải được lưu vào thư mục cài đặt của AutoCAD (ví dụ đối với AutoCAD 2002, nếu cài đặt thông thường, thì thư mục cài đặt của AutoCAD trong Windows sẽ là: C:\Program Files\AutoCAD 2002). Đây là hai tệp sẽ được tự động tải lên ngay sau khi khởi động AutoCAD, và việc còn lại của người dùng là sử dụng tất cả những tính năng đã có trong các tệp này. Dưới đây là một ví dụ đơn giản để tạo lệnh mới trong AutoCAD: chương trình (Macro) HelloWorld. Mô tả nội dung chương trình (Macro): Macro này sẽ hiển thị hộp thoại yêu cầu người sử dụng nhập vào một thông điệp, sau đó thông điệp này sẽ được vẽ trên không gian mô hình của AutoCAD. Để thực thi Macro này, ta chỉ cần gõ lệnh Hello trong dòng lệnh AutoCAD. Và đây sẽ là lệnh mới trong AutoCAD, nó luôn sẵn sàng hoạt động ngay sau khi AutoCAD khởi động xong.
Tạo lệnh mới trong AutoCAD bằng AutoLISP và VBA 3.4.1. Tạo dự án mới
Các bước sau sẽ tạo một dự án mới và lưu trong thư mục cài đặt của AutoCAD với tên là ACAD.DVB.
1. Khởi động AutoCAD.
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.