? 本文主要講LightweightPolyline? ,即輕量多段線。
?ObjectARX 中提供了三種多段線的相關類:AcDbPolyline(對應vba中lightweightpolyline) 、AcDb2dPolyline (對應vba中polyline)和
AcDb3dPolyline
Polyline就是(輕量)多段線,用PEDIT命令的“擬合”選項或“樣條曲線”選項擬合成曲線后就變成Polyline2d,即二維多段線。
vba中 ,? LightweightPolyline (每一頂點用2個元素表示,數組大小必須為2的倍數)對象, 而對比polyline(每一頂點用三個元素表示,數組大小必須為3的倍數) |
優化多段線(輕量多段線),由線和弧段組成的可調節寬度的二維線。
VBA 類名: | AcadLWPolyline? |
---|---|
創建方法: | ModelSpace.AddLightweightPolyline |
訪問途徑: | ModelSpace.Item |
要創建優化多段線,可使用 AddLightweightPolyline 方法。要編輯或查詢優化多段線,可使用以下方法和屬性:
方法 AddVertex ArrayPolar ArrayRectangular Copy Delete Explode GetBoundingBox GetBulge GetExtensionDictionary GetWidth GetXData Highlight IntersectWith Mirror Mirror3D Move Offset Rotate Rotate3D ScaleEntity SetBulge SetWidth SetXData TransformBy Update | 屬性 Application Area Closed ConstantWidth Coordinate Coordinates Document Elevation Handle HasExtensionDictionary Hyperlinks Layer Length Linetype LinetypeGeneration LinetypeScale Lineweight Normal ObjectID OwnerID PlotStyleName Thickness TrueColor Visible |
AddLightweightPolyline 方法 |
由頂點列表創建優化多段線。
參閱 | 示例
語法
RetVal = object.AddLightweightPolyline(VerticesList)
Object
ModelSpace 集合, PaperSpace 集合, Block
使用該方法的對象。
VerticesList
Variant[變體] (雙精度數組)
指定多段線頂點的二維 OCS 坐標數組。至少需要兩點(四個元素)以構成優化多段線。數組大小必須為2的倍數。
RetVal
LightweightPolyline 對象
新創建的 LightweightPolyline 對象。
說明
頂點是生成多段線的線段端點。要添加弧段,首先創建全部為直線段的多段線,然后為個別需要變為弧段的線段添加凸度。要為線段添加凸度值,可使用 SetBulge 方法。
多段線的標高將被設置為布局的當前標高。使用 ElevationModelspace 或 ElevationPaperspace 屬性可確定多段線的標高。
坐標可使用 TranslateCoordinates 方法在OCS坐標與其它坐標系統相互轉換。
代碼如下:
Sub 二維輕量多段線LWpolyline設置凸度bulge()
Dim ent As AcadEntity
Dim ent1 As AcadObject
Dim pt As VariantDim points(0 To 9) As Double' 定義二維多段線頂點points(0) = 1: points(1) = 1points(2) = 1: points(3) = 2points(4) = 2: points(5) = 2points(6) = 3: points(7) = 2points(8) = 4points(9) = 4
Dim a As AcadPoint
Dim VerticesList As Variant
'VerticesList = ThisDrawing.Utility.GetPoint(, "dian")
'VerticesList1 = ThisDrawing.Utility.GetPoint(, "dian")
Set plobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
'Set plobj = ThisDrawing.ModelSpace.AddPolyline(points)For Each ent In ThisDrawing.ModelSpaceent.SetBulge 0, 0.5NextThisDrawing.Regen acActiveViewport
Stop
End Sub
如圖,已設置好弧度?
?由下圖可知,該該線類型為多段線
為了對比,另附polyline(每一頂點用三個元素表示,數組大小必須為3的倍數)
? Polyline 對象 |
多段線,可調整寬度的二維線,或不可調整寬度的由線和弧段組成的三維線或網絡。
VBA 類名 | AcadPolyline? |
---|---|
創建方法 | ModelSpace.AddPolyline |
訪問途徑 | ModelSpace.Item |
語法
RetVal = object.AddPolyline(VerticesList)
Object
ModelSpace 集合, PaperSpace 集合, Block
使用該方法的對象。
VerticesList
Variant[變體] (雙精度數組); 僅用于輸入
用于創建多段線頂點的OCS坐標數組。每一頂點用三個元素表示,前兩個元素為OCS的X和Y坐標;而第三個元素為忽略。至少需要兩點(六個元素)來構成一個多段線對象。該數組的大小必須為3的倍數。
RetVal
Polyline 對象
新創建的 Polyline 對象。
Sub LightWeightpolyline()
Dim ent As AcadEntity
Dim ent1 As AcadObject
Dim pt As VariantDim points(9) As Double' 定義二維多段線頂點points(0) = 100: points(1) = 1points(2) = 1: points(3) = 2points(4) = 2550: points(5) = 222points(6) = 3: points(7) = 2points(8) = 4points(9) = 400
'Dim j As Integer
'j = -1
'Dim a(0 To 2) As Variant
'Dim VerticesList As Variant
'VerticesList = ThisDrawing.Utility.GetPoint(, "dian")
'VerticesList1 = ThisDrawing.Utility.GetPoint(, "dian")
'For i = LBound(VerticesList) To UBound(VerticesList)
'j = j + 1
'ReDim Preserve points(j)
' points(j) = VerticesList(j)
'Next
'
'For i = LBound(VerticesList1) To UBound(VerticesList1)
'j = j + 1
'ReDim Preserve points(j)
' points(j) = VerticesList1(j - 3)
'NextSet plobj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)' For Each ent In ThisDrawing.ModelSpace
' ent.SetBulge 0, 0.5 lightweightpolyling不支持setbulge凸度
' NextThisDrawing.Regen acActiveViewportDim coor As Variant
coor = plobj.Coordinates
StopEnd Sub
?結論:vba中, 通過addpolyline方法創建的線的vba類名是acdb2dpolyline,cad類名是acadpolyline,cad中右鍵特性顯示為二維多線段,
而addlightweightpolyline方法創建的線的vba類名是acdbpolyline,cad類名不屬于acadpolyline,cad中右鍵特性顯示為多線段。
????????ObjectARX 中提供了三種多段線的相關類:AcDbPolyline 、AcDb2dPolyline 和
AcDb3dPolyline 。其中,利用AutoCAD 的內部命令可以創建AcDbPolyline 和AcDb3dPolyline
類的對象,用PLINE 命令創建的對象是輕量多段線(AcDbPolyline ),用3DPOLY 命令創建
的對象是三維多段線(AcDb3dPolyline )。
?