248 Giá trị của thuộc tính Color là số nguyên trong phạm vi từ 0 đến 256, 9 trong các số này được định nghĩa trước với các hằng số acColor trong AutoCAD. Dưới đây là danh sách các hằng số này: Hằng số Giá trị Ý nghĩa acByBlock 0 Màu của đối tượng lấy theo màu của Block chứa đối tượng đó. acRed 1 Màu đỏ. acYellow 2 Màu vàng. acGreen 3 Màu xanh lá. acCyan 4 Màu xanh lam. acBlue 5 Màu xanh da trời. acMagenta 6 Màu tím acWhite 7 Màu trắng hoặc đen tuỳ thuộc vào màu nền. acByLayer 256 Màu của đối tượng lấy theo màu của lớp chứa đối tượng đó. Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi màu đối tượng được chọn thành màu đỏ: Sub VD_Color() Dim ent As AcadEntity Dim P(2) As Double ‘ Chọn đối tượng trên màn hình On Error Resume Next ThisDrawing.Utility.GetEntity ent, P, "Chon doi tuong can doi mau: " If Not (ent Is Nothing) Then ‘ Đổi màu đối tượng ent.Color = acRed ent.Update End If End Sub ThuộctínhLayer–Lớpchứađốitượng Sử dụng thuộc tính Layer để lấy và thay đổi lớp chứa đối tượng. Thông thường, khi một đối tượng hình học mới được tạo ra, đối tượng đó sẽ được đặt trên lớp hiện hành của bản vẽ. Khi người dùng thay đổi giá trị của thuộc tính Layer thành tên của một lớp khác, đối tượng đó sẽ được tự động chuyển về nằm trên lớp mới này. Nếu người dùng gán cho thuộc tính Layer một tên lớp không có trong bản vẽ thì chương trình sẽ không báo lỗi, và đối tượng vẫn nằm trên lớp cũ. object.Layer Tham số Giải thích Object Là đối tượng hình học. Layer Chuỗi chứa tên của lớp. Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi lớp của đối tượng được chọn thành lớp “Layer1” (người dùng phải tạo trước một lớp có tên là “Layer1” bằng lệnh của AutoCAD): C C H H Ư Ư Ơ Ơ N N G G V V : : L L Ậ Ậ P P T T R R Ì Ì N N H H T T R R Ê Ê N N A A U U T T O O C C A A D D 249 Sub VD_Layer() Dim ent As AcadEntity Dim P(2) As Double ' Chọn đối tượng trên màn hình On Error Resume Next ThisDrawing.Utility.GetEntity ent, P, "Chon doi tuong can doi lop: " If Not (ent Is Nothing) Then ' Chuyển lớp cho đối tượng ent.Layer = "Layer1" ent.Update End If End Sub ThuộctínhLineType–Kiểuđườngcủađốitượng Để thay đổi kiểu hiển thị của nét vẽ các đối tượng hình học trên màn hình, thiết lập lại thuộc tính Linetype của đối tượng thành một kiểu đường hiện có trong bản vẽ. Thông thường, khi một đối tượng vừa mới được tạo ra, đối tượng sẽ được gán kiểu đường bằng kiểu đường hiện hành trong bản vẽ. Thuộc tính này cũng có hiệu lực với đối tượng Layer. object.Linetype Tham số Giải thích Object Là đối tượng hình học hoặc đối tượng Layer. Linetype Chuỗi chứa tên của kiểu đường của đối tượng. Ngoài ra, thuộc tính này cũng có thể bằng một trong những giá trị đặc biệt sau: CONTINUOUS: đây là kiểu đường mặc định, được AutoCAD tự động tạo ra. BYLAYER: kiểu đường của đối tượng sẽ được lấy bằng kiểu đường đã được gán cho lớp chứa đối tượng. BYBLOCK: kiểu đường của đối tượng sẽ được lấy bằng kiểu đường của block có chứa đối tượng. Đoạn mã dưới đây cho phép người dùng chọn đối tượng trên màn hình và thực hiện đổi kiểu đường của đối tượng được chọn thành “DASHED2” (người dùng phải tạo trước kiểu đường có tên là “DASHED2” bằng lệnh của AutoCAD): Sub VD_LineType() Dim ent As AcadEntity Dim P(2) As Double ' Chọn đối tượng trên màn hình On Error Resume Next ThisDrawing.Utility.GetEntity ent, P, "Chon DT can doi kieu duong: " If Not (ent Is Nothing) Then ' Chuyển kiểu đường cho đối tượng ent.Linetype = "DASHED2" ent.Update End If End Sub CHÚ Ý có thể phải điều chỉnh giá trị của biến hệ thống LTSCALE thì mới quan sát được các kiểu đường không phải là nét liền. 250 ThuộctínhLineweight–Chiềudàynétin Thuộc tính Lineweight dùng để thiết lập chiều dày nét in cho các đối tượng hình học và đối tượng Layer. object.Lineweight Giá trị của thuộc tính này là một hằng số kiểu acLineWeight: Hằng số Bề dày (mm) Hằng số Bề dày (mm) Hằng số Bề dày (mm) acLnWtByLayer Theo lớp acLnWt020 0.2 acLnWt080 0.8 acLnWtByBlock Theo Block acLnWt025 0.25 acLnWt090 0.9 acLnWtByLwDefault Mặc định acLnWt030 0.3 acLnWt100 1.0 acLnWt000 0.0 acLnWt035 0.35 acLnWt106 1.06 acLnWt005 0.05 acLnWt040 0.4 acLnWt120 1.2 acLnWt009 0.09 acLnWt050 0.5 acLnWt140 1.4 acLnWt013 0.13 acLnWt053 0.53 acLnWt158 1.58 acLnWt015 0.15 acLnWt060 0.6 acLnWt200 2.0 acLnWt018 0.18 acLnWt070 0.7 acLnWt211 2.11 Khi một đối tượng hình học vừa mới được tạo ra, giá trị của thuộc tính này là acLnWtByLayer. Nếu không được gán bằng một chiều dày nét in cụ thể, chiều dày nét in sẽ được lấy bằng chiều dày mặc định của AutoCAD, chiều dày này được xác định thông qua biến hệ thống LWDEFAULT (giá trị này có đơn vị là 1/100 của mm). Đoạn mã lệnh sau sẽ minh hoạ cách thức thao tác với thuộc tính Lineweight: Sub VD_LineWeight() Dim circleObj As AcadCircle Dim centerPoint(0 To 2) As Double Dim radius As Double ' Xác định các thông số của đường tròn centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0# radius = 5# ' Tạo đường tròn trong không gian mô hình Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPoint, radius) ZoomAll ' Hiển thị chiều dày hiện hành của đường tròn MsgBox "Chieu day hien hanh la: " & circleObj.Lineweight ' Thay đổi chiều dày của đường tròn circleObj.Lineweight = acLnWt211 circleObj.Update MsgBox " Chieu day hien hanh la: " & circleObj.Lineweight End Sub Ngoài những thuộc tính như đã giới thiệu ở trên, người lập trình có thể sử dụng các thuộc tính sau để hiệu chỉnh đối tượng: Thuộc tính Đối tượng áp dụng Giải thích C C H H Ư Ư Ơ Ơ N N G G V V : : L L Ậ Ậ P P T T R R Ì Ì N N H H T T R R Ê Ê N N A A U U T T O O C C A A D D 251 Center Arc, Circle. Kiểu Variant (mảng 3 phần tử kiểu double). Toạ độ tâm của đối tượng. Radius Arc, Circle. Kiểu Double. Bán kính của cung tròn hoặc đường tròn. Area Arc, Circle, LWPolyline, Polyline. Kiểu Double. Diện tích vùng khép kín của đối tượng. là thuộc tính đọc-ghi đối với đối tượng Circle, là thuộc tính chỉ đọc với các đối tượng khác. Length Line Kiểu Double. Thuộc tính chỉ đọc xác định chiều dài của đoạn thẳng. TextString MText, Text. Kiểu String. Chuỗi văn bản được hiển thị trong đối tượng văn bản. Alignment Text. Hằng số kiểu acAlignment, xác định chế độ canh hàng theo phương đứng và phương ngang. Rotation DimAligned, DimAngular, DimDiametric, DimOrdinate, DimRadial, DimRotated, MText, Text Kiểu Double. Xác định góc xoay của đối tượng so với phương ngang, được tính bằng Radian. 5.4.3. Hiệu chỉnh đường đa tuyến Như đã được giới thiệu ở phần trước, đối với đường đa tuyến 2D, có hai loại đối tượng là: LWPolyline và Polyline, cách thức hiệu chỉnh hai đối tượng này là tương tự nhau. Tuy nhiên, cần phải chú ý một điểm khác biệt lớn giữa hai đối tượng này: toạ độ tại một đỉnh của đường LWPolyline chỉ có 2 thành phần X và Y, còn toạ độ tại một đỉnh của đường Polyline có cả 3 thành phần X, Y và Z nhưng thành phần thứ 3 sẽ không được sử dụng. Ở đây sẽ tập trung giới thiệu về cách hiệu chỉnh đường đa tuyến dạng LWPolyline. Khi hiệu chỉnh đường đa tuyến, ngoài những cách thức đã được đề cập ở trên, người lập trình thường sử dụng các phương thức và thuộc tính sau: Thuộc tính Giải thích Area Double, chỉ đọc. Diện tích của vùng khép kín tạo bởi đường đa tuyến. Closed Boolean. Bằng TRUE: đường đa tuyến sẽ được khép kín, bằng FALSE: đường đa tuyến sẽ được mở. ConstantWidth Double. Chiều dày của tất cả các đoạn của đường đa tuyến. Elevation Double. Cao độ của đường đa tuyến (toạ độ z của đường đa tuyến). Coordinate(i) Variant (thực chất là mảng 2 hoặc 3 phần tử kiểu Double). Toạ độ của đỉnh thứ i của đường đa tuyến. Coordinates Variant (mảng kiểu Double). Toạ độ của tất cả các đỉnh của đường đa tuyến. Phương thức Giải thích SetWidth Thiết lập chiều dày đầu và chiều dày cuối cho đoạn thứ i của đường đa tuyến. GetWidth Lấy chiều dày đầu và chiều dày cuối cho đoạn thứ i của đường đa tuyến. Dưới đây là một số thao tác hiệu chỉnh đường đa tuyến thường dùng Thêmmộtđỉnhvàođườngđatuyến Để thêm một đỉnh vào đường đa tuyến, có thể sử dụng phương thức AddVertex. Cú pháp của phương thức này như sau: 252 object.AddVertex Index, Point Tham số Giải thích Object Là đối tượng LWPolyline. Index Kiểu Integer. Chỉ số của đỉnh cần thêm vào đường đa tuyến. Đỉnh đầu tiên của đường đa tuyến được đánh số là 0. Giá trị Index nhập vào phải lớn hơn 0. Point Kiểu Variant (mảng 2 phần tử kiểu Double) chứa toạ độ của điểm cần thêm vào đường đa tuyến. Ví dụ sau sẽ minh hoạ cách thức chèn một đỉnh vào đường đa tuyến: Sub VD_AddVertex() Dim plineObj As AcadLWPolyline Dim points(0 To 9) As Double ' Xác định các đỉnh của đường đa tuyến points(0) = 1: points(1) = 1 points(2) = 1: points(3) = 2 points(4) = 2: points(5) = 2 points(6) = 3: points(7) = 2 points(8) = 4: points(9) = 4 ' Tạo đường đa tuyến trong không gian mô hình Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) ZoomAll MsgBox "Them dinh vao duong da tuyen.", , "Vi du AddVertex" ' Định nghĩa toạ độ đỉnh mới Dim newVertex(0 To 1) As Double newVertex(0) = 1.5: newVertex(1) = 1 ' Thêm một đỉnh cào đường đa tuyến plineObj.AddVertex 2, newVertex plineObj.Update MsgBox "Da them dinh vao duong da tuyen.", , "Vi du AddVertex" End Sub Đọchoặcthayđổitoạđộđỉnhcủađườngđatuyến Để đọc hoặc thay đổi toạ độ đỉnh của đường đa tuyến, có thể sử dụng thuộc tính Coordinate(i) có trong đối tượng LWPolyline. Khi sử dụng thuộc tính này, cần lưu ý là chỉ số các đỉnh của đường đa tuyến được đánh số bắt đầu từ 0. Đoạn mã dưới đây sẽ tạo một đường đa tuyến, sau đó thay đổi toạ độ đỉnh thứ 2 của đường đa tuyến và hiển thị toạ độ mới của điểm này trong hộp thông báo. Sub VD_Coordinate() Dim plineObj As AcadLWPolyline Dim points(0 To 9) As Double ' Xác định các đỉnh của đường đa tuyến points(0) = 1: points(1) = 1 points(2) = 1: points(3) = 2 points(4) = 2: points(5) = 2 points(6) = 3: points(7) = 2 points(8) = 4: points(9) = 4 ' Tạo đường đa tuyến trong không gian mô hình Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) ZoomAll MsgBox "Thay doi toa do dinh 2.", , "Vi du Coordinate" . tính Color là số nguyên trong phạm vi từ 0 đến 256, 9 trong các số này được định nghĩa trước với các hằng số acColor trong AutoCAD. Dưới đây là danh sách các hằng số này: Hằng số Giá trị Ý. cho thuộc tính Layer một tên lớp không có trong bản vẽ thì chương trình sẽ không báo lỗi, và đối tượng vẫn nằm trên lớp cũ. object.Layer Tham số Giải thích Object Là đối tượng hình học. Layer. thay đổi kiểu hiển thị của nét vẽ các đối tượng hình học trên màn hình, thiết lập lại thuộc tính Linetype của đối tượng thành một kiểu đường hiện có trong bản vẽ. Thông thường, khi một đối