乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 75|回复: 6

导致 VB 错误的 RText

[复制链接]

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-18 08:47:24 | 显示全部楼层 |阅读模式
大家好,
我有一个例程,它运行带有裁剪平面的dview,然后还运行section命令。然后,由sectionsolid命令创建的区域图元被移动到一个单独的动态命名并按顺序编号的图层中。我已尝试为该绘图、图纸空间和其他几个要素中的每个要素创建一个选择集。
  1. Dim sHandle As String
  2. Dim itm As AcadObject
  3. Dim SkipPortHandle As String
  4. Dim testvp As AcadViewports
  5. Dim ActLayout As AcadLayout
  6. Dim DOC As AcadDocument
  7.    
  8.     Set ActLayout = thisdrawing.ActiveLayout
  9.    
  10.     thisdrawing.ActiveSpace = acPaperSpace
  11.     thisdrawing.MSpace = True
  12.     Dim pviewportObj2 As AcadPViewport
  13.     Dim testvp2 As AcadPViewport
  14.     Dim currView As AcadPViewport
  15.     Dim testvp3 As AcadPViewport
  16.    
  17.    'gets the viewport handle
  18.     On Error Resume Next
  19.     Set ssetObj = thisdrawing.SelectionSets.Add("prev")
  20.     On Error GoTo 0
  21.     ssetObj.Select acSelectionSetPrevious
  22.     thisdrawing.ActivePViewport = thisdrawing.ActivePViewport
  23.     SkipPortHandle = thisdrawing.ActivePViewport.Handle
  24.   
  25.     'gets all the layout names
  26.     Dim Layouts As AcadLayouts, Layout As AcadLayout
  27.     Dim LayoutName2 As AcadLayout
  28.     Set Layouts = thisdrawing.Layouts
  29.    
  30.     thisdrawing.MSpace = False
  31.    
  32.     For Each Layout In Layouts
  33.       If Layout.Name  "Model" Then
  34.         ZoomAll
  35.         thisdrawing.ActiveLayout = Layout
  36.         ZoomAll
  37.         
  38.         'ssetObj.Clear
  39.         'ssetObj.Select acSelectionSetAll
  40.         
  41.             'For Each Ent In ssetObj
  42.             
  43.             For Each Ent In thisdrawing.PaperSpace
  44.               If LCase(Ent.ObjectName) = "acdbviewport" Then
  45.                  If Ent.Handle  SkipPortHandle Then
  46.                  
  47.                  ZoomAll
  48.                    If LCase(Ent.Layer) = "vports" Then
  49.                     sHandle = Ent.Handle
  50.                     Set itm = thisdrawing.HandleToObject(sHandle)
  51.                     
  52.                     
  53.                     ZoomAll
  54.                     Set currView = itm
  55.                     thisdrawing.MSpace = True
  56.                     thisdrawing.ActivePViewport = currView
  57.                     thisdrawing.SendCommand "vplayer" & " " & "f" & " " & layername2 _
  58.                     & vbCr & "current" & vbCr & vbCr
  59.                     currView.Update
  60.                   
  61.                    End If
  62.                  End If
  63.               End If
  64.             Next
  65.      
  66.       End If
  67.     Next
  68. On Error GoTo 0
  69. thisdrawing.ActiveLayout = ActLayout
  70. thisdrawing.MSpace = True
  71. thisdrawing.ActivePViewport = thisdrawing.HandleToObject(SkipPortHandle)
  72. thisdrawing.SendCommand "vplayer" & " " & "t" & " " & layername2 _
  73. & vbCr & "current" & vbCr & vbCr
  74. thisdrawing.SendCommand "pspace" & vbCr
  75. thisdrawing.Regen acAllViewports

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

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

16

主题

168

帖子

39

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2006-4-18 11:19:40 | 显示全部楼层

  1. Sub RTextErrContol()
  2.     Dim ent As AcadEntity
  3.         On Error GoTo Err_Control
  4.    
  5.     For Each ent In ThisDrawing.PaperSpace
  6.         Debug.Print ent.ObjectName
  7.     Next
  8.    
  9. Exit_Here:
  10.     Exit Sub
  11. Err_Control:
  12.     Select Case Err.Number
  13.         Case -2147221231   'Automation error
  14.             Resume Next
  15.         Case Else
  16.             MsgBox Err.Description
  17.             Err.Clear
  18.             Resume Exit_Here
  19.     End Select
  20. End Sub

回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

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

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-18 12:40:40 | 显示全部楼层
谢谢Bryco,
但是下一个简历不会在类错误的情况下工作。它只是立即软管选择集。我认为无论如何你甚至不能查看实体,否则就太晚了。因此这篇文章。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-18 12:42:31 | 显示全部楼层
谢谢你恰克,但不会的。如果你们看到这个,你们就会明白了。拿出一些测试代码给你看实在是太费时间了。我在找一个已经熟悉这种错误的人。对于Autodesk来说,这是一个相当严重的错误,我还没有在任何地方看到任何解决方案。继续努力,戴夫
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-4-18 12:58:36 | 显示全部楼层
如果使用选择集,则筛选出 RTEXT 对象。在迭代 Layout.Block 对象时,我没有找到任何合理的方法来解决这个问题。要获取图形中除 RTEXT 对象之外的所有内容:
[代码 2]
和 FWIW,这似乎在 R2007 中已修复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-4-19 16:28:20 | 显示全部楼层
布莱科,它有点管用...虽然它捕获错误,因此用户不会遇到错误消息,但它不允许在遇到 RTEXT 对象后再处理任何实体。若要对此进行测试,请绘制一条线,然后是一个 Rtext 对象,然后是一个圆圈并运行宏。线条将输出到“即时”窗口,但不输出到圆圈。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 15:09 , Processed in 0.640259 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表