Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: d_fedorr от 03-04-2020, 14:45:51

Название: Анализ сборки в Inventor API
Отправлено: d_fedorr от 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.
Надеюсь читать не устанете) буду рад любому ответу
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 03-04-2020, 15:07:51
С PropertySets разобрался как работать, можно вот так PropertySets["Design Tracking Properties"]["Authority"].Value;
Но большинство свойств пустые.
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 03-04-2020, 17:24:08
по свойствам ещё почитайте на моем ресурсе
https://mihakazakov.wixsite.com/inventor-api/nachinayushim

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

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

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

(https://i.postimg.cc/cK88Q9gC/image.png) (https://postimg.cc/cK88Q9gC)
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 03-04-2020, 19:30:17
через свойство ComponentDefinition.Document можно попасть на верх документа.
что значит наверх документа? наверх какого документа? не совсем понимаю
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 03-04-2020, 19:51:25
Любой файл модели или чертежа или презентации в терминологии инвенторовского АПИ называется документом.
Существуют "подвиды" документов PartDocument, AssemblyDocument, DrawingDocument. Объект-документ является верхним узлом в объектной модели любого открытого инвенторовского файла модели или чертежа. В этом объекте-документе находится всё что относится к конкретному открытому файлу.
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 03-04-2020, 20:25:40
В этом объекте-документе находится всё что относится к конкретному открытому файлу.
Тогда метод AllReferencedDocuments возвращает коллекцию объектов document для каждой детали?
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 03-04-2020, 20:45:23
Тогда метод AllReferencedDocuments возвращает коллекцию объектов document для каждой детали?
Если деталь была получена через производный компонент.
Там в сборках ситуация хитрее, например, если деталь подавлена то ссылка на неё есть а сам документ детали загружен в память не будет.
И обращение к подавленной детали вызовет ошибку. Там лучше посмотреть, может использовать Document.ReferencedDocumentDescriptors в нем информации больше.
Вообще если нужно только ссылки и свойства в сборке посмотреть, то такую сборку лучше грузить не в инвентор а в апрентис сервер, быстрее будет.
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 03-04-2020, 21:47:44
в нем информации больше.
а по второму моему вопросу, не знаете как можно деталь идентифицировать?
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 03-04-2020, 22:00:38
какая информация для этого нужна?
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 03-04-2020, 22:02:20
не знаете как можно деталь идентифицировать?
Ну
Document.FullFileName
и
Document.RevisionId
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 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.", что не совсем понятно
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 04-04-2020, 11:11:00
это уникальный id документа?
Это уникальный ID который перегенерируется при сохранении. Там есть еще Document.InternalName, но он может совпадать с файлом который был получен копированием исходного.
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 04-04-2020, 13:17:42
Там в сборках ситуация хитрее, например, если деталь подавлена то ссылка на неё есть а сам документ детали загружен в память не будет.
И обращение к подавленной детали вызовет ошибку. Там лучше посмотреть, может использовать
объяните ещё пожалуйста, что значит деталь подавлена? 
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 04-04-2020, 13:27:05
то такую сборку лучше грузить не в инвентор а в апрентис сервер, быстрее будет
и по этому вопросу хотел уточнить.  Если делать через апрентис сервер, то мне нужно будет написать сервер для работы с API и клиента для подключения к этому серверу, правильно понимаю? так же хотел узнать, если я автономный exe сейчас делаю используя API 17го инвентора, то на другом компьютере с другой версией инвентора работать это не будет, так же? хотел узнать, как себя в таком случае будет вести себя апрентис сервер? и на сколько сложнее разрабатывать через апрентис сервер?
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 04-04-2020, 15:59:34
объяните ещё пожалуйста, что значит деталь подавлена?
Вы уверенный пользователь инвентора? В сборке есть детализационные представления, там детали и подсборки можно подавлять чтоб их не было в памяти.

и по этому вопросу хотел уточнить.  Если делать через апрентис сервер, то мне нужно будет написать сервер для работы с API и клиента для подключения к этому серверу, правильно понимаю? так же хотел узнать, если я автономный exe сейчас делаю используя API 17го инвентора, то на другом компьютере с другой версией инвентора работать это не будет, так же? хотел узнать, как себя в таком случае будет вести себя апрентис сервер? и на сколько сложнее разрабатывать через апрентис сервер?
Апрентис Сервер это не какой то внешний удаленный сервер. Апрентис Сервер это всего лишь библиотека которая позволяет без инвентора работать с некоторыми данными из инвенторовских файлов.
Инвентора на компе может даже вообще не быть, только dll апрентиса нужно в реестре грамотно зарегистрировать. Разрабатывать на апрентисе не сложнее чем на самом инвенторовском АПИ. Объектная модель почти такая же, там только мелкие особенности есть при открытии и сохранении файлов.
Пользовательсая утилита дизайн ассистент работает на апрентисе. Можете зайти в хэлп и почитать о Апрентис Сервер, можете на моей страничке почитать, ссылку я вас уже скидывал выше.
Название: Re: Анализ сборки в Inventor API
Отправлено: d_fedorr от 05-04-2020, 15:55:32
Вы уверенный пользователь инвентора?
я уже писал выше, что опыта проектирования нет вообще, поэтому так много вопросов. ещё хотел уточнить, информация о детали (материал, тип и прочее) можно найти в PropertySet объекта Document. В BOM для сборки лежит та же информация.  Внутри PartDocument нет каких нибудь объектов, из которых можно вытащить какую-либо дополнительную информацию или она вся находится в BOM?
Название: Re: Анализ сборки в Inventor API
Отправлено: mikazakov от 05-04-2020, 20:40:19
я уже писал выше, что опыта проектирования нет вообще,
Это называется нет опыта работы в инвенторе. Без собственного юзерского опыта... не знаю кто то должен ТЗ тогда очень грамотно писать, зная все тонкости. иначе толку будет ноль.

информация о детали (материал, тип и прочее)
Материал
PartDocument.ActiveMaterial

Массовые характеристики на
PartComponentDefinition.MassProperties


BOM собирается в сборке, с входящих в неё деталей и подсборок.
Название: Re: Анализ сборки в Inventor API
Отправлено: R.I.Chernov от 07-04-2020, 03:41:54
Без собственного юзерского опыта... не знаю кто то должен ТЗ тогда очень грамотно писать, зная все тонкости. иначе толку будет ноль.
Хотел написать то же самое. Надо понимать, что именно можно и нужно делать руками для получения требуемого результата в Inventor, а потом вот это вот "руками" заменить на программный код. У меня перед глазами есть пара примеров, когда код вроде бы был написан, и 3д модель вроде бы строилась, как и планировалось. Но строилась так, что конструкторам использовать ее было не удобно. Так вот бесславно и заканчивалась ее эксплуатация, потому что изначально ТЗ было плохо продумано, и переделать в "удобно" уже не представлялось возможным.