明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 883|回复: 3

求救:这段代码引起的CAD崩溃

[复制链接]
发表于 2011-6-3 10:29:49 | 显示全部楼层 |阅读模式
程序中有如下一段代码,运行后出现致命错误,如果注释这段代码,则无报错,请问这是什么原因?
      For i = 0 To sum - 1 Step 2     
            On Error Resume Next
            For j = 1 To sum1       'j从1开始
                If StrComp(xdata(i), .ShapeFields.Item(j).FieldName) = 0 Then
                    .ShapeFields.Item(j).Value = xdata(i + 1)
                    Exit For
                End If
            Next j
        Next i




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-6-6 07:08:42 | 显示全部楼层
看样子,真正错误不在这段里。其它部份也帖出来吧,好象是数据库操作的错误。是不是数据库没有打开什么的?
 楼主| 发表于 2011-6-7 16:54:45 | 显示全部楼层
本帖最后由 xyz002 于 2011-6-7 17:03 编辑

代码如下:
Sub tt (PathStr As String, layer As String)
On Error Resume Next
Dim sset As AcadSelectionSet
If Not IsNull(ThisDrawing.SelectionSets.Item("ss")) Then
    Set sset = ThisDrawing.SelectionSets.Item("ss")
    sset.Delete
End If
Set sset = ThisDrawing.SelectionSets.Add("ss")
Dim fType(0) As Variant   
Dim fData(0) As Variant   
Dim obj As AcadBlockReference
fType(0) = 0
fData(0) = "INSERT"
sset.SelectOnScreen fType, fData
If sset.count > 0 Then
With MyShape
    .OpenShape "c:\test.shp", shpCreate, shpPoint
    Dim NewField As ShapeField
    Set NewField = .ShapeFields.CreateField("SOUTH", shpText, 8)
    Set NewField = .ShapeFields.CreateField("点号", shpText, 15)      
    Set NewField = .ShapeFields.CreateField("Z坐标", shpDouble, 15, 3)   
    .AppendFieldDefs
End With
For Each obj In sset
    Dim PointCoor As Variant
    PointCoor = obj.InsertionPoint
    Dim xtype As Variant
    Dim xdata As Variant
    obj.GetXData "", xtype, xdata
    If TypeName(xdata) <> "Empty" Then  
    Dim sum As Integer
    sum = UBound(xdata) - LBound(xdata) + 1
   
    With MyShape
        Dim sum1 As Integer
        sum1 = .ShapeFields.count
        Dim i As Integer, j As Integer
        For i = 0 To sum - 1 Step 2     
            On Error Resume Next
            For j = 1 To sum1      
                If StrComp(xdata(i), .ShapeFields.Item(j).FieldName) = 0 Then
                    .ShapeFields.Item(j).Value = xdata(i + 1)
                End If
            Next j
        Next i   
        
        Dim NewVert As Variant
        Set NewVert = .Vertices.AddVertice(PointCoor(0), PointCoor(1))
        
        .CreateShape
    End With
    End If
Next obj
End If
End Sub

程序运行时,更多的是reading错误:


有时候 一运行就关闭CAD窗口,这是什么类型的错误?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-6-13 15:33:06 | 显示全部楼层
建议设断点试试吧,如果第一次或者前几次能循环过去,看看 xdata(i + 1)这个地方,有可能是他越界了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:54 , Processed in 0.184827 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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