Skip to Content

Cập nhật

Hướng dẫn lập trình VBA trong AutoCad

Printer-friendly versionGửi cho bạn bè

VBA là ngôn ngữ cơ bản dựa trên nền tảng của Visual Basic, cho nên muốn sử dụng tốt ngôn ngữ VBA bạn cũng phẳi nắm chẳc các hàm hay các toán tử của VISUAL BASIC. Các phép biến đổi hay các phép tính toán VBA và VB giống hệ nhau không khác chút nào. Nhưng VBA trong CAD được dựa trên các đối tượng vẽ trong AutodCAD. Bài hướng dẫn này hy vọng xe giúp các bạn hiểu thêm về lập trình VBA trong AutoCad.

1. Mở VBA trong Autocad:

Công việc này khá đơn giản, chỉ cần bật Autocad. Bạn sẽ hấy Menu của Autocad ở góc trên. Vào Tool -> Macro -> VBA Editor hay bạn chỉ cần bấm ALT và F11 là bạn đã có thể bắt đầu với VBA rồi.

Menu tool

Màn hình VBA có dạng như sau:

2. Menu trong VBA

Dưới Menu của VBA bạn sẽ nhìn thấy một loạt các công cụ của VBA, chúng được hiện ra và có chức năng như sau.

Chức năng của Object Browser rất quan trọng trong quá trình lập trình vcủa các bạn, Browser này cho phép bạn tìm kiếm các hàm liên quan để lập trình tương tác với CAD.

3.Cách viết 1 chương trình trong VBA:

VBA (VISUAL BASIC APPLICATION) là ngôn ngữ dựa trên cơ sở của ngôn Visual Basic nhưung được hướng các đối tượng trực tiếp.

a. Các toán tử:
 
VBA cũng sử dụng các toán tử như Visual Basic:

+          2 + 3 = 5                                  Cộng

-           3 – 2  = 1                                 Trừ

*          3*2 = 6                                    Nhân

/           3/2 =1.5                                   Chia

^          3^2 =6                                     Mũ

 Các kiểu dữ liệu của VBA:
 
Integer            : Số nguyên 16 bit

Double            : Số thực 64bit

String              : Xâu ký tự

Boolean          : Đúng hoặc sai (true or false)

Long                : Số nguyên 32bit

Variant            : Kiểu dữ liệu cho tất cả các biến

Single              : Số thực 32bit

Date                : Kiểu ngày giờ

Decimal          : Số thực 96bit

Object             : Đối tượng khi Set các thành phần của câu lệnh, đặc biệt rấy hay sử dụng với các lệnh vẽ của AutoCad

Khai báo biến:

Muốn khai báo kiểu Integer

Dùng lệnh Dim <tên biến>  AS <kiểu dữ liệu>

VD: DIM abc AS INTEGER

            DIM Xau AS STRING

Sau mỗi một biến dùng toán tử AS để xác định kiểu biến cho biến được đặt

Chú ý: Không đặt tên biến trùng với các toán tử có của VBA:

As, for, else,....

Đây một số câu lệnh cần thiết để lập trình

Câu lệnh của VBA:

Trong các điều kiện của VBA dùng : AND và OR làm toán tử của các câu lệnh điều kiện
 
IF <Điều kiện>. THEN

 ELSE

END IF

-----------------

FOR <Biến> =  <Số bắt đầu> TO [DOWNTO] <Số kết thúc> STEP <bước nhẩy>

NEXT <Biến>

----------------

WHILE <Điều kiện>

WEND

--------------

Select Case <điều kiện>

        Case 1

            Câu lệnh 1

        Case 2, 3

            Câu lệnh 2

        Case 4 To 6

            Câu lệnh 3

        Case Is > 8                                                 Is: chỉ đó là còn lại các số khác

            Câu lệnh 4

        Case Else

            Câu lệnh 5

End Select

 Chú ý: Để hiểu thêm chi tiết các điều kiện vào toán tử các bạn xem ở: Help cuả VBA EditorTopic: Visual Basic language Reference     -> Data Types  Statements

 b. Các hàm của VBA:

VBA sử dụng lại 2 hàm cơ bản của Visual Basic là

Sub Tên_hàm (tham số nếu có)

End Sub

Function tên_hàm (tham số nếu có) as <Kiểu dữ liệu>

End Function

Khác nhau giữa Sub và Function: Sub không trả về dữ liệu cho hàm nhưng function thì ngược lại
Các hàm này để có thể khai báo kiểu Public hoặc Private

VD:

Sub Cong ()
     Dim c as interger
     C = 2 +3
End sub
Funtion Cong() as Integer
   Cong= 3 +2
End Fuction // hàm này sẽ trả về giá trị 5 nếu bạn yêu cầu.

Comments

Commandline

Cái gì trị này bác dùng khai báo biến ở toàn cục ở ngoài tất cả các vòng sub hay function
public abc as Integer

Ví dụ đơn giản như sau:

Public ab As Integer

Sub hello()
ab = 50 'mặc định
Dim ac As Integer
ac = InputBox("nhap", "nhap")
If (ac <> 0) Then
ab = ac
MsgBox ab, vbDefaultButton1, "so moi"
Else
MsgBox ab, vbDefaultButton1, "so mac dinh"
End If
End Sub

Gui Admin va moi nguoi

Xin hỏi: tôi đang viết một đoạn code bằng VBA trong Cad. Yêu cầu đưa ra như sau: tại commandline sau dòng nhắc là giá trị mặc định nào đó chờ sẵn mà tôi chỉ cần enter thì lệnh nhận giá trị này. Ví dụ: tôi viết đoạn code yêu cầu nhập chiều cao chữ với dòng nhắc: "Nhap chieu cao chu:". Nếu là lần đầu tiên thực hiện lệnh này trong bản vẽ hiện hành thì người dùng cần nhập vào một giá trị, VD nhập vào giá trị là 50. nếu thực hiện này lại các lần sau thì giá trị mặc định chờ sẵn là giá trị trước đó đã nhập và tôi chỉ cần bấm Enter,nếu không muốn thì có thể xóa số hiện hành đó và nhập số khác. Vậy xin hỏi bác đoạn code này được viết thế nào!
Mong cac bác chỉ giúp. Tôi biết cách lấy lại giá trị trước đó nhưng gán kết hợp với dòng nhắc thành giá trị để có thể chọn luôn hoặc xóa nó để nhập giá trị khá thì bó tay. Mong đc sự tư vấn của cac bác.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Lines and paragraphs break automatically.

More information about formatting options



2doworld.com

VNTOWER Ltd

IStructE.Org

The Concrete Centre