明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1402|回复: 1

[VBA]如何在VBA中画不同宽度的多线

[复制链接]
发表于 2005-12-6 14:57:00 | 显示全部楼层 |阅读模式
请各位高手指点,如何在VBA中画不同宽度的多线,盼复,谢谢!
发表于 2005-12-6 21:11:00 | 显示全部楼层

reply

帮助中的例子,SetWidth()方法:


Sub Example_SetWidth()
    ' The following code prompts you to select a lightweight
    ' polyline, and then prompts you for the width to set each
    ' segment of the polyline.
    ' Pressing ENTER without specifying a width is equivalent to
    ' entering 0.
     
    Dim returnObj As AcadObject
    Dim basePnt As Variant
    Dim retCoord As Variant
    Dim StartWidth As Double
    Dim EndWidth As Double
    Dim i, j As Long
    Dim nbr_of_segments As Long
    Dim nbr_of_vertices As Long
    Dim segment As Long
    Dim promptStart As String
    Dim promptEnd As String
             
    On Error Resume Next
  
    ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select a polyline"
      
    ' Make sure the user selected a polyline.
    If Err <> 0 Then
        If returnObj.EntityName <> "AcDbPolyline" Then
            MsgBox "You did not select a polyline"
        End If
        Exit Sub
    End If
   
    ' Obtain the coordinates of each vertex of the selected polyline.
    ' The coordinates are returned in an array of points.
    retCoord = returnObj.Coordinates
   
    segment = 0
    i = LBound(retCoord)                 ' Start index of coordinates array
    j = UBound(retCoord)                 ' End index of coordinates array
    nbr_of_vertices = ((j - i) \ 2) + 1  ' Number of vertices in the polyline
   
    ' Determine the number of segments in the polyline.
    ' A closed polyline has as many segments as it has vertices.
    ' An open polyline has one fewer segment than it has vertices.
    ' Check the Closed property to determine if the polyline is closed.
   
    If returnObj.Closed Then
        nbr_of_segments = nbr_of_vertices
    Else
        nbr_of_segments = nbr_of_vertices - 1
    End If
   
    ' Have user set the width for each segment of the polygon
    Do While nbr_of_segments > 0
         
        ' Get width values from the user
        promptStart = vbCrLf & "Specify the width at the beginning of the segment at " & retCoord(i) & "," & retCoord(i + 1) & " ==> "
        promptEnd = vbCrLf & "Now specify the width at the end of that segment ==> "
      
        StartWidth = ThisDrawing.Utility.GetReal(promptStart)
        EndWidth = ThisDrawing.Utility.GetReal(promptEnd)

        ' Set the width of the current segment
        returnObj.SetWidth segment, StartWidth, EndWidth
    
        ' Prepare to obtain width of next segment, if any
        i = i + 2
        segment = segment + 1
        nbr_of_segments = nbr_of_segments - 1
    Loop
     
    MsgBox "Segment widths have been set", , "SetWidth Example"

End Sub

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 08:31 , Processed in 0.154503 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表