Перейти к публикации

Creo. Получить дерево сборки с помощью API.


Рекомендованные сообщения

Приветствую всех.

Задача: программно (с помощью API) получить дерево сборки Creo Parametric.

Нужны компоненты типа IpfcAssembly и IpfcPart.

Если кто-нибудь решал подобную задачу, просьба помочь или подсказать. Желательно на C# или на Visual Basic.

Фактически мне нужно только знать, как из сборки (IpfcAssembly) получить ее подсборки (IpfcAssembly) и детали (IpfcPart).

Заранее благодарен.

 

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts
31 минуту назад, ainis сказал:

дерево сборки

Что Вы под этим подразумеваете? Чем это "дерево" отличается от спецификации?

Ссылка на сообщение
Поделиться на других сайтах

Отвечу сам себе. Может, кому пригодится.

 

Dim CreoAssembly As IpfcAssembly = TryCast(Model, IpfcAssembly)' получаем корневую сборку из модели

Call GetComponents(CreoAssembly, CreoAssembly , New Cintseq)'получаем  компоненты сборки

'================================================================================

Public Sub GetComponents(RootCreoAssembly As IpfcAssembly, CreoAssembly As IpfcAssembly, ByVal currentLevel As Cintseq)

 Dim currentComponent As IpfcSolid = TryCast(CreoAssembly, IpfcSolid)

 Dim Components As IpfcFeatures = currentComponent.ListFeaturesByType(False, EpfcFeatureType.EpfcFEATTYPE_COMPONENT)

 Dim level As Integer = currentLevel.Count

 For i As Integer = 0 To Components.Count - 1

  Dim componentFeat As IpfcComponentFeat = TryCast(Components.Item(i), IpfcComponentFeat)

  currentLevel.Set(level, componentFeat.Id)

  Dim currentPath As IpfcComponentPath = (New CMpfcAssembly).CreateComponentPath(RootCreoAssembly, currentLevel)

  Dim currentComponent1 As IpfcSolid = currentPath.Leaf

  Select Case currentComponent1.Type

   Case EpfcModelType.EpfcMDL_PART 'деталь

    dim CurrentDetail As IpfcPart = TryCast(currentComponent1, IpfcPart)' получили деталь

   Case EpfcModelType.EpfcMDL_ASSEMBLY 'сборка

     Dim CurrentAssembly As IpfcAssembly = TryCast(currentComponent1, IpfcAssembly)'получили подсборку

     Call GetComponents(RootCreoAssembly , CurrentAssembly, currentLevel)'получаем  компоненты подсборки

  End Select

 Next

 If Not level = 0 Then
   currentLevel.Remove(level - 1, level)
 End If

End Sub

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...