明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2568|回复: 14

英雄无敌能向你请教个问题吗?

  [复制链接]
发表于 2008-5-14 18:57:00 | 显示全部楼层 |阅读模式

英雄无敌

函数“TextString”并非在所有代码路径上都返回值。当使用结果时,可能会在运行时发生空引用异常。

Dim textObj As AcadText

textObj = ThisDrawing.ModelSpace.Item(0)
            text = textObj.TextString
            MsgBox("The TextString property equals: " & text, vbInformation, "TextString 示例")

取不到  好像取不到对象!

发表于 2008-5-14 21:07:00 | 显示全部楼层
本帖最后由 作者 于 2008-5-14 21:17:57 编辑

Dim textObj As AcadEntity
Dim text1 As AcadText
Dim str As String
set textObj = ThisDrawing.ModelSpace.Item(0)

If textObj.ObjectName = "AcDbText" Then
Set text1 = textObj
str = text1.TextString
MsgBox("The TextString property equals: " & str, vbInformation, "TextString 示例")
End If

发表于 2008-5-15 08:19:00 | 显示全部楼层
就像2楼说的一样,你模型空间中的第0个图元不一定是一个文字。
 楼主| 发表于 2008-5-15 17:08:00 | 显示全部楼层

        Dim i As Integer
        Dim textObj As AcadEntity
        Dim text1 As AcadText
        Dim str As String
        Dim count As Integer
        count = ThisDrawing.ModelSpace.Count
        Try
            For i = 0 To i = count - 1
                textObj = ThisDrawing.ModelSpace.Item(i)
                If textObj.ObjectName = "AcDbText" Then
                    text1 = textObj
                    str = text1.TextString
                    MsgBox("The TextString property equals: " & str, vbInformation, "TextString 示例")
                End If
            Next
        Catch
            MsgBox("出错")
        End Try

我都改成这样了,可是还是抛出异常!

发表于 2008-5-15 22:41:00 | 显示全部楼层

我不知道你的代码是怎么来的,try是什么?cathc又是什么?

把你的代码改了一下:

Sub test()
    Dim i As Integer
    Dim textObj As AcadEntity
    Dim text1 As AcadText
    Dim str As String
    Dim count As Integer
    count = ThisDrawing.ModelSpace.count
   
        For i = 0 To count - 1
            Set textObj = ThisDrawing.ModelSpace.Item(i)
            If textObj.ObjectName = "AcDbText" Then
                Set text1 = textObj
                str = text1.TextString
                MsgBox "The TextString property equals: " & str, vbInformation, "TextString 示例"
            End If
        Next

End Sub


 楼主| 发表于 2008-5-20 19:12:00 | 显示全部楼层

try是什么?cathch又是什么?  是捕捉异常

 楼主| 发表于 2008-5-20 19:42:00 | 显示全部楼层
我运行 会抛出异常!Catch
            MsgBox("出错")
 楼主| 发表于 2008-5-21 06:51:00 | 显示全部楼层

        Dim entry As AcadEntity
        Dim entObjectID As Long

 For Each entry In ThisDrawing.ModelSpace
                MsgBox(entry.ObjectName.ToString())
                entObjectID = entry.ObjectID
                entry.Highlight(True)
                MsgBox("The ObjectID of this object is " & entObjectID, vbInformation, "ObjectID 示例")
                entry.Highlight(False)
            Next

根本无法运行到FOR循环里面!

 楼主| 发表于 2008-5-21 07:30:00 | 显示全部楼层

我刚测试后发现,我根本无法得到模型空间的图元对象。运行这段代码得到的结果是There are no objects in model space。

        If ThisDrawing.ModelSpace.Count <> 0 Then
            entry = ThisDrawing.ModelSpace.Item(0)
            MsgBox(entry.ObjectName + _
                " is the first entity in model space.")
        Else
            MsgBox("There are no objects in model space.")
        End If

后来我发现了问题的所在,ThisDrawing = acadapp.ActiveDocument 得到的是当前被打开的活动文档,如果文档没有被打开,是无法得到的,现在请问有什么办法在不用CAD打开这个DWG文件的情况下,得到这个DWG文件的文档吗?

发表于 2008-5-21 11:02:00 | 显示全部楼层

搞清楚VBA、VB、VB.net

try cath end try是VB.net中的错误处理

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

本版积分规则

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

GMT+8, 2024-11-26 09:35 , Processed in 0.197557 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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