绘制路的轮廓

AutoCAD ActiveX/VBA

 
绘制路的轮廓
 
 
 

现在已经获得了路的位置和宽度,可以绘制它的轮廓了。在 gpuser 子例程下面添加下列代码:

' 绘制路的轮廓
Private Sub drawout()
    Dim points(0 To 9) As Double
    Dim pline As AcadLWPolyline
    Dim varRet As Variant
    varRet = ThisDrawing.Utility.PolarPoint( _
        sp, angm90, hwidth)
    points(0) = varRet(0)
    points(1) = varRet(1)
    points(8) = varRet(0)
    points(9) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, pangle, plength)
    points(2) = varRet(0)
    points(3) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, angp90, totalwidth)
    points(4) = varRet(0)
    points(5) = varRet(1)
    varRet = ThisDrawing.Utility.PolarPoint( _
        varRet, pangle + dtr(180), plength)
    points(6) = varRet(0)
    points(7) = varRet(1)
    Set pline = ThisDrawing.ModelSpace. _
     AddLightWeightPolyline(points)
End Sub

此子例程使用 AddLightweightPolyline 方法绘制小路的轮廓。此方法采用一个参数:组成多段线的点阵列。必须找到组成多段线对象的所有点,并将它们按绘制顺序放在数组中。对于该多段线,所需要的点是路的角点。

要找到小路的角点,请使用 PolarPoint 方法。该方法可以找到与基点成给定角度和距离的点。从起点 (sp) 开始,沿逆时针方向找到路的第一个角点。该角点将相距一半路宽 (hwidth),并与路角度成 -90 度。因为要为该路绘制闭合矩形,所以该点成为数组的第一个也是最后一个点。因此,PolarPoint 方法返回的 XY 坐标被移动到点数组的第一个和最后一个位置。

使用路的长度和宽度(plengthwidth)以及路的角度以同样方式得到路的其他角点。每次调用 PolarPoint 方法时,返回的坐标 (varRet) 都复制到点数组中。

在点阵列中标识所有角点后,调用 AddLightweightPolyline 方法。请注意,此方法是从 ModelSpace 对象调用的。如果要运行此宏,还将注意到多段线在 AutoCAD 中尚不可见。要使多段线可见,必须更新显示(稍后将做此工作)。