Tải bản đầy đủ (.pdf) (5 trang)

Giáo trình hướng dẫn phân tích ứng dụng các phương pháp lập trình trên autocad p1 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (790.64 KB, 5 trang )

C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


V
V
:
:


L
L


P
P


T
T
R


R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N
N


A
A
U
U
T
T
O
O
C
C
A

A
D
D



203

FileType Tham số tuỳ chọn, là hằng số xác định kiểu tệp bản vẽ sẽ được lưu. Các hằng số
có thể là:
acR14_DWG : tệp AutoCAD Release14/LT97 DWG (*.dwg)
acR14_DXF : tệp AutoCAD Release14/LT97 DXF (*.dxf)
acR15_DWG : tệp AutoCAD 2000 DWG (*.dwg)
acR15_DXF : tệp AutoCAD 2000 DXF (*.dxf)
acR15_Template: tệp AutoCAD 2000 Drawing Template File (*.dwt)
acNative : tệp bản vẽ được lưu với kiểu tệp mới nhất ứng với phiên bản
AutoCAD hiện hành. Trong AutoCAD 2002, giá trị này tương đương với hằng số
acR15_DWG.
Ví dụ sau sẽ lưu bản vẽ hiện hành sử dụng tên tệp sẵn có đồng thời cũng lưu bản vẽ với một tên
khác.
Sub SaveActiveDrawing()
’ Lưu bản vẽ hiện hành sử dụng tên tệp sẵn có
ThisDrawing.Save
’ Lưu bản vẽ sử dụng tên khác
ThisDrawing.SaveAs "MyDrawing.dwg"
End Sub
Thông thường, trước khi thoát khỏi phiên làm việc của AutoCAD hoặc trước khi đóng bản vẽ,
người lập trình thường muốn kiểm tra xem bản vẽ đã được lưu đổi hay chưa. Để làm được việc
này, có thể sử dụng thuộc tính Saved có trong đối tượng chứa bản vẽ đó (đối tượng Document
tương ứng).

Ví dụ sau sẽ kiểm tra xem bản vẽ đã được lưu hay chưa và s
ẽ hỏi người dùng xem có đồng ý để
lưu bản vẽ hay không, nếu không đồng ý, sẽ thoát khỏi chương trình. Nếu đồng ý, sẽ sử dụng
phương thức Save để lưu bản vẽ hiện hành.
Sub TestIfSaved()
If Not (ThisDrawing.Saved) Then
If MsgBox("Do you wish to save this drawing?", _
vbYesNo) = vbYes Then
ThisDrawing.Save
End If
End If
End Sub
Đóngbảnvẽ
Để đóng bản vẽ, sử dụng phương thức Close có trong đối tượng Document. Cú pháp của
phương thức Close như sau:
object.Close([SaveChanges][, FileName])
Tham số Giải thích
object Đối tượng kiểu Document, là đối tượng chứa bản vẽ cần đóng.
SaveChanges Tham số tuỳ chọn, xác định xem có cần phải lưu bản vẽ lại trước khi đóng hay
không. Nếu bằng TRUE, sẽ lưu bản vẽ, ngược lại là FALSE. Giá trị mặc định của
tham số này là TRUE.
Giáo trình hướng dẫn phân tích ứng dụng các
phương pháp lập trình trên autocad


204
FileName Tham số tuỳ chọn, xác định tên của bản vẽ sẽ được lưu trong trường hợp bản vẽ
chưa được lưu lần nào.
Trong trường hợp chưa có sự thay đổi trong bản vẽ, các tham số trên được bỏ qua và phương
thức Close chỉ đơn giản là đóng bản vẽ đang được tham chiếu. Nếu đã có sự thay đổi trong bản

vẽ, tham số SaveChanges sẽ xác định xem bản vẽ có được lưu hay không:
Ø
Ø

Nếu SaveChanges bằng TRUE và bản vẽ chưa được lưu lần nào, tham số FileName sẽ
được dùng để làm tên tệ
p lưu bản vẽ. Nếu không có tham số FileName, bản vẽ được lưu
với tên mặc định trong thư mục hiện hành của AutoCAD. Trong trường hợp bản vẽ đã
được lưu trước đó, tham số FileName sẽ bị bỏ qua.
Ø
Ø

Nếu SaveChanges bằng FALSE, bản vẽ sẽ được đóng mà không được lưu.
Ví dụ sau sẽ hỏi người dùng có muốn đóng bản vẽ hay không, sau đ
ó kiểm tra xem tệp đã được
lưu lần đầu chưa, tiếp đó mới thực sự đóng bản vẽ lại sử dụng phương thức Close có trong đối
tượng bản vẽ hiện hành.
Sub CloseDrawing()
If MsgBox("Bạn có muốn đóng bản vẽ: " & ThisDrawing.WindowTitle, _
vbYesNo + vbQuestion) = vbYes Then
If ThisDrawing.FullName <> "" Then
ThisDrawing.Close SaveChanges:=True ‘←Đóng bản vẽ hiện hành
Else
MsgBox(ThisDrawing.Name & " chưa được lưu nên không thể đóng!")
End If
End If
End Sub
Ngoài ra, người lập trình có thể sử dụng phương thức Close có trong tập đối tượng Documents
để đóng tất cả các bản vẽ hiện đang có trong phiên làm việc hiện hành của AutoCAD. Phương
thức này thực hiện tương tự như khi sử dụng phương thức Close cho từng đối tượng bản vẽ với

tham số SaveChanges được gán bằng TRUE. Do không kiểm soát được quá trình đóng của
từng bản vẽ nên phươ
ng thức Close của tập đối tượng Documents nên hạn chế sử dụng.
5.1.2. Khởi động và thoát khỏi chương trình AutoCAD
KhởiđộngchươngtrìnhAutoCAD
Do được thực thi bên trong AutoCAD nên các chương trình viết bằng VBA trong AutoCAD
không cần phải thực hiện thao tác khởi động chương trình AutoCAD. Tuy nhiên, khi người
dùng viết mã lệnh từ các ứng dụng nền khác, chẳng hạn như viết chương trình bằng VBA trong
Excel, thì cần thiế
t phải viết mã lệnh khởi động chương trình AutoCAD. Thực chất của đoạn
mã lệnh này là tạo ra đối tượng Application.
Việc khởi động chương trình AutoCAD từ một chương trình ngoài cũng cần phải thực hiện các
thao tác tương tự như khi khởi động chương trình Excel từ chương trình ngoài (tham khảo mục
“Khởi động Excel từ chương trình khác” trang 149). Ở đây, người dùng sẽ phải tham chiếu
đến
thư viện mở rộng của AutoCAD với tên là “AutoCAD 2000 Object Library”. Với các phiên
bản của chương trình AutoCAD khác nhau thì tên thư viện mở rộng có thể khác nhau.
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G



V
V
:
:


L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T
R

R
Ê
Ê
N
N


A
A
U
U
T
T
O
O
C
C
A
A
D
D



205


Hình V-8: Hộp thoại References trong VBAIDE của Excel.
Đoạn mã lệnh sau sẽ khởi động chương trình AutoCAD từ VBA trong Excel.
Sub ConnectToAcad()

Dim acadApp As AcadApplication
On Error Resume Next

Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If
acadApp.Visible = True
‘====== Hết đoạn chương trình khởi động AutoCAD ======

‘ Hiển thị tên chương trình và phiên bản của AutoCAD
MsgBox "Now running " + acadApp.Name + _
" version " + acadApp.Version
End Sub
ThoátkhỏichươngtrìnhAutoCAD
Việc thoát khỏi AutoCAD rất đơn giản, chỉ cần thực hiện phương thức Quit có trong đối tượng
Applicaton. Phương thức này sẽ đóng tất cả các bản vẽ và dự án VBA trong AutoCAD lại, nếu
có bản vẽ hoặc dự án nào chưa được lưu, nó sẽ nhắc người dùng lưu bản vẽ, sau đó mới thực sự
thoát khỏ
i AutoCAD.
Đoạn mã lệnh sau sẽ đóng chương trình AutoCAD.
Sub Thoat_AutoCAD()
Application.Quit



206

End Sub
5.1.3. Sử dụng các lệnh sẵn có của AutoCAD
Các lệnh sẵn có của AutoCAD có thể được sử dụng từ chương trình VBA thông qua phương
thức SendCommand của đối tượng Document tương ứng. Ví dụ sau sẽ tạo ra một hình tròn
trong bản vẽ hiện hành của AutoCAD với việc sử dụng lệnh Circle và Zoom của AutoCAD:
Sub Tao_Hinh_Tron()
ThisDrawing.SendCommand "_Circle" & vbCr & "2,2,0" & vbCr & "4" &
vbCr
ThisDrawing.SendCommand "_zoom" & vbCr & "a" & vbCr
End Sub
Thực chất của phương thức SendCommand là yêu cầu AutoCAD thực thi một lệnh từ dòng
lệnh trong AutoCAD. Ký tự
vbCr tương đương với việc bấm phím Enter khi thao tác trực tiếp
trong AutoCAD.
5.1.4. Thu phóng màn hình bản vẽ (zoom)
Thu phóng màn hình bản vẽ trong AutoCAD được thực hiện thông qua các phương thức có
trong đối tượng Application. Các phương thức này tương ứng với lệnh
zoom trong AutoCAD.
Nếu có nhiều bản vẽ đang được mở trong AutoCAD thì các phương thức này chỉ có tác dụng
đối với bản vẽ hiện hành.
Dưới đây là các phương thức dùng để thu phóng màn hình bản vẽ trong AutoCAD.
ZoomExtents
Phương thức này sẽ phóng màn hình bản vẽ theo vùng bao của tất cả các đối tượng trong bản
vẽ, nghĩa là giúp ta có thể quan sát được tất cả các đối tượng hình học hiện đang có với kích
thướ
c lớn nhất. Đoạn mã ví dụ sau sẽ thực hiện phương thức ZoomExtents:
Application.ZoomExtents
ZoomAll

Trong chế độ 2D, phương thức này sẽ phóng màn hình bản vẽ theo giới hạn của bản vẽ hoặc
theo vùng bao tất cả các đối tượng tuỳ thuộc vào vùng nào rộng hơn. Còn trong chế độ 3D,
phương thức này tương đương với phương thức ZoomExtents.
Đoạn mã sau phóng màn hình bản vẽ sử dụng phương thức ZoomAll:
Application.ZoomAll
ZoomPrevious
Phương thức này sẽ chuyển màn hình bản vẽ về trạng thái trước đó. Khi người dùng thực hiện
lệnh Pan hoặc các lệnh liên quan đến thu phóng màn hình bản vẽ, AutoCAD sẽ tự động lưu
trạng thái màn hình bản vẽ. Phương thức này có thể khôi phục lại trạng thái màn hình đã được
lưu đến 10 cấp.
Đoạn mã sau khôi phục lại trạng thái màn hình bản vẽ sử dụng phương thứ
c ZoomPrevious:
Application.ZoomPrevious
ZoomPickWindow
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


V
V

:
:


L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê

N
N


A
A
U
U
T
T
O
O
C
C
A
A
D
D



207

Phương thức này sẽ phóng màn hình bản vẽ theo một hình chữ nhật do người dùng chọn trên
màn hình.
Đoạn mã sau minh hoạ cách sử dụng phương thức này:
Application.ZoomPickWindow
ZoomWindow
Phương thức này thực hiện thu phóng màn hình bản vẽ theo một hình chữ nhật được xác định
trước. Cú pháp của phương thức này như sau:

Application.ZoomWindow Dưới_Trái, Trên_Phải
Tham số Giải thích
Dưới_Trái Mảng 3 phần tử kiểu Double, xác định toạ độ điểm ở góc dưới bên trái của hình chữ
nhật sẽ thực hiện phóng đại.
Trên_Phải Mảng 3 phần tử kiểu Double, xác định toạ độ điểm ở góc trên bên phải của hình chữ
nhật sẽ thực hiện phóng đại.
Ví dụ sau thực hiện thu phóng màn hình bản vẽ theo hình chữ nhật có toạ độ của các điểm ở
góc lần lượt là (1.3, 7.8, 0) và (13.7, -2.6, 0):
Sub VD_ZoomWindow()
‘Khai báo biến để chứa toạ độ các điểm góc
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
‘ Gán toạ độ cho các điểm góc
point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
‘ Thực hiện phương thức ZoomWindow
ZoomWindow point1, point2
End Sub
ZoomScaled
Phương thức này thu phóng màn hình bản vẽ theo một tỉ lệ được xác định trước. Cú pháp của
phương thức này như sau:
Application.ZoomScaled Scale[, ScaleType]
Tham số Giải thích
Scale Tham số xác định tỉ lệ thu phóng màn hình bản vẽ.
ScaleType Tham số tuỳ chọn, xác định cách thức áp dụng hệ số tỉ lệ. Có thể bằng một trong các
hằng số sau:
acZoomScaledAbsolute : tương đối so với vùng vẽ (drawing limits).
acZoomScaledRelative : tương đối so với màn hình bản vẽ hiện hành.
acZoomScaledRelativePSpace : tương đối so với đơn vị của không gian mô
hình.

×