iLogic-Regeln können nur mithilfe von Zuweisungsanweisungen für Inventor-Parameter, vordefinierten iLogic-Funktionen und einfachen VB.NET-Codes verfasst werden. Sie können die Inventor-API auch direkt verwenden.
Ihnen stehen jedoch noch weitere Techniken zur Verfügung. iLogic basiert auf VB.NET. Sie können in einer Regel die erweiterten Funktionen von VB.NET und das .NET Framework nutzen.
Header sind Anweisungen, die vor dem Regelcode im Dialogfeld Regel bearbeiten eingegeben werden müssen. Sie können die Header-Anweisungen direkt im Header-Editor eingeben, oder Sie geben sie im Haupteditor ein, und iLogic verschiebt diese in den Header-Editor.
Führen Sie einen der folgenden Schritte aus, um auf den Header-Editor zuzugreifen:
Die folgenden Anweisungen werden im Header-Editor unterstützt:
Option Explicit On
Option Strict On
Option Infer Off
AddReference "filename.dll"
Imports ...
AddVbRule "Other Rule"
AddVbFile "filename.vb"
AddResources "filename.resources"
Option und Imports sind Standard-VB.NET-Anweisungen.
Option Explicit Off ist der Vorgabewert. Damit können Sie lokale Variablen verwenden, ohne sie deklarieren zu müssen.
Option Strict Off ist der Vorgabewert. Option Strict On lässt sich außerdem für die meisten Regeln verwenden.
Option Infer On ist der Vorgabewert.
Der Hauptregelcode ist eine implizite Subroutine. Definieren Sie zum Hinzufügen weiterer Subroutinen, Funktionen, Eigenschaften oder Klassen Sub Main() wie folgt:
Sub Main() ' your main rule code here End Sub
Sub Main() kann in allen Regeln verwendet werden, unabhängig davon, ob die Regel über zusätzlichen Code verfügt. Weitere Informationen über explizites Definieren einer Regelklassen finden Sie im Abschnitt Wie wird eine Regel verarbeitet.
Verwendet eine besondere iLogic-Syntax. Wenn Sie einen DLL-Namen einer AddReference-Anweisung hinzufügen, erhalten Sie das gleiche Ergebnis, wie bei der Verwendung des Befehls AddReference, um nach einer DLL in Visual Studio oder Visual Basic Express zu suchen.
Es werden nur .NET-Baugruppen unterstützt. Bei der DLL kann es sich um eine Microsoft-Standard-Assembly wie die im Microsoft.Net\Framework-Ordner handeln.
Betrachten Sie beispielsweise die folgende Anweisung:
AddReference "System.Drawing.dll"
In dieser Anweisung ist die Erweiterung .dll optional.
Sie können auch eine benutzerdefinierte Klassenbibliothek oder eine Klassenbibliothek eines Drittanbietern als Referenz angeben. Benutzerdefinierte oder Drittanbieter-DLLs müssen sich in einem Ordner befinden. Diese DLLs werden vorgabegemäß im Inventor-Installationsordner im Unterordner iLogicAdd gespeichert. Beispiel:
C:\Programme\Autodesk\Inventor [Version]\Bin\iLogicAdd
Sie können diesen Speicherort mithilfe des Befehls iLogic-Konfiguration ändern. Sie können den DLLs im Bin-Hauptordner von Inventor (z. B. C:\Programme\Autodesk\Inventor [Version]\Bin) auch Referenzen hinzufügen.
Die Anweisung AddReference unterstützt keine vollständigen Pfadangaben. Sie können nur einen Dateinamen angeben. Fügen Sie Baugruppen im Global Assembly Cache (GAC) unter Verwendung eines qualifizierten Namens Referenzen hinzu. Beispiel:
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
Sie haben auch die Möglichkeit, in einer Regel COM-Objekte zu erstellen oder auf registrierte COM-Objekte zuzugreifen. Verwenden Sie zu diesem Zweck CreateObject oder GetActiveObject. Für COM-DLLs ist die Verwendung von AddReference nicht erforderlich.
Erfasst den Code aus der angegebenen Regel in Form eines VB-Codes, der mithilfe der Hauptregel kompiliert wurde. Die angegebene Regel darf keine Standardregel sein. Für diese Regel muss im Dialogfeld Regel bearbeiten in der Gruppe Optionen die Option Reiner VB-Code aktiviert sein. In iLogic wird der Code in so einer Regel nicht vorverarbeitet. In der Regel sind Klassen oder Module enthalten, die durch andere Regeln abgerufen werden können. Verwenden Sie diese Anweisung, um einen Code für mehrere Regeln freizugeben oder um die modulare Eigenschaft des Codes zu erhalten.
Beispiel
AddVbRule "Other Rule"
Funktioniert in gleicher Weise wie AddVbRule. Der VB-Code wird jedoch in einer externen Datei und nicht in einer Regel gespeichert. Für den Code muss (wie bei AddVbRule) die Option Reiner VB-Code aktiviert sein. Diese Anweisung kann für die gemeinsame Nutzung des gleichen Codes für mehrere Modelle verwendet werden. Für die Dateiangabe muss ein relativer Pfad angegeben werden. iLogic durchsucht den Ordner des aktuellen Inventor-Dokuments sowie andere Ordner in der gleichen Suchreihenfolge, die für externe Regeln verwendet wurde.
Beispiel
AddVbFile "fileName.vb"
Fügt Ressourcen wie beispielsweise Zeichenfolgen oder Bitmaps hinzu. Die Ressourcen müssen mithilfe von Visual Studio kompiliert werden.
Beispiel
AddResources "fileName.resources"
Doppelte Importanweisungen sind nicht zulässig. Die folgenden Vorgabe-Importanweisungen werden automatisch in allen Regeln verwendet:
Wenn Sie Meldungsfeld in einer Regel verwenden, fügt iLogic automatisch die folgende Anweisung ein:
Imports System.Windows.Forms
Wenn Sie ThisApplication oder andere Inventor-Objekte verwenden, fügt iLogic automatisch Folgendes ein:
Imports Inventor
iLogic bietet erweiterte Funktionen, die es Ihnen ermöglichen, Kontextinformationen wie Regelargumente in die Regeln zu übernehmen, die Sie ausführen. Diese Informationen können dazu verwendet werden, das Verhalten einer Regel zu ändern, ohne ein Duplikat der Regel zu erstellen.
Verwenden Sie zum Übergeben von Regelargumenten die Funktionen, die über die iLogic Automation-Schnittstelle (für externe Clients) und in iLogicVb verfügbar sind (für andere Regelcodes und interne Clients). Auf diese Argumente können Sie innerhalb einer Regel über die Eigenschaft RuleArguments zugreifen.
Bei iLogicAutomation sind folgende Funktionen verfügbar:
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
Bei iLogicVB sind folgende Funktionen verfügbar:
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
Regelargumente erstellen
Verwenden Sie zum Erstellen von Regelargumenten die Inventor-API, um ein neues NameValueMap-Objekt zu erstellen. Beim Ausführen der Regel wird es dann an eine der Funktionen übergeben.
Auf ein an eine Regel weitergeleitetes Argument zugreifen
x = RuleArguments(“myArg”)
Feststellen, ob ein Argument an eine Regel weitergeleitet wurde
If RuleArguments.Exists(“myArg”) Then...
Mehrere Argumente mit RunRule an eine andere Regel weiterleiten
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
Wenn Sie Sub Main() verwenden, wird in der Regel das Standard-VB.NET-Format für eine Klasse verwendet. Die Anweisungen Class... und End Class sind jedoch nicht sichtbar, und die Anweisungen vor Sub Main() befinden sich außerhalb der Klasse. Platzieren Sie daher alle Zuweisungsanweisungen innerhalb eines Subs, einer Funktion oder einer Eigenschaft. Deklarationsanweisungen für Klassenvariantenvariablen wie Private temp As Double = 4.5 können außerhalb einer Subroutine oder einer Funktion platziert werden.
Sie können Definitionen für Sub, Function, Property und Class nach Sub Main()... End Sub einfügen. Jede Klasse, die Sie hinzufügen, wird in der Hauptregel-Klasse dieser Regel verschachtelt und kann nicht durch andere Regeln verwendet werden. Deklarieren Sie zum Hinzufügen einer unabhängigen Klasse oder eines unabhängigen Moduls die Klasse der Regel wie folgt:
Class ThisRule ' ... Sub Main End Sub ' ... End Class
Anschließend können Sie eine weitere Klasse oder ein weiteres Modul (oder auch mehrere) außerhalb dieses Codes hinzufügen. Class ThisRule wird zur Hauptregel Class, und iLogic ruft Sub Main (in der Regel) auf, um die Regel auszuführen.
Um ein Modul oder eine Klasse aufzunehmen, die bzw. das für mehrere Regeln sichtbar ist, platzieren Sie es bzw. sie in einer externen Baugruppe (DLL). In eine DLL können mehrere hinzugefügt werden. Sie können auch AddVbRule verwenden, um diese in einer Regel zu platzieren, die als Reiner VB-Code innerhalb des Inventor-Dokuments () fungiert. Verwenden Sie alternativ AddVbFile, um sie in einer externen VB-Datei abzulegen.
Verwenden Sie bei der Entwicklung erweiterter VB.NET-Codes Visual Studio oder Visual Basic Express, anstatt die Kodierung direkt innerhalb einer Regel vorzunehmen. Anschließend können Sie relativ kleine Code-Snippets in Visual Studio ausschneiden und in eine Regel einfügen. Sie können sogar eine ganze Dialogfeld-Klasse einfügen (Ressourcen werden allerdings nicht sofort unterstützt). Erstellen Sie bei größeren Codeeinheiten (oder wenn erforderlich) eine Baugruppe, und verwenden Sie sie über eine Regel als externe DLL.
Mithilfe der iLogic-Regel für gemeinsam genutzte Variablenfunktionen können Sie Objekte speichern, die Exemplare einer benutzerdefinierten Klasse sind. Wenn Sie diese Objekte speichern möchten, müssen Sie Class serialisieren oder von MarshalByRefObject ableiten.
In .NET können Sie Ihre eigenen externen DLLs schreiben und in einer Regel abrufen. Um eine Fehlersuche in einer DLL durchzuführen, legen Sie den Ausgabepfad fest unter Eigenschaften Projekt Kompilieren in iLogicAdd (im Bin-Ordner von Inventor). Wählen Sie anschließend für Inventor.exe in den Projekteigenschaften in Visual Studio die Option Externes Programm starten. Mit dieser Methode können Sie die Vorteile der Debuggingumgebung, einschließlich der Befehle Bearbeiten und Fortfahren nutzen.
Externe DLLs dienen dazu, bei der Verwendung einer Regel ein Dialogfeld für Benutzereingabe anzuzeigen.
Verwenden Sie die Eigenschaft ThisApplication, um aus einer Regel über die Inventor-API auf die Inventor-Anwendung zuzugreifen. Verwenden Sie ThisDoc.Document, um auf das Dokument mit der aktuellen Regel zuzugreifen. Sie können Elemente erstellen und ändern. Verwenden Sie Parameter.Param, um direkten Zugriff auf einen Inventor-Parameter zu erhalten.
Um die Inventor-API über Ihre DLL verwenden zu können, ist es erforderlich, dass Sie in Ihrem Visual Basic-Projekt eine Referenz Autodesk.Inventor.Interop.dll hinzufügen. Diese wird auf der Registerkarte .NET im Dialogfeld Verweis hinzufügen angezeigt. Die Version für Inventor 2011 ist die Version 15.0.0.0.
iLogic-Funktionen werden unter Schnittstellenobjekten (z. B. Parameter, iPart, iProperties usw.) zusammengefasst. Sie können die iLogic-Schnittstellenobjekte als Argumente an Funktionen in externen DLLs übergeben. Fügen Sie Autodesk.iLogic.Interfaces.dll eine Referenz hinzu, um diese Objekte in Ihrem Projekt verwenden zu können. Wählen Sie im Dialogfeld Verweis hinzufügen die Registerkarte Durchsuchen aus, und navigieren Sie zum iLogicBin-Ordner im Bin-Ordner von Inventor (in der Regel unter C:\Programme\Autodesk\Inventor [Version]\Bin\iLogicBin).
Die Dokumentation zu den iLogic-Schnittstellen befindet sich in Autodesk.iLogic.Interfaces.xml. Sie können den Objektbrowser in Visual Studio verwenden, um die Schnittstellenbeschreibungen zu lesen. Diese Beschreibungen enthalten die Namen der Objekte, die die Schnittstellen in Regeln implementieren. Das Objekt Feature in einer Regel implementiert die ICadFeature-Schnittstelle.