Анализ сборки в Inventor API

Автор Тема: Анализ сборки в Inventor API  (Прочитано 5365 раз)

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

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Анализ сборки в Inventor API
« : 03-04-2020, 14:45:51 »
Всем привет. У меня нет опыта в проектировании, поэтому многие вопросы могут быть простыми. Мне необходимо написать программу для анализа файлов сборок. Описать требования к программе лучше на примере, программа должна работать следующим образом
"Пользователь выбирает 1ю сборку, программа анализирует все детали этой сборки и сохраняет их в БД, затем пользователь выбирает какую-то одну деталь из БД, открывает 2ю сборку и программа предоставляет результат, есть ли данная деталь во 2й сборке или нет". То есть нужно собрать такую информацию о детали, чтобы эту деталь потом можно было идентифицировать в другой сборке.
По этой теме есть несколько вопросов:
1)Не совсем понимаю иерархию объектов в Inventor API.  Если перебирать циклом ComponentOccurrences в сборке из нескольких разных деталей, то все ComponentOccurrences.Parent возвращают один и тот же объект ComponentDefinion. Что означает объект ComponentDefinion? как можно получить информацию о каждой отдельной детали? я нашёл в интернете следующий способ
Код - C# [Выбрать]
  1. foreach (Document docin assembly.AllReferencedDocuments)
  2.     {
  3.     }
Это правильный подход?
2) Какая информация о детали нужна для построения такой системы?
3) Я предполагаю, что нужная информация есть в объекте Document.PropertySets, там довольно много свойств. В Справке к API в моём инвенторе указан метод PropertySets.Item, но коде я воспользоваться им не могу(нет такого метода). Примеры я брал отсюда https://modthemachine.typepad.com/my_weblog/2010/02/accessing-iproperties.html . Как обрабатывать в таком случае?
4) Так же нашёл статью https://ru.wikibooks.org/wiki/Autodesk_Inventor_API._Первые_шаги/Спецификация. В ней работают с объектом BOM с помощью тех же PropertySets. Там доступны уже другие свойства или те же самые?
У меня установлен Inventor 2017.
Надеюсь читать не устанете) буду рад любому ответу

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #1 : 03-04-2020, 15:07:51 »
С PropertySets разобрался как работать, можно вот так PropertySets["Design Tracking Properties"]["Authority"].Value;
Но большинство свойств пустые.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #2 : 03-04-2020, 17:24:08 »
по свойствам ещё почитайте на моем ресурсе
https://mihakazakov.wixsite.com/inventor-api/nachinayushim

Но большинство свойств пустые.
А вы заполняли эти свойства через интерфейс пользователя в самом инвенторе?

Что означает объект ComponentDefinion?
В нем в основном все трёхмерные построения описаны и через свойство ComponentDefinition.Document можно попасть на верх документа.

Но по описанию вашего функционала, похожие инструменты реализованы в Vault. А так же можно посмотреть дизайн ассистент, в нем то же есть создание отчёта типа "где используется"



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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #3 : 03-04-2020, 19:30:17 »
через свойство ComponentDefinition.Document можно попасть на верх документа.
что значит наверх документа? наверх какого документа? не совсем понимаю

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #4 : 03-04-2020, 19:51:25 »
Любой файл модели или чертежа или презентации в терминологии инвенторовского АПИ называется документом.
Существуют "подвиды" документов PartDocument, AssemblyDocument, DrawingDocument. Объект-документ является верхним узлом в объектной модели любого открытого инвенторовского файла модели или чертежа. В этом объекте-документе находится всё что относится к конкретному открытому файлу.

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #5 : 03-04-2020, 20:25:40 »
В этом объекте-документе находится всё что относится к конкретному открытому файлу.
Тогда метод AllReferencedDocuments возвращает коллекцию объектов document для каждой детали?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #6 : 03-04-2020, 20:45:23 »
Тогда метод AllReferencedDocuments возвращает коллекцию объектов document для каждой детали?
Если деталь была получена через производный компонент.
Там в сборках ситуация хитрее, например, если деталь подавлена то ссылка на неё есть а сам документ детали загружен в память не будет.
И обращение к подавленной детали вызовет ошибку. Там лучше посмотреть, может использовать Document.ReferencedDocumentDescriptors в нем информации больше.
Вообще если нужно только ссылки и свойства в сборке посмотреть, то такую сборку лучше грузить не в инвентор а в апрентис сервер, быстрее будет.

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #7 : 03-04-2020, 21:47:44 »
в нем информации больше.
а по второму моему вопросу, не знаете как можно деталь идентифицировать?

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #8 : 03-04-2020, 22:00:38 »
какая информация для этого нужна?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #9 : 03-04-2020, 22:02:20 »
не знаете как можно деталь идентифицировать?
Ну
Document.FullFileName
и
Document.RevisionId

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #10 : 03-04-2020, 22:43:06 »
Document.RevisionId
это уникальный id документа? в справке для поля написано следующее : "Gets the GUID that represents the last saved revision of this file. Works as a stamp of the contents of this file.", что не совсем понятно

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #11 : 04-04-2020, 11:11:00 »
это уникальный id документа?
Это уникальный ID который перегенерируется при сохранении. Там есть еще Document.InternalName, но он может совпадать с файлом который был получен копированием исходного.

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #12 : 04-04-2020, 13:17:42 »
Там в сборках ситуация хитрее, например, если деталь подавлена то ссылка на неё есть а сам документ детали загружен в память не будет.
И обращение к подавленной детали вызовет ошибку. Там лучше посмотреть, может использовать
объяните ещё пожалуйста, что значит деталь подавлена? 

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

  • ADN OPEN
  • Сообщений: 26
  • Карма: 0
Re: Анализ сборки в Inventor API
« Ответ #13 : 04-04-2020, 13:27:05 »
то такую сборку лучше грузить не в инвентор а в апрентис сервер, быстрее будет
и по этому вопросу хотел уточнить.  Если делать через апрентис сервер, то мне нужно будет написать сервер для работы с API и клиента для подключения к этому серверу, правильно понимаю? так же хотел узнать, если я автономный exe сейчас делаю используя API 17го инвентора, то на другом компьютере с другой версией инвентора работать это не будет, так же? хотел узнать, как себя в таком случае будет вести себя апрентис сервер? и на сколько сложнее разрабатывать через апрентис сервер?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Анализ сборки в Inventor API
« Ответ #14 : 04-04-2020, 15:59:34 »
объяните ещё пожалуйста, что значит деталь подавлена?
Вы уверенный пользователь инвентора? В сборке есть детализационные представления, там детали и подсборки можно подавлять чтоб их не было в памяти.

и по этому вопросу хотел уточнить.  Если делать через апрентис сервер, то мне нужно будет написать сервер для работы с API и клиента для подключения к этому серверу, правильно понимаю? так же хотел узнать, если я автономный exe сейчас делаю используя API 17го инвентора, то на другом компьютере с другой версией инвентора работать это не будет, так же? хотел узнать, как себя в таком случае будет вести себя апрентис сервер? и на сколько сложнее разрабатывать через апрентис сервер?
Апрентис Сервер это не какой то внешний удаленный сервер. Апрентис Сервер это всего лишь библиотека которая позволяет без инвентора работать с некоторыми данными из инвенторовских файлов.
Инвентора на компе может даже вообще не быть, только dll апрентиса нужно в реестре грамотно зарегистрировать. Разрабатывать на апрентисе не сложнее чем на самом инвенторовском АПИ. Объектная модель почти такая же, там только мелкие особенности есть при открытии и сохранении файлов.
Пользовательсая утилита дизайн ассистент работает на апрентисе. Можете зайти в хэлп и почитать о Апрентис Сервер, можете на моей страничке почитать, ссылку я вас уже скидывал выше.