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

Содержимое удалено Содержимое добавлено
Строка 35:
 
[[Изображение:BOM_2.png| ]]
 
 
 
 
Внутренние механизмы Autodesk Inventor поддерживают актуальность BOM, отслеживая изменения состава сборки и обновляя соответствующим образом типы компонентов и количественные показатели. Актуализация BOM может выполняться как средствами пользовательского интерфейса так и инструментами BOM API. С помощью API можно вносить в BOM дополнительные изменения, производить выборки и экспортировать данные. Autodesk Inventor активно использует объекты PropertySet для хранения в BOM свойств компонентов. Клиентский код может получить прямой и непосредственный доступ к этим данным.
 
 
'''Запрос на формирование BOM'''
 
Запрос на формирование BOM
 
Код следующего примера иллюстрирует применение API для выборки из сборки данных для спецификации. Предполагается, что в Инвентор загружена демонстрационная сборка Arbor_Press.iam. Для уменьшения размера и улучшения читаемости программы опущены процедуры обработки ошибок. Рекомендуется всегда проверять возвращаемые процедурами и функциями значения на корректность типа и попадание в диапазон допустимых значений.
Строка 50 ⟶ 46 :
 
 
<pre>
Dim oBOM As BOM
Set oBOM = ThisApplication.ActiveDocument.ComponentDefinition.BOM
</pre>
 
 
Далее из BOM получим ссылку на объект BOMView с именем «Structured» (структурированный). BOM может также содержать представления, в которых позиции упорядочены или перенумерованы.
 
<pre>
Dim oBOMView As BOMView
Set oBOMView = oBOM.BOMViews.Item("Structured")
</pre>
 
 
Организуем цикл по элементам коллекции строк BOMRows объекта BOMView, получая для каждой строки ссылку на объект BOMRow.
 
<pre>
Dim i As Long
For i = 1 To oBOMView.BOMRows.Count
Строка 67 ⟶ 68 :
Dim oRow As BOMRow
Set oRow = oBOMView.BOMRows.Item(i)
</pre>
 
 
Для некоторых видов данных BOM нам требуется обращение к свойствам компонента, представленного в данной строке. Доступ к коллекции PropertySets компонента обеспечивает объект ComponentDefinition компонента.
 
<pre>
Dim oCompDef As ComponentDefinition
Set oCompDef = oRow.ComponentDefinitions.Item(1)
</pre>
 
 
Нужный в данном случае набор свойств называется «Design Tracking Properties». Ссылку на него можно получить как свойство документа-владельца нашего компонента.
 
<pre>
Dim oPropSet As PropertySet
Set oPropSet = oCompDef.Document.PropertySets.Item("Design Tracking Properties")
</pre>
 
 
Теперь у нас есть вся необходимая информация о содержимом спецификации. Извлекаем из объекта BOMRow и выводим в окно отладочной печати номера позиций (ItemNumber) и количество в строке (ItemQuantity), а из набора свойств oPropSet — номер детали и ее описание.
 
<pre>
Debug.Print "#: "; oRow.ItemNumber; _
" Quantity:"; oRow.ItemQuantity; _
Строка 88 ⟶ 94 :
" Desc: "; oPropSet.Item("Description").Value
Next
</pre>
 
 
Приведенный фрагмент программы в цикле по всем строкам BOMRows объекта BOMView выводит в окно отладочной печати данные спецификации. Результат работы программы должен выглядеть примерно так:
 
<pre>
#: 1 Quantity: 1 Part: Arbor Press Desc:
#: 2 Quantity: 1 Part: FACE PLATE Desc:
Строка 109 ⟶ 116 :
Flat Point - UNF
(Fine Thread - Inch)
</pre>