(C#) Виснет Inventor при подавлении вхождений или элементов.

Автор Тема: (C#) Виснет Inventor при подавлении вхождений или элементов.  (Прочитано 7069 раз)

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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Доброго времени суток, уважаемые форумчане. Быть может кто-то сталкивался с аналогичной проблемой и сможет что-то посоветовать. Если в двух словах, задача у меня такая:
Есть многослойная стена (ну в смысле состоит из нескольких деталей). В зависимости от ситуации требуется, чтобы в ней был люк (или несколько люков) или они отсутствовали. Модель выполнена так: люки (сборки) изначально вставлены и подавлены, их положение определяется пользовательскими параметрами. Внутри элементов стены созданы "пропилы" под люки, которые должны быть подавлены, если соответствующего люка нет, либо наоборот активированы. В общем получается так, что пользователь выбирает необходимое количество люков, и программа пробегается по вхождениям, которые относятся к стене, включает или выключает соответствующие выдавливания и т.п., чтобы организовать "пропилы" под люк, либо их отсутствие. Следом подавляются сами люки, либо "расподавляются".

Аналогичные операции в iLogc или VBA никогда не вызывали проблем, а при выполнении их с помощью C#, Inventor тупо виснет, вылетает окно ошибки. Причем даже не могу отследить где именно возникает ошибка, ибо пошаговое выполнение кода работает корректно. Да и краш инвентора случается в принципе не всегда (но часто). В общем пол дня уже проковырялся, и единственное решение, которое я нашел, это добавил обновление чуть ли не после каждого подавления вхождений или серии элементов в какой либо из деталей, и в паре с ним добавил сохранение:
Код - C# [Выбрать]
  1. oDoc.Update(); A_Program.oApp.SilentOperation = true; oDoc.Save(); A_Program.oApp.SilentOperation = false;
Сразу скажу, что старался этих операций добавить поменьше, но все равно код теперь работает тааак медленно: в C# его выполнение занимает пару секунд, тогда как в вышеупомянутыми VBA и iLogic выполняется практически мгновенно (специально набрал его в VBA чтобы сравнить). Вобщем буду благодарен любому совету.

П.С. Autodesk Inventor Pro 2013 SP2
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

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

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Есть одна тонкость при подавлении, каждый подавленный вариант это отдельный документ этой сборки в памяти, хотя файл сборки на винчестере один и тот же.
Там может путаница быть, прежде чем начать подавление нужно активировать соответствующий уровень детализации детализации и манипулировать именно в нем.

Спасибо за совет. Но думаю ошибок в плане уровня детализации у меня быть не должно. Дело в том, что я не давлю элементы подсборок (дабы не возникали конфликты с сохранными УД, ну и чтобы не морочиться с активацией нужного УД), я давлю подсборки целиком. Соответственно когда я жму "расподавить" включается последний активный УД (который по сути единственный существующий в этой подсборке). Когда я давлю элементы деталей (выдавливания, фаски и т.п.), там как бы тоже инвентору должно быть все равно, какую конфигурацию в итоге сохранишь, такую он и подставит в сборки.
Насчет iAssembly скажу лишь, что я категорически против использования этой утилиты, но все равно спасибо. :)
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Насчет iAssembly скажу лишь, что я категорически против использования этой утилиты,
Это не совсем утилита. Просто iAssembly позволяет работать с ВОМ (включать/исключать компоненты из специи). Уровни детализации не исключают компоненты из спецификации

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Уровни детализации не исключают компоненты из спецификации
Ну да, но в любом случае все можно настроить в меню "спецификация" сборки
В программировании я новичок...но ненадолго! ;)

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Аналогичные операции в iLogc или VBA никогда не вызывали проблем, а при выполнении их с помощью C#, Inventor тупо виснет, вылетает окно ошибки.
А что, нужно край головы сделать ВСЕ на С#??? Я тоже сначала пытался все макросы VBA перенести в AddIn, потом понял, что овчинка выделки не стоит) Сейчас просто в AddIn создаю кнопки для макросов, с которыми проблема, как в твоем случае)))

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
А что, нужно край головы сделать ВСЕ на С#???
Да, мне нужно именно в C#. Плюс я уверен, что это проблема должна решаться, и C# должен работать быстрее. Но все равно спасибо за совет!
В программировании я новичок...но ненадолго! ;)