' Аргумент Level необходим для вычислени
Call TraverseAsm(oAsmDoc.ComponentDefinition.Occurrences, 1)
' Начинаем обход сборки
Set oAsmDoc = ThisApplication.ActiveDocument
Dim oAsmDoc As AssemblyDocument
' Ссылка на активный документ. Полагаем, что это сборка.
Public Sub AssemblyTraversal()
Для просмотра дерева сборки нам сначала необходимо у объекта AssemblyComponentDefinition получить ссылку на коллекцию ComponentOccurrences компонентов данной сборки. Итеративный перебор элементов этой коллекции возвращает объекты типа ComponentOccurrence. Если компонент представляет собой деталь, вы можете исследовать ее геометрию, опираясь на возвращаемую компонентом информацию о поверхностях. Если же компонент оказался подсборкой, свойство SubOccurrences объекта ComponentOccurrence предоставит возможность перебора составляющих ее компонентов. Свойство SubOccurrences возвращает объект ComponentOccurrenceEnumerator, весьма похожий на коллекцию ComponentOccurrences. Отличие состоит в том, что он не поддерживает добавление новых компонентов, а служит исключительно целям эффективного перебора существующих. При обходе дерева сборки произвольной вложенности вы просто опускаетесь на уровень ниже, если объект ComponentOccurrence оказывается подсборкой.
Рассмотрим фрагмент API, который обеспечивает просмотр как текущего, так и всех подчиненных уровней сборки, и получение всей необходимой информации о составляющих ее деталях и подсборках.
Обход иерархического дерева сложных сборок является необходимым этапом в решении многих задач. Рассмотрим пример сборки. Она имеет всего два уровня, но рассматриваемый подход будет работать при любом количестве уровней. В данном примере сборка верхнего уровня Car.iam состоит из двух ранее рассмотренных колесных сборок и кузовной детали. На схеме показано внутреннее представление сборки Car.iam. Обратите внимание, она содержит информацию только об элементах на своем верхнем уровне. Нет никаких данных о составе колесных подсборок. Их состав определен в подсборке WheelAssembly.iam.
[ ] Обход дерева сборки
API Инвентора предоставляет доступ к информации как ссылок, так и компонентов сборки. Ниже на рисунке показана часть объектной модели сборки (AssemblyDocument) вместе с данными документа сборки. Объект ReferencedFileDescriptor представляет собой конкретную ссылку на файл. Коллекция ReferencedFileDescriptors позволяет организовать цикл по всем ссылкам на файлы сборки. Изменить ссылку возможно через интерфейс Apprentice Server . Объект ComponentOccurrence представляет компоненты сборки, причем как детали, так и подсборки. Коллекция ComponentOccurrences дает возможность организовать цикл по всем компонентам на текущем уровне сборки и, кроме того, поддерживает методы для вставки в этот уровень новых компонентов. Важно помнить, что возвращаемая информация относится к ссылкам и компонентам, непосредственно (напрямую) включенным в сборку, т.е. мы не получим никаких данных о составе подсборок. Получение доступа к содержимому подсборок будет рассмотрено в следующем разделе, посвященном технике обхода всего дерева сборки.
В данных компонентов детализированы все подробности участия компонента в сборке. Неважно, что представляет собой компонент деталь или подсборку. Здесь хранится ассоциированная с компонентом информация: ссылка на файл компонента, положение и ориентация компонента, имя, цвет, видимость и т.п. Собственно геометрия всегда хранится в деталях (parts), но именно компоненты определяют, каким образом эта геометрия отображается в сборке.
При работе со сборками важно понять, что на самом деле сборка не содержит никакой геометрии только ссылки на другие файлы. Если бы нам удалось взглянуть изнутри на действительную структуру сборки, мы бы увидели примерно то, что изображено на следующем рисунке. В данном случае сборка содержит две группы данных ссылки и компоненты. В ссылках определены файлы, на которые ссылается сборка. Ссылке неизвестно, каким образом ее файл используется, ей известно лишь то, что сборка использует этот файл. В данном случае, сборка ссылается на два файла: Axle.ipt и Wheel.ipt.
Концепция структуры сборки знакома каждому, кто работал со сборками. Инвентор графически отображает эту структуру в браузере. Хотя концептуально организация структуры сборки проста, имеется ряд нюансов, важных при работе со сборкой через API. Наша цель извлечь пользу из понимания особенностей внутреннего устройства сборок Инвентора. В дальнейшем, в качестве иллюстрации мы будем использовать следующую сборку всего из трех деталей: детали «Ось» и двух экземпляров детали «Колесо».
[ ] Структура сборки
Материал из Викиучебника
Autodesk Inventor API. Первые шаги/Объект Assembly
Autodesk Inventor API. Первые шаги/Объект Assembly Викиучебник
Комментариев нет:
Отправить комментарий