明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1458|回复: 5

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

[复制链接]
发表于 2009-5-6 17:34:00 | 显示全部楼层 |阅读模式

尝试编了个删除多段线上重复节点的程序,但是最后将新的节点数组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 IntVertCount <> IntNewVertCount 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

发表于 2009-5-14 19:15:00 | 显示全部楼层

将pline重画一下就行了

 楼主| 发表于 2009-5-18 19:36:00 | 显示全部楼层

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

 楼主| 发表于 2009-5-18 19:37:00 | 显示全部楼层

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

发表于 2009-5-18 19:41:00 | 显示全部楼层

那就GetXData,然后SetXData

发表于 2009-5-20 17:11:00 | 显示全部楼层
我觉得是你的算法问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 03:46 , Processed in 0.245113 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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