1. Trang chủ
  2. » Công Nghệ Thông Tin

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

10 230 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 427,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền 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ệ

Trang 1

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền

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

Trang 2

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

Trang 3

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền

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

Trang 4

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 ở

Trang 5

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền

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

Trang 6

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)

Trang 7

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền

Ý 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:

Trang 8

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)

Trang 9

TỰ ĐỘNG HOÁ THIẾT KẾ CẦU ĐƯỜNG Lập trình trên ứng dụng nền

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

Trang 10

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 _

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

w