Pokročilé techniky zápisu pravidel modulu iLogic

Pravidla modulu iLogic můžete zapisovat pouze pomocí přiřazovacích příkazů parametrů aplikace Autodesk Inventor, předdefinovaných funkcí a jednoduchého kódu jazyka VB.NET. Nejste však omezeni pouze na tyto metody. V pravidle můžete použít pokročilejší vlastnosti jazyka VB.NET. K vytvoření externích souborů DLL, které je možné volat pomocí pravidel, využijte aplikaci Visual Basic 2005 nebo 2008. Také můžete otevřít soubory knihoven DLL zapsané v C# nebo C++.

Syntaxe Visual Basic 2008 (.NET Framework 3.5) je podporována v kódu pravidla.

Před hlavním kódem pravidla můžete na začátku pravidla použít následující příkazy:

Option Explicit On

Option Strict On

Option Infer Off

AddReference "nazevsouboru.dll"

Imports ...

AddVbRule "Jiné pravidlo"

AddVbFile "nazevsouboru.vb"

AddResources "nazevsouboru.resources"

Option a Imports jsou standardní příkazy jazyka VB.NET.

Option Explicit Off je výchozí hodnota. Umožňuje vám použít lokální proměnné bez jejich deklarování.

Option Strict Off je výchozí hodnota. Pro většinu pravidel funguje i hodnota Option Strict On.

Option Infer On je výchozí hodnota.

Základní kód pravidla představuje „implicitní“ podprogram. Chcete-li přidat více podprogramů, funkcí, vlastností nebo tříd, deklarujte proceduru Sub Main() následujícím způsobem:

Sub Main()
' your main rule code here
End Sub

Proceduru Sub Main() lze použít v jakémkoliv pravidle bez ohledu na to, zda pravidlo má další kód. Další podrobné informace o výlučném deklarování třídy pravidla jsou uvedeny v oddílu Jak je pravidlo zpracováváno?“

AddReference

Používá speciální syntaxi modulu iLogic. Přidání názvu knihovny DLL do příkazu AddReference je stejné jako použití příkazu AddReference a vyhledání knihovny DLL v aplikaci Visual Studio nebo Visual Basic Express.

Podporovány jsou pouze sestavy .NET. Knihovna DLL může být standardní sestava Microsoft jako ve složce Microsoft.NET\Framework.

Vemte do úvahy například následující příkaz:

AddReference "System.Drawing.dll"

V tomto příkazu je přípona .dll volitelná.

Jako odkaz můžete zadat také knihovnu tříd vytvořenou uživatelem nebo třetí stranou. Všechny knihovny DLL vytvořené uživatelem nebo třetí stranou musí být v jedné složce. Ve výchozím nastavení jsou tyto knihovny DLL umístěny v instalační složce aplikace Autodesk Inventor v podsložce iLogicAdd, například:

C:\Program Files\Autodesk\Inventor [verze]\Bin\iLogicAdd

Toto umístění můžete změnit pomocí příkazu Konfigurace iLogic. Ke knihovnám v hlavní složce zásobníku aplikace Autodesk Inventor můžete také přidat odkazy (například C:\Program Files\Autodesk\Inventor [verze]\Bin).

Příkaz AddReference nepodporuje zadání úplné cesty. Zadat můžete pouze název souboru. Odkazy na sestavy v globální vyrovnávací paměti sestav (GAC) přidávejte pomocí příslušného názvu, například:

AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”

Vytvořit nebo zpřístupnit registrované objekty COM v pravidle můžete také pomocí příkazu CreateObject nebo GetActiveObject. U knihovny DLL s objekty COM není nutné použít příkaz AddReference.

AddVbRule

Zahrnuje kód z určeného pravidla jako kód VB, kompilovaný s hlavním pravidlem. Určené pravidlo nemůže být standardní pravidlo. Musí mít možnost Přímý kód VB povolenou na panelu Možnosti v dialogu Upravit pravidlo. Modul iLogic předem nezpracovává kód v tomto pravidle. Pravidlo obsahuje třídy nebo moduly, které lze vyvolat z jiných pravidel. Používejte tento příkaz k sdílení kódu mezi pravidly nebo k uchování modularity kódu.

Příklad

AddVbRule "Other Rule"

AddVbFile

Funguje podobně jako příkaz AddVbRule s výjimkou, že kód VB je místo v pravidle uložen v externím souboru. Jako v případě příkazu AddVbRule, kód musí mít povolenou možnost Přímý kód VB. Tento příkaz je užitečný k sdílení společného kódu mezi modely. Zadání souboru musí být relativní název cesty. Modul iLogic vyhledává ve složce aktuálního dokumentu aplikace Autodesk Inventor a v dalších složkách pomocí stejného pořadí vyhledávání použitého pro externí pravidla.

Příklad

AddVbFile "fileName.vb"

AddResources

Přidává zdroje, například řetězce nebo bitmapy. Zdroje musí být kompilovány pomocí aplikace Visual Studio.

Příklad

AddResources "fileName.resources"

Importy

Duplicitní příkazy pro importy nejsou přípustné. Ve všech pravidlech jsou pro importy implicitně použity následující výchozí příkazy:

Jestliže v pravidle používáte Okno hlášení, pak modul iLogic automaticky přidává následující příkaz:

Imports System.Windows.Forms

Jestliže používáte tuto aplikaci nebo jiné objekty aplikace Autodesk Inventor, modul iLogic automaticky přidává následující příkaz:

Imports Inventor

Argumenty pravidla

Modul iLogic poskytuje pokročilé funkce, které vám umožňují zavést kontextové informace jako argumenty pravidla do pravidel, které spouštíte. Tyto informace lze použít k úpravě chování pravidla bez nutnosti vytvářet duplicitní pravidlo.

Argumenty pravidla zavádíte pomocí funkcí dostupných v rozhraní modulu IiLogicAutomation (pro externí klienty) a v modulu iLogicVB (pro jiný kód pravidla a interní klienty). Tyto argumenty jsou v pravidle přístupné prostřednictvím vlastnosti RuleArguments.

Funkce dostupné pro modulIiLogicAutomation zahrnují:

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

Funkce dostupné pro modul iLogicVB zahrnují:

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

Vytvoření argumentů pravidla

Chcete-li vytvořit argumenty pravidla, použijte rozhraní API aplikace Inventor k vytvoření nového objektu NameValueMap. Ten je pak zaveden do jedné z funkcí, když se pravidlo spouští.

Zpřístupnění argumentu zavedeného do pravidla

x = RuleArguments(“myArg”)

Určení, zda byl argument zaveden do pravidla

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

Zavedení sady argumentů do jiného pravidla pomocí příkazu RunRule

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

Další příkazy

Jestliže používáte proceduru Sub Main(), pravidlo dodržuje standardní formát jazyka VB.NET pro danou třídu s výjimkou, že příkazy Class...End Class nejsou viditelné a příkazy před procedurou Sub Main() jsou mimo třídu. Proto umístěte všechny přiřazovací příkazy dovnitř podprogramu, funkce nebo vlastnosti. Pro proměnné členů třídy můžete mimo podprogram nebo funkci vložit výrazy deklarace, například Private temp As Double = 4,5.

Za proceduru Sub Main()... End Sub lze přidat definice Sub, Function, Property a Class. Jakákoliv třída, kterou přidáte, je vnořena do třídy pro toto pravidlo a nemůže být použita z jiného pravidla. Pokud chcete přidat nezávislou třídu nebo modul, výslovně deklarujte třídu pravidla následujícím způsobem:

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

Pak můžete přidat další třídu nebo modul (nebo několik) mimo tento kód. Třída ThisRule se stává třídou hlavního pravidla a modul iLogic volá proceduru Sub Main (uvnitř) ke spuštění pravidla.

Chcete-li vložit modul nebo třídu, které jsou viditelné několika pravidlům, vložte je do externí sestavy (knihovny DLL). Do stejné knihovny DLL můžete vložit více než jeden. K jejich vložení do pravidla označeného jako „Přímý kód VB“ v dokumentu () aplikace Inventor můžete použít také příkaz AddVbRule. K jejich vložení do externího souboru VB použijte příkaz AddVbFile.

Když vytváříte pokročilý kód jazyka VB.NET, použijte aplikaci Visual Studio nebo Visual Basic Express spíše než přímé zadávání kódu do pravidla. Pak můžete vyjmout a vložit relativně malé fragmenty kódu z aplikace Visual Studio do pravidla. Vložit můžete dokonce celou třídudialogu (podpora zdrojů však není snadná). Pro větší jednotky kódu nebo kde je to potřeba, vytvořte sestavu a použijte ji jako externí knihovnu DLL z pravidla.

Objekty, které jsou instancemi uživatelsky definovaných tříd, můžete ukládat pomocí funkcí sdílených proměnných v pravidlech modulu iLogic. Chcete-li tyto objekty uložit, můžete definici Class serializovat nebo musí být odvozena z funkce MarshalByRefObject.

Externí knihovny DLL

Vaše vlastní externí knihovny DLL můžete zapsat do .NET a otevírat je můžete z pravidla. Chcete-li knihovnu DLL ladit, nastavte výstupní cestu sestavení v nabídce Vlastnosti projektu Kompilovat na iLogicAdd (ve složce zásobníku aplikace Inventor). Pak zvolte Inventor.exe pro Spustit externí program ve vlastnostech projektu v aplikaci Visual Studio. Tato metoda vám zajišťuje veškeré výhody prostředí ladění, včetně příkazů Upravit a Pokračovat.

Externí knihovny DLL jsou užitečné, když používáte pravidlo k zobrazení dialogu pro uživatelské zadání.

API aplikace Inventor

Chcete-li získat přístup do rozhraní API aplikace Inventor z pravidla, použijte ke zpřístupnění aplikace Inventor vlastnost ThisApplication. Pomocí ThisDoc.Document zpřístupněte dokument, který obsahuje aktuální pravidlo. Můžete vytvářet a upravovat prvky. Pomocí funkce Parameter.Param můžete přímo zpřístupnit parametr Inventor.Parameter.

Pro použití API aplikace Inventor přímo z knihovny DLL přidejte odkaz do Autodesk.Inventor.Interop.dll v projektu Visual Basic. Zobrazuje se v dialogu Přidat odkaz na kartě .NET. Pro Inventor 2011 je verze15.0.0.0.

Použití rozhraní modulu iLogic v externích knihovnách DLL

Všechny funkce modulu iLogic jsou seskupeny v objektech rozhraní, například parametr, iVlastnosti, iSoučást, atd. Objekty rozhraní modulu iLogic můžete zavést do funkcí v externích knihovnách DLL jako argumenty. Pro použití těchto objektů v projektu přidejte odkaz do Autodesk.iLogic.Interfaces.dll. V dialogu Přidat odkaz vyberte kartu Procházet a vyhledejte složku iLogicBin ve složce zásobníku aplikace Inventor (obvykle se nachází v umístění C:\Program Files\Autodesk\Inventor [verze]\Bin\iLogicBin).

Dokumentace pro rozhraní modulu iLogic je poskytnuta v Autodesk.iLogic.Interfaces.xml. K čtení popisů rozhraní můžete použít prohlížeč objektů v aplikaci Visual Studio. Tyto popisy zahrnují názvy objektů, které používají rozhraní v pravidlech. Například objekt prvku v pravidle používá rozhraní ICadFeature.

Parametry v pravidlech

Ve výchozím nastavení nejsou číselné parametry v pravidlech deklarovány jako typ Double, ale jako uživatelský typ iLogic nazvaný DoubleForEquals.