图纸集VBA索引
我编写了一些代码,可以从图纸集管理器中提取图纸和子集,但输出的信息是无序的。是否有方法按sheetset manager托盘中显示的顺序提取此信息?或者有没有一种方法可以为每个表和子集获取某种索引号?拉取页码没有帮助,因为我们的页码有字母和数字。
Dim ShtNum As String
Dim oSubset As AcSmSubset
Dim pSubset As AcSmSubset
Dim oSheet As AcSmSheet
Dim oItem As IAcSmPersist
Dim ShSetAR(1 To 3, 1 To 200) As String
Dim ShSetARCount As Integer
'' Synchronize Sheets with Sheet Properties
Private Sub CopyShsetarray()
'' Create a Reference to the Sheet Set Manager Object
Dim oSheetSetMgr As AcSmSheetSetMgr
Set oSheetSetMgr = New AcSmSheetSetMgr
'' Get the current Sheet Set
Dim oSheetDb As AcSmDatabase
Set oSheetDb = oSheetSetMgr.GetDatabaseEnumerator().Next
'' Get the objects in the Sheet Set
Dim oEnum As IAcSmEnumPersist
Set oEnum = oSheetDb.GetEnumerator
'' Get the first object in the Enumerator
MsgBox oSheetDb.GetFileName
Set oItem = oEnum.Next
'' Step through all the objects in the Sheet Set
MsgBox oItem.GetTypeName
Do While Not oItem Is Nothing
'' Add Item to Array
On Error Resume Next
If oItem.GetTypeName = "AcSmSheet" Or oItem.GetTypeName = "AcSmSubset" Then
ShSetARCount = 1 + ShSetARCount
Set pSubset = oItem.GetOwner()
ShSetAR(2, (ShSetARCount)) = pSubset.GetName
ShSetAR(3, (ShSetARCount)) = oItem.GetTypeName
If oItem.GetTypeName = "AcSmSheet" Then
Set oSheet = oItem
ShSetAR(1, (ShSetARCount)) = ShtNumFromPath(oSheet.GetLayout.GetFileName)
Else
Set oSubset = oItem
ShSetAR(1, (ShSetARCount)) = oSubset.GetName
End If
'MsgBox ShSetARCount & "___" & ShSetAR(1, (ShSetARCount)) & "___" & ShSetAR(2, (ShSetARCount)) & "___" & ShSetAR(3, (ShSetARCount))
End If
'' Get the next Sheet
Set oItem = oEnum.Next
Loop
Next
End Sub 你好,凯波,
我不完全确定你在问什么,然而,这句话
Dim ShSetAR(1 To 3, 1 To 200) As String 'number of used rows in (1,0)
可能是个问题。
这些值不应该声明为整数而不是字符串变量吗?
毫升 Ml0940,
不,它不应该是整数,因为我不想把整数放在数组中。对于图纸集中的每个图纸或子集,我要输入项目的名称,它是父名称,无论它是图纸还是子集,理想情况下是它在图纸集中的位置。只有最后一项是整数,我还不知道如何提取这些信息。
我基本上是想在我们的数据库和图纸集之间建立一个链接,我需要知道东西在图纸集中出现的顺序,因为我们的一些员工不理解我们的软件包需要以复杂的方式排列。 我明白了,这是一个字符串数组。
是的,我理解图纸集和字段的值;一旦理解了它们,它们对于简化某些事情非常有用。
我有一个VBA项目,我“几乎”一年前做的;我已经离开CAD和VBA几个月了,但是,我很高兴与大家分享这个项目。
我不能保证它能满足你的需要,但你一定可以看看。
此外,图纸集管理器会自动创建每个图形的索引。再说一次,我有些生疏,但我可能记得,你必须遍历每个集合才能得到子集。
好吧,如果你愿意,我可以帮你拿到这个项目吗?
毫升 是的,我很想看看你做了什么。
我知道你说的生锈是什么意思,我很少需要一年编写一次以上的程序。 图纸集很复杂,与其他VBA/ACAD代码相比,VBA代码很奇怪。
我记得我花了很多时间试图在图纸集代码上找到“任何”信息;之后可能会有更多。
好啊
我附上该项目;你需要解压它。
这个项目的主要功能是处理自定义字段,然而,我认为您需要的答案“可能”在CustomSheetSetProps模块的子程序:LoopThroughSheets中。
我相信我正在使用所有的函数,除了MiscFunction,它是后来额外的。
我希望这有帮助。
让我知道你过得怎么样。
毫升
CustSheetSetProps-1。拉链 凯波,
我的意思是说自定义属性和字段,然而,这同样适用;您仍然需要遍历每个图形集和子集以获得自定义特性;这就是为什么我确信你会在那里找到你需要的东西。
我记得上次我用它的时候它100%有效。
好吧,好吧,再一次,让我知道你过得怎么样。
毫升
页:
[1]