Правила iLogic можно создавать, используя только операторы назначения параметров Inventor, предварительно заданные функции iLogic и простой код VB.NET. Кроме того, можно использовать непосредственно API Inventor.
Однако в распоряжении пользователя есть и другие методы. iLogic основывается на коде VB.NET. В правилах можно использовать дополнительные функции VB.NET и .NET Framework.
Заголовки — это операторы, которые необходимо вводить в диалоговом окне «Редактировать правило» перед кодом правила. Операторы заголовков можно ввести непосредственно в редакторе заголовков или сделать это в основном реакторе, после чего iLogic переместит их в редактор заголовков.
Чтобы открыть редактор заголовков, выполните одно из следующих действий.
Щелкните «Заголовок».

Введите допустимый оператор заголовка (например Imports) в окне редактирования правила. Редактор заголовков откроется автоматически как активный редактор.
В редакторе заголовков поддерживаются следующие операторы:
Option Explicit On
Option Strict On
Option Infer Off
AddReference "filename.dll"
Imports ...
AddVbRule "Other Rule"
AddVbFile "filename.vb"
AddResources "filename.resources"
Option и Imports — это стандартные операторы VB.NET.
Option Explicit Off — оператор по умолчанию. Он позволяет использовать локальные переменные, не объявляя их.
Option Strict Off является значением по умолчанию. Option Strict On также работает для большинства правил.
По умолчанию используется значение Option Infer On.
Основной код правила — это необъявляемая подпрограмма. Чтобы добавить дополнительные подпрограммы, функции, свойства или классы, объявите Sub Main() следующим образом:
Sub Main()
' your main rule code here
End SubSub Main() можно использовать в любом правиле вне зависимости от того, содержится ли в этом правиле дополнительный код. См. дополнительные сведения о явном объявлении класса правил в разделе "Как обрабатывается правило?".
Использует специальный синтаксис iLogic. Добавление имени файла DLL к оператору AddReference действует аналогично команде AddReference и поиску файла DLL в Visual Studio или Visual Basic Express.
Поддерживаются только сборки .NET. Файл DLL может быть стандартной сборкой Microsoft, как в каталоге Microsoft.NET\Framework.
Например, рассмотрим следующий оператор:
AddReference "System.Drawing.dll"В этом операторе расширение .dll является необязательным.
В качестве ссылки можно указать созданную пользователем библиотеку классов или библиотеку классов стороннего изготовителя. Созданные пользователем файлы DLL и DLL сторонних изготовителей должны находиться в одном каталоге. По умолчанию эти файлы DLL расположены в каталоге установки Inventor, в подкаталоге iLogicAdd, например:
C:\Program Files\Autodesk\Inventor [версия]\Bin\iLogicAdd
Эту папку можно изменить с помощью команды "Конфигурация iLogic". Кроме того, можно добавить ссылки на файлы DLL в основном каталоге Inventor Bin (например, C:\Program Files\Autodesk\Inventor [версия]\Bin).
Оператор AddReference не поддерживает задание полного пути. Можно указать только имя файла. Добавьте ссылки на сборки в глобальном кэше сборок (GAC), используя полные имена, например:
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”Кроме того, можно создать или открыть в правиле зарегистрированные COM-объекты с помощью CreateObject или GetActiveObject. Использовать AddReference для COM DLL необязательно.
Включает код из указанного правила как код VB, скомпилированный с основным правилом. Заданное правило не может быть стандартным правилом. Для него необходимо включить параметр Прямой код VB на панели «Параметры» в диалоговом окне «Редактировать правило». iLogic не выполняет предварительную обработку кода в таком правиле. Правило содержит классы или модули, которые можно вызвать из других правил. Используйте этот оператор, чтобы несколько правил могли совместно использовать код, или же чтобы поддерживать модульность кода.
Пример
AddVbRule "Other Rule"Используется аналогично оператору AddVbRule, только в этом случае код VB хранится не в правиле, а во внешнем файле. Как и в случае с AddVbRule, для кода необходимо включить параметр Прямой код VB. Этот оператор полезен, когда в разных моделях требуется использовать общий код. Для задания файла необходимо использовать относительный путь. iLogic выполняет поиск в каталоге текущего документа Inventor и в других каталогах, соблюдая тот же порядок поиска, который используется для внешних правил.
Пример
AddVbFile "fileName.vb"Добавляет ресурсы (например, строки или точечные рисунки). Ресурсы необходимо компилировать в Visual Studio.
Пример
AddResources "fileName.resources"Дублирующиеся операторы Imports не допускаются. Во всех правилах явно используются следующие операторы Imports по умолчанию:
Imports SystemImports System.MathImports System.CollectionsImports Microsoft.VisualBasicImports Autodesk.iLogic.InterfacesImports Autodesk.iLogic.RuntimeЕсли в правиле используется MessageBox, то iLogic автоматически добавляет следующий оператор:
Imports System.Windows.FormsВ случае использования ThisApplication или других объектов Inventor iLogic автоматически добавляет следующий оператор:
Imports InventoriLogic предлагает расширенные функции, позволяющие передавать в выполняемые правила сведения о контексте в виде аргументов правила. Эти сведения можно использовать для изменения поведения правила, не создавая при этом дублирующееся правило.
Аргументы правил передаются с помощью функций, доступных в интерфейсе IiLogicAutomation (для внешних клиентов) и в iLogicVB (для кода другого правила и внутренних клиентов). Эти аргументы доступны внутри правила через свойство RuleArguments.
Для IiLogicAutomation доступны следующие функции:
Function RunRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRuleDirectWithArguments(ByVal rule As iLogicRule, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Для iLogicVB доступны следующие функции:
Function RunRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunRule(ByVal compoOrDocName As Object, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Function RunExternalRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Создание аргументов правила
Чтобы создать аргументы правила, используйте API Inventor для создания объекта NameValueMap. После этого он передается одной из функций при запуске правила.
Доступ к аргументу, переданному правилу
x = RuleArguments(“myArg”)Проверка того, был ли аргумент передан правилу
If RuleArguments.Exists(“myArg”) Then...Передача набора аргументов другому правилу с использованием RunRule
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)При использовании оператора Sub Main() правило соблюдает стандартный формат VB.NET для класса, однако операторы Class... и End Class не видны, а операторы до оператора Sub Main() находятся вне класса. Следовательно, поместите все операторы присваивания внутри подпрограммы, функции или свойства. Операторы описания для переменных элемента класса, таких как Private temp As Double = 4.5, можно располагать вне подпрограммы или функции.
После Sub Main()... End Sub можно добавить определения Sub, Function, Property и Class. Любой добавляемый оператор Class вкладывается в основной объект Class правила для этого правила, и его нельзя использовать из другого правила. Чтобы добавить независимые операторы Class или Module, необходимо явно задать объект Class правила, используя следующий синтаксис:
Class ThisRule ' ...
Sub Main
End Sub
' ...
End ClassЗатем можно добавить еще один оператор Class или Module (или несколько) за пределами этого кода. Class ThisRule становится основным объектом Class правила, и iLogic вызывает Sub Main (в нем) для выполнения правила.
Чтобы включить оператор Module или Class, видимый для нескольких правил, поместите его во внешнюю сборку (DLL). В один файл DLL можно поместить несколько модулей или классов. Кроме того, можно использовать AddVbRule и поместить их в правило, определив их как «Прямой код VB» внутри документа Inventor (). Или используйте AddVbFile, чтобы поместить их во внешний файл VB.
При создании расширенного кода VB.NET рекомендуется выполнять кодирование не в самом правиле, а в Visual Studio или Visual Basic Express. Затем можно вырезать относительно небольшие фрагменты кода из Visual Studio и вставить их в правило. Можно даже вставить целое диалоговое окно Class (хотя на это потребуются дополнительные ресурсы). Для более крупных участков кода или в случае необходимости создайте сборку и используйте ее из правила в качестве внешнего файла DLL.
Можно хранить объекты, которые являются экземплярами пользовательского объекта Class, с помощью функций работы с общими переменными правил iLogic. Чтобы сохранить эти объекты, сериализуйте Class, или он должен быть получен из MarshalByRefObject.
В .NET можно создать собственные файлы DLL и вызывать их из правила. Чтобы отладить файл DLL, укажите выходной путь в окне «Свойства проекта»
«Компилировать в iLogicAdd» (в каталоге Inventor Bin). Затем выберите Inventor.exe для параметра Запустить внешнюю программу в свойствах проекта в Visual Studio. Этот способ позволяет использовать все преимущества среды отладки, включая команды "Редактировать" и "Продолжить".
Внешние файлы DLL полезны при использовании правила для отображения диалогового окна, позволяющего пользователю вводить данные.
Чтобы из правила открыть API Inventor, используйте свойство ThisApplication для перехода в приложение Inventor. Используйте ThisDoc.Document для перехода к документу, содержащему текущее правило. Элементы можно создавать и изменять. Используйте функцию Parameter.Param для получения прямого доступа к Inventor.Parameter.
Чтобы использовать API Inventor из собственного файла DLL, добавьте ссылку на Autodesk.Inventor.Interop.dll в свой проект Visual Basic. Он отображается в диалоговом окне "Добавить ссылку" на вкладке .NET. Для Inventor 2011 используйте версию 15.0.0.0.
Все функции iLogic группируются по объектам интерфейса (параметрам, свойствам Inventor, параметрическим деталям и т.д.). Объекты интерфейса iLogic можно передавать как аргументы функциям во внешних файлах DLL. Чтобы использовать эти объекты в проекте, добавьте ссылку на Autodesk.iLogic.Interfaces.dll. Выберите вкладку «Обзор» в диалоговом окне «Добавить ссылку» и откройте папку iLogicBin в каталоге Inventor Bin (обычно в папке C:\Program Files\Autodesk\Inventor [версия]\Bin\iLogicBin).
Документация по интерфейсам iLogic содержится в файле Autodesk.iLogic.Interfaces.xml. Чтобы прочесть описания интерфейсов, можно использовать обозреватель объектов в Visual Studio. Эти описания содержат имена объектов, реализующих интерфейсы в правилах. Например, объект Feature в правиле реализует интерфейс ICadFeature.