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 243 Dim circleObj As AcadCircle Dim center(0 To 2) As Double Dim radius As Double center(0) = 2#: center(1) = 2#: center(2) = 0# radius = 0.5 Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius) ZoomAll ' Xác định 2 điểm tạo nên vec-tơ tịnh tiến Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double point1(0) = 0: point1(1) = 0: point1(2) = 0 point2(0) = 2: point2(1) = 0: point2(2) = 0 MsgBox "Di chuyển theo trục X 2 đơn vị." ' Thực hiện di chuyển đối tượng circleObj.Move point1, point2 ZoomAll MsgBox "Quá trình dịch chuyển đã kết thúc." End Sub Lấyđốixứng–PhươngthứcMirror Sử dụng phương thức Mirror để lấy đối xứng một đối tượng qua một trục được xác định trước. Cú pháp của phương thức này như sau: Set RetVal = object.Mirror(Point1, Point2) Tham số Giải thích Object Đối tượng hình học, là đối tượng gốc sẽ được lấy đối xứng. Point1, Point2 Tham số đầu vào, là mảng 3 phần tử kiểu Double chứa toạ độ của điểm thứ nhất và thứ hai của trục đối xứng. RetVal Tham chiếu đến đối tượng sau khi đã được lấy đối xứng Minh hoạ: Phương thức Mirror. Khi sử dụng phương thức Mirror, cần lưu ý đến giá trị của biến hệ thống MIRRTEXT. Biến này sẽ điều khiển cách thức lấy đối xứng với đối tượng văn bản: 244 Trước khi lấy đối xứng Sau khi lấy đối xứng (MIRRTEXT=1) Sau khi lấy đối xứng (MIRRTEXT=0) Hình V-12: Biến hệ thống MIRRTEXT và phương thức Mirror Ví dụ sau sẽ tạo một đường đa tuyến, sau đó lấy đối xứng qua trục y=4.25 và đổi màu đối tượng vừa mới được lấy đối xứng thành màu đỏ: Sub VD_Mirror() ' Tạo đường đa tuyến Dim plineObj As AcadLWPolyline Dim points(0 To 11) As Double 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 points(10) = 4: points(11) = 1 Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) plineObj.Closed = True ZoomAll ' Xác định trục đối xứng Dim point1(0 To 2) As Double Dim point2(0 To 2) As Double point1(0) = 0: point1(1) = 4.25: point1(2) = 0 point2(0) = 4: point2(1) = 4.25: point2(2) = 0 MsgBox "Lấy đối xứng đường đa tuyến.", , "VD Mirror" ' Thực hiện lấy đối xứng đường đa tuyến Dim mirrorObj As AcadLWPolyline Set mirrorObj = plineObj.Mirror(point1, point2) mirrorObj.Color = acRed ZoomAll MsgBox "Mirror completed.", , " VD Mirror" End Sub LấyOff‐set–PhươngthứcOffset Phương thức Offset sẽ tạo ra một đối tượng mới với đường biên nằm cách đường biên của đối tượng cũ một khoảng được xác định trước. Phương thức này có thể được áp dụng với các đối tượng như: Arc, Circle, Ellipse, Line, LightweightPolyline, Polyline, Spline, và Xline. Phương thức này sẽ trả về mảng chứa các đối tượng vừa mới được tạo. Tuy nhiên, thông thường mảng này chỉ chứa một đối tượng. Cú pháp của phương thức này như sau: Set RetVal = object.Offset(Distance) Tham số Giải thích Object Là đối tượng gốc sẽ được lấy Off-set. 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 245 Distance Tham số đầu vào, kiểu Double, là khoảng cách lấy off-set. Giá trị của tham số này có thể là số âm hoặc dương. Nếu là số âm thì phương thức này sẽ tạo ra những đối tượng có xu hướng “bán kính nhỏ hơn” đối tượng gốc, trong trường hợp “bán kính nhỏ hơn” không có ý nghĩa thì phương thức này sẽ tạo ra đối tượng có toạ độ X, Y và Z nhỏ hơn đối tượng gốc. RetVal Biến kiểu Variant, là mảng chứa các đối tượng mới được tạo ra. Thông thường, mảng này chỉ có một đối tượng. Ví dụ sau sẽ tạo một đường đa tuyến trong không gian mô hình và lấy off-set đối tượng này một khoảng là 0,25. Đối tượng vừa mới được tạo ra sẽ được đổi màu thành màu đỏ. Sub VD_Offset() ' Tạo đường đa tuyến Dim plineObj As AcadLWPolyline Dim points(0 To 11) As Double 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 points(10) = 4: points(11) = 1 Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) plineObj.Closed = True ZoomAll MsgBox "Off-set đa tuyến với khoảng cách 0.25.", , "Ví dụ Offset" ' Lấy Off-set đường đa tuyến Dim offsetObj As Variant offsetObj = plineObj.Offset(0.25) offsetObj(0).Color = acRed ZoomAll End Sub Xoayđốitượng–PhươngthứcRotate Sử dụng phương thức Rotate để xoay một đối tượng quanh một điểm cố định. Cú pháp của phương thức này như sau: object.Rotate BasePoint, RotationAngle Tham số Giải thích Object Là đối tượng sẽ được xoay. BasePoint Là mảng 3 phần tử kiểu Double chứa toạ độ điểm gốc, đối tượng sẽ được quay quanh điểm này. RotationAngle Là tham số kiểu Double, xác định góc xoay đối tượng (tính bằng Radian). Đoạn mã sau sẽ minh hoạ cách thức sử dụng phương thức Rotate: Sub VD_Rotate() ' Tạo đường đa tuyến Dim plineObj As AcadLWPolyline Dim points(0 To 11) As Double points(0) = 1: points(1) = 2 246 points(2) = 1: points(3) = 3 points(4) = 2: points(5) = 3 points(6) = 3: points(7) = 3 points(8) = 4: points(9) = 4 points(10) = 4: points(11) = 2 Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) plineObj.Closed = True ZoomAll MsgBox "Xoay góc 45 độ.", , "VD Rotate " ' Định góc xoay và toạ độ điểm cơ sở Dim basePoint(0 To 2) As Double Dim rotationAngle As Double basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0 rotationAngle = 45/180*3.1416 ' 45 độ ' Xoay đối tượng plineObj.Rotate basePoint, rotationAngle ZoomAll End Sub Thayđổitỷlệđốitượng–PhươngthứcScaleEntity Sử dụng phương thức ScaleEntity để thay đổi tỷ lệ đối tượng đồng đều theo các phương X, Y và Z. Cú pháp của phương thức này như sau: object.ScaleEntity BasePoint, ScaleFactor Tham số Giải thích Object Là đối tượng sẽ được thay đổi tỷ lệ. BasePoint Mảng 3 phần tử kiểu Double chứa toạ độ điểm gốc, đối tượng sẽ được thay đổi tỷ lệ theo các phương X, Y và Z quanh điểm này quay quanh điểm này. ScaleFactor Tham số kiểu Double, xác định hệ số tỷ lệ khi thay đổi tỷ lệ. Kích thước của đối tượng sẽ được nhân với hệ số tỷ lệ này. Tham số ScaleFactor chỉ nhận giá trị lớn hơn không, nếu nhỏ hơn hoặc bằng không thì VBAIDE sẽ báo lỗi. Giá trị ScaleFactor<1 sẽ thu nhỏ đối tượng, ngược lại sẽ phóng to đối tượng lên. Đốitượngvớivịtrí vàkíchthướcmới Đốitượngvớivịtrívà kíchthướcbanđầu 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 247 Hình V-13: Minh hoạ phương thức ScaleEntity Đoạn mã sau tạo một đường đa tuyến trong không gian mô hình và sử dụng phương thức ScaleEntity để thay đổi tỷ lệ của đường đa tuyến đó quanh điểm (4 , 4.25 , 0) với hệ số tỷ lệ là 0.5 Sub VD_ScaleEntity() ' Tạo đường đa tuyến Dim plineObj As AcadLWPolyline Dim points(0 To 11) As Double points(0) = 1: points(1) = 2 points(2) = 1: points(3) = 3 points(4) = 2: points(5) = 3 points(6) = 3: points(7) = 3 points(8) = 4: points(9) = 4 points(10) = 4: points(11) = 2 Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points) plineObj.Closed = True ZoomAll MsgBox "Thay đổi tỷ lệ với hệ số 0.5", , "Ví dụ ScaleEntity" ' Xác định các tham tham số của phương thức Dim basePoint(0 To 2) As Double Dim scalefactor As Double basePoint(0) = 4: basePoint(1) = 4.25: basePoint(2) = 0 scalefactor = 0.5 ' Thay đổi tỷ lệ đường đa tuyến plineObj.ScaleEntity basePoint, scalefactor ZoomAll End Sub 5.4.2. Hiệu chỉnh đối tượng sử dụng các thuộc tính Không giống như các khi sử dụng các phương thức, người lập trình có thể sử dụng các thuộc tính để hiệu chỉnh sự hiển thị của các đối tượng hình học trong bản vẽ AutoCAD. Sau khi thay đổi thuộc tính của các đối tượng, nên sử dụng phương thức Update có trong đối tượng đó để cập nhật những thay đổi trên bản vẽ. Dưới đây là các thuộc tính thường được sử dụng khi hiệu chỉnh các đối tượng hình học. ThuộctínhColor–Màucủađốitượng Sử dụng thuộc tính Color để lấy hoặc gán màu cho một đối tượng hình học. Thuộc tính này cũng có trong đối tượng Layer với ý nghĩa tương đương. object.Color Tham số Giải thích Object Là đối tượng hình học, hoặc đối tượng Layer. Color Số nguyên hoặc hằng số acColor, xác định màu của đối tượng. Khi một đối tượng mới được tạo ra, giá trị mặc định của thuộc tính này acByLayer . Distance Tham số đầu vào, kiểu Double, là khoảng cách lấy off-set. Giá trị của tham số này có thể là số âm hoặc dương. Nếu là số âm thì phương thức này sẽ tạo ra những đối tượng có xu hướng “bán. quay quanh điểm này. ScaleFactor Tham số kiểu Double, xác định hệ số tỷ lệ khi thay đổi tỷ lệ. Kích thước của đối tượng sẽ được nhân với hệ số tỷ lệ này. Tham số ScaleFactor chỉ nhận giá trị. RotationAngle Tham số Giải thích Object Là đối tượng sẽ được xoay. BasePoint Là mảng 3 phần tử kiểu Double chứa toạ độ điểm gốc, đối tượng sẽ được quay quanh điểm này. RotationAngle Là tham số kiểu