Автомат. срабатывание внешних правил после изменения пользовательских пара

Автор Тема: Автомат. срабатывание внешних правил после изменения пользовательских пара  (Прочитано 9108 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Всем доброго дня. Есть два внешних правила, которые создают пользовательские параметры "список материалов" и "список правил обработки листового материала". Параметры добавлены в глобальную форму. Я запускаю эту форму после создания новой детали, меняю значения параметров, закрываю форму и потом мне нужно запустить внешниt правила, чтобы материал модели поменялся и толщина тоже. Если создавать аналогичные списки параметров во внутренних правилах, то всё происходит автоматом. Как автоматизировать этот процесс для внешних правил?
Вот сами правила:
СПИСОК МАТЕРИАЛОВ
Try
p = Parameter.Param("Материал")
Catch
ThisDoc.Document.ComponentDefinition.Parameters.UserParameters.AddByValue("Материал", "", UnitsTypeEnum.kTextUnits)
MultiValue.List("Материал") = iProperties.Materials
Материал = iProperties.Material
End Try
iProperties.Material = Parameter("Материал")
InventorVb.DocumentUpdate()
iLogicVb.UpdateWhenDone = True
MultiValue.UpdateAfterChange = True

СПИСОК ПОЛМ
name = ""
For Each par In ThisDoc.Document.ComponentDefinition.Parameters.UserParameters
   If par.Name = "ПОЛМ" Then
      name = par.Name
      Exit For
   End If
Next
 
If name = "" Then
        'try to create new multi-value user parameter
   Dim MyArrayList As New ArrayList
   For Each st In ThisDoc.Document.ComponentDefinition.SheetMetalStyles
      MyArrayList.add(st.Name)
   Next
   MultiValue.SetValueOptions(True, DefaultIndex := 0, NumericCompare := "=")
   ThisDoc.Document.ComponentDefinition.Parameters _
               .UserParameters.AddByValue("ПОЛМ", "", UnitsTypeEnum.kTextUnits)
   MultiValue.List("ПОЛМ") = MyArrayList
   Parameter("ПОЛМ") = SheetMetal.GetActiveStyle()
End If
SheetMetal.SetActiveStyle(Parameter("ПОЛМ"))
iLogicVb.UpdateWhenDone =True
InventorVb.DocumentUpdate()

Буду рад любой помощи.

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
А может на глобальной форме сделать кнопку запуска внешних правил без необходимости закрывать глобальную форму?
« Последнее редактирование: 07-10-2013, 12:27:44 от Александр Ривилис »

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
А может на глобальной форме сделать кнопку запуска внешних правил без необходимости закрывать глобальную форму?
Точно. Спасибо, Владимир.
Ещё один вопрос есть: можно ли как то автоматизировать процесс импорта правил обработки листового материала из определенной папки?
Если листовая деталь создается по шаблону, то правила обработки детали из листового металла есть. Если редактируется старая деталь, то там этих правил нет и приходится всё время это делать вручную.
« Последнее редактирование: 07-10-2013, 12:28:02 от Александр Ривилис »

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
Есть очень популярная утилита iLogic Code Injector tool.
См. например, здесь:
http://beinginventive.typepad.com/being-inventive/2012/08/major-upgrade-to-the-ilogic-code-injector-tool.html
Может быть этого функционала и хватит.  Ее код активно обсуждался на форуме.

Если потянет на собственную разработку, то в Autodesk Exchange Apps среди инвенторовских программ имеется приложение LinkParameters. Эта программа на лету создает в компоненте необходимое правило iLogic.  Авторы из Autodesk, поэтому исходный код прилагается.  Можно посмотреть метод, как они это сделали.  Ничего тут особо хитрого нет. Интерфейс iLogic Automation предоставляет доступ к тексту правил.  Можно их читывать, менять и создавать.

Прошу новые вопросы задавать в отдельных темах. Рациональный формат для форума   Вопрос - Ответ. Если возникает новая тема, надо создавать новую ветку. Иначе найти ответы на форуме будет невозможно.  Спасибо.

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
Есть очень популярная утилита iLogic Code Injector tool.
См. например, здесь:
http://beinginventive.typepad.com/being-inventive/2012/08/major-upgrade-to-the-ilogic-code-injector-tool.html
Может быть этого функционала и хватит.  Ее код активно обсуждался на форуме.о создавать новую ветку. Иначе найти ответы на форуме будет невозможно.  Спасибо.
Насколько я знаю эта программка работает только с внутренними правилами. Я же работаю с внешними.

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
На первый взгляд, разницы нет. 
В крайнем случае, можно  программно создать правило с текстом типа RunExternalRule(...). 

Оффлайн niksasaАвтор темы

  • ADN Club
  • **
  • Сообщений: 91
  • Карма: 0
  • Skype: niksasa1979
На первый взгляд, разницы нет. 
В крайнем случае, можно  программно создать правило с текстом типа RunExternalRule(...). 
Спасибо, Владимир. Я об этом знаю. Думаю как всё правильно организовать. Думаю часть правил повесить на инициаторы событий, а часть запускать после выполнения других.