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 . Đồ ha
I I I .1. Mc đích
Tài liu này được lp ra nhm mc đích hướng dn sinh viên ngành Tin hc Xây dng trong
vic xây dng các h đồ ha phc v cho đồ án tt nghip.
Cu trúc ca tài liu:
- Các chc năng chính c a 1 h đồ ha: Lit kê các ch c năng mà m t h đồ ha
đin hình phi có
- S dng VDraw Component: Hướng dn s dng VDraw Component (là mt h đồ
ha ph biến rt thích h p cho l p trình các ng dng ph i th hin các d liu đồ
ha cũng như tương tác gia người dùng và các d liu đồ ha)
I I I .2. Các chc năng chính ca 1 h đồ ha
Các h thng đồ ha được đề cp đây là các h thng phc v các bài toán thi ết kế hoc
h tr thiết kế. Đây thc cht là các h CAD đơn gin, mt h thng CAD đơn gin đin
hình bao gm các chc năng chính sau
- V các đối tượng cơ bn: Đim, đon thng, text, đường tròn, mt (face), biu tượng.
Không ging như các chương trình v (draft) đơn gin, các đối tượng hình hc trong
h CAD phi được qun lý, có th thêm, xóa, sa...
- Thay đổi vùng nhìn (zoom, pan) để quan sát toàn b hoc mt phn bn v
- La chn các đối tượng (bng chut: pick hoc window)
- Đọc và lưu các đối tượng ra bn v (comment: dng DXF)
I I I .3. S dng VDraw Component
Ch đề này nhm mc đích hướng dn sinh viên s dng Component rt ph biến h tr th
hin, qun lý, tương tác vi các bn v dưới các định dng quen thuc ca AutoCAD. Chú ý
rng VDraw được cung cp dưới dng ActiveX component nên bn có th s dng trong bt
c môi trường lp trình nào trên Windows (Visual C++ hay Visual Basic). Trong các ví d
cung cp theo tài liu này, chúng tôi chn 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 dn
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 phi là phiên bn t cài đặt, do đó bn phi s dng công c regsvr32 để đăng ký vi
cú pháp sau (chú ý đường dn đền file vdraw.ocx có th khác trên máy tính ca bn)
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 dng trong VB nh ư nh ng ActiveX đã h ướng d n
trong phn trước (Đánh du vào mc Vector Draw... trong hp thoi 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 loi
- Đối tượng nhìn th y (gi 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 dng để t ch c và qu n lý các
entity khác, bao gm: vdLayer, vdTextstyle, vdDimstyle, vdBlock, vdLayout...
Ngoài qun lý các thc th, đối tượng document còn cung cp các đối tượng h tr
- vdLayers (Layers): qun lý các layer
- vdBlocks (Blocks): qun lý các block
- vdDimStyles (DimStyles): qun lý các kiu dim
- vdTextStyles (TextStyles): qun lý các kiu 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): qun lý các nhóm chn
Để người dùng tương tác (zoom, v các đối tượng, t chc đối tượng, layer...), VDraw cung
cp đối tượng vdCommand vi các phương thc sau:
- Cmd???: CmdLine, CmdCircle, CmdSelect, CmdCopy, CmdDim, CmdTrim,
CmdText, CmdStretch... cho phép ng ười dùng v các đối tượng vi input t chương
trình hoc bàn phím và chut
- Zoom: Thay đổi khung nhìn vi tham s t chương trình hoc do người dùng vào t
bàn phím, chut
- ....
I I I .3.3. V đối tượng
Các đối tượng được v trên VDraw th c cht là thêm các th c th (entity) trong danh sách
entities ca đối tượng document. Nếu tham s đầu vào ca hàm là đim, bn có th đưa vào
dưới dng
- Mng 3 phn t tương ng vi 3 ta độ (x, y, z)
- Mng 2 phn t tương ng vi 2 ta độ (x, y), phn t z mc định = 0
- Trong Visual Basic, cách đơn gi n nh t để đưa input d ng đim là s d ng hàm
Array (xem ví d)
Ví d v to đối tượng vi VDraw:
- To mi 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 lnh để lp trình cho s kin Click ca nút lnh
Private Sub Command1_Click()
' VDENTITYLIST là class ca thư vin VDraw, là danh sách các hình v
' Trong trường hp này, biến Ents là danh sách các hình v ca document
Dim Ents As VDENTITYLIST
' VDCIRCLE là class ca hình v đường tròn trong thư vin VDraw
Dim C As VDCIRCLE, C2 As VDCIRCLE
' Khi to Ents là danh sách các hình v ca document hin ti
Set Ents = VDRAW41.ActiveDocument.Entities
' Thêm vào document mt đon thng t đim (0,0) đến đim (5,5)
Ents.AddLine Array(0, 0), Array(5, 5)
' Thêm vào document mt đườ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 mt đường polyline qua 4 đim
Ents.AddPolyLine Array(Array(0, 0), Array(10, 5), _
Array(2, 10), Array(-4, 3))
' Thêm vào document mt đường kích thước xiên t đim (0,0) đến đim (5,5)
' Đặt text ca đường kích thước đó ti đim (2,2)
Ents.AddDimAligned Array(0, 0), Array(5, 5), Array(2, 2)
' To thêm 1 bn sao ca đườ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
' Sa li bán kính ca 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, đim nhìn
Để thay đổi vùng nhìn, ging như trong AutoCAD, vi VDraw ta cũng s dng lnh Zoom
vi cú pháp sau:
object.Zoom ( Type, FirstCorner, OtherCorner )
- Type: Kiu zoom (ging vi tham s zoom trong lnh zoom ca 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 vi vùng nhìn hi n ti, ví d FirstCorner = 0.5
thì kích thước vùng nhìn s ln gp đôi (tc là so vi màn hình các v t th s
đi ½)
- FirstCorner, OtherCorner: Hai góc xác định vùng nhìn
o Dng đim (mng các ta độ)
o "USER": người dùng vào tham s
o Khi không cn thiết, có th nhp vào giá tr bt 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 ging vi AutoCAD, VDraw được khi to vi chế độ quan sát 2D nh ưng thc cht
đây là h thng 3D, các bn có th v các đối tượng 3D và quan sát chúng nhiu góc độ
khác nhau. Để thay đổi góc nhìn quan sát các hình v, ta s dng lnh 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 nht tâm ti (0,0), chiu ngang 10, chiu 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í ca ca s xác định bi người dùng)
VDRAW41.CommandAction.Zoom
End Sub
Private Sub Command3_Click()
' Đặt mt ti đim (3, 4, 5), nhìn ti đim (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 li còn 1/2
VDRAW41.CommandAction.Zoom "S", 0.5, Empty
End Sub
I I I .3.5. La chn đối tượng
Để thao tác v i nhiu đối tượng 1 l n, s dng đối tượng vdSelection, đối tượng này được
s dng vi các l nh Cmd??? (CmdCopy, CmdRotate, CmdErase...). vdSelection được to
bng phương thc Add ca đối tượng SelectionSetList (xem ví d).
Các phương thc ca vdSelection
- RemoveAll: Loi b tt c các th c th khi selection, selection v n tn t i nhưng
không cha thc th nào
- RemoveItem: Loi b mt thc th khi selection
- ClearAll: Xóa tt c các đối tượng trong selection, selection vn tn ti
- Free: Xóa selection (gii phóng các vùng nh s dng bi selection)
Private Sub Command1_Click()
Dim Ents As VDENTITYLIST
Dim Doc As VDRAWDOCUMENT