Phát triển AutoCAD 2
Microsoft VBA là một môi trường lập trình hướng đối tượng có khả năng phát triển
ứng dụng mạnh mẽ với những tính năng phong phú tương tự như của Visual Basic
(VB). Điểm khác biệt chính giữa VBA và VB là VBA thực thi cùng trong tiến trình
của ứng dụng AutoCAD và đưa ra một môi trường phát triển ứng dụng thông minh
và rất nhanh chóng ngay bên trong AutoCAD.
VBA cũng có khả năng tích hợp với các ứng dụng có khả năng lập trình VBA khác.
Điều đó có nghĩa là khi sử dụng thư viện đối tượng của các ứng dụng khác,
AutoCAD có thể là Automation Controller1 cho các ứng dụng khác như Microsoft
Word và Excel.
Có bốn ưu điểm chính khi sử dụng VBA trong AutoCAD:
Ngôn ngữ lập trình Visual Basic rất dễ học và dễ sử dụng.
VBA thực thi cùng tiến trình với AutoCAD, vì vậy chương trình có tốc độ
thực thi rất nhanh.
Xây dựng giao diện hộp thoại nhanh chóng và hiệu quả. Điều này cho phép
người lập trình tạo mẫu thử chương trình và nhận được phản hồi nhanh
chóng ngay trong quá trình thiết kế.
Dự án có thể được phân phối riêng hoặc nhúng trong các bản vẽ. Khả năng
này cho phép người lập trình phân phối ứng dụng một cách linh hoạt.
Tóm tắt nội dung tài liệu: Phát triển AutoCAD 2
Phát triển AutoCAD bằng ActiveX và VBA | 19 MỞ ĐẦU Trong chương này Tổng quan về công nghệ AutoCAD ActiveX Chương này trình bày các khái niệm nhằm làm rõ các đối tượng AutoCAD thông qua giao diện ActiveX và lập trình trên các đối tượng đó thông qua môi trường phát triển ứng dụng Visual Basic for Application (VBA). Ngoài ra, chương này còn có phần giới thiệu về các loại tài liệu và mã ví dụ dùng trong AutoCAD ActiveX và VBA. Tổ chức của cuốn sách Tìm mã lệnh ví dụ Ưu điểm của sự kết hợp AutoCAD ActiveX và VBA Tổng quan về giao diện AutoCAD VBA 20 | Mở đầu 1. Tổng quan về công nghệ AutoCAD ActiveX AutoCAD ActiveX đưa ra cơ cấu để lập trình điều khiển AutoCAD từ cả trong và bên ngoài AutoCAD. Quá trình này được thực hiện bằng cách “trưng bày” tất cả các đối tượng AutoCAD với “thế giới bên ngoài”. Khi đó, các đối tượng trong AutoCAD có thể được truy cập thông qua nhiều ngôn ngữ lập trình và các chương trình khác như Microsoft® Word VBA hoặc Excel VBA. Có hai ưu điểm nổi bật khi sử dụng giao tiếp ActiveX cho AutoCAD: Khả năng lập trình truy cập vào bản vẽ AutoCAD được mở rộng cho nhiều môi trường lập trình khác nhau. Trước khi có ActiveX Automation, người lập trình bị giới hạn chỉ trong môi trường AutoLISP hoặc C++. Khả năng chia sẻ dữ liệu với các ứng dụng Windows® khác, chẳng hạn như Microsoft Excel® và Word®, được thực hiện dễ dàng hơn rất nhiều. 1.1. Tổng quan về các đối tượng AutoCAD ActiveX Đối tượng chính là nền tảng xây dựng nên ứng dụng ActiveX. Mỗi đối tượng trong AutoCAD ActiveX là hiện thân một phần của AutoCAD. Có rất nhiều loại đối tượng khác nhau trong giao tiếp AutoCAD ActiveX. Chẳng hạn như: Các đối tượng đồ họa: 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. Phát triển AutoCAD bằng ActiveX và VBA | 21 2. Tổng quan về giao diện AutoCAD Visual Basic for Applications (VBA) Microsoft VBA là một môi trường lập trình hướng đối tượng có khả năng phát triển ứng dụng mạnh mẽ với những tính năng phong phú tương tự như của Visual Basic (VB). Điểm khác biệt chính giữa VBA và VB là VBA thực thi cùng trong tiến trình của ứng dụng AutoCAD và đưa ra một môi trường phát triển ứng dụng thông minh và rất nhanh chóng ngay bên trong AutoCAD. VBA cũng có khả năng tích hợp với các ứng dụng có khả năng lập trình VBA khác. Điều đó có nghĩa là khi sử dụng thư viện đối tượng của các ứng dụng khác, AutoCAD có thể là Automation Controller1 cho các ứng dụng khác như Microsoft Word và Excel. Có bốn ưu điểm chính khi sử dụng VBA trong AutoCAD: Ngôn ngữ lập trình Visual Basic rất dễ học và dễ sử dụng. VBA thực thi cùng tiến trình với AutoCAD, vì vậy chương trình có tốc độ thực thi rất nhanh. Xây dựng giao diện hộp thoại nhanh chóng và hiệu quả. Điều này cho phép người lập trình tạo mẫu thử chương trình và nhận được phản hồi nhanh chóng ngay trong quá trình thiết kế. Dự án có thể được phân phối riêng hoặc nhúng trong các bản vẽ. Khả năng này cho phép người lập trình phân phối ứng dụng một cách linh hoạt. 2.1. Cách thức thực thi của VBA trong AutoCAD VBA gửi thông điệp cho AutoCAD thông qua giao tiếp AutoCAD ActiveX Automation. AutoCAD VBA cho phép môi trường VBA thực thi đồng thời với AutoCAD và cung cấp khả năng lập trình điều khiển AutoCAD thông qua giao tiếp ActiveX Automation. Bộ đôi này của AutoCAD, ActiveX Automation và VBA, tạo ra giao diện lập trình mạnh mẽ không chỉ trong quá trình xử lý các đối tượng AutoCAD mà còn trong quá trình gửi dữ liệu và nhận dữ liệu từ các ứng dụng khác. Có ba yếu tố cơ bản cấu thành giao diện lập trình ActiveX và VBA trong AutoCAD. Yếu tố đầu tiên chính là bản thân AutoCAD với tập đối tượng vô cùng phong phú, đóng gói tất cả các thực thể, dữ liệu và dòng lệnh AutoCAD. Do AutoCAD là ứng dụng được thiết kế với cấu trúc mở, với nhiều tầng giao diện khác nhau nên một khi đã quen thuộc với những khả năng của AutoCAD, ta sẽ lập trình VBA hiệu quả hơn nhiều. Người đã từng lập trình với AutoLISP® thường hiểu rất rõ cấu trúc của AutoCAD. Tuy nhiên, lập trình hướng đối tượng của VBA vẫn có nhiều điểm khác so với AutoLISP®. 1 Automation Controller: là ngôn ngữ lập trình, chẳng hạn như VBA, có khả năng hỗ trợ công nghệ Automation của Microsoft. Một ứng dụng khi được lập trình sử dụng Automation Controller có thể tham khảo đến bất kỳ một thư viện đối tượng nào và có thể cập nhật đến từng đối tượng trong các thư viện đó chỉ từ một chương trình duy nhất. 22 | Mở đầu Yếu tố thứ hai của giao tiếp AutoCAD ActiveX Automation là quá trình hình thành các thông điệp (hay các giao tiếp) với các đối tượng AutoCAD. Người lập trình VBA cần phải có những kiến thức cơ bản về ActiveX Automation. Ta có thể tìm hiểu thêm về giao tiếp AutoCAD ActiveX Automation trong cuốn “ActiveX and VBA Reference”. Ngay cả những người lập trình VB kinh nghiệm cũng nhận thấy rằng những kiến thức về giao tiếp AutoCAD ActiveX Automation là vô giá để có thể hiểu rõ và phát triển ứng dụng AutoCAD VBA. Yếu tố thứ ba chính là môi trường lập trình VBA với hệ thống các đối tượng, từ khóa, hằng số, cung cấp khả năng lập trình, điều khiển, gỡ lỗi và thực thi ứng dụng. Microsoft cũng cung cấp công cụ trợ giúp cho VBA ngay bên trong AutoCAD VBA và có thể truy cập trực tiếp trong VBA IDE bằng một trong các cách sau: Nhấn phím F1 trên bàn phím Chọn mục Help từ trình đơn của VBA IDE Bấm chuột vào biểu tượng dấu hỏi trên thanh công cụ của VBA IDE 2.2. Phụ thuộc và hạn chế khi sử dụng AutoCAD VBA Để đảm bảo sự làm việc bình thường của ứng dụng AutoCAD Active và VBA cần phải đảm bảo hệ thống có các điều kiện sau: Windows NT® 4.0 Yêu cầu phải có Windows NT4.0 Service Pack 3 để có thể chạy được AutoCAD ActiveX và VBA Windows® 95 hoặc Windows 98 Không có yêu cầu đặc biệt nào Cài đặt, Cài đặt lại hoặc Dỡ bỏ Microsoft Office hoặc các ứng dụng VBA khác Nếu ta cài đặt, cài đặt lại hoặc dỡ bỏ Microsoft Office hoặc các ứng dụng VBA khác sau khi cài đặt AutoCAD, thì cần phải cài đặt lại AutoCAD. Đương nhiên, sau khi cài đặt AutoCAD, cần phải khởi động lại hệ thống. 3. Ưu điểm của sự kết hợp AutoCAD ActiveX và VBA Giao tiếp AutoCAD ActiveX/VBA thể hiện nhiều điểm nổi bật so với các môi trường lập trình AutoCAD API khác: Tốc độ Do thực thi cùng tiến trình với VBA nên ứng dụng ActiveX nhanh hơn so với ứng dụng AutoLISP và ADS. Dễ sử dụng Ngôn ngữ lập trình và môi trường phát triển ứng dụng rất dễ sử dụng và được cài đặt sẵn trong AutoCAD. Phát triển AutoCAD bằng ActiveX và VBA | 23 Khả năng hoạt động liên thông với Windows ActiveX và VBA được thiết kế để sử dụng với các ứng dụng Windows khác và được cung cấp khả năng giao tiếp thông tin với các ứng dụng khác. Tạo mẫu nhanh Khả năng xây dựng giao diện nhanh của VBA là môi trường hoàn hảo để xây dựng ứng dụng mẫu, ngay cả khi các ứng dụng đó được phát triển bằng ngôn ngữ khác. Cơ sở lập trình Trên khắp thế giới hiện nay có hàng triệu lập trình viên Visual Basic. Công nghệ AutoCAD ActiveX và VBA mở ra sự khả năng tùy biến và phát triển ứng dụng AutoCAD cho những lập trình viên này và những ai sẽ học Visual Basic trong tương lai. 4. Tổ chức của cuốn sách Cuốn sách này cung cấp thông tin về cách phát triển ứng dụng ActiveX và VBA cho AutoCAD 2000. Thông tin chi tiết về các ứng dụng đang phát triển sử dụng VBA được đề cập trong chương 1 - “LÀM QUEN VỚI VBA” và chương 11 – “PHÁT TRIỂN ỨNG DỤNG BẰNG VBA”. Các lập trình viên sử dụng ActiveX từ một môi trường phát triển khác với VBA có thể bỏ qua hai chương này. Tuy nhiên, hãy lưu ý rằng các mã ví dụ trong sách được trình bày trong môi trường VBA. Bài tập thực hành được trình bày trong chương 13 – “THIẾT KẾ ĐƯỜNG ĐI DẠO TRONG VƯỜN - MỘT VÍ DỤ VỀ ActiveX/VBA”. Bài tập này hướng đến những người mới học thông qua việc tạo chương trình vẽ đường đi dạo trong vườn trong AutoCAD sử dụng ActiveX và VBA. Phụ lục B – “CHUYỂN ĐỔI TỪ AutoCAD PHIÊN BẢN 14.01” tổng kết những thay đổi của AutoCAD ActiveX và VBA kể từ AutoCAD phiên bản 14.01. 5. Tìm mã lệnh ví dụ Có trên 800 chương trình VBA trong cuốn sách này và tài liệu “ActiveX and VBA Reference” minh họa cách sử dụng các phương thức, thuộc tính và sự kiện trong ActiveX. Rất nhiều những ứng dụng mẫu lưu trong thư mục Sample của AutoCAD. Các ứng dụng này minh họa rất nhiều tính năng khác nhau, từ việc xuất dữ liệu của bản vẽ AutoCAD sang bảng tính Excel tới việc vẽ và thực hiện các phép phân tích phức tạp trên cần trục tháp. Những ví dụ này giúp ta hình dung được cách thức để kết hợp tính đa năng của môi trường lập trình Visual Basic for Applications với sức mạnh của giao tiếp AutoCAD ActiveX để tạo ra những ứng dụng có tính tùy biến cao. 5.1. Thực thi các ứng dụng mẫu Tất cả các mã lệnh ví dụ trong cuốn sách này và trong “ActiveX and VBA Reference” có thể được sao chép trực tiếp từ tệp trợ giúp sang môi trường AutoCAD VBA, sau đó được thực thi với một yêu cầu: bản vẽ hiện hành trong 24 | Mở đầu AutoCAD phải là bản vẽ trống và đang ở trong không gian mô hình. Ngoài ra, mã trong những cuốn sách có trong tệp SampleCode.dvb và Events.dvb trong thư mục Sample. Thực thi ví dụ 1 Sao chép ví dụ từ tệp trợ giúp sang mô-đun mã lệnh VBA còn trống. 2 Chắc chắn rằng AutoCAD có một bản vẽ trống được mở ở chế độ không gian mô hình. 3 Mở hộp thoại Macros bằng cách gõ lệnh VBARUN. 4 Lựa chọn Macro và nhấn Run. Thông tin thêm về việc thực thi Macro1 và hộp thoại Macro được thể hiện trong phần “Thực thi Macro” trang 32. 5.2. Xem các ứng dụng mẫu Có 21 ứng dụng mẫu trong thư mục Sample. Bảng sau trình bày tên, mô tả và vị trí của tệp mã nguồn chính cho mỗi ứng dụng. Rất nhiều ứng dụng có thêm các tệp hỗ trợ, chứa trong cùng thư mục với tệp mã nguồn chính. Ngoài ra còn có tệp readme.txt mô tả ứng dụng và cách thực thi. Ứng dụng mẫu ActiveX và VBA Tên Mô tả Đường dẫn Dầm chữ I 3D Tạo ra một hình chữ I 3D đặc và thay đổi kích thước một cách linh hoạt. /Sample/VBA/ibeam3d.dvb Từ bản đồ sang khối cầu Tạo ra hình nhiều đường 3D trên một khối cầu từ các đường 2D ban đầu. /Sample/VBA/Map2Globe.dwg Tuỳ biến trình đơn Dùng các đối tượng của MenuGroup và MenuBar. /Sample/VBA/Menu.dvb Theo dõi đối tượng Sử dụng khối dữ liệu mở rộng để theo dõi sự thay đổi của đối tượng. /Sample/VBA/ObjectTracker.dvb Lưu thành phiên bản 12 Lưu một tệp đồ hoạ của AutoCAD2000 vào AutoCAD phiên bản 12. /Sample/VBA/SaveAsR12.dvb Tháp Vẽ một cần trục tháp và thực hiện /Sample/VBA/Tower.dwg 1 Macro: là một loại chương trình VBA được nạp vào trong AutoCAD, chi tiết về Macro xem trong chương 1 mục “Xử lý Macro”. Trong bản dịch này, do chưa có từ chuyên môn tương đương trong tiếng Việt, cho nên chúng tôi dùng từ gốc tiếng Anh. Phát triển AutoCAD bằng ActiveX và VBA | 25 Ứng dụng mẫu ActiveX và VBA Tên Mô tả Đường dẫn các phép phân tích. Chiều cao chữ Thay đổi toàn bộ chiều cao của chữ đối với tất cả chữ trong bản vẽ. /Sample/VBA/ Lệnh gọi ngoài Một Macro VBA gọi một chức năng ngoài Visual Basic 6 ở DLL đã đăng kí. /Sample/ActiveX/ExtrnCall/ExternalCall.dvb Tiện ích Thực hiện kết nối AutoCAD với một cơ sở dữ liệu. /Sample/ActiveX/Facility/Setup/Setup.exe Tuỳ biến VBA IDE Tạo một thanh công cụ mới trong VBA IDE cho phép bạn tải một dự án và mang tới VBA Manager, VBA Macros và hộp thoại VBA Options từ IDE. /Sample/VBA/VBAIDEMenu/acad.dvb Xuất thuộc tính Xuất khối dữ liệu AutoCAD và đưa vào bảng tính. /Sample/ActiveX/ExtAttr/ExtAttr.xls Xuất thuộc tính ra tệp văn bản Chuyển các dữ liệu đặc thù thành văn bản Microsoft Word, bảng tính Excel và biểu đồ. /Sample/VBA/attext.dvb Liên kết với Excel Chỉ ra cách chuyển dữ liệu từ AutoCAD sang Excel và ngược lại. /Sample/VBA/ExcelLink.dvb Thay thế khối Thay thế các khối đã được chèn trong bản vẽ với quy định khác. /Sample/VBA/BlockReplace.dvb Thay đổi độ rộng Thay đổi độ rộng của toàn bộ các đường trong bản vẽ. /Sample/VBA/chplywid.dvb Vẽ đường tâm Vẽ đường trục cho các hình cung, elip và hình tròn. /Sample/VBA/cntrline.dvb Vẽ đường Chỉ ra cách vẽ một đường từ một cửa sổ VBA. /Sample/VBA/drawline.dvb Mã ví dụ Tất cả mã nguồn mẫu, trừ các sự kiện ví dụ, trong sách hướng dẫn này và tài liệu tham khảo ActiveX and VBA Reference. /Sample/VBA/Example_Code.dvb Sự kiện ví dụ Các sự kiện ví dụ trong ActiveX and VBA Referene. /Sample/VBA/Example_Events.dvb Các đặc tính khác Minh họa các hàm API Automation sử dụng giao diện hộp thoại. /Sample/VBA/acad_cg.dvb
File đính kèm:
- phat_trien_autocad_2.pdf