1. Trang chủ
  2. » Giáo án - Bài giảng

Phát triển AutoCAD bằng ActiveX & VBA - Chương 3: Điều khiển môi trường AutoCAD

10 20 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 709,21 KB

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

Nội dung

Bằng cách sử dụng các phương thức và thuộc tính trong đối tượng Application, ta có thể thay đổi vị trí, kích thước và tính nhìn thấy của cửa sổ ứng dụng.. Ngoài ra ta cũng có thể thu n[r]

Trang 1

ĐIỀU KHIỂN MÔI TRƯỜNG AutoCAD

3 Trong chương này

ƒ Mở, Lưu và Đóng các bản

vẽ

ƒ Thiết lập các lựa chọn

trong AutoCAD

ƒ Điều khiển cửa sổ ứng

dụng

ƒ Điều khiển cửa sổ bản vẽ

ƒ Thiết lập lại các đối

tượng hiện hành

ƒ Gán và lấy biến hệ thống

ƒ Vẽ với độ chính xác cao

ƒ Nhắc người dùng nhập

dữ liệu

ƒ Truy xuất dòng lệnh của

AutoCAD

ƒ Thao tác khi không mở

bản vẽ nào

ƒ Nhập vào các định dạng

khác

ƒ Xuất sang các định dạng

khác

Chương này trình bày những vấn đề cơ bản cần biết

để xây dựng một ứng dụng trong AutoCAD cũng như sẽ giải thích rõ cách thức điều khiển môi trường AutoCAD và cách làm việc hiệu quả trong môi trường này

Trang 2

1 Mở, Lưu và Đóng các bản vẽ

Tập Documents và đối tượng Document cho phép thực hiện các hàm liên quan đến tệp trong AutoCAD

Để tạo một bản vẽ mới, hoặc mở một bản vẽ đã có, ta phải sử dụng các phương thức trong tập đối tượng Documents Phương thức Add sẽ tạo một bản vẽ mới và thêm bản vẽ đó vào tập đối tượng Documents Phương thức Open sẽ mở một bản vẽ đã

có Ngoài ra còn có phương thức Close trong tập đối tượng Documents dùng để đóng tất các các bản vẽ đang mở trong phiên làm việc của AutoCAD

Để lưu, nhập hoặc xuất một bản vẽ, ta sử dụng các phương thức của đối tượng Document: Save, Save As, Import và Export

1.1 Mở bản vẽ

Ví dụ sau sử dụng phương thức Open để mở một bản vẽ đã có Hàm Dir của Visual Basic dùng để kiểm tra sự tồn tại của tệp trước khi tiến hành mở bản vẽ Ta nên thay đổi tên bản vẽ hoặc đường dẫn để chỉ đến một bản vẽ đã có trong hệ thống

Sub Ch3_OpenDrawing()

Dim dwgName As String dwgName = "c:\Program Files\acad2000\sample\campus.dwg"

If Dir(dwgName) <> "" Then

ThisDrawing.Application.Documents.Open dwgName Else

MsgBox "File " & dwgName & " does not exist."

End If End Sub

1.2 Tạo bản vẽ mới

Ví dụ này sử dụng phương thức Add để tạo một bản vẽ mới dựa trên khuôn thức mặc định

Sub Ch3_NewDrawing()

Dim docObj As AcadDocument Set docObj = ThisDrawing.Application.Documents.Add End Sub

1.3 Lưu bản vẽ

Có thể dụng phương thức Save hoặc Save As để lưu bản vẽ

Lưu bản vẽ hiện hành

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 Ch3_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

Trang 3

Thông thường, khi ta muốn kiểm tra xem bản vẽ hiện hành có lưu những thay đổi hay chưa trước khi thoát khỏi phiên làm việc của AutoCAD hoặc khi bắt đầu một bản vẽ mới, hãy sử dụng thuộc tính Saved để kiểm tra chắc chắn rằng bản vẽ đã lưu những thay đổi trước đó

Kiểm tra xem bản vẽ đã lưu hay chưa

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 Ch3_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

2 Thiết lập các lựa chọn trong AutoCAD

Có chín đối tượng gắn với các lựa chọn khác nhau, mỗi đối tượng tương ứng với một thẻ trong hộp thoại Options Thông qua các đối tượng này, ta có thể truy cập được tất cả các dữ liệu về lựa chọn được lưu giữ trong hộp thoại Options Do vậy, người lập trình có thể tuỳ biến các thiết lập trong AutoCAD thông qua các thuộc tính có trong những đối tượng đó Chín đối tượng này bao gồm:

ƒ PreferencesDisplay

ƒ PreferencesDrafting

ƒ PreferencesFiles

ƒ PreferencesOpenSave

ƒ PreferencesOutPut

ƒ PreferencesProFile

ƒ PreferencesSelection

ƒ PreferencesSystem

ƒ PreferencesUser Tất cả các đối tượng trên đều có thể được truy xuất thông qua đối tượng Preferences Để có được quyền truy cập đến đối tượng Preferences, ta sử dụng thuộc tính Preferences của đối tượng Application như sau:

Truy xuất đối tượng Preference

Dim acadPref As AcadPreferences Set acadPref = ThisDrawing.Application.Preferences

Sau đó, người lập trình có thể truy xuất đến bất kỳ đối tượng Preferences nào sử dụng các thuộc tính Display, Drafting, Files, OpenSave, Output, Profile, Selection,

Trang 4

System và User Ví dụ: người lập trình có thể điều chỉnh kích thước của dấu thập con trỏ với thuộc tính CursorSize

Thiết lập kích thước dấu thập con trỏ thành toàn màn hình

Ví dụ này thiết lập kích thước dấu thập con trỏ thành toàn màn hình

acadPref.Display.CursorSize=100

Người lập trình có thể muốn ứng dụng của mình kích hoạt hoặc vô hiệu hoá một số tính năng nào đó trong giao diện AutoCAD

Hiển thị screen menu 1 và các thanh cuộn

Ví dụ sau đây kích hoạt screen menu và vô hiệu hoá các thanh cuộn sử dụng thuộc tính DisplayScreenMenu và DisplayScrollBars

acadPref.Display.DisplayScreenMenu = True

acadPref.Display.DisplayScrollBars = False

2.2 Lựa chọn về CSDL

Ngoài 9 đối tượng Preferences, đối tượng DatabasePrefernces bao gồm những lựa chọn được lưu trong bản vẽ Đối tượng tách biệt này được dùng để chứa các lựa chọn lưu cùng bản vẽ sử dụng cho các ứng dụng truy xuất vào trong bản vẽ AutoCAD mà không cần phải có trước chương trình AutoCAD (ứng dụng ObjectDBXTM2)

Đối tượng DatabasePreferences nằm trong đối tượng Document

3 Điều khiển cửa sổ ứng dụng

Khả năng điều khiển cửa sổ ứng dụng đem đến cho người phát triển ứng dụng tính linh hoạt để tạo ra những chương trình thật hiệu quả và thông minh Sẽ có những lúc ứng dụng cần phải thu nhỏ cửa sổ AutoCAD, có lẽ là lúc chương trình thực hiện các thao tác trong các chương trình khác, chẳng hạn như Excel Thêm nữa, ta cũng cần phải thường xuyên kiểm tra trạng thái của cửa sổ ứng dụng AutoCAD trước khi thực hiện các thao tác, chẳng hạn như nhắc nhập liệu từ người dùng

Bằng cách sử dụng các phương thức và thuộc tính trong đối tượng Application, ta

có thể thay đổi vị trí, kích thước và tính nhìn thấy của cửa sổ ứng dụng Ngoài ra ta cũng có thể thu nhỏ hoặc phóng to cửa sổ ứng dụng, kiểm tra trạng thái hiện hành của cửa sổ

1 Screen menu: là một dạng trình đơn được tổ chức theo phương thẳng đứng của màn hình (thường

ở bên phải) để thực hiện các chức năng hỗ trợ cho lệnh đang thực thi của AutoCAD

2 ObjectDBX TM, hiện nay đã được đổi tên thành RealDWG, là thư viện phần mềm cho phép người

Trang 5

3.1 Thay đổi vị trí và kích thước của cửa sổ ứng dụng

Người lập trình còn có thể sử dụng đối tượng Application để điều chỉnh vị trí và kích thước của cửa sổ ứng dụng AutoCAD

Định vị trí cửa sổ ứng dụng

Ví dụ dưới đây sử dụng thuộc tính WindowTop, WindowLeft, Width, và Height để định vị trí của cửa sổ ứng dụng AutoCAD ở góc trên bên trái của màn hình và định kích thước của cửa sổ là 400 điểm theo chiều rộng và 400 điểm theo chiều cao

Sub Ch3_PositionApplicationWindow()

ThisDrawing.Application.WindowTop = 0 ThisDrawing.Application.WindowLeft = 0 ThisDrawing.Application.Width = 400 ThisDrawing.Application.Height = 400 End Sub

3.2 Thu phóng cửa sổ ứng dụng AutoCAD

Cửa sổ AutoCAD có thể được thu nhỏ hoặc phóng to bằng cách sử dụng thuộc tính WindowState Những ví dụ sau minh hoạ điều này

Phóng to cửa sổ ứng dụng

ThisDrawing.Application.WindowState = acMax

Thu nhỏ cửa sổ ứng dụng

ThisDrawing.Application.WindowState = acMin

3.3 Xác định trạng thái hiện hành của cửa sổ AutoCAD

Trạng thái hiện hành của cửa sổ AutoCAD có thể xác định được bằng cách sử dụng thuộc tính WindowState

Xác định trạng thái hiện hành của cửa sổ ứng dụng

Ví dụ sau sẽ truy vấn trạng thái của cửa sổ ứng dụng và hiển thị trạng thái cửa sổ trong một hộp thông báo

Sub Ch3_CurrentWindowState() Dim CurrWindowState As Integer Dim msg As String

CurrWindowState = ThisDrawing.Application.WindowState msg = Choose _

(CurrWindowState, "Bình thường", "Thu nhỏ", "Phóng to") MsgBox "Trạng thái hiện hành của cửa sổ là: " + msg

End Sub

3.4 Ẩn cửa sổ ứng dụng

Có thể ẩn cửa sổ ứng dụng khỏi màn hình của người dùng

Ẩn cửa sổ ứng dụng

Đoạn mã sau sử dụng thuộc tính Visible để ẩn cửa sổ ứng dụng:

ThisDrawing.Application.Visible = False

Trang 6

4 Điều khiển cửa sổ bản vẽ

Cũng giống như cửa sổ ứng dụng AutoCAD, ta có thể thu nhỏ, phóng to, định lại vị trí, thay đổi kích thước và kiểm tra trạng thái của bất kỳ một cửa sổ bản vẽ nào Tuy nhiên, ta còn có thể thay đổi cách thức thể hiện bản vẽ trong cửa sổ bằng cách sử dụng các phương thức về cảnh nhìn (views), khung nhìn (viewports) và thu phóng (zooming)

AutoCAD ActiveX cung cấp nhiều cách thức thể hiện bản vẽ Ta có thể điều khiển

sự hiển thị của bản vẽ để di chuyển nhanh đến những vùng khác nhau của bản vẽ trong khi có thể theo dõi toàn bộ hiệu ứng của các thay đổi Ngoài ra cũng có thể thay đổi độ phóng đại của bản vẽ hoặc trượt bản vẽ để định lại vị trí quan sát trong vùng đồ hoạ, lưu cảnh nhìn và khôi phục lại khi cần để in hoặc tham khảo đến một chi tiết cụ thể nào đó, hoặc thể hiện vài cảnh nhìn cùng một lúc bằng cách phân màn hình thành vài khung nhìn xếp cạnh nhau

4.1 Thay đổi vị trí và kích thước của cửa sổ bản vẽ

Sử dụng đối tượng Document để điều chỉnh vị trí và kích thước của các cửa sổ bản

vẽ

Định vị trí của cửa sổ bản vẽ

Ví dụ sau sử dụng thuộc tính Width và Height để thiết lập kích thước cửa sổ bản vẽ hiện hành với bề rộng 400 điểm và chiều cao 400 điểm

ThisDrawing.Width = 400

ThisDrawing.Height = 400

4.2 Thu phóng cửa sổ bản vẽ

Cửa sổ bản vẽ có thể được thu nhỏ hoặc phóng to sử dụng thuộc tính WindowState

Phóng to cửa sổ bản vẽ hiện hành

ThisDrawing.WindowState = acMax

Thu nhỏ cửa sổ bản vẽ hiện hành

ThisDrawing.WindowState = acMin

4.3 Xác định trạng thái hiện hành của cửa sổ bản vẽ

Có thể xác định cửa sổ hiện hành của cửa sổ bản vẽ bằng cách sử dụng thuộc tính

WindowState

Xác định trạng thái hiện hành của cửa sổ bản vẽ hiện hành

Sub Ch3_CurrentWindowState()

Dim CurrWindowState As Integer

Dim msg As String

CurrWindowState = ThisDrawing.WindowState

msg = Choose(CurrWindowState, "Bình thường", "Thu nhỏ", "Phóng to")

MsgBox "Trạng thái hiện hành của cửa sổ bản vẽ là " + msg

End Sub

Trang 7

4.4 Sử dụng chức năng thu phóng

Cảnh nhìn là sự quan sát bản vẽ với độ phóng đại, vị trí và hướng nhất định Cách phổ biến nhất để thay đổi cảnh nhìn là sử dụng một trong rất nhiều lựa chọn trong lệnh Zoom để tăng hay giảm kích thước hình ảnh hiển thị trong vùng đồ hoạ

Phóng hình ảnh ra để quan sát chi tiết gọi là phóng to Còn thu hình ảnh lại để quan sát tổng quát hơn gọi là thu nhỏ

Phóng to không thay đổi kích thước tuyệt đối của bản vẽ, chỉ thay đổi kích thước thể hiện trong vùng đồ hoạ AutoCAD đưa ra nhiều cách để thay đổi cảnh nhìn, bao gồm xác định vùng hiển thị, phóng đại đến một tỷ lệ nhất định và thể hiện toàn bộ bản vẽ

4.4.1 Xác định cửa sổ phóng đại

Người lập trình có thể nhanh chóng phóng đại một vùng trên bản vẽ bằng cách xác định góc định vị cho vùng đó

Cửa sổ phóng đại

Vùng được xác định bằng góc định vị đã lựa chọn sẽ được canh vào giữa vùng đồ hoạ nếu vùng phóng đại không có kích thước tỷ lệ với khung nhìn hiện hành

Để thực hiện phóng đại một vùng theo đường bao cho trước, ta có thể sử dụng một trong hai phương thức ZoomWindow hoặc ZoomPickWindow Phương thức ZoomWindow cho phép lập trình để định nghĩa hai điểm để làm cửa sổ bao Còn phương thức ZoomPickWindow lại yêu cầu người dùng phải chọn hai điểm trên màn hình và hai điểm này sẽ trở thành điểm để làm cửa sổ bao

Phóng đại bản vẽ hiện hành theo một cửa sổ bao xác định bởi hai điểm

Sub Ch3_ZoomWindow() MsgBox "Dùng phương thức ZoomWindow với:" & vbCrLf & _ "1.3, 7.8, 0" & vbCrLf & _

"13.7, -2.6, 0", , "ZoomWindow"

Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0

Trang 8

point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0

ThisDrawing.Application.ZoomWindow point1, point2

MsgBox " Dùng phương thức ZoomPickWindow", , "ZoomPickWindow" ThisDrawing.Application.ZoomPickWindow

End Sub

4.4.2 Tỷ lệ của cảnh nhìn

Nếu cần tăng hoặc giảm mức phóng đại của hình ảnh theo một tỷ lệ chính xác, ta có thể thực hiện theo 3 cách:

ƒ Tương đối so với vùng giới hạn vẽ

ƒ Tương đối so với cảnh nhìn hiện hành

ƒ Tương đối so với đơn vị trang in

Khi thay đổi tỷ lệ cảnh nhìn tương đối so với vùng giới hạn vẽ, chỉ cần nhập giá trị bằng 1 để hiện tất cả giới hạn của vùng vẽ trong vùng đồ hoạ và tất cả sẽ được canh giữa theo điểm giữa của cảnh nhìn trước đó Để phóng to hay thu nhỏ, chỉ cần nhập vào số lớn hơn hoặc nhỏ hơn 1 Ví dụ, nhập vào số 2 sẽ cho cảnh nhìn lớn gấp 2 lần

so với khi quan sát toàn bộ bản vẽ hoặc 0.5 khi cảnh nhìn chỉ bằng một nửa so với khi quan sát toàn bộ bản vẽ

Khi thay đổi tỷ lệ cảnh nhìn tương đối so với cảnh nhìn hiện hành, chỉ cần nhập vào

số 2 để nhân đôi hay 0.5 để hiện chỉ một nửa kích thước so với cảnh nhìn hiện hành

Và đương nhiên nhập vào số 1 thì sẽ không có hiệu ứng gì

Khi thay đổi tỷ lệ cảnh nhìn tương đối so với đơn vị trang in, giá trị tỷ lệ nhập vào

sẽ có thể tăng hoặc giảm cảnh nhìn tương đối so với tỷ lệ hiện tại trong không gian

in và được sử dụng để thay đổi tỷ lệ của khung nhìn trước khi in

4.4.2.1 Tạo cảnh nhìn theo tỷ lệ

Để tạo cảnh nhìn theo tỷ lệ, phải sử dụng phương thức ZoomScaled Phương thức này cần có hai thông số đầu vào: tỷ lệ và loại tỷ lệ Tỷ lệ: đơn giản chỉ là một con

số Việc xử lý con số này trong AutoCAD phụ thuộc vào loại tỷ lệ được lựa chọn Loại tỷ lệ sẽ xác định cách thức cần thể hiện theo tỷ lệ, bao gồm: tương đối so với vùng giới hạn vẽ, so với cảnh nhìn hiện hành, hay so với đơn vị trang in Để thay đổi tỷ lệ tương đối so với vùng giới hạn vẽ, ta sử dụng hằng số acZoomScaledAbsolute Để thay đổi tỷ lệ so với cảnh nhìn hiện hành, sử dụng hằng số acZoomScaledRelative Để thay đổi tỷ lệ so với đơn vị trang in, sử dụng hằng số acZoomScaledRelativePSpace

Phóng đại bản vẽ hiện hành với tỷ lệ cho trước

Sub Ch3_ZoomScaled()

MsgBox "Perform a ZoomScaled using:" & vbCrLf & _

"Scale Type: acZoomScaledRelative" & vbCrLf & _

"Scale Factor: 2", , "ZoomScaled"

Dim scalefactor As Double Dim scaletype As Integer

Trang 9

ThisDrawing.Application.ZoomScaled scalefactor, scaletype End Sub

4.4.3 Căn giữa

Ta có thể di chuyển một điểm nào đó trong bản vẽ vào giữa vùng đồ hoạ Phương thức ZoomCenter rất hữu ích trong việc thay đổi tỷ lệ hiển thị của đối tượng và di chuyển đối tượng đó vào giữa khung nhìn Ví dụ sau sẽ làm rõ cách sử dụng lệnh ZoomCenter để hiển thị đối tượng mà vẫn giữ nguyên tỷ lệ và ở mức phóng đại gấp hai lần:

Điểm sẽ hiện ở

trọng tâm

Cảnh nhìn hiện hành ZoomCenter giữ nguyên tỷ lệ

ZoomCenter sử dụng tỷ lệ 2x

Bằng cách sử dụng ZoomCenter, ta có thể xác định tỷ lệ bằng cách nhập vào giá trị phóng đại so với cảnh nhìn hiện hành

Phóng đại bản vẽ hiện tại với chế độ căn giữa

Sub Ch3_ZoomCenter()

MsgBox "Perform a ZoomCenter using:" & vbCrLf & _

"Center 3, 3, 0" & vbCrLf & _

"Magnification: 10", , "ZoomCenter"

Dim Center(0 To 2) As Double Dim magnification As Double Center(0) = 3: Center(1) = 3: Center(2) = 0 magnification = 10

ThisDrawing.Application.ZoomCenter Center, magnification End Sub

4.4.3.2 Hiển thị vùng giới hạn vẽ và vùng đối tượng

Để hiển thị vùng quan sát dựa trên biên của bản vẽ hoặc vùng đối tượng trong bản

vẽ, ta sử dụng phương thức ZoomAll, ZoomExtents, hoặc ZoomPrevious

Trang 10

Phương thức ZoomAll sẽ hiển thị toàn bộ bản vẽ Nếu có đối tượng vẽ ở ngoài vùng giới hạn vẽ, phương thức ZoomAll sẽ hiện thị toàn bộ các đối tượng Nếu các đối tượng được vẽ bên trong vùng giới hạn vẽ, phương thức ZoomAll sẽ hiển thị toàn

bộ vùng giới hạn vẽ

Phương thức ZoomExtents xác định tỷ lệ phóng đại dựa trên vùng đối tượng của khung nhìn hiện hành (không phải là cảnh nhìn hiện hành) Thông thường, toàn bộ khung nhìn hiện hành đều có thể nhìn thấy được, và do đó, kết quả là rất rõ ràng, trực quan Tuy nhiên, khi sử dụng phương thức Zoom trong không gian mô hình trong khi đang làm việc trong khung nhìn của không gian in, nếu phóng to bên ngoài biên của khung nhìn trong không gian in thì có thể không nhìn thấy được một

số khu vực đã phóng đại

Phương thức ZoomExtents sẽ thay đổi cảnh nhìn để có thể bao quát tất cả các đối tượng của bản vẽ hiện hành Trong một vài trường hợp (đối với cả phương thức ZoomAll và phương thức ZoomExtents), điều này có thể sẽ kích hoạt quá trình tái tạo bản vẽ1 Quá trình tái tạo bản vẽ không được kích hoạt với các lớp đóng băng hoặc lớp đã bị tắt Nếu bản vẽ không có đối tượng nào cả, phương thức ZoomExtents sẽ hiển thị vùng giới hạn vẽ

Cảnh nhìn hiện tại Phóng đại vùng đối tượng

Phóng đại để thể hiện toàn bộ bản vẽ

1 Regeneration: quá trình tái tạo bản vẽ Mục đích của quá trình tái tạo bản vẽ nhằm: phát sinh lại

Ngày đăng: 10/03/2021, 13:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm