microsoft excel va lap trinh tren microsoft excel phần 3 ppsx

10 230 0
microsoft excel va lap trinh tren microsoft excel phần 3 ppsx

Đang tải... (xem toàn văn)

Thông tin tài liệu

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 21 - Cài đặt thuật toán Với thuật toán như trên, ta có thể tiến hành cài đặt cho hàm TraBang theo các bước sau: § Lần lượt thực hiện các bước như đã nêu trong phần 3.2.3.2 Tạo hàm mới bằng VBA, với tên hàm cần tạo là TraBang . § Nhập đoạn mã lệnh của hàm TraBang như sau: Public Function TraBang(so_tra As Double, Vung_Tra As Range) As Double Dim X1, X2, Y1, Y2 As Double Dim i As Integer Dim Co_the_tra As Boolean Co_the_tra = False ’Vòng lặp để duyệt qua hàng đầu tiên của vùng dữ liệu For i = 1 To Vung_Tra.Columns.Count - 1 If ((Vung_Tra(1, i).Value<=so_tra) And _ (Vung_Tra(1, i + 1) ).Value >=so_tra)) _ Kết thúc Khai báo bi ến Có_thể_tra=False I=1 I<=(Số_cột_vùn g_tra)- 1 Số_tra Є [Vùng_Tra(1,i), Vùng_tra(1,i+1)] X1=Vùng_tra(1,i) X2= Vùng_tra(1,i+1) Y1=Vùng_tra(2,i) Y2= Vùng_tra(2,i+1) Có_thể_tra=True B ắt đầu Có_th ể_tra= True X1=S ố_tra X2=S ố_tra Tra_bảng=Y1+(Y2-Y1)/(X2- X1)*(Số_tra-X1) I=I+1 Tra_b ảng=Y1 Tra_b ảng=Y2 Thông báo: không tra được Tra_bảng=Null Sai Đúng Đúng Sai Đúng Đúng Sai Sai Đúng Sai TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 22 - Or _ ((Vung_Tra(1, i) ).Value >=so_tra) And _ (Vung_Tra(1, i + 1) ).Value <=so_tra)) _ Then ’Khi đã thoả mãn điều kiện thì lần lượt lấy các giá trị X1,X2,Y1,Y2 ’và thoát khỏi vòng lặp X1 = Vung_Tra(1, i).Value X2 = Vung_Tra(1, i + 1).Value Y1 = Vung_Tra(2, i).Value Y2 = Vung_Tra(2, i + 1).Value Co_the_tra = True Exit For End If Next i If Co_the_tra Then ’Kiểm tra điều kiện X1=Số_Tra If so_tra = X1 Then TraBang = Y1 Exit Function End If ’Kiểm tra điều kiện X2=Số_Tra If so_tra = X2 Then TraBang = Y2 Exit Function End If ’Nếu không thoả các điều kiện trên thì tính giá trị tra bảng theo ’công thức sau: TraBang = (Y2 - Y1) / (X2 - X1) * (so_tra - X1) + Y1 Else ’Khi không nằm trong bảng tra thì thông báo MsgBox ("Gia tri can tra khong nam trong bang tra") TraBang = Null End If End Function Sử dụng hàm mới TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 23 - Sau khi đã tạo mã nguồn cho hàm mới, ta sử dụng hàm mới bằng cách tạo một bảng tra như hình vẽ dưới, sau đó nhập công thức “=trabang(B9,B6:I7)” . Kết quả cho ra là 153.5, đúng như cách tính toán thông thường. Lần lượt thay đổi “Số trục xe tính toán” bằng 100, 20, 7100 để thử nghiệm khả năng xử lý của hàm TraBang . TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 24 - 4. CHƯƠNG IV AutoCAD và lập trình trên AutoCAD 4.1. AutoCAD AutoCAD là một chương trình ứng dụng thuộc hệ CAD (Computer Aided Design) chuyên dùng trong công tác thiết kế - tạo bản vẽ. AutoCAD là sản phẩm rất phổ biến do tính dễ dùng và khả năng áp dụng cho nhiều lĩnh vực khác nhau. AutoCAD được tổ chức thành một chương trình hoạt động độc lập trên nền Windows, số liệu bản vẽ thiết kế được AutoCAD tổ chức dưới hai dạng là ẩn (nonvisual) và trực quan (visual). Các thao tác liên quan đến các thành phần trong bản vẽ đều được thực hiện trực tiếp ngay trên màn hình thông qua sự phối hợp giữa các câu lệnh và thao tác với bàn phím hoặc chuột. Giao diện của chương trình AutoCAD như sau: Mỗi bản vẽ trong AutoCAD được tổ chức thành 2 thành phần chính: § ModelSpace - Không gian mô hình: là nơi tạo các đối tượng hình học của bản vẽ. § PaperSpace – Không gian in: tại đây các đối tượng hình học được thể hiện ở dạng kết quả sau khi in. Mỗi đối tượng đều có thể được bố trí với tỷ lệ, vị trí, góc TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 25 - quan sát một cách độc lập với những đối tượng khác theo ý tưởng của người thiết kế. Kết quả hiển thị trên không gian in sẽ giống như khi in trên giấy. Số lượng PaperSpace là không hạn chế. Với AutoCAD, người dùng có thể tạo ra các bản vẽ, từ hình vẽ của những ý tưởng ban đầu đến những bản vẽ chi tiết với độ chính xác cao. Hệ thống các trình đơn, thanh công cụ, cửa sổ dòng lệnh và đặc biệt là khả năng tương tác với từng chi tiết của bản vẽ một cách trực quan giúp cho người thiết kế có thể thể hiện ý tưởng của mình một cách thoải mái, dễ dàng và nhanh chóng. Và hơn thế nữa, khả năng in ấn mạnh mẽ với rất nhiều lựa chọn khác nhau giúp thể hiện ý tưởng thành bản vẽ và có thể in ra giấy một cách dễ dàng. Toàn bộ các chi tiết trong bản vẽ đều được AutoCAD quản lý dưới dạng đối tượng, nghĩa là mỗi chi tiết đều có những thuộc tính riêng và được quản lý bằng cơ sở dữ liệu bên trong AutoCAD. Điều này rất thích hợp trong môi trường thiết kế đòi hỏi phải cập nhật, thay đổi nhiều, bởi lẽ chỉ cần thay đổi thuộc tính của các đối tượng là ta đã có thể có ngay được một bản vẽ mới. Bên cạnh đó, do cách tổ chức như trên nên ta có thể dễ dàng can thiệp vào các đối tượng bản vẽ để biến đổi chúng cho phù hợp với mục đích riêng. Các đối tượng trong AutoCAD được chia làm hai loại, loại thứ nhất là các đối tượng ẩn, được dùng để thiết lập các thuộc tính cho các loại đối tượng khác, ví dụ như: DimStyle, FontStyle, Layer Loại đối tượng thứ hai là các đối tượng có thể nhìn thấy được, nó chính là các thành phần hiển thị của bản vẽ, ví dụ như: Line, Pline, Arc, Text, Dim AutoCAD là một chương trình được sử dụng rất rộng rãi bởi không những nó đáp ứng được yêu cầu của đại đa số người dùng mà còn đáp ứng được những yêu cầu chuyên biệt nhờ khả năng cho phép người dùng có thể lập trình trên nó để thực hiện những yêu cầu chuyên biệt này của mình một cách dễ dàng. Việc mở rộng AutoCAD có thể được thực hiện theo những cách sau: § Lệnh gộp (Script): tính năng này cho phép thực hiện các lệnh của AutoCAD từ một tệp văn bản (có phần mở rộng là *.SCR). § AutoLISP và Visual LISP: AutoLISP dựa trên ngôn ngữ lập trình LISP, một ngôn ngữ dễ sử dụng và cũng khá mạnh. Với môi trường phát triển tích hợp Visual LISP có sẵn trong AutoCAD, người dùng có thể dễ dàng tạo ra các ứng dụng mở rộng AutoCAD. Tất cả các mã lệnh viết bằng AutoLISP sẽ được lưu trong tệp có phần mở rộng là *.LSP. § ObjectARX (AutoCAD Runtime Extension): ObjectARX chứa các thư viện liên kết động, qua đó người dùng có thể tác động trực tiếp lên nhân của chương trình AutoCAD. Chính vì vậy, chương trình viết với ObjectARX có khả năng rất mạnh, và thường được sử dụng để viết các ứng dụng lớn, chẳng hạn như SoftDesk hay NovaTDN. Các chương trình sử dụng ObjectARX được viết bằng ngôn ngữ VC++ và được biên dịch thành tệp có phần mở rộng là *.ARX. § ActiveX Automation: công nghệ này cho phép chia sẻ dữ liệu của bản vẽ với các chương trình khác. Và do đó, ta có thể phát triển ứng dụng bằng các ngôn ngữ lập trình khác nhau như Visual Basic, Delphi hay C#, để tận dụng tất cả các tính năng sẵn có của AutoCAD thông qua mô hình đối tượng của AutoCAD. § AutoCAD VBA: là môi trường lập trình được tích hợp sẵn trong AutoCAD. Các chương trình VBA viết bằng ngôn ngữ Visual Basic, hoạt động dựa trên giao diện ActiveX Automation. Sự kết hợp giữa AutoCAD, ActiveX Automation và VBA tạo nên nhiều lợi thế cho các ứng dụng mở rộng viết bằng VBA. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 26 - Trong tài liệu này, chỉ trình bày về cách lập trình trên AutoCAD bằng VBA và một số nội dung cơ bản nhất về AutoLISP sử dụng kết hợp với các chương trình VBA tạo nên các lệnh mới trong AutoCAD. 4.2. Lập trình trên AutoCAD bằng VBA Việc lập trình bằng VBA trên AutoCAD cũng giống như trên Microsoft Excel, các mã lệnh đều được thực hiện thông qua VBA IDE. Do đều xuất phát từ một nhà cung cấp là Microsoft nên VBA IDE trong hai ứng dụng nền trên là giống nhau. Điểm khác nhau cơ bản cần phải lưu ý trong khi lập trình chính là sự khác biệt về mô hình đối tượng của hai ứng dụng nền. Chính vì vậy, trong phần này, sau khi giới thiệu về một số thao tác cơ bản, nội dung chủ yếu sẽ là giới thiệu về mô hình đối tượng của AutoCAD và một số thao tác cơ bản trên các đối tượng của AutoCAD. 4.2.1. Quản lý dự án VBA Khác với trong Excel, trong AutoCAD, các dự án VBA được phân biệt rõ ràng thành: § Dự án nhúng (Embedded Project): là dự án VBA được đính kèm cùng với tệp bản vẽ và sẽ được tự động tải vào VBA IDE mỗi khi mở bản vẽ có chứa dự án nhúng. Dự án nhúng có một số giới hạn khi làm việc, không thể đóng hoặc mở các bản vẽ AutoCAD bởi lẽ mục đích của dự án nhúng chính là làm việc bên trong bản vẽ có chứa nó. Điểm thuận lợi chính của dự án nhúng là người sử dụng không cần phải nhớ nơi lưu trữ dự án, không cần phải thực hiện tải dự án mỗi khi sử dụng các chức năng có trong dự án, tất cả các thao tác đó đều được thực hiện tự động khi mở bản vẽ có chứa dự án nhúng. § Dự án độc lập (Global Project): là dự án được lưu tách biệt trong một tệp có phần mở rộng là *.DVB. Dự án độc lập có khả năng làm việc linh hoạt hơn, có khả năng đóng hoặc mở bản vẽ bất kỳ. Tuy nhiên, người sử dụng cần phải nhớ nơi lưu trữ và các chức năng có trong từng dự án để khi cần sử dụng một chức năng nào thì sẽ tải dự án đó vào VBA IDE để sử dụng. Mặc dù vậy, với dự án độc lập, việc phân phối và chia sẻ mã lệnh được thực hiện dễ dàng hơn so với loại dự án nhúng. Dự án độc lập cũng rất thích hợp để lưu trữ, tập hợp thành bộ thư viện để sử dụng trong tất cả các bản vẽ. Với AutoCAD, quá trình quản lý dự án VBA được thực hiện rất dễ dàng thông qua cửa sổ “Quản lý dự án VBA – VBA Manager”. Để hiện cửa sổ VBA Manager, ta chọn trình đơn ToolðMacroðVBA Manager… (hoặc gọi lệnh VBAMAN từ dòng lệnh của AutoCAD) Giao diện của cửa sổ VBA Manager như hình dưới: TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 27 - Ý nghĩa của từng thành phần trong cửa sổ VBA Manager: 1 Chứa danh sách các bản vẽ hiện có trong AutoCAD (sử dụng khi ta muốn nhúng một dự án nào đó vào trong một bản vẽ). 2 Chứa danh sách các dự án VBA hiện đang được tải trong VBA IDE. 3 Tạo một dự án mới. 4 Lưu dự án VBA với tên khác (chỉ có hiệu lực với các dự án độc lập). 5 Tải một dự án độc lập vào trong VBA IDE. 6 Gỡ bỏ một dự án độc lập khỏi VBA IDE. 7 Nhúng một dự án VBA vào một bản vẽ định trước. Bản vẽ được định trước chính là bản vẽ được lựa chọng trong danh sách 1. 8 Tách dự án nhúng ra khỏi bản vẽ (chỉ có hiệu lực khi bản vẽ có chứa dự án nhúng). 9 Hiển thị cửa sổ quản lý Macro trong AutoCAD. 10 Hiển thị VBA IDE, là nơi sẽ thực hiện quá trình thiết kế mã lệnh và giao diện của chương trình. CHÚ Ý Macro về bản chất là chương trình con dạng thủ tục. Trong AutoCAD, ta thường chỉ thao tác với các chương trình con dạng thủ tục, còn chương trình con dạng hàm chỉ sử dụng bên trong các dự án VBA. 4.2.2. Tạo Macro với VBA Mỗi Macro đều phải nằm trong một dự án nhất định. Vì vậy, trước khi tạo mới một Macro, ta cần phải xác định được nơi sẽ chứa Macro. Nếu chưa có một dự án nào hoặc khi cần lưu Macro trong một dự án khác, ta cần phải tạo mới Macro. Sau đó, việc tạo Macro sẽ được thực hiện một cách dễ dàng như cách tạo một chương trình con trong VBA. 4.2.2.1. Tạo mới và lưu dự án VBA Để tạo mới dự án VBA: TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 28 - 1 Mở cửa sổ VBA Manager. 2 Chọn nút lệnh New. Mặc định, dự án mới được tạo sẽ là một dự án độc lập, có tên dự án là ACADProject. Sau khi tạo mới dự án, ta có thể nhúng dự án vào một bản vẽ nào đó hoặc có thể lưu ra một tệp riêng thành dự án độc lập tuỳ thuộc vào nhu cầu sử dụng. Để nhúng dự án vào một bản vẽ: 1 Mở cửa sổ VBA Manager. 2 Trong mục Drawing, chọn bản vẽ cần nhúng dự án vào. 3 Trong mục Projects, chọn dự án cần nhúng vào bản vẽ. 4 Chọn nút lệnh Embed. Để lưu dự án VBA thành dự án độc lập: 1 Mở cửa sổ VBA Manager. 2 Chọn dự án cần lưu, chọn Save As. Hộp thoại Save As sẽ xuất hiện. 3 Điền tên tệp và vị trí để lưu dự án. 4 Chọn Save. 4.2.2.2. Tạo mới và hiệu chỉnh Macro Để tạo mới Macro, ta có thể trực tiếp vào trong VBA IDE và chèn chương trình con (dạng thủ tục) vào dự án mong muốn, hoặc ta có thể thực hiện thông qua cửa sổ Macros. Để tạo Macro thông qua cửa sổ Macros: 1 Mở cửa sổ Macros bằng cách chọn từ trình đơn ToolsðMacroðMacros… (hoặc sử dụng lệnh VBARUN từ dòng lệnh AutoCAD) TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 29 - 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. 5 Màn hình của VBA IDE 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 VBA IDE chọn trình đơn FileðClose and Return to AutoCAD để trở về màn hình của AutoCAD. CHÚ Ý Cũng giống như VBA trong Excel, để chuyển đổi qua lại giữa màn hình AutoCAD và màn hình VBA IDE, ta sử dụng phím tắt là ALT+F11. Để soạn thảo/hiệu chỉnh Macro 1 Mở cửa sổ Macros. 2 Chọn Macro cần hiệu chỉnh trong danh sách các Macro. 3 Chọn Edit để bắt đầu hiệu chỉnh. 4.2.3. Sử dụng Macro Để sử dụng Macro, hay nói cách khác là để thực thi các Macro, ta cần phải tải các dự án có chứa Macro vào VBA IDE. Nếu Macro nằm trong các dự án đã mở, ta có thể bỏ qua bước tải dự án VBA. Để tải các dự án VBA § Đối với các dự án nhúng, ta chỉ cần mở bản vẽ có chứa dự án nhúng là đã thực hiện quá trình tải dự án. § Đối với các dự án độc lập, ta cần phải tải các dự án bằng cách: mở cửa sổ VBA Manager ð Chọn Load ð Chọn dự án cần tải trong hộp thoại Open VBA Project ð Chọn Open. Việc thực thi Macro cũng có thể được thực hiện theo nhiều cách khác nhau: trực tiếp từ VBA IDE, thông qua cửa sổ Macros, thông qua dòng lệnh, hay qua hệ thống trình đơn. Dưới đây là hai cách đơn giản nhất để thực thi Macro. Để thực thi Macro § Trong VBA IDE, đặt con trỏ vào dòng mã lệnh của Macro trong cửa sổ mã lệnh ð Nhấn phím F5 để thực thi Macro. § Mở cửa sổ Macros ð Chọn Macro cần thực thi trong danh sách ð Chọn Run. 4.2.4. Tạo lệnh mới sử dụng VBA kết hợp với 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 với bàn phím thông qua hệ thống các lệnh đã được định nghĩa sẵn. Để thực thi Macro, rõ ràng phải thực hiện qua khá nhiều bước. Để tạo sự thuận tiện, cần thiết phải định nghĩa lệnh mới, qua đó ta có thể thực thi Macro chỉ với một dòng 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 cách làm tốt và dễ dàng để thực hiện mục tiêu này. TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền - 30 - 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 trong AutoCAD. Vì vậy, khi muốn các lệnh mà người dùng tự lập có hiệu lực ngay khi sử dụng AutoCAD (nghĩa là người 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) ta 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ư mục cài đặt của AutoCAD trong Windows sẽ là: C:\Program Files\AutoCAD 2002). Dưới đây là một ví dụ đơn giản để thực hiện mục tiêu này: 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 thường trú trong AutoCAD. Quá trình thực hiện để đáp ứng nhu cầu trên như sau: a. Tạo dự án mới 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. b. Tạo và thực thi 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 VBA IDE 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) . X1,X2,Y1,Y2 ’và thoát khỏi vòng lặp X1 = Vung_Tra(1, i).Value X2 = Vung_Tra(1, i + 1).Value Y1 = Vung_Tra(2, i).Value Y2 = Vung_Tra(2, i + 1).Value Co_the_tra = True Exit For End If Next. cài đặt cho hàm TraBang theo các bước sau: § Lần lượt thực hiện các bước như đã nêu trong phần 3. 2 .3. 2 Tạo hàm mới bằng VBA, với tên hàm cần tạo là TraBang . § Nhập đoạn mã lệnh của hàm TraBang . bằng VBA trên AutoCAD cũng giống như trên Microsoft Excel, các mã lệnh đều được thực hiện thông qua VBA IDE. Do đều xuất phát từ một nhà cung cấp là Microsoft nên VBA IDE trong hai ứng dụng

Ngày đăng: 12/08/2014, 20:22

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan