Изоляция сборок и деталей

Автор Тема: Изоляция сборок и деталей  (Прочитано 4654 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Добрый день.
Подскажите пожалуйста, как средствами Inventor API изолировать деталь или сборку.
То есть нужно получить результат, аналогичный использованию команды "Изолировать" контекстного меню.
Спасибо за информацию.

Отмечено как Решение Vladislav 04-06-2019, 17:30:12

Оффлайн xzenter

  • ADN OPEN
  • Сообщений: 29
  • Карма: 1
    • xzenter.com
  • Skype: xzenter
Re: Изоляция сборок и деталей
« Ответ #1 : 04-06-2019, 14:27:30 »
Правило iLogic, которое необходимо запустить в сборке:

Код - vb.net [Выбрать]
  1. Dim oAsmDoc As AssemblyDocument
  2. oAsmDoc= ThisApplication.ActiveDocument
  3.  
  4. Dim oAsmDef As AssemblyComponentDefinition
  5. oAsmDef = oAsmDoc.ComponentDefinition
  6.  
  7. Dim oLeafOccs As ComponentOccurrencesEnumerator
  8. oLeafOccs = oAsmDef.Occurrences.AllLeafOccurrences
  9.  
  10. Dim oOcc As ComponentOccurrence
  11. For Each oOcc In oLeafOccs
  12.  
  13.         If oOcc.Visible = True Then
  14.                 oOcc.Visible = False
  15.         End If
  16.  
  17. Next

Оффлайн xzenter

  • ADN OPEN
  • Сообщений: 29
  • Карма: 1
    • xzenter.com
  • Skype: xzenter
Re: Изоляция сборок и деталей
« Ответ #2 : 04-06-2019, 15:11:31 »
Вот решение. Необходимо выделить компонент в сборке и выполнить правило:

Код - vb.net [Выбрать]
  1. Dim oAsmDoc As AssemblyDocument
  2. oAsmDoc= ThisApplication.ActiveDocument
  3.  
  4. ' Должен быть выделен компонент или помещен в коллекцию SelectSet
  5. Dim selSet As SelectSet
  6. selSet = oAsmDoc.SelectSet
  7.  
  8. ' Получаем кнопку, которая отвечает за изоляцию компонента
  9. Dim oCtrlDef As ControlDefinition
  10. oCtrlDef = ThisApplication.CommandManager.ControlDefinitions.Item("AssemblyIsolateCmd")
  11.  
  12. ' Нажимаем кнопку
  13. oCtrlDef.Execute()

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Изоляция сборок и деталей
« Ответ #3 : 04-06-2019, 15:36:31 »
Благодарю

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изоляция сборок и деталей
« Ответ #4 : 04-06-2019, 17:08:04 »
Благодарю
Если код устраивает, то отметьте решение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Изоляция сборок и деталей
« Ответ #5 : 05-06-2019, 06:32:28 »
Vladislav,
Я думаю есть путь покороче для изоляции. Можно воспользоваться командным менеджером и вызвать команду изоляции
Да и не забудьте выделить изолируемые модели перед запуском макроса

Код - Visual Basic [Выбрать]
  1. Public Sub RunLineCommand()
  2.     ' Get the CommandManager object.
  3.    Dim oCommandMgr As CommandManager
  4.     Set oCommandMgr = ThisApplication.CommandManager
  5.  
  6.     ' Изоляция
  7.    Dim oControlDef As ControlDefinition
  8.     Set oControlDef = oCommandMgr.ControlDefinitions.Item("AssemblyIsolateCmd")
  9.     ' Execute the command.
  10.    Call oControlDef.Execute
  11.    
  12.     'Отмена изоляции
  13.    Set oControlDef = oCommandMgr.ControlDefinitions.Item("AssemblyIsolateUndoCmd")
  14.      ' Execute the command.
  15.    Call oControlDef.Execute
  16. End Sub
  17.