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

Tài liệu hướng dẫn thực tập tốt nghiệp Tin học xây dựng - Chương 3 ppsx

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 (123.52 KB, 11 trang )

B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t

t nghi

p

106


CHƯƠNG III. Đồ họa
III.1. Mục đích
Tài liệu này được lập ra nhằm mục đích hướng dẫn sinh viên ngành Tin học Xây dựng trong
việc xây dựng các hệ đồ họa phục vụ cho đồ án tốt nghiệp.


Cấu trúc của tài liệu:
- Các chức năng chính c ủa 1 h ệ đồ họa: Liệt kê các ch ức năng mà m ột hệ đồ họa
điển hình phải có
- Sử dụng VDraw Component: Hướng dẫn sử dụng VDraw Component (là một hệ đồ
họa phổ biến rất thích h ợp cho l ập trình các ứng dụng phải thể hiện các dữ liệu đồ
họa cũng như tương tác giữa người dùng và các dữ liệu đồ họa)
III.2. Các chức năng chính của 1 hệ đồ họa
Các hệ thống đồ họa được đề cập ở đây là các hệ thống phục vụ các bài toán thi ết kế hoặc
hỗ trợ thiết kế. Đây thực chất là các h ệ CAD đơn giản, một hệ thống CAD đơn giản điển
hình bao gồm các chức năng chính sau
- Vẽ các đối tượng cơ bản: Điểm, đoạn thẳng, text, đường tròn, mặt (face), biểu tượng.
Không giống như các chương trình vẽ (draft) đơn giản, các đối tượng hình học trong
hệ CAD phải được quản lý, có thể thêm, xóa, sửa
- Thay đổi vùng nhìn (zoom, pan) để quan sát toàn bộ hoặc một phần bản vẽ
- Lựa chọn các đối tượng (bằng chuột: pick hoặc window)
- Đọc và lưu các đối tượng ra bản vẽ (comment: dạng DXF)
III.3. Sử dụng VDraw Component
Chủ đề này nhằm mục đích hướng dẫn sinh viên sử dụng Component rất phổ biến hỗ trợ thể
hiện, quản lý, tương tác với các bản vẽ dưới các định dạng quen thuộc của AutoCAD. Chú ý
rằng VDraw được cung cấp dưới dạng ActiveX component nên bạn có thể sử dụng trong bất
cứ môi trường lập trình nào trên Windows (Visual C++ hay Visual Basic). Trong các ví d ụ
cung cấp theo tài liệu này, chúng tôi chọn Visual Basic làm ví dụ.
III.3.1. Cài đăt VDraw
VDraw là m ột ActiveX, do đó các bước cài đặt VDraw tuân theo các b ước đã hướng dẫn
trong phần ActiveX. L ưu ý r ằng các phiên b ản VDraw có trên th ị trường đĩa lậu thường
không phải là phiên bản tự cài đặt, do đó bạn phải sử dụng công cụ regsvr32 để đăng ký với
cú pháp sau (chú ý đường dẫn đền file vdraw.ocx có thể khác trên máy tính của bạn)
B

môn Tin h


c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t

t nghi

p

107

regsvr32.exe c:\vdraw\vdraw.ocx
Sau khi cài đặt VDraw b ạn có th ể sử dụng trong VB nh ư những ActiveX đã hướng dẫn
trong phần trước (Đánh dấu vào mục Vector Draw trong hộp thoại Components)
III.3.2. Kiến trúc VDraw

Kiến trúc VDraw mô ph ỏng kiến trúc c ủa AutoCAD, m ột bản vẽ được quản lý b ởi đối
tượng document (VDRAWDocument). Các đối t ượng qu ản lý b ởi document được chia

thành 2 loại
- Đối tượng nhìn th ấy (gọi là th ực thể - entity ho ặc hình v ẽ - figure): Các đối tượng
này k ế th ừa t ừ l ớp vdFigure, bao g ồm: vdLine, vdPolyline, vdArc, vdCircle,
vdEllipse, vdRectangle, vdImage, vdPoint, vd3DFace, vdPolyface, vdViewport,
vdText, vdDimension, vdInsert, vdPolyhatch
- Đối tượng trừu tượng (không nhìn th ấy được), sử dụng để tổ chức và qu ản lý các
entity khác, bao gồm: vdLayer, vdTextstyle, vdDimstyle, vdBlock, vdLayout
Ngoài quản lý các thực thể, đối tượng document còn cung cấp các đối tượng hỗ trợ
- vdLayers (Layers): quản lý các layer
- vdBlocks (Blocks): quản lý các block
- vdDimStyles (DimStyles): quản lý các kiểu dim
- vdTextStyles (TextStyles): quản lý các kiểu text
B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t


p t

t nghi

p

108

- vdSelections (Selections): quản lý các nhóm chọn
Để người dùng tương tác (zoom, vẽ các đối tượng, tổ chức đối tượng, layer ), VDraw cung
cấp đối tượng vdCommand với các phương thức sau:
- Cmd???: CmdLine, CmdCircle, CmdSelect, CmdCopy, CmdDim, CmdTrim,
CmdText, CmdStretch cho phép ng ười dùng vẽ các đối tượng với input từ chương
trình hoặc bàn phím và chuột
- Zoom: Thay đổi khung nhìn với tham số từ chương trình hoặc do người dùng vào từ
bàn phím, chuột
-
III.3.3. Vẽ đối tượng
Các đối tượng được vẽ trên VDraw th ực chất là thêm các th ực thể (entity) trong danh sách
entities của đối tượng document. Nếu tham số đầu vào của hàm là điểm, bạn có thể đưa vào
dưới dạng
- Mảng 3 phần tử tương ứng với 3 tọa độ (x, y, z)
- Mảng 2 phần tử tương ứng với 2 tọa độ (x, y), phần tử z mặc định = 0
- Trong Visual Basic, cách đơn gi ản nh ất để đưa input d ạng điểm là s ử dụng hàm
Array (xem ví dụ)
Ví dụ về tạo đối tượng với VDraw:
- Tạo mới Project
- Ctrl+T (m ở h ộp tho ại Components), đánh d ấu vào VDraw trong danh sách các
Component
- Đưa VDraw component t ừ ToolBox và form, đưa nút l ệnh có tên Command1 vào

form
- Click đúp vào nút lệnh để lập trình cho sự kiện Click của nút lệnh
Private Sub Command1_Click()
' VDENTITYLIST là class của thư viện VDraw, là danh sách các hình vẽ
' Trong trường hợp này, biến Ents là danh sách các hình vẽ của document
Dim Ents As VDENTITYLIST

' VDCIRCLE là class của hình vẽ đường tròn trong thư viện VDraw
Dim C As VDCIRCLE, C2 As VDCIRCLE

' Khởi tạo Ents là danh sách các hình vẽ của document hiện tại
Set Ents = VDRAW41.ActiveDocument.Entities

' Thêm vào document một đoạn thẳng từ điểm (0,0) đến điểm (5,5)
Ents.AddLine Array(0, 0), Array(5, 5)

' Thêm vào document một đường tròn tâm (0,0), bán kính 10
' Lưu nó trong biến [C]
Set C = Ents.AddCircle(Array(0, 0, 0), 10)

B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li


u h
ướ
ng d

n th

c t

p t

t nghi

p

109

' Thêm vào document một đường polyline qua 4 điểm
Ents.AddPolyLine Array(Array(0, 0), Array(10, 5), _
Array(2, 10), Array(-4, 3))

' Thêm vào document một đường kích thước xiên từ điểm (0,0) đến điểm (5,5)
' Đặt text của đường kích thước đó tại điểm (2,2)
Ents.AddDimAligned Array(0, 0), Array(5, 5), Array(2, 2)

' Tạo thêm 1 bản sao của đường tròn [C], lưu nó trong biến [C2]
Set C2 = C.Copy
' Thêm đường tròn này vào document
Ents.AddItem C2
' Sửa lại bán kính của nó là 5 đơn vị
C2.radius = 5


' Zoom "E"
VDRAW41.CommandAction.Zoom "E", "USER", "USER"
End Sub

III.3.4. Thay đổi vùng nhìn, điểm nhìn
Để thay đổi vùng nhìn, giống như trong AutoCAD, với VDraw ta cũng sử dụng lệnh Zoom
với cú pháp sau:
object.Zoom ( Type, FirstCorner, OtherCorner )
- Type: Kiểu zoom (giống với tham số zoom trong lệnh zoom của AutoCAD)
o "E" Zooms extents
o "P" Zooms previous
o "W" Zooms window (hai góc vùng nhìn: FirstCorner, OtherCorner)
o "A" Zoom all.
o "S" Zoom theo tỷ lệ tương đối với vùng nhìn hiện tại, ví dụ FirstCorner = 0.5
thì kích thước vùng nhìn sẽ lớn gấp đôi (tức là so với màn hình các vật thể sẽ
bé đi ½)
- FirstCorner, OtherCorner: Hai góc xác định vùng nhìn
o Dạng điểm (mảng các tọa độ)
o "USER": người dùng vào tham số
o Khi không cần thiết, có thể nhập vào giá trị bất kỳ (ví dụ Empty)
- Các ví dụ:
object.Zoom ("E", "USER", "USER")
object.Zoom ("W", Array(0,0), Array(100,100))
object.Zoom ("P", "USER", "USER")
object.Zoom ("W", "USER", "USER")
object.Zoom ("W", Array(0,0), "USER")
B

môn Tin h


c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t

t nghi

p

110

Cũng giống với AutoCAD, VDraw được khởi tạo với chế độ quan sát 2D nh ưng thực chất
đây là hệ thống 3D, các bạn có thể vẽ các đối tượng 3D và quan sát chúng ở nhiều góc độ
khác nhau. Để thay đổi góc nhìn quan sát các hình vẽ, ta sử dụng lệnh LookAt (xem ví dụ)
Private Sub Command1_Click()
Dim Ents As VDENTITYLIST
Set Ents = VDRAW41.ActiveDocument.Entities


' Vẽ đường tròn tâm (0,0) bán kính 10
Ents.AddCircle Array(0, 0), 10
' Vẽ hình chữ nhật tâm tại (0,0), chiều ngang 10, chiều cao 10
Ents.AddRect Array(0, 0), 10, 10

' Zoom "E"
VDRAW41.CommandAction.Zoom "E", Empty, Empty
End Sub

Private Sub Command2_Click()
' Zoom Window (vị trí của cửa sổ xác định bởi người dùng)
VDRAW41.CommandAction.Zoom
End Sub

Private Sub Command3_Click()
' Đặt mắt tại điểm (3, 4, 5), nhìn tới điểm (0, 0, 0)
VDRAW41.CommandAction.LookAt Array(3, 4, 5), Array(0, 0, 0)
' Zoom "E"
VDRAW41.CommandAction.Zoom "E", Empty, Empty
' Zoom nhỏ hình vẽ lại còn 1/2
VDRAW41.CommandAction.Zoom "S", 0.5, Empty
End Sub

III.3.5. Lựa chọn đối tượng
Để thao tác v ới nhiều đối tượng 1 lần, sử dụng đối tượng vdSelection, đối tượng này được
sử dụng với các lệnh Cmd??? (CmdCopy, CmdRotate, CmdErase ). vdSelection được tạo
bằng phương thức Add của đối tượng SelectionSetList (xem ví dụ).
Các phương thức của vdSelection
- RemoveAll: Loại bỏ tất cả các th ực thể khỏi selection, selection v ẫn tồn tại nhưng
không chứa thực thể nào

- RemoveItem: Loại bỏ một thực thể khỏi selection
- ClearAll: Xóa tất cả các đối tượng trong selection, selection vẫn tồn tại
- Free: Xóa selection (giải phóng các vùng nhớ sử dụng bởi selection)
Private Sub Command1_Click()
Dim Ents As VDENTITYLIST
Dim Doc As VDRAWDOCUMENT
B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t

t nghi

p


111

Dim Sel As VDSELECTIONSET
Dim rect As VDRECT, cir As VDCIRCLE

Set Doc = VDRAW41.ActiveDocument
Set Ents = Doc.Entities
Set cir = Ents.AddCircle(Array(0, 0), 10) ' Vẽ đường tròn
Set rect = Ents.AddRect(Array(0, 0), 10, 10) ' Vẽ hình chữ nhật

Set Sel = Doc.SelectionSetList.Add("quang") ' Tạo selection
Sel.AddItem rect ' Thêm rect vào selection
VDRAW41.CommandAction.CmdCopy Sel, Array(0, 0), Array(0, 0)
' Copy selection
VDRAW41.CommandAction.CmdRotate Sel, Array(0, 0), 3.14 / 4
' Quay hình chữ nhật, 45 do
VDRAW41.CommandAction.Zoom "E", Empty, Empty
End Sub

III.3.6. Người dùng chọn đối tượng
Trong chương trình, ngoài vi ệc vẽ các đối tượng, VDraw còn cho phép ng ười dùng tương
tác với các đối tượng đó. Ví dụ như khi bạn xây dựng một chương trình vẽ sơ đồ kết cấu với
VDraw. Sau đó, người dùng ch ọn các thanh ho ặc nút trong s ơ đồ để nhập các giá tr ị tải
trọng. Để thực hiện được chức năng này, ta dùng ph ương thức Select c ủa đối tượng con
CommandAction trong VDraw với cú pháp sau:
VDraw41.CommandAction.CmdSelect( SelectMode )
Trong đó:
- VDraw41: Tên đối tượng VDraw, tên được sử dụng trong ví dụ là tên mặc định của
đối tượng đối với phiên bản 4.1
- CommandAction: đối t ượng thu ộc l ớp VDCOMMAND dùng để t ương tác v ới

VDraw thông qua các l ệnh t ương t ự các l ệnh th ường s ử d ụng trong AutoCAD
(Zoom, Select, Copy, Move, Erase, Line, Rectangle, Circle )
- SelectMode: Tham số xác định cách thức để lựa chọn đối tượng, có thể có các giá trị
như sau:
o "ALL": Chọn tất cả các đối tượng trong Document
o "LAST": Đối tượng được tạo ra sau cùng
o "PREV": Chọn các đối tượng được chọn ở lệnh gần nhất
o "USER": Cho phép ng ười dùng chọn đối tượng bằng chuột (chọn bằng cách
pick đối tượng hoặc bằng cửa sổ - gi ống AutoCAD). Để xác nh ận các đối
tượng được chọn (kết thúc lệnh chọn), người dùng click phải chuột.
B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t


t nghi

p

112

o Một SelectionSet
o Một đối tượng (ví dụ: đoạn thẳng, đường tròn )
Trong trường hợp để người dùng chọn đối tượng, ta sử dụng tham số SelectMode với giá trị
"USER". Tuy nhiên, giải pháp này gặp phải một số vấn đề, xét ví dụ sau:
Tạo mới 1 Project, trên form m ặc định, thêm vào 1 VDraw control (tên là VDRAW41) và
một nút lệnh (tên là Command1), sau đó nhập vào đoạn chương trình sau:
Private Sub Form_Load()
VDRAW41.ActiveDocument.Entities.AddLine Array(0, 0), Array(5, 5)
VDRAW41.ActiveDocument.Entities.AddCircle Array(0, 0), 2
End Sub

Private Sub Command1_Click()
VDRAW41.CommandAction.CmdSelect "USER" ' Chuyển sang chế độ người dùng chọn
MsgBox "Chon xong roi" ' Hộp thoại này sẽ hiện ra khi
' người dùng chọn xong đối tượng
End Sub
Khi chạy chương trình, chúng ta thấy VDraw control có một đoạn thẳng và một đường tròn
(do Sub Form_Load vẽ ra).
Click chuột vào Command1 r ồi di chu ột đến đoạn thẳng và click ti ếp, ta th ấy đoạn thẳng
được chọn nhưng không th ấy hộp thoại hiện ra. N ếu tiếp tục click vào đường tròn thì c ả
đường tròn cũng được chọn nhưng hộp thoại cũng không hiện ra.
Click phải chuột trong VDraw control thì bạn mới thấy hộp thoại xuất hiện, có nghĩa là lệnh
tiếp sau của lệnh CmdSelect chỉ được gọi khi người dùng click phải chuột. Điều này dễ gây
hiểu lầm cho người sử dụng, do đó chúng tôi đưa ra một giải pháp khác, xét ví dụ sau:

Tạo mới 1 Project, trên form mặc định, thêm vào 1 VDraw control (tên là VDRAW41) và 2
nút lệnh (tên là Command1 và Command2), sau đó nhập vào đoạn chương trình sau:
Private Sub Form_Load()
VDRAW41.ActiveDocument.Entities.AddLine Array(0, 0), Array(5, 5)
VDRAW41.ActiveDocument.Entities.AddCircle Array(0, 0), 2
VDRAW41.ActiveDocument.Entities.AddRect Array(2, 2), 2, 2
End Sub

Private Sub Command1_Click()
VDRAW41.CommandAction.CmdSelect "USER"
End Sub

Private Sub Command2_Click()
Dim ob As VDFIGURE
For Each ob In VDRAW41.ActiveDocument.Entities
If ob.HighLight Then
MsgBox ob.Type
End If
Next
B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h

ướ
ng d

n th

c t

p t

t nghi

p

113

VDRAW41.CommandAction.Cancel
End Sub
Đoạn chương trình trên cũng gần giống ở ví dụ trước:
- Sub Form_Load: Vẽ một đoạn thẳng, một đường tròn và một hình chữ nhật
- Sub Command1_Click: Chuyển sang ch ế độ người dùng ch ọn đối tượng (nhưng
không đợi người dùng click phải chuột)
- Sub Command2_Click: Sử dụng cấu trúc For Each Next để duyệt qua t ất cả các
đối t ượng c ủa VDraw, tìm xem đối t ượng nào đang b ị đánh d ấu (thu ộc tính
HighLight) thì hiển thị kiểu (Type) của nó ra bằng MsgBox. Sau khi duyệt xong thì
bỏ chế độ chọn bằng phương thức Cancel của CommandAction.
Bây giờ bạn có thể chạy thử nghiêm chương trình. Click nút Command1 để chọn đối tượng.
Sau khi ch ọn xong đối tượng cần thiết, bạn Click nút Command2 để xem đối tượng nào
đang được chọn.
Tóm lại, việc lựa chọn đối tượng theo phương pháp thứ nhất hoặc thứ 2 tùy thuộc vào yêu
cầu của ứng dụng. Yêu c ầu đặt ra là ph ải lựa chọn được phương pháp thích h ợp sao cho

người dùng không cảm thấy khó chịu khi sử dụng.
III.3.7. Đọc và lưu bản vẽ
VDraw cho phép đọc và l ưu bản vẽ bằng định dạng DWG (phiên b ản hiện tại 4.0 h ỗ trợ
DWG 2000). Để đọc và lưu bản vẽ ta sử dụng hai phương thức Open và Save của VDraw
control.
retval = object.Open (FileName, WindowHandleToPlaceCaption, DwgFileChecking)
- FileName: Tên file, nếu là xâu rỗng thì hiện hộp thoại mở file
- WindowHandleToPlaceCaption: Handle của cửa sổ cần thay tiêu đề bằng tên file
được mở
- DwgFileChecking: Cách xử lý trong trường hợp file mở bị lỗi (0: Có gắng mở, 1: Bỏ
qua)
retval = object.Save
- Mô tả: Lưu file vào ổ đĩa.
- retval: TRUE nếu thành công, FALSE nếu không
retval = object.SaveAs(FullFileName, CADVersion)
- FullFilename: Đường dẫn (đầy đủ) đến file
- CADVersion: số hiệu phiên bản
- retval: TRUE nếu thành công, FALSE nếu không
Giá tr

Tên h

ng Gi

i thích
0 VdCadVer25 DWG/DXF Release 2.5
B

môn Tin h


c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t

p t

t nghi

p

114

1 VdCadVer26 DWG/DXF Release 2.6
2 VdCadVer9 DWG/DXF Release 9
3 VdCadVer10 DWG/DXF Release 10
4 VdCadVer11 DWG/DXF Release 11
5 VdCadVer13 DWG/DXF Release 13
6 VdCadVer14 DWG/DXF Release 14
7 VdCadVer2000 DWG/DXF Release 2000/2002
100

(default)
VdCaddefault DWG/DXF Release 2000/2002

III.3.8. Một số mẹo vặt với VDraw
- Khi phải tạo ra các bản vẽ với VDraw, bạn có nên dùng các lệnh của Vdraw để tạo từ
đầu các layer, đặt màu s ắc cho chúng, t ạo các textstyle, dimstyle ? Câu tr ả lời là
không nên làm nh ư vậy! Để thuận tiện hơn, bạn chỉ cần sử dụng AutoCAD để tạo
sẵn những bản vẽ đã có các tính ch ất trên (cấu trúc layer, màu s ắc, kiểu chữ, kiểu
dim). Đồng thời bản vẽ của bạn cũng có thể có sẵn một số block sẽ sử dụng (các ký
hiệu hoặc khung tên ). Sau đó, chỉ cần dùng l ệnh Open đã trình bày ở trên để mở
bản vẽ, bạn đã có sẵn một môi trường hoàn chỉnh để làm việc. Chú ý rằng, để VDraw
có thể sử dụng bản vẽ sẵn của bạn, phải lưu bản vẽ về định dạng AutoCAD 2000.
B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d

n th

c t


p t

t nghi

p

115

-
CHƯƠNG IV. Trợ giúp và đóng gói
IV.1. Lập trợ giúp với RoboHelp

IV.2. Đóng gói với InstallSheld

IV.3. Tạo film demo với WinCam

B

môn Tin h

c Xây d

ng –
Đ
HXD Tài li

u h
ướ
ng d


n th

c t

p t

t nghi

p

116


Tài liệu tham khảo
[1]. Hướng dẫn học Visual Basic 6.0 (www.vovisoft.com)
[2]. Learning VB6 24h
[3]. Phân tích thi ết kế hướng đối tượng bằng UML – Đặng Văn Đức – Nhà xu ất bản Giáo
dục
[4]. Object-oriented Analysis and Design using the UML, Rational, Software engineering

×