Запуск правила ILogic через макрос

Автор Тема: Запуск правила ILogic через макрос  (Прочитано 9322 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Какой командой осуществить запуск правила, который является внешним правилом и находится в папке "Шаблонные правила" на винте. Мне это нужно, чтобы назначить на кнопку.

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Запуск правила ILogic через макрос
« Ответ #1 : 14-04-2016, 16:51:58 »
Год назад была тема на этом форуме, где обсуждался запуск правил iLogic. Быть может там есть ответ.
В программировании я новичок...но ненадолго! ;)

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
В программировании я новичок...но ненадолго! ;)

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #3 : 15-04-2016, 13:12:44 »
   
Код - vb.net [Выбрать]
  1.  Sub Test_iLogic()
  2.      
  3.     Dim addIn As Object
  4.     Set addIn = ThisApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
  5.      
  6.     If addIn Is Nothing Then Exit Sub
  7.      
  8.     addIn.Activate
  9.      
  10.     Dim iLogicAuto As Object
  11.     Set iLogicAuto = addIn.Automation
  12.      
  13.     If (iLogicAuto Is Nothing) Then Exit Sub
  14.      
  15.     Dim curDoc As Document
  16.     Set curDoc = ThisApplication.ActiveDocument
  17.      
  18.     Call iLogicAuto.RunRule(curDoc, "Правило0")
  19.      
  20.     'iLogicAuto.paramValue(curDoc, "text0") = "From Automation"
  21.     'Dim curVal As String
  22.     'curVal = iLogicAuto.paramValue(curDoc, "text0")
  23.     'iLogicAuto.iProperties.Value(curDoc, "Custom", "PropertyName") = "444444444444"
  24.      
  25.     'Dim rule As Object
  26.     'Debug.Print (" ------- Rules: ----------")
  27.     'Dim rules As Object
  28.     'Set rules = iLogicAuto.rules(curDoc)
  29.     'If (Not rules Is Nothing) Then
  30.     '  For Each rule In rules
  31.     '
  32.     '    Debug.Print (" --- " & rule.Name & " ---")
  33.     '    Debug.Print (rule.Text)
  34.     '    Call rule.Execute
  35.     '  Next
  36.     'End If
  37.      
  38.     End Sub

Запускает правило0 внутреннее, а внешнее как?

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #4 : 15-04-2016, 15:29:34 »
   
Код - vb.net [Выбрать]
  1. Public Sub RuniLogic(ByVal RuleName As String)
  2.       Dim iLogicAuto As Object
  3.       Dim oDoc As Document
  4.       Set oDoc = ThisApplication.ActiveDocument
  5.       If oDoc Is Nothing Then
  6.         MsgBox "Missing Inventor Document"
  7.         Exit Sub
  8.       End If
  9.       Set iLogicAuto = GetiLogicAddin(ThisApplication)
  10.       If (iLogicAuto Is Nothing) Then Exit Sub
  11.       iLogicAuto.RunExternalRule oDoc, RuleName
  12.     End Sub
  13.      
  14.     Function GetiLogicAddin(oApplication As Inventor.Application) As Object
  15.       Set addIns = oApplication.ApplicationAddIns
  16.       'Find the add-in you are looking for
  17.       Dim addIn As ApplicationAddIn
  18.       On Error GoTo NotFound
  19.       Set addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
  20.       If (addIn Is Nothing) Then Exit Function
  21.       addIn.Activate
  22.       Set GetiLogicAddin = addIn.Automation
  23.       Exit Function
  24.       NotFound:
  25.     End Function

А куда его вставлять, в макрос? И где прописывать имя правила

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Запуск правила ILogic через макрос
« Ответ #5 : 18-04-2016, 08:00:47 »
Честно, сказать не понятно, зачем делать такое масло-масленное. иЛоджик и ВБА это вещи одного порядка.
Запуск макрасов из иЛоджика обоснован хоть как то обоснован что бы использовать предыдущие наработки на ВБА.
А вот запуск правил иЛоджика из ВБА для чего нужно мне не понятно.
ВБА - работает через COM, а эддин для иЛоджика написан на NET. И как при этом делать приведение типов при работе в ВБА если ему нужны зарегистрированные в реестре винды СОМ-компоненты? Доступ конечно же к иЛоджику идет через сам инвентор, но объектную модель иЛоджика нужно как то узнать. Можно конечно отдельно DLL от иЛоджика подцепить в проект NET и там посмотреть через объектный браузер как есть члены, потом это внятно перенести в ВБА, провозится пору-тройку вечеров что бы это как то запустилось.
Но оно надо такой геморрой? Проще код из иЛоджика перенести на ВБА. А еще лучше взять нормальный NET-язык vb.net или c#, и делать в нем сразу.

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #6 : 18-04-2016, 09:50:20 »
Честно, сказать не понятно, зачем делать такое масло-масленное. иЛоджик и ВБА это вещи одного порядка.
Запуск макрасов из иЛоджика обоснован хоть как то обоснован что бы использовать предыдущие наработки на ВБА.
А вот запуск правил иЛоджика из ВБА для чего нужно мне не понятно.
ВБА - работает через COM, а эддин для иЛоджика написан на NET. И как при этом делать приведение типов при работе в ВБА если ему нужны зарегистрированные в реестре винды СОМ-компоненты? Доступ конечно же к иЛоджику идет через сам инвентор, но объектную модель иЛоджика нужно как то узнать. Можно конечно отдельно DLL от иЛоджика подцепить в проект NET и там посмотреть через объектный браузер как есть члены, потом это внятно перенести в ВБА, провозится пору-тройку вечеров что бы это как то запустилось.
Но оно надо такой геморрой? Проще код из иЛоджика перенести на ВБА. А еще лучше взять нормальный NET-язык vb.net или c#, и делать в нем сразу.
К сожалению илоджиком я уже начал заниматься Переводить в ВБА не умею

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Запуск правила ILogic через макрос
« Ответ #7 : 18-04-2016, 10:12:02 »
К сожалению илоджиком я уже начал заниматься
Перевести на VB.NET нет никаких проблем. Они очень похожи. Тонкости как сделать свой эддин, я подробно описывал у себя в мануале:
http://mihakazakov.wix.com/inventor-api#!publications/cee5

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Запуск правила ILogic через макрос
« Ответ #8 : 18-04-2016, 12:18:15 »
К сожалению илоджиком я уже начал заниматься Переводить в ВБА не умею
Со временем айлоджика становится мало, я бы посоветовал вам не тратить на него время, изучайте сразу VBA. Я за пол года сидя на этом форуме научился делать то, что вы никогда не сможете сделать штатным набором команд в iLogic. Если же вы будете использовать не упрощенные команды, а полноценные, то смысл использования iLogic совсем теряется. Ответы на половину вопросов, которые у вас возникнут, вы найдете на этом форуме, ибо я их уже задавал, вторую половину спросите сами.
В программировании я новичок...но ненадолго! ;)

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #9 : 19-04-2016, 09:01:13 »
Перевести на VB.NET нет никаких проблем. Они очень похожи. Тонкости как сделать свой эддин, я подробно описывал у себя в мануале:
http://mihakazakov.wix.com/inventor-api#!publications/cee5
Большое спасибо за ссылку. Полезный материал. В дальнейшем пригодится.
А все таки.. Но судя по оглавлениям учебных материалов, для того, чтоб перевести с илоджика на VB нужно прочесть весь материал, и при этом инфы не достаточно для моего случая. Поэтому вопрос остался открытым. Потому как полноценных программ илоджика у меня есть что то, а VB только разрозненные функции

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Запуск правила ILogic через макрос
« Ответ #10 : 19-04-2016, 12:59:19 »
Потому как полноценных программ илоджика у меня есть что то, а VB только разрозненные функции
Я вам советую не на VB переходить, а на VBA. Он уже интегрирован в инвентор, прост в использовании. Есть хелп, примеры и объектный браузер. Так что нажимайте ALT+F11 и вперед! :)
В программировании я новичок...но ненадолго! ;)

Отмечено как Решение Сергей SSS 20-04-2016, 08:50:05

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #11 : 20-04-2016, 08:49:53 »
Сам догадался

Код - vb.net [Выбрать]
  1.     Public Sub RuniLogic(ByVal RuleName As String)
  2.           Dim iLogicAuto As Object
  3.           Dim oDoc As Document
  4.           Set oDoc = ThisApplication.ActiveDocument
  5.           If oDoc Is Nothing Then
  6.             MsgBox "Missing Inventor Document"
  7.             Exit Sub
  8.           End If
  9.           Set iLogicAuto = GetiLogicAddin(ThisApplication)
  10.           If (iLogicAuto Is Nothing) Then Exit Sub
  11.           iLogicAuto.RunExternalRule oDoc, RuleName
  12.         End Sub
  13.          
  14.         Function GetiLogicAddin(oApplication As Inventor.Application) As Object
  15.           Set addIns = oApplication.ApplicationAddIns
  16.           'Find the add-in you are looking for
  17.           Dim addIn As ApplicationAddIn
  18.           On Error GoTo NotFound
  19.           Set addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
  20.           If (addIn Is Nothing) Then Exit Function
  21.           addIn.Activate
  22.           Set GetiLogicAddin = addIn.Automation
  23.           Exit Function
  24.           NotFound:
  25.         End Function
Просто нужно в созданный макрос вставить
Код - vb.net [Выбрать]
  1. RuniLogic("полный путь\название правила.расширение")
И перед Set addIns = oApplication.ApplicationAddIns в функции нужно вставить Dim addIns

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Re: Запуск правила ILogic через макрос
« Ответ #12 : 20-04-2016, 09:03:33 »
Я вам советую не на VB переходить, а на VBA. Он уже интегрирован в инвентор, прост в использовании. Есть хелп, примеры и объектный браузер. Так что нажимайте ALT+F11 и вперед! :)
Спасибо за совет конечно. Но ведь на вашем сайте описание про взаимодействие VB.net и инвентора.
Есть в инвенторе хелп, объектный браузер, но все описание на англ-ом. А переводчик переводит  Public statement как публичное заявление. А примеров нет, это как учиться ездить на машине (объяснять что такое сцепление, тормоз, развал схождения, но не объеснять КАК ТРОГАТЬСЯ С МЕСТА)

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Re: Запуск правила ILogic через макрос
« Ответ #13 : 20-04-2016, 17:41:23 »
А примеров нет, это как учиться ездить на машине (объяснять что такое сцепление, тормоз, развал схождения, но не объеснять КАК ТРОГАТЬСЯ С МЕСТА)
Примеры есть, в справке API есть раздел samples, что в переводе с английского "примеры" :) Ну а вообще я вам так скажу, что в русскоязычном интернете изначально мало информации. Так что если использовать вашу метафору, то тронуться с места вам поможет этот форум. Не бойтесь задавать вопросы. Можете мне в лс написать. А чтобы дальше ездить на машине вам хотите-не хотите надо подтягивать английский. Лично я очень много чего нашёл в англоязычном секторе, ибо там использование API - это в порядке вещей.
П.С. В частности там огромное количество информации по айлоджику. Надо лишь правильно в гугл запрос вбивать.
В программировании я новичок...но ненадолго! ;)