zcc0 发表于 2011-7-28 20:40:04

关于多段线上任意两点查线长的问题

高手,能不能帮我做个多段线上任意两点查询线长的vba啊研究了很久也不知道如何下手,实在不行就是批量查询多段线长的vba也行,不要总的距离要分开的,谢谢啦

wwswwswws 发表于 2011-9-19 17:15:41

参考一下下面的代码:      
For i = 0 To lCount - 1
                   sName = sDT.Item(i).ObjectName
'                   Debug.Print sName
             If sName = "AcDbPolyline" Then
               Set dPlyLine = sDT.Item(i)
               
               
               Coord = dPlyLine.Coordinate(0)                           '第一个点
               dPoint(0) = Coord(0)
               dPoint(1) = Coord(1)
'               dPointFirst(0) = Coord(0)
'               dPointFirst(1) = Coord(1)
'                   Debug.Print "0" & ":Coord(0)=" & Coord(0)
'                   Debug.Print "0" & ":Coord(1)=" & Coord(1)
               lPtNum = (UBound(dPlyLine.Coordinates) - 1) / 2
               '-------------------------------------------------------------
               For i = 1 To lPtNum
                   Coord = dPlyLine.Coordinate(i)
                   dLen = dLen + Sqr((Coord(0) - dPoint(0)) ^ 2 + (Coord(1) - dPoint(1)) ^ 2)
                   dPoint(0) = Coord(0)
                   dPoint(1) = Coord(1)
'                   Debug.Print i & ":Coord(0)=" & Coord(0)
'                   Debug.Print i & ":Coord(1)=" & Coord(1)
               Next
               If dPlyLine.Closed Then
                  dLen = dLen + Sqr((dPointFirst(0) - dPoint(0)) ^ 2 + (dPointFirst(1) - dPoint(1)) ^ 2)
               End If
         end if
   Next
如果是直接求多段线的长度,可以用下面的方法更简单,你要求多段线上任易两点的长度就用上面的方法改一下就可以了。
'               Debug.Print "dPlyLine.Length= " & dPlyLine.Length
               dLen = dPlyLine.Length

页: [1]
查看完整版本: 关于多段线上任意两点查线长的问题