Удаление исключенных взаимосвязей

Автор Тема: Удаление исключенных взаимосвязей  (Прочитано 4993 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Добрый день,
Нужно удалить все исключенные и подавленные взаимосвязи в текущем исполнении и затем удалить таблицу исполнений (чтобы осталось одно текущее исполнение, но как раз исключенные взаимосвязи это сделать не дают). Подавленные взаимосвязи удалил, но вот свойства для взаимосвязи "Excluded" на сколько в курсе нет. Есть идея проверить все взаимосвязи текущего исполнения сборки на то какие компоненты в эти взаимосвязи входят и если хотя бы один компонент исключен, тогда удалить взаимосвязь.
Прошу помочь, как это реализовать в VB?

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Сделал через AffectedOccurrenceOne/Two, но не совсем получилось, т.к. есть взаимосвязи которые исключены, но компоненты оба на месте, тогда взаимосвязь не удаляется.
Отсюда новый вопрос - как их можно удалить?

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Уже третий день борюсь. )
Есть идея построить таблицу активного исполнения через .excellworksheet и по ячейкам "исключено" удалить эти взаимосвязи.
Но реализовать никак не выходит. Никто не сталкивался с таким?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Никто не сталкивался с таким?
примерчик бы "причесанный" и сборочку тестовую, а то так ничего не понятно.

Отмечено как Решение Elfilagas 12-05-2016, 14:24:04

Оффлайн ElfilagasАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 117
  • Карма: 4
Сделал следующим образом:
                   
Код - Visual Basic [Выбрать]
  1.                 Dim EWS As Worksheet = Nothing
  2.                 EWS = aDoc.ComponentDefinition.iAssemblyFactory.ExcelWorkSheet
  3.                     For Each f As Inventor.AssemblyConstraint In aDoc.ComponentDefinition.Constraints 'Удаляем лишние взаимосвязи основываясь на входящих элементах
  4.  
  5.                         If f.OccurrenceOne Is Nothing OrElse f.OccurrenceTwo Is Nothing OrElse f.Suppressed = True OrElse _
  6.                             f.OccurrenceOne.Excluded = True OrElse f.OccurrenceTwo.Excluded = True OrElse _
  7.                             f.OccurrenceOne.Suppressed = True OrElse f.OccurrenceTwo.Suppressed = True _
  8.                             Then
  9.                             f.Delete()
  10.                         End If
  11.                     Next
  12.                     For Each f As Inventor.AssemblyConstraint In aDoc.ComponentDefinition.Constraints 'Удаляем взаимосвязи, которые исключены в таблице исполнений
  13.                        Dim i As Long = 1
  14.                         Dim k As Long
  15.                         Do Until EWS.Cells(1, i).text = ""
  16.  
  17.                             If EWS.Cells(1, i).text = f.Name & ":Включить/Исключить" Then
  18.                                 k = oRow.Index + 1
  19.                                 If EWS.Cells(k, i).text = "Исключить" Then
  20.                                     f.Delete()
  21.                                     EWS.Columns(i).delete()
  22.                                     Exit Do
  23.                                 End If
  24.                             End If
  25.  
  26.                             i = i + 1
  27.                         Loop
  28.                     Next
Только задумывается на больших таблицах исполнений, но ничего лучше не придумал. Добавил прогрессбар, чтобы пользователь не нервничал во время обработки. )

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Только задумывается на больших таблицах исполнений
Это скорее всего из-за транзакций, потому как каждое действие записывается в транзакцию
можно обойти это дело если использовать скрытую функцию для транзакций
TransactionManager.startGlobalTransaction

Но там нужно быть уверенным что программный код не глючит, потому как транзакции это транзакции
На эту тему я общался с Экинсом:
http://forums.autodesk.com/t5/inventor-general-discussion/api-inventor-drawing-sketch-object-vs-objectdbx/td-p/6009246