linshibin 发表于 2009-5-6 17:34:00

[求助]重赋多段线的coordinates值时,CAD报错退出

尝试编了个删除多段线上重复节点的程序,但是最后将新的节点数组NewVert()值赋给多段线的coordinates值,有时可以成功,有时又会报致命错误“Unhandled Access Violation Reading Ox0004 Exception at 6468dfd6h",请教各位大侠这是怎么回事?
Public Sub DeleteReVertex() '删除多段线相邻的重复节点
Dim Plsl As AcadSelectionSet
Set Plsl = SelectUt.CreateSelectionSet("plsl")
Dim pl As AcadLWPolyline
Dim VerCoords As Variant
Dim IntVertCount As Integer
Dim i As Integer
Dim j As Integer
Dim IntNewVertCount As Integer
Dim NewVert() As Double
Call SelectUt.SelectByFilter(Plsl, acSelectionSetAll, 0, "lwpolyline", 8, "TRY")
For Each pl In Plsl
IntNewVertCount = 0
VerCoords = pl.Coordinates
IntVertCount = (UBound(VerCoords) + 1) / 2
   For i = 0 To IntVertCount - 2   '计算新pl的新节点数
    If VerCoords(2 * i)VerCoords(2 * i + 2) And VerCoords(2 * i + 1)VerCoords(2 * i + 3) Then
   'NewVert(j) = VerCoords(2 * i)
   'NewVert(j + 1) = VerCoords(2 * i + 1)
   IntNewVertCount = IntNewVertCount + 1
    End If
   Next i
   IntNewVertCount = IntNewVertCount + 1
If IntVertCountIntNewVertCount Then '如果有重复点
    ReDim NewVert(0 To 2 * IntNewVertCount - 1)
    NewVert(2 * IntNewVertCount - 1) = VerCoords(2 * IntVertCount - 1)
    NewVert(2 * IntNewVertCount - 2) = VerCoords(2 * IntVertCount - 2)
    j = 0
    For i = 0 To IntVertCount - 2
   If VerCoords(2 * i)VerCoords(2 * i + 2) And VerCoords(2 * i + 1)VerCoords(2 * i + 3) Then
      NewVert(j) = VerCoords(2 * i)
      NewVert(j + 1) = VerCoords(2 * i + 1)
      j = j + 2
   End If
    Next i
End If
   pl.Coordinates = NewVert    就是这最后一步出错
Next
End Sub

xuyajun1979 发表于 2009-5-14 19:15:00

将pline重画一下就行了

linshibin 发表于 2009-5-18 19:36:00

PLine中有扩展数据,重画有点麻烦

linshibin 发表于 2009-5-18 19:37:00

PLine中有扩展数据,重画有点麻烦

雪山飞狐_lzh 发表于 2009-5-18 19:41:00

那就GetXData,然后SetXData

gdzhou 发表于 2009-5-20 17:11:00

我觉得是你的算法问题
页: [1]
查看完整版本: [求助]重赋多段线的coordinates值时,CAD报错退出