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

ADN Club => Inventor API => Тема начата: Sam от 20-06-2018, 14:28:29

Название: Автоматизация моделирования, анализ напряжений
Отправлено: Sam от 20-06-2018, 14:28:29
Уважаемые специалисты.
Прошу помощи в следующих вопросах:
1. Как в VBA в открытом документе (деталь, сборка) назначить библиотеки материалов "Избранное", "Внешняя"?
2. Как в VBA в открытом документе (деталь, сборка) извлечь/назначить детали, компоненту материал?

Спасибо.
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Александр Ривилис от 20-06-2018, 23:23:55
Назначение материала: http://adndevblog.typepad.com/manufacturing/2013/07/inventor-2014-api-set-part-material.html (и продолжение в комментариях).
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Sam от 21-06-2018, 07:52:02
Благодарю, изучаю.
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Sam от 22-06-2018, 13:05:12
А как назначить материал компоненту сборки? Можете дать ссылку?
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Александр Ривилис от 22-06-2018, 16:10:08
А как назначить материал компоненту сборки? Можете дать ссылку?
Посмотри обсуждение здесь: https://forums.autodesk.com/t5/inventor-customization/change-material-of-part-in-assembly-inventor-2014-2015/td-p/5128944
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Sam от 26-06-2018, 12:57:43
А как назначить материал компоненту сборки? Можете дать ссылку?
Посмотри обсуждение здесь: https://forums.autodesk.com/t5/inventor-customization/change-material-of-part-in-assembly-inventor-2014-2015/td-p/5128944

Александр. В тексте я вставил свой материал и свою библиотеку материалов. Строку 34 заменил на строку 36.
Но назначение материала 09Г2С компоненту сборки item(1) не происходит. В чем моя ошибка?
Код - Visual Basic [Выбрать]
  1. Public Sub SetOccurrenceAppearance()
  2.     Dim asmDoc As AssemblyDocument
  3.     Set asmDoc = ThisApplication.ActiveDocument  
  4.     ' Get an appearance from the document.  To assign an appearance is must
  5.    ' exist in the document.  This looks for a local appearance and if that
  6.    ' fails it copies the appearance from a library to the document.
  7.    Dim localAsset As Asset
  8.     On Error Resume Next
  9.  
  10.     Set localAsset = asmDoc.Assets.item("09Г2С")  
  11.  
  12.     If Err Then
  13.         On Error GoTo 0      
  14.         ' Failed to get the appearance in the document, so import it.      
  15.        ' Get an asset library by name.  Either the displayed name (which
  16.        ' can changed based on the current language) or the internal name
  17.        ' (which is always the same) can be used.
  18.        Dim assetLib As AssetLibrary
  19.  
  20.         Set assetLib = ThisApplication.AssetLibraries.item("Избранное")
  21.  
  22.         ' Get an asset in the library.  Again, either the displayed name or the internal
  23.        ' name can be used.
  24.        Dim libAsset As Asset
  25.  
  26.         Set libAsset = assetLib.AppearanceAssets.item("09Г2С")
  27.  
  28.         ' Copy the asset locally.
  29.        Set localAsset = libAsset.CopyTo(asmDoc)
  30.     End If
  31.     On Error GoTo 0          
  32.     ' Have an occurrence selected.
  33.    Dim occ As ComponentOccurrence
  34.  ''''''' Set occ = ThisApplication.CommandManager.Pick(kAssemblyOccurrenceFilter, "Select an occurrence.")
  35.  
  36.     Set occ = asmDoc.ComponentDefinition.Occurrences.item(1)
  37.  
  38.     ' Assign the asset to the occurrence.
  39.    occ.appearance = localAsset
  40.      Call asmDoc.BrowserPanes.ActivePane.TopNode.DoSelect
  41. End Sub
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Александр Ривилис от 26-06-2018, 13:14:47
Затрудняюсь сказать, так как для Inventor не программирую. Не уверен, что должно быть item(1), а не item(0).  И вообще попробуй запустить код под отладчиком, чтобы понимать как он выполняется.
Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Sam от 02-07-2018, 15:47:03
Александр. В сборке отсутствует asmDoc.ComponentDefinition.Occurrences.item(0), поэтому выдается ошибка <Invalid procedure or argument>.
Кстати, при назначении нового материала детали присвоение выполняется, если новый материал отсутствует в документе детали. Поэтому приходится перед назначением нового материала удалять из документа все материалы.
У меня есть новый вопрос.

Для автоматизации моделирования мне необходимо получить силы реакции и реактивные моменты. Как их можно извлечь из параметров результатов?

Название: Re: Автоматизация моделирования, анализ напряжений
Отправлено: Александр Ривилис от 02-07-2018, 23:36:41
У меня есть новый вопрос.
Один вопрос - одна тема.