Erweiterte iLogic-Techniken - Referenz

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.

Wichtig: Derzeit wird nur die Syntax von Visual Basic 2012 (VB 11.0) durch den Regelcode unterstützt. In späteren Versionen von Visual Basic erfolgte Ergänzungen funktionieren nicht.
Anmerkung: Sie können Visual Studio auch zum Erstellen von externen DLL-Dateien verwenden, die Sie über Regeln aufrufen können. Diese können in VB.NET, C# oder anderen Sprachen geschrieben werden.

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.

Anmerkung: Die meisten Regeln erfordern keinen Header.

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 standardmäßige VB.NET-Anweisungen.

Option Explicit Off ist die Vorgabe. Damit können Sie lokale Variablen verwenden, ohne sie deklarieren zu müssen.

Option Strict Off ist die Vorgabe. Option Strict On lässt sich außerdem für die meisten Regeln verwenden.

Option Infer On ist die Vorgabe.

Der Hauptregelcode ist eine implizite Subroutine. Deklarieren Sie Sub Main() wie folgt, um weitere Subroutinen, Funktionen, Eigenschaften oder Klassen hinzuzufügen:

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.

AddReference

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 vorgabemäßig 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.

AddVbRule

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"

AddVbFile

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"

AddResources

Fügt Ressourcen wie beispielsweise Zeichenfolgen oder Bitmaps hinzu. Die Ressourcen müssen mithilfe von Visual Studio kompiliert werden.

Beispiel

AddResources "fileName.resources"

Importe

Doppelte Importanweisungen sind nicht zulässig. Die folgenden Vorgabe-Importanweisungen werden automatisch in allen Regeln verwendet:

Wenn Sie MessageBox 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

Regelargumente

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 iLogicAutomation-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

Erstellen von Regelargumenten

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.

Zugreifen auf ein an eine Regel übergebenes Argument

x = RuleArguments(“myArg”)

Feststellen, ob ein Argument an eine Regel übergeben wurde

If RuleArguments.Exists(“myArg”) Then...

Übergeben mehrerer Argumente an eine andere Regel mithilfe von RunRule

iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)

Weitere Anweisungen

Wenn Sie Sub Main() verwenden, wird in der Regel das standardmäßige 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 Sub-, Function-, Property- und Class-Definitionen nach Sub Main()... End Sub hinzufügen. Jede Class, die Sie hinzufügen, wird in der Hauptregel-Class dieser Regel verschachtelt und kann nicht durch andere Regeln verwendet werden. Deklarieren Sie die Regel Class wie folgt, um eine unabhängige Class oder ein unabhängiges Module hinzuzufügen:

Class ThisRule ' ...
Sub Main
End Sub
' ...
End Class

Anschließend können Sie eine weitere Class oder ein weiteres Module (oder 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 Module oder eine Class aufzunehmen, das bzw. die 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-Class 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 Class sind. Wenn Sie diese Objekte speichern möchten, müssen Sie Class serialisieren oder von MarshalByRefObject ableiten.

Externe DLLs

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 unter Eigenschaften Projekt Kompilieren in iLogicAdd (im Bin-Ordner von Inventor) fest. Wählen Sie anschließend Inventor.exe für die Option Externes Programm starten in den Projekteigenschaften in Visual Studio aus. 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.

Inventor-API

Verwenden Sie die Eigenschaft ThisApplication, um aus einer Regel über die Inventor-API auf die Inventor-Anwendung zuzugreifen. Nutzen Sie ThisDoc.Document, um auf das Dokument mit der aktuellen Regel zuzugreifen. Sie können Elemente erstellen und ändern. Verwenden Sie Parameter.Param, um direkt auf einen Inventor-Parameter zuzugreifen.

Um die Inventor-API über Ihre DLL verwenden zu können, fügen Sie Autodesk.Inventor.Interop.dll in Ihrem Visual Basic-Projekt eine Referenz hinzu. 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.

Verwenden von iLogic-Schnittstellen in externen DLLs

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.