Phát triển AutoCAD bằng ActiveX & VBA - Mở đầu

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.

pdf 7 trang dienloan 4120
Bạn đang xem tài liệu "Phát triển AutoCAD bằng ActiveX & VBA - Mở đầu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Phát triển AutoCAD bằng ActiveX & VBA - Mở đầu

Phát triển AutoCAD bằng ActiveX & VBA - Mở đầu
 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:

  • pdfphat_trien_autocad_bang_activex_vba_mo_dau.pdf