Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: Elfilagas от 06-10-2016, 10:40:51

Название: Получение обозначения из BOM
Отправлено: Elfilagas от 06-10-2016, 10:40:51
Добрый день,
Подскажите, пожалуйста, в данном месте:
Код - vb.net [Выбрать]
  1.     Private Sub WritePositionsToModel(oBOMRows As BOMRowsEnumerator)
  2.         Try
  3.             Dim oRow As BOMRow
  4.             Dim oCompDef As ComponentDefinition
  5.  
  6.             Dim sChildDess As String, sChildName As String
  7.  
  8.             For i = 1 To oBOMRows.Count
  9.                 Try
  10.                     oRow = oBOMRows.Item(i)
  11.                     oCompDef = oRow.ComponentDefinitions.Item(1) ' ссылка на ComponentDefinition данной строки
  12.                     If TypeOf oCompDef Is VirtualComponentDefinition Then
  13.                         sChildDess = Trim(UCase(oCompDef.PropertySets.Item("Design Tracking Properties").Item("Part Number").value))
  14.                         sChildName = Trim(UCase(oCompDef.PropertySets.Item("Design Tracking Properties").Item("Description").value))
  15.                     Else
  16.                         sChildDess = Trim(UCase(oCompDef.Document.PropertySets.Item("Design Tracking Properties").Item("Part Number").value))
  17.                         sChildName = Trim(UCase(oCompDef.Document.PropertySets.Item("Design Tracking Properties").Item("Description").value))
  18.                     End If
как выяснилось получаю не верное обозначение. Как то можно получить обозначение, которое в спецификации отображено?
Название: Re: Получение обозначения из BOM
Отправлено: mikazakov от 06-10-2016, 16:37:54
как выяснилось получаю не верное обозначение. Как то можно получить обозначение, которое в спецификации отображено?
Непонятно, а где не правильно что то получается? Из скриншота этого не видно. Я вот вижу что на скриншоте количество позиции с номером 6 равно нулю, видимо в иЭссембли данный компонент подавлен в данной конфигурации. Возможно этот подавленный элемент вообще не входит в текущий BOMRowsEnumerator и поэтому информация идет с соседнего компонента. Просмотрите внимательно коллекцию BOMRowsEnumerator через VBA в режиме дебага.
Название: Re: Получение обозначения из BOM
Отправлено: Elfilagas от 06-10-2016, 17:14:27
Да, эта позиция есть в другом исполнении. При этом эта строка из списка BOM берется, но обозначение берется получается из модели и сравнивается с внешней спецификацией. В итоге получается как на рисунке во вложении. Детали разные, но позиция одна.
 
Название: Re: Получение обозначения из BOM
Отправлено: mikazakov от 08-10-2016, 13:47:04
Снимка мало, нужно причесанный пример полностью