You are on page 1of 43

Designing Team – Engineering Department Đinh Văn Tráng

PHỤ LỤC
Chương 1 ................................................................................................................................................. 3

CƠ BẢN VỀ CÁC ĐỐI TƯỢNG TRONG VBA-EXCEL ........................................................................ 3

1.1. Mô hình đối tượng trong VBA-Excel ..................................................................................... 4

1.2. Giới thiệu sơ qua về các đối tượng trong VBA-Excel ............................................................ 5

1.2.1. Tập đối tượng WorkBooks ................................................................................................. 5

1.2.2. Đối tượng WorkBook.......................................................................................................... 5

1.2.3. Làm việc với đối tượng Worksheet .................................................................................... 6

1.2.4. Làm việc với đối tượng Range ............................................................................................ 7

a. Cách khai báo đối tượng Range ................................................................................................. 7

b. Duyệt qua từng ô trong vùng dữ liệu ......................................................................................... 7

1.3. Một số ví dụ............................................................................................................................. 8

1.3.1. Ví dụ 1: Tìm dòng cuối cùng trong một cột ....................................................................... 8

1.3.2. Ví dụ 2: Xóa dòng rỗng ....................................................................................................... 9

Chương 2 ............................................................................................................................................... 11

LÀM VIỆC VỚI MÔ HÌNH ĐỐI TƯỢNG FSO .................................................................................... 11

2.1. Khái niệm cơ bản về mô hình đối tượng FSO (FileSystemObject) ..................................... 12

2.2. Các lớp và các phương thức của mô hình đối tượng FSO ................................................... 13

2.3. Trình tự làm việc với mô hình đối tượng FSO ..................................................................... 14

2.4. Một số ví dụ........................................................................................................................... 16

Chương 3 ............................................................................................................................................... 18

LÀM VIỆC VỚI ĐỐI TƯỢNG BLOCK ................................................................................................ 18

3.1.1. Tạo thuộc tính cho Block –Phương thức AddAttribute ................................................... 28

3.1.2. Thao tác với thuộc tính – Phương thức GetAttributes .................................................... 31

Advanced VBA for AutoCad Page 1


Designing Team – Engineering Department Đinh Văn Tráng

3.8.1. Gắn một tham chiếu ngoài vào bản vẽ – Phương thức AddExternalReference ............. 33

3.8.2. Gỡ bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Detach ....................................... 36

3.8.3. Tải lại tham chiếu ngoài – Phương thức Reload .............................................................. 36

3.8.4. Loại bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Unload .................................... 37

3.8.5. Ràng buộc tham chiếu ngoài – Phương thức Bind ........................................................... 38

Chương 4 ............................................................................................................................................... 39

LIÊN KẾT EXCEL VỚI AUTOCAD .................................................................................................... 39

4.1. Cách liên kết Excel với AutoCad .......................................................................................... 40

4.2. Một số ví dụ về thao tác hàng loạt bản vẽ. ........................................................................... 41

Advanced VBA for AutoCad Page 2


Designing Team – Engineering Department Đinh Văn Tráng

Chương 1

CƠ BẢN VỀ CÁC ĐỐI TƯỢNG TRONG VBA-EXCEL

Nội dung chương :

- Mô hình đối tượng trong VBA-Excel

- Giới thiệu sơ qua về các đối tượng

- Một số ví dụ

Advanced VBA for AutoCad Page 3


Designing Team – Engineering Department Đinh Văn Tráng

1.1. Mô hình đối tượng trong VBA-Excel

Advanced VBA for AutoCad Page 4


Designing Team – Engineering Department Đinh Văn Tráng

1.2. Giới thiệu sơ qua về các đối tượng trong VBA-Excel


1.2.1. Tập đối tượng WorkBooks
Tập đối tượng WorkBooks chính là tập chứa tất cả các file Excel đang mở.

Một số phương thức và thuộc tính của WorkBooks.

 Phương thức Add:

Phương thức này dùng để tạo một WorkBook mới, một WorkBook mới được tạo ra sẽ trở
thành WorkBook hiện hành.

 Phương thức Open :

Phương thức này dùng để mở một WorkBook, WorkBook được mở sẽ trở thành hiện hành

1.2.2. Đối tượng WorkBook


Đối tượng WorkBook là một trong các file Excel đang mở.

ThisWorkbook là WorkBook hiện hành.

a. Lưu WorkBoook.

Để lưu WorkBook sử dụng phương thức Save As hoặc phương thức Saved

ThisworkBook.SaveAs (SavaAsPath)

Trong đó: SaveAsPath là đường dẫn đầy đủ để lưu file.

Advanced VBA for AutoCad Page 5


Designing Team – Engineering Department Đinh Văn Tráng

b. Đóng WorkBook

Chúng ta sử dụng phương thức Close để đóng một WorkBook.

ThisworkBook.Close True(False)

Nếu True : WorkBook sẽ được lưu lại, nếu False WorkBook sẽ không được lưu.

1.2.3. Làm việc với đối tượng Worksheet


a. Tạo mới Worksheet

Sử dụng phương thức Add có trong tập đối tượng WorkSheets hoặc trong đối tượng
Sheets để tạo một WorkSheet mới.

b. Xóa WorkSheet

Để xoá WorkSheet, sử dụng phương thức Delete có trong đối tượng WorkSheet.

Advanced VBA for AutoCad Page 6


Designing Team – Engineering Department Đinh Văn Tráng

c. Đổi tên WorkSheet

Việc đổi tên worksheet được thực hiện một cách dễdàng, chỉ cần thay đổi thuộc tính
Name có trong đối tượng WorkSheet.
Đoạn mã sau sẽ đổi tên Sheet2 thành MySheet:
Worksheets("Sheet2").Name = "MySheet"
1.2.4. Làm việc với đối tượng Range
a. Cách khai báo đối tượng Range
Dim Myrange as Range
b. Duyệt qua từng ô trong vùng dữ liệu
Để duyệt qua từng ô trong vùng dữ liệu, sửdụng vòng lặp For Each… Next để duyệt
qua từng đối tượng trong tập đối tượng Cells. Trình tựduyệt là theo số thứ tự của ô:
Quá trình duyệt từ trái sang phải là từ trên xuống dưới.
Ví dụ sau sẽ duyệt qua từng ô trong vùng dữ liệu A1:D3, điền số vào từng ô theo thứ
tự được duyệt

Advanced VBA for AutoCad Page 7


Designing Team – Engineering Department Đinh Văn Tráng

1.3. Một số ví dụ
1.3.1. Ví dụ 1: Tìm dòng cuối cùng trong một cột

Advanced VBA for AutoCad Page 8


Designing Team – Engineering Department Đinh Văn Tráng

1.3.2. Ví dụ 2: Xóa dòng rỗng


Giả sử ta có dữ liệu như hình sau, và ta cần xóa các dòng rỗng nằm xen giữa.

Advanced VBA for AutoCad Page 9


Designing Team – Engineering Department Đinh Văn Tráng

Kết quả sau khi chạy Code :

Advanced VBA for AutoCad Page 10


Designing Team – Engineering Department Đinh Văn Tráng

Chương 2

LÀM VIỆC VỚI MÔ HÌNH ĐỐI TƯỢNG FSO

Nội dung chương :

- Khái niệm cơ bản về mô hình đối tượng FSO (FileSystemObject)

- Các phương thức và thuộc tính của mô hình đối tượng FSO

- Trình tự làm việc với mô hình đối tượng FSO

- Một số ví dụ

Advanced VBA for AutoCad Page 11


Designing Team – Engineering Department Đinh Văn Tráng

2.1. Khái niệm cơ bản về mô hình đối tượng FSO (FileSystemObject)

Mô hình đối tượng FSO là một đối tượng dùng để đọc dữ liệu hoặc ghi dữ liệu từ file
“*.txt”.Ngoài ra đối tượng FSO còn dùng để thực hiện với các tác vụ như Move File, CopyFile,
Delete File…

Các lớp đối tượng theo mô hình đối tượng FSO là một dạng bổ sung cho VBA và được cung cấp
dưới dạng thư viện lập trình với tên gọi “Microsoft Scriting Runtime”. Để sử dụng thư viện này
trong môi trường lập trình VBA IDE chúng ta cần thực hiện thao tác sau:

Trong VBA IDE chọn trình đơn Tools References  Tìm đến “Microsoft Scripting
Runtime” đánh dấu chọn -OK.

Advanced VBA for AutoCad Page 12


Designing Team – Engineering Department Đinh Văn Tráng

2.2. Các lớp và các phương thức của mô hình đối tượng FSO
2.2.1. Các lớp đối tượng chính trong mô hình FSO
Tên lớp Mô tả
FileSystemObject Đối tượng quản lý trong mô hình FSO

Drive Đối tượng ổ đĩa

Folder Đối tượng Folder

File Đối tượng File

TextStream Đối tượng File Txt

2.2.2. Các phương thức chính của lớp FileSystemObject


Tên phương thức Mô tả
Sao chép tập tin
CopyFile
Xóa tập tin
DeleteFile
Di chuyển tập tin
MoveFile
Kiểm tra sự tồn tại của tập tin
FileExists
Tạo file Text mới (*.txt)
CreateTextFile
Nhận về một tập tin đã có
GetFile
Nhận về một Folder tồn tại
GetFolder
Mở file Text (*.txt) để thao tác
OpenTextFile
2.2.3. Các phương thức chính của lớp TextStream
Lớp đối tượng TextStream thao tác lên file *.txt bao gồm các phương thức sau:
Phương thức Mô tả
Đọc một dòng dữ liệu trong tập tin
ReadLine
Đọc toàn bộ dữ liệu trong file
ReadAll
Ghi dữ liệu thành một dòng trong tập tin
WriteLine
Ghi vào một dòng trống trong tập tin
WriteBlankLines
Đóng file *.txt
Close

Advanced VBA for AutoCad Page 13


Designing Team – Engineering Department Đinh Văn Tráng

2.3. Trình tự làm việc với mô hình đối tượng FSO


2.3.1. Khai báo đối tượng FSO
Dim FSO as New FileSystemObject
Hoặc sử dụng cách khai báo
Dim FSO as FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
2.3.2. Khai báo đối tượng Folder, File
Dim FolderObj as Folder
Dim FileObj as File
2.3.3. Khai báo đối tượng TextStream
Dim TxtStr as New TextStream
2.3.4. Tạo mới file Text

2.3.5. Mở file Text để đọc (OpenforReading)

Advanced VBA for AutoCad Page 14


Designing Team – Engineering Department Đinh Văn Tráng

2.3.6. Mở file Text để ghi (OpenforWriting)


Với phương thức OpenforWriting thì toàn bộ dữ liệu cũ trong file Txt sẽ bị xóa và dữ liệu
mới sẽ thay thế

2.3.7. Mở file Text để ghi thêm dữ liệu vào cuối tập tin(OpenforAppending)
Với phương thức OpenforAppending thì dữ liệu cũ vẫn được giữ lại và dữ liệu mới sẽ
được thêm vào cuối.

Advanced VBA for AutoCad Page 15


Designing Team – Engineering Department Đinh Văn Tráng

2.4. Một số ví dụ
a. Ví dụ 1: Trong ví dụ này sẽ lấy tên tất cả các file có trong một Folder sau đó ghi ra một
file Text.

Kết quả sau khi chạy Code:

Advanced VBA for AutoCad Page 16


Designing Team – Engineering Department Đinh Văn Tráng

b. Ví dụ 2: Trong ví dụ này sẽ Copy File từ một Folder này sang một Folder khác

Advanced VBA for AutoCad Page 17


Designing Team – Engineering Department Đinh Văn Tráng

Chương 3

LÀM VIỆC VỚI ĐỐI TƯỢNG BLOCK

Nội dung chương

- Cách khai báo và khởi tạo một Block

- Cách chèn một Block có sẵn vào trong bản vẽ

- Đổi tên một Block

- Xóa một Block có trong bản vẽ

- Phá vỡ một Block

- Làm việc với Block có chứa các thuộc tính

- Làm việc với bản vẽ tham khảo ngoài

Block là một đối tượng được tạo từ nhiều đối tượng cơ bản trong bản vẽ nhưng nó được coi
như một đối tượng đơn.Chúng ta có thể chèn Block trong cùng một bản vẽ hoặc các bản vẽ
khác nhau.

Advanced VBA for AutoCad Page 18


Designing Team – Engineering Department Đinh Văn Tráng

3.1.Duyệt qua tập đối tượng Block


Chúng ta sử dụng cấu trúc lặp “For Each..Next” để duyệt qua tất cả các Block có trong tập
đối tượng Block.

 Ví dụ

Ví dụ này sẽ duyệt qua tất cả các Block có trong bản vẽ và hiện tên của các Block đó

3.2.Khai báo và khởi tạo một Block


Để khởi tạo một Block trong VBA chúng ta sử dụng phương thức Add có trong tập đối tượng
Blocks.Một Block sau khi được tạo ra có thể được chèn ở ModelSpace hoặc PaperSpace

 Cú pháp

Set BlockObj = Thisdrawing.Blocks.Add (InsertPoint, BlockName)

 Giải thích

Tham số Giải thích

BlockObj Kiểu acadBlock – Biến chứa đối tượng Block được tạo

Kiểu Variant hoặc mảng 3 phần từ kiểu Double – là tâm chèn của
InsertPoint
Block.

Kiểu String – Tên của Block được tạo (Chú ý tên của Block không
BlockName
đuợc dài quá 31 ký tự và giữa chúng không có khoảng trắng)

Advanced VBA for AutoCad Page 19


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

Ví dụ này sẽ khai báo và tạo một Block có tên “Section”, đồng thời tạo một đường tròn và
đường thẳng sau đó thêm đường tròn và đường thẳng này vào trong Block đó.

3.3.Đổi tên Block – Thuộc tính NAME


Để đổi tên một Block chúng ta sử dụng thuộc tính Name của Block để đổi sang tên mới.

 Cú pháp

BlockObj.Name = NewName

 Giải thích

Tham số Giải thích

BlockObj Kiểu acadBlock – Đối tượng Block cần đổi tên

NewName Kiểu String – Tên mới của Block

Advanced VBA for AutoCad Page 20


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

Ví dụ này sẽ yêu cầu người dùng nhập vào tên Block cần đổi và tên mới của Block.Sau đó
sẽ sử dụng thuộc tính Name để Rename Block này.

3.4.Xóa một Block – Thuộc tinh Delete


Để xóa một Block chúng ta sử dụng thuộc tính Delete của Block

 Cú pháp:

BlockObj.Delete

Advanced VBA for AutoCad Page 21


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

Ví dụ này sẽ Delete một Block có tên do người dùng nhập vào.

 Chú ý

- Nếu một Block tạo theo phương thức Add được gọi là “Block Definition” và Block đó nếu
được Insert vào trong bản vẽ thì trở thành “Block Reference”.

- Các “Block Reference” đều tham khảo dữ liệu đến “Block Definition” do đó trong ví dụ
trên khi khai báo “Dim ObjBlock as acadBlock” thì đối tượng ObjBlock sẽ là “Block
Definition”.Chúng ta không thể Delete một “Block Definition” khi trong bản vẽ vẫn còn
tồn tại “Block Reference” (Cũng giống như không thể Delete một Layer khi nó vẫn còn
được dùng bởi một đối tượng khác).Mặt khác, khi Delete một “Block Reference” nếu
chúng ta không sử dụng lệnh “Purge” thì hiển nhiên đối tượng “Block Definition” vẫn còn
tồn tại trong bản vẽ.

 Ví dụ

Ở ví dụ này sẽ yêu cầu người dùng nhập vào một tên Block Reference sau đó sử dụng bộ
lọc để lọc ra các Block có tên do người dùng nhập vào, tiếp đó sẽ Delete các Block này
khỏi bản vẽ.

Advanced VBA for AutoCad Page 22


Designing Team – Engineering Department Đinh Văn Tráng

3.5.Chèn Block vào trong bản vẽ - Phương thức InsertBlock


Chúng ta sử dụng phương thức InsertBlock để chèn một “Block Definition” vào trong
ModelSpace, PaperSpace hoặc vào một Block khác, tuy nhiên không thể chèn vào chính bản
thân nó được.

Đối tượng trả về của phương thức InsertBlock là một “Block Reference”.

 Cú pháp

Set BlockReferenceObj = Thisdrawing.SPACE.InsertBlock (InsertPoint, _


BlockName, Xscale, Yscale, Zscale, RotationAngle)

Advanced VBA for AutoCad Page 23


Designing Team – Engineering Department Đinh Văn Tráng

 Giải thích

Tham số Giải thích

Kiểu acadBlockReference – Đối tượng trả về của phương thức


BlockReferenceObj
InsertBlock

Không gian chứa đối tượng BlockReference (ModelSpace,


SPACE
PaperSpace hoặc Block)

Kiểu Variant hoặc mảng 3 phần tử kiểu Double – chứa tọa độ


InsertPoint
điểm chèn BlockReference

Kiểu String – Tên Block cần chèn hoặc tên đầy đủ bao gồm
BlockName
đường dẫn chứa bản vẽ được chèn.

Xscale Kiểu Double – Hệ số Scale theo phương X

Yscale Kiểu Double – Hệ số Scale theo phương Y

Zscale Kiểu Double – Hệ số Scale theo phương Z

Kiểu Double – Góc xoay khi chèn BlockReference (đơn vị:


RotationAngle
Radian)

 Ví dụ

Ví dụ này sẽ tạo một “Block Definition” có tên “Ex_6” chứa đối tượng Circle.Sau đó sẽ
chèn “Block Definition” này vào ModelSpace, điểm chèn do người dùng nhập vào.

Advanced VBA for AutoCad Page 24


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

Trong ví dụ này sẽ yêu cầu người dùng nhập đường dẫn chứa bản vẽ cần chèn vào (bao
gồm cả phần mở rộng “.dwg”).Đồng thời các thông số như InsertPoint,Xscal, Yscale,
Zscale, RotationAngle cũng do người dùng nhập vào.

Advanced VBA for AutoCad Page 25


Designing Team – Engineering Department Đinh Văn Tráng

3.6.Phá vỡ một Block – Phương thức Explode


Với đối tượng “Block Reference” chúng ta sử dụng phương thức Explode để phá vỡ
chúng.Đối tượng trả về của phương thức này là một mảng (kiểu Variant) chứa các đối tượng
đã cấu thành nên nó.

 Cú pháp

VarArray = BlockReferenceObj.Explode

Advanced VBA for AutoCad Page 26


Designing Team – Engineering Department Đinh Văn Tráng

 Giải thích

Tham số Giải thích

Kiểu Variant – Mảng chứa các đối tượng của


VarArray
BlockReferenceObj bị phá vỡ.

BlockReferenceObj Kiểu acadBlockReference – Đối tượng Block sẽ bị phá vỡ

 Chú ý

Phương thức Explode thực chất tạo ra một bản sao của đối tượng gốc, sau đó thực hiện
việc phá vỡ Block trên đối tượng này.Đối tượng gốc vẫn còn giữ nguyên.Nếu không
muốn giữ đối tượng này chúng ta có thể xóa nó ra khỏi bản vẽ bằng phương thức Delete.
 Ví dụ

Ví dụ này sẽ yêu cầu người dùng chọn một Block trên màn hình bản vẽ và một điểm để
di chuyển kết quả của phương thức Explode.

Advanced VBA for AutoCad Page 27


Designing Team – Engineering Department Đinh Văn Tráng

3.7.Block chứa thuộc tính – Attributes


Thuộc tính của Block là các chuỗi Text đi kèm với nó để miêu tả Block.Mỗi thuộc tính gồm
có Tag - Tên gọi của thuộc tính , Value – Giá trị của thuộc tính, Prompt – Dòng thông báo khi
người dùng nhập giá trị cho thuộc tính.Một Block có thể có nhiều thuộc tính.

3.1.1. Tạo thuộc tính cho Block –Phương thức AddAttribute


 Cú pháp

Set AttributeObject = SPACE.AddAttribute (Height, Mode, Prompt, _

InsertionPoint, Tag, Value)

 Giải thích

Tham số Giải thích

AttributeObject Kiểu acadAttribute – Đối tượng thuộc tính

Nơi chứa đối tượng thuộc tính (ModelSpace, PaperSpace hoặc


SPACE
Block)

Height Kiểu Double – Chiều cao chữ của thuộc tính

Kiểu Long - Thông số điều khiển thuộc tính khi được chèn vào
Mode
trong bản vẽ.

Kiểu String – Chuỗi thông báo khi Block Attribute được chèn vào
Prompt
bản vẽ.

Kiểu Variant hoặc Double – Mảng 3 phần tử chứa tọa độ của thuộc
InsertionPoint
tính khi được chèn vào bản vẽ hay Block.

Kiểu String – Tên của thuộc tính, có thể chứa bất kỳ ký tự nào
Tag
nhưng không chứa khoảng trắng.

Value Kiểu String – Giá trị mặc định cho thuộc tính

Advanced VBA for AutoCad Page 28


Designing Team – Engineering Department Đinh Văn Tráng

 Giá trị của tham số Mode

Tham số Giá trị Giải thích

Giá trị mặc định, với giá trị này không một giá
acAttributeModeNormal 0
trị nào còn lại của tham số Mode được gán.

Giá trị thuộc tính sẽ không được hiện lên khi


acAttributeModeInvisible 1
Block được chèn vào.

Giá trị của thuộc tính sẽ không thể Edit khi


acAttributeModeConstant 2
được chèn vào bản vẽ

Khi Block được chèn vào thì giá trị của thuộc
acAttributeModeVerify 4
tính được nhập tại dòng nhắc.

Block được chèn vào với giá trị mặc định của
acAttributeModePreset 8 thuộc tính, người dùng chỉ có thể Edit được giá
trị đó sau khi Block được chèn vào bản vẽ.

 Ví dụ

Ví dụ này sẽ tạo một Block Attribute, trong đó các thuộc tính mô tả các giá trị của tham
số Mode.

Advanced VBA for AutoCad Page 29


Designing Team – Engineering Department Đinh Văn Tráng

Advanced VBA for AutoCad Page 30


Designing Team – Engineering Department Đinh Văn Tráng

3.1.2. Thao tác với thuộc tính – Phương thức GetAttributes


Phương thức GetAttributes của một “Block Reference” được dùng để lấy các giá trị thuộc
tính có trong một “Block Reference”.Đối tượng trả về của phương thức này là một mảng
chứa các thuộc tính của Block (Riêng với tham số Mode khác acAttributeModeConstant
thì giá trị thuộc tính không lấy đuợc).

Để xác định xem một “Block Reference” có chứa thuộc tính hay không chúng ta sử dụng
thuộc tính HasAttributes có trong đối tượng “Block Reference”.Nếu kết quả là TRUE thì
Block có thuộc tính, nếu là FALSE thì Block không chứa thuộc tính.

 Cú pháp

VarAttributes = BlockReferenceObj.GetAttributes

 Giải thích

Tham số Giải thích

Kiểu Variant – Mảng chứa các thuộc tính của “Block


VarAttributes Reference”

Đối tượng “Block Reference”


BlockReferenceObj

 Ví dụ

Advanced VBA for AutoCad Page 31


Designing Team – Engineering Department Đinh Văn Tráng

Ví dụ này sẽ yêu cầu người dùng chọn một đối tượng trên màn hình bản vẽ, kiểm tra
xem đó có phải là Block thuộc tính hay không nếu đúng sẽ hiển thị tên và giá trị của các
thuộc tính cho người dùng.

 Ví dụ

Trong ví dụ này sẽ thay đổi các giá trị của thuộc tính trong “Block Reference” có tên
“TestAttribute” (Sử dụng ví dụ trong phương thức AddAttribute để tạo Block này)

Advanced VBA for AutoCad Page 32


Designing Team – Engineering Department Đinh Văn Tráng

3.8.Làm việc với bản vẽ tham khảo ngoài – External References


Bản vẽ tham khảo ngoài có rất nhiều ứng dụng đặc biệt khi làm việc theo nhóm.

3.8.1. Gắn một tham chiếu ngoài vào bản vẽ – Phương thức AddExternalReference
 Cú pháp

Set ExternalReferenceObject = Thisdrawing.SPACE.AttachExternalReference _


(FileName, BlockName, InsertionPoint, Xscale, Yscale, Zscale, _

RotationAngle, Overlay)

 Giải thích

Advanced VBA for AutoCad Page 33


Designing Team – Engineering Department Đinh Văn Tráng

Tham số Giải thích

Kiểu AcadExternalReference – Biến chứa đối tượng trả về của


ExternalReferenceObject
phương thức AttachExternalReference

SPACE ModelSpace hoặc PaperSpace

Kiểu String – Đường dẫn tới bản vẽ tham khảo ngoài (bao
FileName
gồm cả phần mở rộng “dwg”)

Kiểu String – Tên đặt cho bản vẽ tham khảo ngoài khi được
BlockName
chèn vào trong bản vẽ

Kiểu Variant – Mảng 3 phần tử kiểu Double chứa tọa độ điểm


InsertionPoint
chèn của bản vẽ tham khảo ngoài

Xscale Kiểu Double – Hệ số Scale theo phương X

Yscale Kiểu Double – Hệ số Scale theo phương Y

Zscale Kiểu Double – Hệ số Scale theo phương Z

Kiểu Double – Góc quay của bản vẽ tham khảo ngoài khi
RotationAngle
chèn vào bản vẽ (Đơn vị : Radians)

Kiểu Boolean – Điều khiển bản vẽ tham khảo ngoài khi được
gán vào bản vẽ.
 TRUE : Bản vẽ tham khảo ngoài sẽ không được hiển thị
khi bản vẽ “được gán tham khảo” này trở thành bản vẽ
Overlay
tham khảo của bản vẽ khác.
 FALSE : Bản vẽ tham khảo ngoài sẽ được hiển thị khi
bản vẽ “được gán tham khảo” này trở thành bản vẽ
tham khảo của bản vẽ khác.

 Ví dụ

Advanced VBA for AutoCad Page 34


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

Advanced VBA for AutoCad Page 35


Designing Team – Engineering Department Đinh Văn Tráng

3.8.2. Gỡ bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Detach


Chúng ta có thể gỡ bỏ tham chiếu ngoài bằng phương thức Detach.Khi gỡ bỏ tham chiếu
ngoài tất cả các đối tượng ràng buộc với tham chiếu ngoài như LineTypes, TextStyles,
DimStyles, Layers… cũng sẽ bị gỡ bỏ.

 Ví dụ

3.8.3. Tải lại tham chiếu ngoài – Phương thức Reload


Nếu bản vẽ tham chiếu ngoài có sự thay đổi và việc cập nhật lại những thay đổi đó trong
bản vẽ “được gán tham khảo” là một sự cần thiết.Để cập nhật lại những thay đổi này
chúng ta sử dụng phương thức Reload.

Nếu bản vẽ tham khảo ngoài bị loại bỏ (Bằng phương thức UnLoad) thì có thể được tải lại
bất kỳ lúc nào bằng phương thức Reload.

Advanced VBA for AutoCad Page 36


Designing Team – Engineering Department Đinh Văn Tráng

 Ví dụ

3.8.4. Loại bỏ tham chiếu ngoài ra khỏi bản vẽ - Phương thức Unload
Sử dụng phương thức Unload để loại bỏ một tham khảo ngoài ra khỏi bản vẽ.Khi loại bỏ
một tham chiếu ngoài thì tốc độ làm việc của AutoCad sẽ được tăng cường do không phải
đọc và hiển thị các thông tin hình học hay các ký hiệu không cần thiết.Các đối tượng hình
học và các thông tin liên quan đến tham khảo ngoài sẽ không được thể hiện trên bản vẽ hiện
tại cho đến khi tham khảo ngoài được tải lại.

 Chú ý : Cần phân biệt sự khác nhau giữa phương thức Detach và Unload

 Phương thức Unload : Chỉ loại bỏ tạm thời tham chiếu ngoài ra khỏi bản vẽ và
chúng ta có thể tải lại tham chiếu ngoài này bất cứ khi nào bằng phương thức Reload.

 Phương thức Detach : Sẽ loại bỏ tham hoàn toàn tham chiếu ngoài ra khỏi bản vẽ và
chỉ có thể sử dụng phương thức AddExternalReference để gắn lại tham chiếu ngoài.

Advanced VBA for AutoCad Page 37


Designing Team – Engineering Department Đinh Văn Tráng

3.8.5. Ràng buộc tham chiếu ngoài – Phương thức Bind


Khi sử dụng phương thức Bind sẽ chuyển tham chiếu ngoài trở thành một “Block
Refrerence” của bản vẽ.Lúc này bản vẽ “được gán tham khảo” sẽ không được cập nhật nếu
bản vẽ tham chiếu bị thay đổi.Quá trình này sẽ liên kết toàn bộ cơ sở dữ liệu trong bản vẽ
tham khảo (bao gồm cả bảng ký hiệu) với bản vẽ hiện hành.Bảng ký hiệu là các đối tượng
phi hình học, ví dụ như khối, kiểu kích thước, lớp, kiểu chữ...

Phương thức Bind chỉ có một tham số là PrefixName. Nếu tham số này được

gán giá trị TRUE thì tên trong bảng ký hiệu của bản vẽ tham chiếu ngoài sẽ được

thêm tiền tố<tên khối>$x$ trong bản vẽ hiện tại, trong đó x : là sốnguyên bất kỳ

được tự động tăng để tránh ghi đè lên định nghĩa khối đã có. Nếu tham số này nhận

giá trị FALSE thì tên trong bảng ký hiệu sẽ được ghép chung vào bản vẽ hiện tại mà

không có tiền tố. Nếu có các tên trùng nhau thì AutoCAD sẽ sửdụng ký hiệu vừa

được định nghĩa trong bản vẽ.

 Ví dụ

Advanced VBA for AutoCad Page 38


Designing Team – Engineering Department Đinh Văn Tráng

Chương 4

LIÊN KẾT EXCEL VỚI AUTOCAD

Nội dung chương :

- Cách liên kết Excel với AutoCad

- Một số ví dụ về xử lý hàng loạt bản vẽ thông qua Excel

Advanced VBA for AutoCad Page 39


Designing Team – Engineering Department Đinh Văn Tráng

4.1. Cách liên kết Excel với AutoCad


Bước 1: Thêm thư viện AutoCad vào trong môi trường lập trình VBA IDE
Từ trình đơn Tools References  Tìm đến thư viện Autocad  Đánh dấu chọn OK

Tùy thuộc vào Version Autocad mà chúng ta sẽ đánh dấu chọn cho phù hợp
Bước 2 : Đoạn Code dùng để liên kết Excel với AutoCad

Advanced VBA for AutoCad Page 40


Designing Team – Engineering Department Đinh Văn Tráng

4.2. Một số ví dụ về thao tác hàng loạt bản vẽ.

Ví dụ tạo tiện ích để chèn 1 Block vào nhiều bản vẽ:

Giao diện của tiện ích như sau:

Bước 1: Xây dựng mã code cho Button “Folder Path”

Bước 2: Xây dựng mã Code cho Button “Reset Data”

Advanced VBA for AutoCad Page 41


Designing Team – Engineering Department Đinh Văn Tráng

Bước 3: Xây dựng mã Code cho Button “Get File Name”

Advanced VBA for AutoCad Page 42


Designing Team – Engineering Department Đinh Văn Tráng

Bước 4: Xây dựng mã Code cho Button “Insert Block”

Advanced VBA for AutoCad Page 43

You might also like