Tự động hóa trong thiết kế cầu đường part 10 doc - Pdf 18



254
acAlignmentAligned acAlignmentTopRight acAlignmentBottomCenter
acAlignmentMiddle acAlignmentMiddleLeft acAlignmentBottomRight
Ý nghĩa của các hằng số này được minh hoạ trong hình sau:

Hình V-14: Minh hoạ các hằng số
acAlignment.
Khi thực hiện thay đổi chế độ canh hàng của đối tượng, cần lưu ý đến toạ độ điểm được sử
dụng để làm điểm canh hàng. Với từng chế độ canh hàng khác nhau, toạ độ điểm này có thể là
toạ độ chứa trong thuộc tính InsertionPoint hoặc thuộc tính TextAlignmentPoint:
Ø
Ø

Văn bản canh hàng bằng acAlignmentLeft sẽ sử dụng thuộc tính InsertionPoint để định vị
trí c
ủa văn bản;
Ø
Ø

Văn bản canh hàng bằng acAlignmentAligned hoặc acAlignmentFit sẽ sử dụng cả hai
thuộc tính InsertionPoint và TextAlignmentPoint để định vị trí của văn bản;
Ø
Ø

Văn bản canh hàng bằng các cách khác sẽ sử dụng thuộc tính TextAlignmentPoint để
định vị trí văn bản.
Chính vì vậy, khi thay đổi chế độ canh hàng cho văn bản, cần phải xác định rõ chế độ canh
hàng để xác định toạ
độ điểm chèn của văn bản cho hợp lý.

Ơ
Ơ
N
N
G
G


V
V
:
:


L
L


P
P


T
T
R
R
Ì
Ì
N
N


255

pointObj.Color = acRed
' Chuyển kiểu hiển thị điểm thành kiểu chữ thập
ThisDrawing.SetVariable "PDMODE", 2
ThisDrawing.Application.ZoomAll

' Thay chế độ canh hàng.
textObj.Alignment = acAlignmentRight
' Do chế độ canh hàng mới là acAlignmentRight nên điểm tham chiếu
' để định vị văn bản là TextAlignmentPoint
' Vì vậy, cần phải gán toạ độ cho điểm TextAlignmentPoint
textObj.TextAlignmentPoint = aliPoint
textObj.Update
MsgBox "Van ban dang o che do canh phai"

' Canh giữa văn bản với điểm tham chiếu là điểm TextAlignmentPoint
textObj.Alignment = acAlignmentCenter
textObj.Update
MsgBox "Van ban dang o che do canh giua"

' Hoàn trả lại kiểu hiển thị điểm
ThisDrawing.SetVariable "PDMODE", oldPDMODE
End Sub
5.5. Làm việc với lớp (Layer)
Lớp là các tầng trong suốt mà trên đó ta có thể tổ chức và nhóm nhiều loại đối tượng hình học
khác nhau của bản vẽ, Việc sắp xếp các lớp và đối tượng trên lớp giúp quản lý thông tin của
bản vẽ dễ dàng hơn.
Quá trình vẽ luôn được thực hiện trên một lớp nào đó. Đó có thể là lớp mặc định hoặc một lớp

Người lập trình có thể tạo ra lớp mới và gán thuộc tính màu sắc cũng như kiểu đường cho
những lớp này. Mỗi một lớp là một phần tử của tập đối tượng
Layers. Và để tạo một lớp mới,
có thể sử dụng phương thức
Add có trong tập đối tượng Layers. Cú pháp của phương thức này
như sau:
Set RetVal = object.Add(Name)
Tham số Giải thích
Object Là tập đối tượng Layers.
Name Kiểu String. Xác định tên của lớp sẽ được tạo trong bản vẽ.
RetVal Kiểu Layer. Biến tham chiếu đến đối tượng Layer vừa mới được tạo.
Đoạn mã lệnh sau sẽ tạo lớp mới tên “New_Layer”, gán màu cho lớp và sau đó hiển thị các
thông tin của lớp trong một hộp thông báo.
Sub VD_AddLayer()
Dim layerObj As AcadLayer
' Thêm lớp mới vào tập đối tượng Layers
Set layerObj = ThisDrawing.Layers.Add("New_Layer")
' Thiết lập màu của lớp mới là màu đỏ
layerObj.Color = acRed
' Hiển thị các thông tin của lớp mới tạo
MsgBox layerObj.Name & " has been added." & vbCrLf & _
"LayerOn Status: " & layerObj.LayerOn & vbCrLf & _
"Freeze Status: " & layerObj.Freeze & vbCrLf & _
"Lock Status: " & layerObj.Lock & vbCrLf & _
"Color: " & layerObj.Color, , "Add Example"
End Sub
CHÚ Ý Khi tạo một lớp mới, nếu tham số Name trùng tên với một lớp đã có thì lớp đã có
sẽ không bị xoá đi và chương trình sẽ không báo lỗi. Khi đó, đối tượng RetVal sẽ được tự
động tham chiếu đến lớp có tên lớp bằng với giá trị của tham số Name.
5.5.2. Truy xuất và thay đổi tên một lớp đã có


V
V
:
:


L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T
R

ent.Name = "Tuong_Canh"
End If
layerNames = layerNames + ent.Name + vbCrLf
Next
MsgBox "Danh sach cac lop: " + vbCrLf + layerNames
End Sub
5.5.3. Thiết lập lớp hiện hành
Quá trình vẽ luôn được thực hiện trên lớp hiện hành. Sau khi chọn lớp thành lớp hiện hành, các
đối tượng hình học mới được tạo ra đều được đặt trên lớp đó và tất cả các đối tượng này đều sử
dụng màu và kiểu đường của lớp đó. Cần lưu ý là: không thể thiết lập thành lớp hiện hành cho
một lớp nào đó nế
u như lớp đó đã đông cứng (Freeze).
Để chọn một lớp làm lớp hiện hành, ta sử dụng thuộc tính
ActiveLayer trong đối tượng
Document. Đoạn mã dưới đây sẽ tạo một lớp mới và biến lớp đó thành lớp hiện hành:
Dim newlayer As AcadLayer
Set newlayer = ThisDrawing.Layers.Add("LAYER1")
ThisDrawing.ActiveLayer = newlayer
5.5.4. Thiết lập các chế độ hiển thị của lớp
AutoCAD không hiển thị hay in các đối tượng được vẽ trên các lớp ẩn. Nếu muốn không bị
vướng tầm nhìn khi làm việc chi tiết trên một lớp hoặc một số lớp cụ thể, hoặc nếu không muốn
in một số chi tiết nhất định, chẳng hạn như đường chuẩn hoặc các đường tạm, ta có thể
tắt hoặc
làm đông cứng các lớp không cần thiết đó.
Hình thức điều khiển tính nhìn thấy của một lớp phụ thuộc vào cách ta làm việc và kích thước
bản vẽ, bao gồm: bật/tắt lớp, khoá/mở khoá lớp, đông cứng/tan lớp.
Bật/Tắtlớp
Các lớp đã tắt sẽ vẫn được tái tạo lại cùng với bản vẽ nhưng l
ại không được hiển thị hay in ra.
Nên tắt các lớp đi thay vì làm đông cứng nếu thường xuyên chuyển đổi giữa các lớp có nhìn

circleObj.Update
’ Tắt lớp "ABC"
layerObj.LayerOn = False
ThisDrawing.Regen acActiveViewport
End Sub
Đôngcứng/Tanlớp
Người lập trình có thể làm đông cứng các lớp không cần hiển thị trong thời gian dài để tăng tốc
độ hiển thị những thay đổi, cải thiện quá trình lựa chọn đối tượng và giảm thời gian tái tạo cho
những bản vẽ phức tạp. AutoCAD không hiển thị, in hay tái tạo các đối tượng trên các lớp đông
cứng. Khi ta làm “tan” một lớp bị đ
ông cứng, AutoCAD sẽ phục hồi và hiển thị các đối tượng
trên lớp đó.
Để làm đông cứng hay làm tan một lớp bị đông cứng, ta sử dụng thuộc tính
Freeze. Để làm
đông cứng một lớp, ta gán giá trị
TRUE và để làm tan một lớp, ta gán giá trị FALSE cho thuộc
tính này.
Ví dụ sau tạo một lớp mới có tên “
ABC” và sau đó làm đông cứng lớp đó.
Sub VD_LayerFreeze()
’ Tạo lớp "ABC"
Dim layerObj As AcadLayer
Set layerObj = ThisDrawing.Layers.Add("ABC")
’ Đông cứng lớp "ABC"
layerObj.Freeze = True
End Sub
Khoá/Mởkhoálớp
Khi một lớp đã bị khoá, các đối tượng nằm trên lớp đó sẽ không thể hiệu chỉnh được nữa mặc
dù người dùng vẫn nhìn thấy chúng trên bản vẽ. Biện pháp khoá lớp rất hữu ích khi người dùng
muốn hiệu chỉnh các đối tượng trên một lớp nào đó nhưng đồng thời cũng muốn quan sát các

:


L
L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N

GỢI Ý Để xoá các đối tượng phi hình học (bao gồm cả đối tượng Layer) không còn được
sử dụng trong bản vẽ, có thể sử dụng phương thức PurgeAll có trong đối tượng Document,
hoặc sử dụng lệnh Purge tại dòng lệnh của AutoCAD.
Đoạn mã sau sẽ thực hiện xoá lớp có tên là “ABC”.
Sub VD_LayerDelete()
Dim layerObj As AcadLayer
Set layerObj = ThisDrawing.Layers.Add("ABC")
layerObj.Delete
End Sub
5.6. Thao tác với kiểu đường – Linetype
Kiểu đường là sự lặp lại mẫu gạch ngang, chấm, các khoảng trống hoặc các ký hiệu khác.
Trong AutoCAD, các kiểu đường được định nghĩa sẵn trong tệp
ACAD.LIN. Khi muốn sử dụng
một kiểu đường nào đó, cần phải thực hiện tải kiểu đường đó vào trong AutoCAD.
GỢI Ý Đối với AutoCAD 2002, thông thường, tệp ACAD.LIN sẽ được lưu trong thư mục
“C:\Program Files\AutoCAD 2002\Support”
5.6.1. Tải kiểu đường vào AutoCAD
Để tải kiểu đường vào AutoCAD, sử dụng phương thức
Load có trong tập đối tượng
Linetypes. Những kiểu đường đã được tải vào đều nằm trong tập đối tượng Linetypes. Cú
pháp của phương thức
Load như sau:
object.Load LineTypeName, FileName
Tham số Giải thích
Object Là tập đối tượng Linetypes
LineTypeName Kiểu String. Tên của kiểu đường cần tải vào AutoCAD (tên của kiểu đường phải
có trong tệp chứa kiểu đường).
FileName Kiểu String. Tên tệp chứa kiểu đường cần tải vào AutoCAD.
Ví dụ sau thực hiện tải kiểu đường “CENTER” từ tệp ACAD.LIN. Nếu kiểu đường này đã có, thì
một thông báo sẽ xuất hiện để báo cho người dùng được biết:

.LIN vẫn giữ nguyên. Để đổi tên kiểu đường, ta sử dụng thuộc tính Name có trong
đối tượng
Linetype.
CHÚ Ý Không thể đổi tên kiểu đường BYLAYER, BYBLOCK, hoặc CONTINUOUS.
Ví dụ sau thực hiện việc truy xuất đến kiểu đường tên là CENTER và đổi tên kiểu đường thành
“Duong_Tam”. Nếu kiểu đường này chưa có trong bản vẽ, sẽ thông báo lỗi cho người dùng:
Sub VD_LinetypeName()
Dim linetypeObj As AcadLineType
On Error Resume Next
' Thực hiện truy xuất đến kiểu đường
Set linetypeObj = ThisDrawing.Linetypes("CENTER")
If linetypeObj Is Nothing Then
' Thông báo lỗi khi kiểu đường không tồn tại
MsgBox "Kieu duong khong ton tai"
Else
' Thay đổi tên kiểu đường
linetypeObj.Name = "Duong_Tam"
End If
End Sub
5.6.3. Thiết lập kiểu đường hiện hành
Khi một kiểu đường được kích hoạt làm kiểu đường hiện hành, tất cả các đối tượng mới được
tạo sẽ sử dụng kiểu đường này, trừ khi đối tượng đó có kiểu đường là
BYLAYER hoặc BYBLOCK.
Để kích hoạt một kiểu đường thành kiểu đường hiện hành, sử dụng thuộc tính
ActiveLinetype có trong đối tượng Document.
Đoạn mã sau sẽ kích hoạt kiểu đường
“CENTER” thành kiểu đường hiện hành của bản vẽ:
Sub VD_ActiveLinetype()
Dim linetypeObj As AcadLineType
Set linetypeObj = ThisDrawing.Linetypes("CENTER")

R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N
N


A
A
U
U
T
T
O
O
C
C


Hình V-15: Các thành phần cơ bản của đường kích thước.
Đường kích thước cũng là đối tượng hình học nên việc tạo các đường kích thước cũng tương tự
như các đối tượng hình học khác. Trước tiên, xác định nơi chứa đối tượng (
ModelSpace hay
PaperSpace), sau đó sử dụng các phương thức tạo đường kích thước với dạng AddDimXXX
(XXX là loại đường kích thước tương ứng).
Kiểu dáng của đường kích thước mới được tạo ra sẽ được lấy theo định dạng của kiểu đường
kích thước (
DimensionStyle) hiện hành trên bản vẽ. Sau khi được tạo ra, người dùng có thể
thay đổi kiểu dáng của từng thành phần trong đường kích thước thông qua các thuộc tính tương
ứng có trong đối tượng đường kích thước, hoặc có thể định dạng theo một kiểu đường kích
thước đã có thông qua thuộc tính
StyleName.
5.7.1. Kiểu đường kích thước – DimensionStyle 262
Các kiểu đường kích thước trong một bản vẽ được quản lý trong tập đối tượng DimStyles của
đối tượng
Document. Mỗi kiểu đường kính thước, là một phần tử của tập đối tượng
DimStyles, chứa các thiết lập chi tiết về kiểu dáng của đường kích thước.
GỢI Ý Trong AutoCAD, để thiết lập kiểu đường kích thước, người dùng có thể truy cập
thông qua trình đơn Format Ö Dimension Styles…
Tạokiểuđườngkíchthước
Sử dụng phương thức
Add có trong tập đối tượng DimStyles để tạo mới một kiểu đường kích
thước. Cú pháp của phương thức này như sau:
Set RetVal = DimStyles.Add(Name)
Tham số Mô tả

ThisDrawing.SetVariable "DIMCLRD", acRed
ThisDrawing.SetVariable "DIMCLRE", acBlue
ThisDrawing.SetVariable "DIMCLRT", acWhite
ThisDrawing.SetVariable "DIMLWD", acLnWtByLwDefault
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


V
V
:
:


L
L


P
P

O
O
C
C
A
A
D
D



263 ‘ Cập nhật những thay đổi cho kiểu đường kích thước
objDimStyle.CopyFrom ThisDrawing
End Sub
Có rất nhiều biến hệ thống dùng để định dạng kiểu đường kích thước và các biến hệ thống này
đều được bắt đầu bằng tiền tố DIM. Người dùng có thể tham khảo các biến hệ thống này trong
mục “System Variable” trong tài liệu “AutoCAD Command Reference” có sẵn trong bộ tài liệu
trợ giúp của AutoCAD. Dưới đây là danh sách các biến hệ thống định dạng kiểu đường kích
thước hay được sử dụ
ng:
Biến Mô tả
DIMASZ Kiểu Double. Xác định kích thước mũi tên của đường kích thước.
DIMBLK Kiểu String. Xác định tên của loại mũi tên của đường kích thước. Một số giá trị
thường dùng:
"." "_OBLIQUE" "_OPEN"
DIMTSZ Kiểu Double. Xác định kích thước của mũi tên trong trường hợp biến hệ thống
DIMBLK được gán bằng "_OBLIQUE". Nếu gán bằng số khác không, kiểu mũi tên

264
‘ Chọn đối tượng đường kích thước trên màn hình
ThisDrawing.Utility.GetEntity dimEnt, P, "Chon duong kich thuoc: "
‘ Thay đổi kiểu đường kích thước cho đường kích thước được chọn
dimEnt.StyleName = "NewDimStyle"
End Sub
5.7.2. Tạo đường kích thước
Để tạo mới đường kích thước, người dùng có thể sử dụng các phương thức
AddDimXXX, với
XXX là loại đường kích thước cần tạo. AutoCAD có nhiều loại đường kích thước khác nhau,
dưới đây chỉ trình bày cách thức tạo các loại đường kích thước thường dùng.
Đườngkíchthướcdài‐DimAligned
Sử dụng phương thức
AddDimAligned để tạo mới đường kích thước dài. Với đường kích
thước này, người dùng phải xác định 3 điểm: 2 điểm gốc và một điểm xác định vị trí chữ kích
thước. Đường kích thước được tạo ra sẽ nằm song song với đoạn thẳng tạo bởi 2 điểm gốc.

Hình V-16: Đường kích thước dài.
Cú pháp của phương thức AddDimAligned như sau:
Set RetVal = object.AddDimAligned(ExtLine1Point, ExtLine2Point,
TextPosition)
Tham số Giải thích
ExtLine1Point Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm gốc thứ nhất.
ExtLine2Point Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm gốc thứ hai.
TextPosition Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm ghi kích thước.
RetVal Đối tượng kiểu DimAligned, tham chiếu đến đối tượng vừa mới được tạo.
Ví dụ sau sẽ tạo một đường kích thước dài với toạ độ hai điểm gốc là (5,5,0) và (10,8,0), còn
toạ độ điểm ghi kích thước là (6.5,8,0)
Sub VD_AddDimAligned()
Dim dimObj As AcadDimAligned

L


P
P


T
T
R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N
N


A


Hình V-17: Đường kích thước hình chiếu.
Cú pháp của phương thức AddDimRotated như sau:
Set RetVal = object.AddDimRotated(XLine1Point, XLine2Point,
DimLineLocation, RotationAngle)
Tham số Giải thích
XLine1Point Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm gốc thứ nhất.
XLine2Point Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm gốc thứ hai.
DimLineLocation Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm nằm trên đường kích
thước.
RotationAngle Kiểu Double. Góc xoay so với phương ngang của phương chiếu, tính bằng
Radian.
RetVal Đối tượng kiểu DimRotated, tham chiếu đến đối tượng vừa mới được tạo.
Ví dụ sau tạo một đường kích thước hình chiếu với toạ độ hai điểm gốc là (0,5,0) và (5,5,0); toạ
độ điểm nằm trên đường kích thước là (0,0,0); góc xoay phương chiếu bằng 120 độ.
Sub VD_AddDimRotated()
Dim dimObj As AcadDimRotated
Dim point1(0 To 2) As Double
Dim point2(0 To 2) As Double
Dim location(0 To 2) As Double
Dim rotAngle As Double

' Xác định các giá trị cần thiết
point1(0) = 0#: point1(1) = 5#: point1(2) = 0# 266

point2(0) = 5#: point2(1) = 5#: point2(2) = 0#
location(0) = 0#: location(1) = 0#: location(2) = 0#

C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


V
V
:
:


L
L


P
P


T
T
R

A
D
D



267

Dim dimObj As AcadDimAngular
Dim angVert(0 To 2) As Double
Dim FirstPoint(0 To 2) As Double
Dim SecondPoint(0 To 2) As Double
Dim TextPoint(0 To 2) As Double

' Xác định các thông số cần thiết để tạo đường kích thước
angVert(0) = 0#: angVert(1) = 5#: angVert(2) = 0#
FirstPoint(0) = 1#: FirstPoint(1) = 7#: FirstPoint(2) = 0#
SecondPoint(0) = 1#: SecondPoint(1) = 3#: SecondPoint(2) = 0#
TextPoint(0) = 3#: TextPoint(1) = 5#: TextPoint(2) = 0#

' Tạo đường kích thước đo góc trong không gian mô hình
Set dimObj = ThisDrawing.ModelSpace.AddDimAngular(angVert,
FirstPoint, SecondPoint, TextPoint)
ZoomAll
End Sub
Đườngkíchthướcbánkính–DimRadial
Sử dụng phương thức AddDimRadial để tạo đường kích thước bán kính. Để tạo được đường
kích thước này, cần phải xác định được toạ độ tâm, toạ độ điểm đo (nằm trên cung tròn hoặc
đường tròn) và chiều dài từ điểm đo đến chữ kích thước.


Đườngkíchthướcđườngkính–DimDiametric
Sử dụng phương thức AddDimDiametric để tạo mới đường kích thước đường kính. Để tạo
được đường kích thước này, cần phải xác định 2 điểm đo nằm trên đường tròn và khoảng cách
từ điểm đo thứ nhất đến chữ ghi kích thước.

Hình V-20: Đường kích thước đường kính.
Cú pháp của phương thức AddDimDiametric như sau:
Set RetVal = object.AddDimDiametric(ChordPoint, FarChordPoint,
LeaderLength)
Tham số Giải thích
ChordPoint Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm đo thứ nhất nằm trên
đường tròn hoặc cung tròn.
FarChordPoint Kiểu Variant (mảng 3 phần tử kiểu Double). Toạ độ điểm đo thứ hai nằm trên
đường tròn hoặc cung tròn.
LeaderLength Kiểu Double. Khoảng cách từ chữ ghi kích thước đến điểm đo thứ nhất.
RetVal Đối tượng kiểu DimDiametric, tham chiếu đến đối tượng vừa mới được tạo.
Ví dụ sau minh hoạ cách thức sử dụng phương thức AddDimDiametric.
Sub VD_AddDimDiametric()
Dim dimObj As AcadDimDiametric
Dim chordPoint(0 To 2) As Double
Dim farChordPoint(0 To 2) As Double
Dim leaderLength As Double
C
C
H
H
Ư
Ư
Ơ
Ơ



T
T
R
R
Ê
Ê
N
N


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



269

ExtensionLineColor Quy định màu của các đường gióng.
ExtensionLineExtend Quy định khoảng cách từ đường gióng đến đường ghi kích thước.
ExtensionLineOffset Quy định khoảng cách từ đường gióng đến điểm gốc của đường gióng.
ExtensionLineWeight Quy định độ dày của đường gióng.
LinearScaleFactor Quy định hệ số tỷ lệ toàn cục cho các số đo kích thước dạng đường.
PrimaryUnitsPrecision Quy định số chữ số thập phân hiển thị trong đơn vị chính của kích thước.
TextColor Quy định màu của chữ kích thước.
TextHeight Quy định độ cao của chữ kích thước.
TextRotation Quy định góc nghiêng của chữ kích thước.
5.8. Thao tác với dữ liệu mở rộng – XData
Ngoài các thuộc tính có trong mỗi đối tượng, AutoCAD còn cho phép tạo thêm các thuộc tính
mới để lưu trữ các thông tin do người lập trình tự định nghĩa. Những thông tin này sẽ được
AutoCAD lưu cùng với đối tượng trong bản vẽ.
Mỗi đối tượng có thể chứa nhiều dữ liệu mở rộng khác nhau. Thông thường, các dữ liệu mở
rộng được bắt đầu bằng tên của ứng dụng, tiếp đến là các d
ữ liệu khác. Để xác định các dữ liệu 270
mở rộng, phải sử dụng hai mảng có chiều dài bằng nhau, một mảng kiểu Short xác định kiểu dữ
liệu của dữ liệu mở rộng, mảng thứ hai là mảng kiểu Variant chứa các dữ liệu tương ứng.
5.8.1. Gán dữ liệu mở rộng
Sử dụng phương thức
SetXData để gán các dữ liệu mở rộng cho đối tượng. Cú pháp của
phương thức này như sau:
object.SetXData XDataType, Xdata
Tham số Giải thích
Object Là đối tượng sẽ được gán dữ liệu mở rộng.
XDataType Mảng kiểu Short, xác định kiểu dữ liệu của dữ liệu mở rộng
Xdata Mảng kiểu Variant, xác định giá trị của dữ liệu mở rộng

' Khởi tạo các giá trị cho dữ liệu mở rộng.
' Chú ý là dữ liệu đầu tiên phải là tên của ứng dụng
' và mã tương ứng là 1001
Dim DataType(0 To 5) As Integer ‘Mảng chứa kiểu dữ liệu
Dim Data(0 To 5) As Variant ‘Mảng chứa dữ liệu
Dim reals3(0 To 2) As Double

DataType(0) = 1001: Data(0) = "Test_Application"
DataType(1) = 1000: Data(1) = "This is a test for xdata"
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


V
V
:
:


L

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



271

DataType(2) = 1003: Data(2) = "0" ' Tên lớp
DataType(3) = 1040: Data(3) = 1.23479137438413E+40 ' Kiểu Double
DataType(4) = 1071: Data(4) = 32767 ' Kiểu Integer
reals3(0) = -2.95: reals3(1) = 100: reals3(2) = -20
DataType(5) = 1010: Data(5) = reals3 ' Toạ độ điểm

' Gán dữ liệu mở rộng vào đường thẳng
lineObj.SetXData DataType, Data

End Sub
5.8.2. Đọc dữ liệu mở rộng
Sử dụng phương thức GetXData để đọc dữ liệu mở rộng có trong một đối tượng. Cú pháp của

If Not IsEmpty(XDataType) Then
ThisDrawing.Utility.Prompt (vbCrLf & ent.ObjectName)
For i = LBound(XDataType) To UBound(XDataType)
ThisDrawing.Utility.Prompt vbCrLf & XDataType(i)
ThisDrawing.Utility.Prompt " : " & XData(i)
Next i
Else 272
ThisDrawing.Utility.Prompt vbCrLf & "Doi tuong khong chua XData"
End If
Next ent
End Sub
6. Giao diện người dùng
Quá trình nhập dữ liệu và tương tác với người dùng được hỗ trợ theo nhiều cách khác nhau
trong AutoCAD:
Ø
Ø

Thông qua việc nhập liệu tại dòng lệnh: người dùng có thể nhập vào một chuỗi, một số,
hoặc thực hiện một chọn lựa nào đó Các thao tác nhập liệu tại dòng lệnh tham khảo
thêm mục “Nhập dữ liệu người dùng từ dòng lệnh của AutoCAD” trang 208
Ø
Ø

Thông qua việ
c tương tác trực tiếp trên bản vẽ: người dùng thường sẽ thực hiện lựa chọn
đối tượng, xác định toạ độ điểm,… Các thao tác tương tác trực tiếp trên bản vẽ tham khảo
thêm mục “Làm việc với đối tượng SelectionSet” trang 228 hoặc mục “Nhập dữ liệu

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


V
V
:
:


L
L


P
P


T
T

A
A
D
D



273

Ø
Ø

MenuGroups là tập đối tượng chứa các MenuGroup, là nhóm các trình đơn trong
AutoCAD. Thông thường, mỗi chương trình đều tạo cho mình một MenuGroup riêng.
Trong mỗi MenuGroup sẽ có chứa các PopupMenu. Tập hợp tất cả các PopupMenu trong
tất cả các MenuGroup sẽ hình thành nên MenuBar trên màn hình của chương trình
AutoCAD. Tuy nhiên, không phải tất cả các PopupMenu trong MenuGroup đều được
hiển thị trên MenuBar, chỉ khi nào người lập trình hoặc người dùng thêm vào MenuBar,
MenuPopup đó mới được hiển thị trên MenuBar.
Ø
Ø

PopupMenuItem là thành phần cuối cùng trong cấ
u trúc phân cấp đối tượng của thanh
trình đơn. Mỗi PopupMenuItem chính là một lệnh trong hệ thống thanh trình đơn. Khi
người dùng kích chuột vào PopupMenuItem thì AutoCAD sẽ thực hiện một chức năng
nào đó của chương trình.
Các thành phần của hệ thống trình đơn được minh hoạ ở hình sau:

Hình V-22: Các đối tượng trong hệ thống trình đơn của AutoCAD

3. Viết mã lệnh để: tham chiếu đến MenuGroup, tạo trình đơn tuỳ biến và gán mã lệnh tương
ứng
Sub VD_TaoMenu()
' Định nghĩa biến và tham chiếu đến MenuGroup đầu tiên
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

' Tạo trình đơn (Tạo PopupMenu)
Dim newMenu As AcadPopupMenu
Set newMenu = currMenuGroup.Menus.Add("Trinh don tuy bien")

' Khai báo biến cho PopupMenuItem
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String

' Tạo PopupMenuItem và gán mã lệnh tương ứng
openMacro = "-vbarun Macro1 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 1", openMacro)

openMacro = "-vbarun Macro2 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 2", openMacro)

openMacro = "-vbarun Macro3 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 3", openMacro)

' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar)
currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", ""

T
R
R
Ì
Ì
N
N
H
H


T
T
R
R
Ê
Ê
N
N


A
A
U
U
T
T
O
O
C

Set newMenu = currMenuGroup.Menus("Trinh don tuy bien")
Dim menuEnt As AcadPopupMenuItem
For Each menuEnt In newMenu
menuEnt.Delete
Next
End If ' Khai báo biến cho PopupMenuItem
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String

' Tạo PopupMenuItem và gán mã lệnh tương ứng
openMacro = "-vbarun Macro1 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 1", openMacro)

openMacro = "-vbarun Macro2 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 2", openMacro)

openMacro = "-vbarun Macro3 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, _
"Lua chon 3", openMacro)

' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar)
currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", ""
End Sub
6.1.3. Xoá thanh trình đơn
Các trình đơn tuỳ biến trong AutoCAD sẽ được tự động xoá đi khi khởi động lại AutoCAD.

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


V
V
:
:


L

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



277P
P
H
H


N
NI

H
A
A
M
MK
K
H
H


O
O1. John Walkenbach – Excel 2002 Power Programming with VBA – M&T Books – 2001 .
2. Steve Saunders, Jeff Webb – Programming Excel with VBA and .NET – O'Reilly – 2006.
3. Richard Shepherd – Excel VBA Macro Programming – McGraw-Hill – 2004.
4. Autodesk
®
(Người dịch:Lê Quỳnh Mai, Trương Thanh Hoàng, Hoàng Thuỳ Linh) –
Phát triển AutoCAD bằng ActiveX & VBA – 2006.
5. Joe Sutphin – AutoCAD 2006 VBA: A Programmer’s Reference – Apress
®
– 2005.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status