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

ADN Club => Inventor API => Тема начата: Витос от 19-05-2016, 15:12:13

Название: Определение головной сборки
Отправлено: Витос от 19-05-2016, 15:12:13
Добрый день!
В папке лежат два файла iam. Один - главная сборка, другой - подсборка. Как программно узнать кто из них кто? Программно открываю по очереди файлы. Думал что можно использовать свойство ReferensingDocuments, но при открытии ТОЛЬКО подсборки - это свойство содержит "0"
Название: Re: Определение головной сборки
Отправлено: Александр Ривилис от 19-05-2016, 15:22:48
Попробуй воспользоваться этим кодом по очереди (для главной сборки и для подсборки) и сравни результаты: http://adndevblog.typepad.com/manufacturing/2013/07/recursively-accessing-parameters-from-an-inventor-assembly-document.html
Название: Re: Определение головной сборки
Отправлено: Витос от 19-05-2016, 15:46:35
Прогнал этим кодом. Результат не тот.

Для подсборки:
PodSborka.iam
pod_det1:1,d0=1
pod_det1:1,d1=0
pod_det2:1,d0=1
pod_det2:1,d1=0
DIN EN 24036 M5:1,ParS=0,8
DIN EN 24036 M5:1,M=0,27
DIN EN 24036 M5:1,d2=0
DIN EN 24036 M5:1,d14=0
DIN EN 24036 M5:1,d15=0
DIN EN 24036 M5:1,d16=0
DIN EN 24036 M5:1,PTC=0,08
DIN EN 24036 M5:1,NND=0,5
DIN EN 24036 M5:1,d17=0,048
DIN EN 24036 M5:1,d21=0
DIN EN 24036 M5:1,d23=0
DIN EN 24036 M5:1,d24=0
DIN EN 24036 M5:1,d25=0
DIN EN 24036 M5:1,THREADDIA=0,5

Для главной сборки
Sborka.iam
det3:1,d0=1
det3:1,d1=0
det:1,d0=1
det:1,d1=0
det5:1,d0=2
det5:1,d1=1
det5:1,d2=1
det5:1,d3=0
det7:1,d0=1
det7:1,d1=0
det9:1,d0=1
det9:1,d1=0
PODSBORKA:1
pod_det1:1,d0=1
pod_det1:1,d1=0
pod_det2:1,d0=1
pod_det2:1,d1=0
DIN EN 24036 M5:1,ParS=0,8
DIN EN 24036 M5:1,M=0,27
DIN EN 24036 M5:1,d2=0
DIN EN 24036 M5:1,d14=0
DIN EN 24036 M5:1,d15=0
DIN EN 24036 M5:1,d16=0
DIN EN 24036 M5:1,PTC=0,08
DIN EN 24036 M5:1,NND=0,5
DIN EN 24036 M5:1,d17=0,048
DIN EN 24036 M5:1,d21=0
DIN EN 24036 M5:1,d23=0
DIN EN 24036 M5:1,d24=0
DIN EN 24036 M5:1,d25=0
DIN EN 24036 M5:1,THREADDIA=0,5
Болт 2 ГОСТ 15591-70 M10?45:1,d1=1,61658075373095
Болт 2 ГОСТ 15591-70 M10?45:1,d2=1,4
Болт 2 ГОСТ 15591-70 M10?45:1,d4=0,64
Болт 2 ГОСТ 15591-70 M10?45:1,d5=0
Болт 2 ГОСТ 15591-70 M10?45:1,d6=1,33
Болт 2 ГОСТ 15591-70 M10?45:1,s_=1,4
Болт 2 ГОСТ 15591-70 M10?45:1,e=1,53
Болт 2 ГОСТ 15591-70 M10?45:1,D_=1,33
Болт 2 ГОСТ 15591-70 M10?45:1,d=1
Болт 2 ГОСТ 15591-70 M10?45:1,d1_=1
Болт 2 ГОСТ 15591-70 M10?45:1,k1=0,64
Болт 2 ГОСТ 15591-70 M10?45:1,d18=0,64
Болт 2 ГОСТ 15591-70 M10?45:1,d19=1,0471975511966
Болт 2 ГОСТ 15591-70 M10?45:1,d21=1
Болт 2 ГОСТ 15591-70 M10?45:1,d22=4,5
Болт 2 ГОСТ 15591-70 M10?45:1,L=4,5
Болт 2 ГОСТ 15591-70 M10?45:1,b=2,6
Болт 2 ГОСТ 15591-70 M10?45:1,d24=2,6
Болт 2 ГОСТ 15591-70 M10?45:1,d25=0
Болт 2 ГОСТ 15591-70 M10?45:1,d26=0,06
Болт 2 ГОСТ 15591-70 M10?45:1,chamfer=0,06
Болт 2 ГОСТ 15591-70 M10?45:1,d33=0
Болт 2 ГОСТ 15591-70 M10?45:1,d34=0
Болт 2 ГОСТ 15591-70 M10?45:1,d35=0
Болт 2 ГОСТ 15591-70 M10?45:1,h_=0,128
Болт 2 ГОСТ 15591-70 M10?45:1,D1=1,12
Болт 2 ГОСТ 15591-70 M10?45:1,d36=1,12
Болт 2 ГОСТ 15591-70 M10?45:1,d39=0,03
Болт 2 ГОСТ 15591-70 M10?45:1,Grip_Length=1,9
Болт 2 ГОСТ 15591-70 M10?45:1,d41=2,0943951023932
Болт 2 ГОСТ 15591-70 M10?45:1,d42=0,512
Болт 2 ГОСТ 15591-70 M10?45:1,d43=1,14
Гайка ГОСТ 15525-70 M10:1,D=1
Гайка ГОСТ 15525-70 M10:1,S_=1,7
Гайка ГОСТ 15525-70 M10:1,e=1,87
Гайка ГОСТ 15525-70 M10:1,da=1
Гайка ГОСТ 15525-70 M10:1,dw=1,55
Гайка ГОСТ 15525-70 M10:1,m_=1,5
Гайка ГОСТ 15525-70 M10:1,d1=1,5
Гайка ГОСТ 15525-70 M10:1,d2=0
Гайка ГОСТ 15525-70 M10:1,d10=0,523598775598299
Гайка ГОСТ 15525-70 M10:1,d11=0,32
Гайка ГОСТ 15525-70 M10:1,d12=1,55
Гайка ГОСТ 15525-70 M10:1,d15=1
Гайка ГОСТ 15525-70 M10:1,d17=0,785398163397448
Гайка ГОСТ 15525-70 M10:1,d18=0
Гайка ГОСТ 15525-70 M10:1,d20=0
Гайка ГОСТ 15525-70 M10:1,d21=0
Гайка ГОСТ 15525-70 M10:1,d22=0,785398163397448
Гайка ГОСТ 15525-70 M10:1,d24=1
Гайка ГОСТ 15525-70 M10:1,d25=0
Гайка ГОСТ 15525-70 M10:1,d26=1,7

Не то пальто...
Название: Re: Определение головной сборки
Отправлено: Александр Ривилис от 19-05-2016, 15:52:01
Как же не то, когда именно то. Удаляю из твоего лога всё лишнее:
Цитировать
Для подсборки:
PodSborka.iam
Цитировать
Для главной сборки
Sborka.iam
PODSBORKA:1
Т.е. PODSBORKA входит в Sborka, но Sborka не входит в PODSBORKA. Соотвественно Sborka - это головная сборка.
Вроде бы ты именно эту информацию хотел получить.

Название: Re: Определение головной сборки
Отправлено: Витос от 19-05-2016, 16:26:08
При наличии большой вложенности и большого количества подсборок - проблематично вычислять, думал есть более красивое решение.
Название: Re: Определение головной сборки
Отправлено: Александр Ривилис от 19-05-2016, 17:02:46
Как я понимаю подсборка не хранит в себе информацию о том, куда она вставлена. Это и логично, так как она может быть вставлена в кучу сборок. И наоборот сборка хранит в себе информацию о том, что в неё вставлено (какие подсборки).
Название: Re: Определение головной сборки
Отправлено: mikazakov от 19-05-2016, 20:26:54
При наличии большой вложенности и большого количества подсборок - проблематично вычислять, думал есть более красивое решение.
Проблематично в плане по времени? В этом случае Apprentice Server рулит. В хэлпе есть отдельно небольшой мануал на эту тему.
Вот небольшой код как открыть сборку оттуда:
Код - Visual Basic [Выбрать]
  1. Private Sub TestApprentice()  
  2. ' Create a new instance of Apprentice.  
  3. Dim oApprentice As New ApprenticeServerComponent    
  4. ' Open a document.    
  5. Dim oDoc As ApprenticeServerDocument    
  6. Set oDoc = oApprentice.Open("C:\Temp\Assembly1.iam")    
  7. End Sub
  8.  

Объектная модель у Apprentice Server похожа на сам инвенторовский АПИ, только сильно обрезанный.
В Apprentice Server осталась только работа со свойствами, ссылками и просмотр модели. Утилита Inventor View работате на Apprentice Server. Так как Apprentice Server грузит из файла только минимум, то работает быстро.

Инвенторовские файлы это компаундные файлы, можно юзать интерфейс IStorage из WinAPI32 без всякого инвентора, для извлечения данных. Думаю что будет работать еще быстрее, но это для особо продвинутых.
Название: Re: Определение головной сборки
Отправлено: Витос от 20-05-2016, 08:38:54
Открыл через Apprentice - обрезанный API инвентора. Чем он может помочь - не понимаю.
Название: Re: Определение головной сборки
Отправлено: mikazakov от 20-05-2016, 09:51:01
Чем он может помочь - не понимаю.
анализ ссылок все равно самому программить придется, Apprentice Server просто более шустрый.
Да и еще свойство ссылки на объектную библиотеку инвентора (или библиотека типов Apprentice Server)  “Embed Interop Types” должно быть выставлено равным False, а то будут глюки