Всем привет!
Только на днях начал изучать API для инвентора, поэтому обращаюсь к вам, добрые люди, за помощью)
Как проще всего и эффективнее в одном макросе пройтись по всему дереву сборки и записать значения параметров (d1,d2...) каждой детали (в некий массив данных)?
Пока только познакомился с процедурой обхода дерева сборки:
Только на днях начал изучать API для инвентора, поэтому обращаюсь к вам, добрые люди, за помощью)
Как проще всего и эффективнее в одном макросе пройтись по всему дереву сборки и записать значения параметров (d1,d2...) каждой детали (в некий массив данных)?
Пока только познакомился с процедурой обхода дерева сборки:
Код |
---|
Public Sub AssemblyTraversal() ' Ссылка на активный документ. Полагаем, что это сборка. Dim oAsmDoc As AssemblyDocument Set oAsmDoc = ThisApplication.ActiveDocument ' Начинаем обход сборки Call TraverseAsm(oAsmDoc.ComponentDefinition.Occurrences, 1) End Sub ' Аргумент Level необходим для вычисления левого отступа при печати. Private Sub TraverseAsm(oOccurrences As ComponentOccurrences, Level As Integer) ' перебор списка компонентов на текущем уровне иерархии. Dim oOcc As ComponentOccurrence For Each oOcc In oOccurrences 'вывод сообщения с именем текущего компонента MsgBox (Level & ": " & oOcc.Name) ' Если текущий компонент – подсборка, то вызываем эту процедуру ' снова с текущим компонентом в качестве параметра. If oOcc.DefinitionDocumentType = kAssemblyDocumentObject Then Call TraverseAsm(oOcc.SubOccurrences, Level + 1) End If Next End Sub |
Изменено: EgorZa - 15.03.2013 11:18:12