Перестал работать импорт SAT файлов через API

Автор Тема: Перестал работать импорт SAT файлов через API  (Прочитано 10014 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Добрый день! В моём плагине перестал работать импорт SAT-файлов.
До этого всё работало хорошо. Плагин под Inventor 2019.
Никаких обновлений на него не ставил.
Раньше похожая проблема решалась удалением папок
C:\Users\Владислав\AppData\Roaming\Autodesk\Inventor 2019 и
C:\Users\Владислав\AppData\Local\Autodesk\Inventor 2019.
Сейчас не помогает.
Аварийный дамп прилагаю.
Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ошибка в модуле rd.dll. Это единственное, что можно сказать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Нет, rd.dll  не мой. Это библиотека Инвентор.
И ошибка там в функции API Инвентора.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Код - XML [Выбрать]
  1. <BugAlerts>
  2.  <BugAlertTotal logged="2"/>
  3.  <BugAlert message="API method NonParametricBaseFeatures.AddByDefinition called by Add-in CadLibToInventor caught an unhandled  exception. Memory may have been left in an inconsistent state."/>
  4.  <BugAlert message="API method caught an unhandled exception. Memory may have been left in an inconsistent state."/>
  5. </BugAlerts>
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
А где Инвентор хранит информацию о последних открытых документах?
Хочу попробовать вычистить эту папку.
Самое интересное - что раньше всё прекрасно работало.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
А где Инвентор хранит информацию о последних открытых документах?
А что за информация нужна?
Самое интересное - что раньше всё прекрасно работало.
На другом компе нужно попробовать запустить.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А где Инвентор хранит информацию о последних открытых документах?
А причем это здесь? Информация хранится в реестре:


Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Я подумал, что я какие-то настройки удалить смогу.
Раньше тоже были проблемы похожие, но удаление папок, которые
я указал выше, помогало. Сейчас - нет.
Попробую Инвентор переустановить.

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
А нет ли в Инвенторе какого-то ограничения на размер импортируемого SAT-файла?
Просто если я разбиваю ту же самую модель на большее количество  SAT и потом
импортирую их, то всё работает.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А нет ли в Инвенторе какого-то ограничения на размер импортируемого SAT-файла?
Просто если я разбиваю ту же самую модель на большее количество  SAT и потом
импортирую их, то всё работает.
Официальных ограничений нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Просто если я разбиваю ту же самую модель на большее количество  SAT и потом
импортирую их, то всё работает.
А может просто глюк идет при самом экспорте, ручками через инвентор эта модель вообще экспортируется?
Иногда так бывает с этими универсальными форматами.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Просто если я разбиваю ту же самую модель на большее количество  SAT и потом
импортирую их, то всё работает.
А может просто глюк идет при самом экспорте, ручками через инвентор эта модель вообще экспортируется?
Иногда так бывает с этими универсальными форматами.
Я так понимаю, что проблема не в экспорте, а в импорте.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
 Да, именно в импорте.
Вот код, который производит импорт
Код - C# [Выбрать]
  1. //Get transient Brep            
  2.             TransientBRep Brep = m_Application.TransientBRep;
  3.  
  4.             //Get the surfacebodies    
  5.             SurfaceBodies SBs = Brep.ReadFromFile(fileName);            
  6.            
  7.             TransientObjects TransObjs = m_Application.TransientObjects;
  8.             ObjectCollection ObjColl = TransObjs.CreateObjectCollection();
  9.             //Add each surfacebody of imported file to ObjectCollection
  10.             foreach (SurfaceBody SB in SBs) ObjColl.Add(SB);            
  11.        
  12.             //Get definition of current document    
  13.             PartComponentDefinition PartDef = doc.ComponentDefinition;    
  14.             PartFeatures Features = PartDef.Features;
  15.             NonParametricBaseFeatureDefinition NPFD = Features.NonParametricBaseFeatures.CreateDefinition();
  16.  
  17.             //Assign the ObjectCollection to the definition.
  18.             NPFD.BRepEntities = ObjColl;            
  19.  
  20.             //Set the output type
  21.             NPFD.OutputType = BaseFeatureOutputTypeEnum.kSolidOutputType;
  22.  
  23.             //Create the NonParametricBaseFeature using the definition.
  24.             PartDef.Features.NonParametricBaseFeatures.AddByDefinition(NPFD);

Также прилагаю SAT-файлы, на которых Инвентор падает при импорте.
При импорте через меню все хорошо. Импорт происходит даже с цветами и сразу в виде сборок.
« Последнее редактирование: 10-07-2020, 17:02:12 от Vladislav »

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

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
А вот SAT-файлы той же модели подетально.
Их этот код прекрасно импортирует

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
На сколько точно я воспроизвел код ?:
Код - C# [Выбрать]
  1.     static void Main(string[] args)
  2.     {
  3.      
  4.         Application m_Application=getInventorApplication();
  5.  
  6.         PartDocument doc = m_Application.ActiveDocument as PartDocument;
  7.         TransientBRep Brep = m_Application.TransientBRep;
  8.  
  9.         //Get the surfacebodies    
  10.         SurfaceBodies SBs = Brep.ReadFromFile(@"C:\Users\mikaz\Desktop\Новая папка\Stapler-2.SAT");
  11.  
  12.         TransientObjects TransObjs = m_Application.TransientObjects;
  13.         ObjectCollection ObjColl = TransObjs.CreateObjectCollection();
  14.         //Add each surfacebody of imported file to ObjectCollection
  15.         foreach (SurfaceBody SB in SBs) ObjColl.Add(SB);
  16.  
  17.         //Get definition of current document    
  18.         PartComponentDefinition PartDef = doc.ComponentDefinition;
  19.         PartFeatures Features = PartDef.Features;
  20.         NonParametricBaseFeatureDefinition NPFD = Features.NonParametricBaseFeatures.CreateDefinition();
  21.  
  22.         //Assign the ObjectCollection to the definition.
  23.         NPFD.BRepEntities = ObjColl;
  24.  
  25.         //Set the output type
  26.         NPFD.OutputType = BaseFeatureOutputTypeEnum.kSolidOutputType;
  27.  
  28.         //Create the NonParametricBaseFeature using the definition.
  29.         PartDef.Features.NonParametricBaseFeatures.AddByDefinition(NPFD);
  30.  
  31.  
  32.         return;}

Я пока вижу что в строке
PartDef.Features.NonParametricBaseFeatures.AddByDefinition(NPFD);
Инвентор выпадает