本文主要讲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 )。