DaveW 发表于 2006-4-18 08:47:24

导致 VB 错误的 RText

大家好,
我有一个例程,它运行带有裁剪平面的dview,然后还运行section命令。然后,由sectionsolid命令创建的区域图元被移动到一个单独的动态命名并按顺序编号的图层中。我已尝试为该绘图、图纸空间和其他几个要素中的每个要素创建一个选择集。
Dim sHandle As String
Dim itm As AcadObject
Dim SkipPortHandle As String
Dim testvp As AcadViewports
Dim ActLayout As AcadLayout
Dim DOC As AcadDocument
   
    Set ActLayout = thisdrawing.ActiveLayout
   
    thisdrawing.ActiveSpace = acPaperSpace
    thisdrawing.MSpace = True
    Dim pviewportObj2 As AcadPViewport
    Dim testvp2 As AcadPViewport
    Dim currView As AcadPViewport
    Dim testvp3 As AcadPViewport
   
   'gets the viewport handle
    On Error Resume Next
    Set ssetObj = thisdrawing.SelectionSets.Add("prev")
    On Error GoTo 0
    ssetObj.Select acSelectionSetPrevious

    thisdrawing.ActivePViewport = thisdrawing.ActivePViewport

    SkipPortHandle = thisdrawing.ActivePViewport.Handle

    'gets all the layout names
    Dim Layouts As AcadLayouts, Layout As AcadLayout
    Dim LayoutName2 As AcadLayout
    Set Layouts = thisdrawing.Layouts
   
    thisdrawing.MSpace = False
   
    For Each Layout In Layouts
      If Layout.Name"Model" Then
      ZoomAll
      thisdrawing.ActiveLayout = Layout
      ZoomAll
      
      'ssetObj.Clear
      'ssetObj.Select acSelectionSetAll
      
            'For Each Ent In ssetObj
            
            For Each Ent In thisdrawing.PaperSpace
            If LCase(Ent.ObjectName) = "acdbviewport" Then
               If Ent.HandleSkipPortHandle Then
               
               ZoomAll
                   If LCase(Ent.Layer) = "vports" Then
                  sHandle = Ent.Handle
                  Set itm = thisdrawing.HandleToObject(sHandle)
                  
                  
                  ZoomAll
                  Set currView = itm
                  thisdrawing.MSpace = True
                  thisdrawing.ActivePViewport = currView
                  thisdrawing.SendCommand "vplayer" & " " & "f" & " " & layername2 _
                  & vbCr & "current" & vbCr & vbCr
                  currView.Update
                  
                   End If
               End If
            End If
            Next
   
      End If
    Next
On Error GoTo 0
thisdrawing.ActiveLayout = ActLayout
thisdrawing.MSpace = True
thisdrawing.ActivePViewport = thisdrawing.HandleToObject(SkipPortHandle)
thisdrawing.SendCommand "vplayer" & " " & "t" & " " & layername2 _
& vbCr & "current" & vbCr & vbCr
thisdrawing.SendCommand "pspace" & vbCr
thisdrawing.Regen acAllViewports

在上面的代码中,每当它遇到paperspace中的任何RText时,都会给出一个类错误。这是Autodesk的一个已知问题。
关于如何解决这个问题,有什么建议吗?我喜欢使用RText,不希望以后不得不添加它或者要求我的客户也这样做。
谢谢您,
David wishen grad
mill lister,Inc.
PS。亚历克斯在Woodweb上发布了这个网站,所以我想我应该去看看。我仍然不明白为什么他还不是顾客。我真的不知道他到底是做什么的,而且许多细节设计人员没有选择他们使用什么软件的权利。如果你看到这封信,亚历克斯,有机会给我打个电话。你是个相当聪明的家伙。我想了解你的需求是什么。
**** Hidden Message *****

Arizona 发表于 2006-4-18 11:19:40


Sub RTextErrContol()
    Dim ent As AcadEntity
      On Error GoTo Err_Control
   
    For Each ent In ThisDrawing.PaperSpace
      Debug.Print ent.ObjectName
    Next
   
Exit_Here:
    Exit Sub
Err_Control:
    Select Case Err.Number
      Case -2147221231   'Automation error
            Resume Next
      Case Else
            MsgBox Err.Description
            Err.Clear
            Resume Exit_Here
    End Select
End Sub

Bryco 发表于 2006-4-18 12:39:27

是的,我知道。我从来没有考虑过所有的选择和问题,但是我知道这个可以很好地处理所有事情。下一个onerror简历是由on error goto 0处理的。我之前已经把那些东西拉回来放回去了。总有一天我会正确地编码它,但是它不会因为我知道当它还不存在并且删除了on错误时如何干净地开始。对我来说,用正确的方式来做会更容易一点,你的方式,我只是现在没有时间去理解。我知道的足够多,它最终会与我合得来。
谢谢你的回复,
戴夫

DaveW 发表于 2006-4-18 12:40:40

谢谢Bryco,
但是下一个简历不会在类错误的情况下工作。它只是立即软管选择集。我认为无论如何你甚至不能查看实体,否则就太晚了。因此这篇文章。

DaveW 发表于 2006-4-18 12:42:31

谢谢你恰克,但不会的。如果你们看到这个,你们就会明白了。拿出一些测试代码给你看实在是太费时间了。我在找一个已经熟悉这种错误的人。对于Autodesk来说,这是一个相当严重的错误,我还没有在任何地方看到任何解决方案。继续努力,戴夫

DaveW 发表于 2006-4-18 12:58:36

如果使用选择集,则筛选出 RTEXT 对象。在迭代 Layout.Block 对象时,我没有找到任何合理的方法来解决这个问题。要获取图形中除 RTEXT 对象之外的所有内容:
[代码 2]
和 FWIW,这似乎在 R2007 中已修复

Jeff_M 发表于 2006-4-19 16:28:20

布莱科,它有点管用...虽然它捕获错误,因此用户不会遇到错误消息,但它不允许在遇到 RTEXT 对象后再处理任何实体。若要对此进行测试,请绘制一条线,然后是一个 Rtext 对象,然后是一个圆圈并运行宏。线条将输出到“即时”窗口,但不输出到圆圈。
页: [1]
查看完整版本: 导致 VB 错误的 RText