
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 I I I . Đồ họa
I I I .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)
I I I .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)
I I I .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ụ.
I I I .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)
I I I .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
- ....
I I I .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
I I I .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
I I I .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

