Autodesk Inventor API. Первые шаги/Спецификация: различия между версиями

Содержимое удалено Содержимое добавлено
Новая: == Введение в Спецификацию (BOM) == Инвентор может отслеживать изменения состава компонентов в сборке с ...
 
Строка 25:
 
== Объектная модель BOM ==
 
[[Изображение:BOM_1.png| ]]
 
 
 
 
 
== Использование API для работы с BOM ==
 
[[Изображение:BOM_2.png| ]]
 
 
 
 
Внутренние механизмы Autodesk Inventor поддерживают актуальность BOM, отслеживая изменения состава сборки и обновляя соответствующим образом типы компонентов и количественные показатели. Актуализация BOM может выполняться как средствами пользовательского интерфейса так и инструментами BOM API. С помощью API можно вносить в BOM дополнительные изменения, производить выборки и экспортировать данные. Autodesk Inventor активно использует объекты PropertySet для хранения в BOM свойств компонентов. Клиентский код может получить прямой и непосредственный доступ к этим данным.
 
 
 
Запрос на формирование BOM
 
Код следующего примера иллюстрирует применение API для выборки из сборки данных для спецификации. Предполагается, что в Инвентор загружена демонстрационная сборка Arbor_Press.iam. Для уменьшения размера и улучшения читаемости программы опущены процедуры обработки ошибок. Рекомендуется всегда проверять возвращаемые процедурами и функциями значения на корректность типа и попадание в диапазон допустимых значений.
 
Сначала получим ссылку на объект BOM из объекта ComponentDefinition сборки.
 
 
Dim oBOM As BOM
Set oBOM = ThisApplication.ActiveDocument.ComponentDefinition.BOM
 
 
Далее из BOM получим ссылку на объект BOMView с именем «Structured» (структурированный). BOM может также содержать представления, в которых позиции упорядочены или перенумерованы.
 
Dim oBOMView As BOMView
Set oBOMView = oBOM.BOMViews.Item("Structured")
 
 
Организуем цикл по элементам коллекции строк BOMRows объекта BOMView, получая для каждой строки ссылку на объект BOMRow.
 
Dim i As Long
For i = 1 To oBOMView.BOMRows.Count
 
Dim oRow As BOMRow
Set oRow = oBOMView.BOMRows.Item(i)
 
 
Для некоторых видов данных BOM нам требуется обращение к свойствам компонента, представленного в данной строке. Доступ к коллекции PropertySets компонента обеспечивает объект ComponentDefinition компонента.
 
Dim oCompDef As ComponentDefinition
Set oCompDef = oRow.ComponentDefinitions.Item(1)
 
 
Нужный в данном случае набор свойств называется «Design Tracking Properties». Ссылку на него можно получить как свойство документа-владельца нашего компонента.
 
Dim oPropSet As PropertySet
Set oPropSet = oCompDef.Document.PropertySets.Item("Design Tracking Properties")
 
 
Теперь у нас есть вся необходимая информация о содержимом спецификации. Извлекаем из объекта BOMRow и выводим в окно отладочной печати номера позиций (ItemNumber) и количество в строке (ItemQuantity), а из набора свойств oPropSet — номер детали и ее описание.
 
Debug.Print "#: "; oRow.ItemNumber; _
" Quantity:"; oRow.ItemQuantity; _
"Part: "; oPropSet.Item("Part Number").Value; _
" Desc: "; oPropSet.Item("Description").Value
Next
 
 
Приведенный фрагмент программы в цикле по всем строкам BOMRows объекта BOMView выводит в окно отладочной печати данные спецификации. Результат работы программы должен выглядеть примерно так:
 
#: 1 Quantity: 1 Part: Arbor Press Desc:
#: 2 Quantity: 1 Part: FACE PLATE Desc:
#: 3 Quantity: 1 Part: PINION SHAFT Desc:
#: 4 Quantity: 1 Part: LEVER ARM Desc:
#: 5 Quantity: 1 Part: THUMB SCREW Desc:
#: 6 Quantity: 1 Part: TABLE PLATE Desc:
#: 7 Quantity: 1 Part: RAM Desc:
#: 8 Quantity: 2 Part: HANDLE CAPipt Desc:
#: 9 Quantity: 1 Part: COLLAR Desc:
#: 10 Quantity: 1 Part: GIB PLATE Desc:
#: 11 Quantity: 1 Part: GROOVE PIN Desc:
#: 12 Quantity: 4 Part: ANSI B18.3 - 1/4 - 20 - 7/8 Desc: Hexagon Socket Head Cap Screw
#: 13 Quantity: 4 Part: ANSI B18.3 - 10-32 UNF x 0.58 Desc: Hexagon Socket Set Screw -
Flat Point
#: 14 Quantity: 1 Part: ANSI B18.6.2 - 10-32 UNF - 0.1875 Desc: Slotted Headless Set Screw -
Flat Point - UNF
(Fine Thread - Inch)