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

ADN Club => Inventor API => Тема начата: Elfilagas от 23-02-2022, 13:19:34

Название: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: Elfilagas от 23-02-2022, 13:19:34
Добрый день, подскажите, есть ли возможность развернуть деталь iPart из сборки, где она применяется?
Используем следующий код для получения разверток медных деталей, работает для всего кроме деталей с исполнениями:
Код - Visual Basic [Выбрать]
  1. sBom = ThisDoc.Document.ComponentDefinition.BOM
  2. sBom.PartsOnlyViewEnabled = True
  3. sBOMView = sBom.BOMViews.Item("Только детали")
  4. For Each sRow In sBOMView.BOMRows
  5.         sCompDef = sRow.ComponentDefinitions.Item(1)
  6.         If sCompDef.Material.Name.Contains("Медь") Then
  7.                 If sCompDef.Document.SubType <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
  8.                         sCompDef.Document.SubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}"
  9.                         sCompDef.Unfold
  10.                 Else
  11.                         sCompDef.Unfold
  12.                 End If
  13.      End If
  14. Next
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: mikazakov от 24-02-2022, 21:35:58
экселя дома нет, к сожалению, iPart тестовый сделать не получается.
До работы доберусь посмотрю
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: Elfilagas от 26-02-2022, 10:58:51
Буду очень признателен, если получится посмотреть.
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: mikazakov от 26-02-2022, 14:11:08
Сделайте сборку.
Вставьте в нею один листовой иПарт и запустите макрос
Код - Visual Basic [Выбрать]
  1. Public Sub InsertConstraint()
  2.     ' Set a reference to the assembly component definintion.
  3.    Dim oAsmCompDef As AssemblyComponentDefinition
  4.     Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
  5. Dim sm As SheetMetalComponentDefinition: Set sm = oAsmCompDef.BOM.BOMViews(1).BOMRows(1).ComponentDefinitions(1)
  6. Dim pd As PartDocument: Set pd = sm.Document
  7. pd.Views.Add
  8.    sm.Unfold
  9.    sm.FlatPattern.Edit
  10. End Sub
  11.  
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: Elfilagas от 27-02-2022, 14:03:36
Спасибо. Работает, но почему то не со всеми деталями. Можете посмотреть сборку во вложении. Деталь2 обрабатывается корректно, а шина не обрабатывается совсем. Почему понять не могу. У обоих деталей развертки нет. Но у детали2 скрипт срабатывает и длину развертки получаем, а у шины нет. Скрипт так же в архиве.
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: mikazakov от 28-02-2022, 07:47:30
Посмотрел. Там видимо особенность, что при вставке ипарта, вставляется не изначальный ипарт, а его прокси объект (производный компонент, файлы в соседних папках)
Ну вот я просто по ссылке перешел на родительский ипарт и там произвел развертку, вроде работает
Код - Visual Basic [Выбрать]
  1. Public Sub unfold()
  2.     ' Set a reference to the assembly component definintion.
  3.    Dim oAsmCompDef As AssemblyComponentDefinition
  4.     Set oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
  5. Dim sm As SheetMetalComponentDefinition: Set sm = oAsmCompDef.BOM.BOMViews(1).BOMRows(1).ComponentDefinitions(1)
  6. Dim pd As PartDocument: Set pd = sm.Document
  7. Call unfold_ipart(pd)
  8. ThisApplication.ActiveDocument.Update
  9. End Sub
  10.  
  11.  
  12. Sub unfold_ipart(pd As PartDocument)
  13.  
  14. Dim scd As SheetMetalComponentDefinition: Set scd = pd.ComponentDefinition
  15. Dim parentDoc As PartDocument: Set parentDoc = scd.iPartMember.ReferencedDocumentDescriptor.ReferencedDocument
  16. Dim p_scd As SheetMetalComponentDefinition: Set p_scd = parentDoc.ComponentDefinition
  17.  
  18. p_scd.unfold
  19.  
  20. End Sub
  21.  
  22.  
Название: Re: Развернуть параметрическую деталь из сборки через iLogic
Отправлено: Elfilagas от 01-03-2022, 11:00:17
Да, теперь все получилось, большое спасибо.