乐筑天下

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

[编程交流] 图纸集VBA索引

[复制链接]

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 15:22:28 | 显示全部楼层 |阅读模式
我编写了一些代码,可以从图纸集管理器中提取图纸和子集,但输出的信息是无序的。是否有方法按sheetset manager托盘中显示的顺序提取此信息?或者有没有一种方法可以为每个表和子集获取某种索引号?
拉取页码没有帮助,因为我们的页码有字母和数字。
  1. Dim ShtNum As String
  2. Dim oSubset As AcSmSubset
  3. Dim pSubset As AcSmSubset
  4. Dim oSheet As AcSmSheet
  5. Dim oItem As IAcSmPersist
  6. Dim ShSetAR(1 To 3, 1 To 200) As String
  7. Dim ShSetARCount As Integer
  8. '' Synchronize Sheets with Sheet Properties
  9. Private Sub CopyShsetarray()
  10. '' Create a Reference to the Sheet Set Manager Object
  11.    Dim oSheetSetMgr As AcSmSheetSetMgr
  12.    Set oSheetSetMgr = New AcSmSheetSetMgr
  13. '' Get the current Sheet Set
  14.    Dim oSheetDb As AcSmDatabase
  15.    Set oSheetDb = oSheetSetMgr.GetDatabaseEnumerator().Next
  16. '' Get the objects in the Sheet Set
  17.    Dim oEnum As IAcSmEnumPersist
  18.    Set oEnum = oSheetDb.GetEnumerator
  19. '' Get the first object in the Enumerator
  20. MsgBox oSheetDb.GetFileName
  21.    Set oItem = oEnum.Next
  22. '' Step through all the objects in the Sheet Set
  23. MsgBox oItem.GetTypeName
  24.        Do While Not oItem Is Nothing
  25. '' Add Item to Array
  26. On Error Resume Next
  27.            If oItem.GetTypeName = "AcSmSheet" Or oItem.GetTypeName = "AcSmSubset" Then
  28.                ShSetARCount = 1 + ShSetARCount
  29.                Set pSubset = oItem.GetOwner()
  30.                ShSetAR(2, (ShSetARCount)) = pSubset.GetName
  31.                ShSetAR(3, (ShSetARCount)) = oItem.GetTypeName
  32.                    If oItem.GetTypeName = "AcSmSheet" Then
  33.                        Set oSheet = oItem
  34.                        ShSetAR(1, (ShSetARCount)) = ShtNumFromPath(oSheet.GetLayout.GetFileName)
  35.                        Else
  36.                        Set oSubset = oItem
  37.                        ShSetAR(1, (ShSetARCount)) = oSubset.GetName
  38.                    End If
  39.                'MsgBox ShSetARCount & "___" & ShSetAR(1, (ShSetARCount)) & "___" & ShSetAR(2, (ShSetARCount)) & "___" & ShSetAR(3, (ShSetARCount))
  40.            End If
  41. '' Get the next Sheet
  42.        Set oItem = oEnum.Next
  43.        Loop
  44.        Next
  45. End Sub
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 15:39:24 | 显示全部楼层
你好,凯波,
我不完全确定你在问什么,然而,这句话
  1. Dim ShSetAR(1 To 3, 1 To 200) As String 'number of used rows in (1,0)

可能是个问题。
 
这些值不应该声明为整数而不是字符串变量吗?
 
毫升
回复

使用道具 举报

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 15:43:40 | 显示全部楼层
Ml0940,
不,它不应该是整数,因为我不想把整数放在数组中。对于图纸集中的每个图纸或子集,我要输入项目的名称,它是父名称,无论它是图纸还是子集,理想情况下是它在图纸集中的位置。只有最后一项是整数,我还不知道如何提取这些信息。
我基本上是想在我们的数据库和图纸集之间建立一个链接,我需要知道东西在图纸集中出现的顺序,因为我们的一些员工不理解我们的软件包需要以复杂的方式排列。
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 16:00:38 | 显示全部楼层
我明白了,这是一个字符串数组。
 
是的,我理解图纸集和字段的值;一旦理解了它们,它们对于简化某些事情非常有用。
 
我有一个VBA项目,我“几乎”一年前做的;我已经离开CAD和VBA几个月了,但是,我很高兴与大家分享这个项目。
 
我不能保证它能满足你的需要,但你一定可以看看。
 
此外,图纸集管理器会自动创建每个图形的索引。再说一次,我有些生疏,但我可能记得,你必须遍历每个集合才能得到子集。
 
好吧,如果你愿意,我可以帮你拿到这个项目吗?
 
毫升
回复

使用道具 举报

4

主题

11

帖子

7

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 16:10:24 | 显示全部楼层
是的,我很想看看你做了什么。
我知道你说的生锈是什么意思,我很少需要一年编写一次以上的程序。
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 16:20:01 | 显示全部楼层
图纸集很复杂,与其他VBA/ACAD代码相比,VBA代码很奇怪。
 
我记得我花了很多时间试图在图纸集代码上找到“任何”信息;之后可能会有更多。
 
好啊
我附上该项目;你需要解压它。
 
这个项目的主要功能是处理自定义字段,然而,我认为您需要的答案“可能”在CustomSheetSetProps模块的子程序:LoopThroughSheets中。
 
我相信我正在使用所有的函数,除了MiscFunction,它是后来额外的。
 
我希望这有帮助。
 
让我知道你过得怎么样。
 
毫升
CustSheetSetProps-1。拉链
回复

使用道具 举报

0

主题

89

帖子

147

银币

限制会员

铜币
-9
发表于 2022-7-6 16:31:53 | 显示全部楼层
凯波,
我的意思是说自定义属性和字段,然而,这同样适用;您仍然需要遍历每个图形集和子集以获得自定义特性;这就是为什么我确信你会在那里找到你需要的东西。
 
我记得上次我用它的时候它100%有效。
 
好吧,好吧,再一次,让我知道你过得怎么样。
 
毫升
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 18:21 , Processed in 0.563130 second(s), 66 queries .

© 2020-2025 乐筑天下

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