Vous pouvez écrire des règles iLogic à l'aide d'instructions d'affectation de paramètres d'Autodesk Inventor, de fonctions iLogic prédéfinies et d'un simple code VB.NET. Toutefois, vous n'êtes pas limité à ces techniques. Vous pouvez utiliser les fonctions avancées de VB.NET dans une règle. Utilisez Visual Basic 2005 ou 2008 pour créer des fichiers DLL externes que vous pouvez appeler à partir de règles. Vous pouvez également appeler des fichiers DLL écrits en langage C# ou C++.
La syntaxe Visual Basic 2008 (.NET Framework 3.5) est prise en charge dans le code de la règle.
Vous pouvez utiliser les instructions suivantes dans la partie supérieure de la règle, avant le code de la règle principale :
Option Explicit On
Option Strict On
Option Infer Off
AddReference "filename.dll"
Imports...
AddVbRule "Other Rule"
AddVbFile "filename.vb"
AddResources "filename.resources"
Option et Imports sont des instructions VB.NET standard.
Option Explicit Off est l'instruction par défaut. Cela vous permet d'utiliser les variables locales sans les déclarer.
Option Strict Off est l'instruction par défaut. Option Strict On fonctionne également pour la plupart des règles.
Option Infer On est l'instruction par défaut.
La règle de code est une sous-routine "implicite". Pour ajouter plusieurs sous-routines, fonctions, propriétés ou classes, déclarez Sub Main() comme suit :
Sub Main()
' your main rule code here
End Sub
Sub Main() peut servir dans une règle, même si la règle contient du code supplémentaire. Pour plus d'informations sur la déclaration explicite de la classe de règle, reportez-vous à la rubrique Comment une règle est-elle traitée ?
Utilise une syntaxe iLogic spéciale. L'ajout d'un nom de DLL à une instruction AddReference revient à utiliser la commande AddReference et à rechercher une DLL dans Visual Studio ou Visual Basic Express.
Seuls les ensembles .NET sont pris en charge. Le fichier DLL peut être un ensemble standard de Microsoft, comme dans le répertoire Microsoft.NET\Framework.
Par exemple, dans l'instruction suivante :
AddReference "System.Drawing.dll"
l'extension .dll est facultative.
Vous pouvez également spécifier une bibliothèque de classes définies par l'utilisateur ou tiers comme référence. Les fichiers DLL créés par l'utilisateur ou par un tiers doivent tous se trouver dans un seul répertoire. Par défaut, ces fichiers DLL se trouvent dans le répertoire d'installation d'Autodesk Inventor, dans un sous-répertoire iLogicAdd, tel que :
C:\Program Files\Autodesk\Inventor [Version]\Bin\iLogicAdd
Vous pouvez modifier cet emplacement à l'aide de la commande Configuration iLogic. Vous pouvez également ajouter des références aux fichiers DLL dans le répertoire Bin principal d'Autodesk Inventor (par exemple,C:\Program Files\Autodesk\Inventor [Version]\Bin).
L'instruction AddReference ne prend pas en charge la spécification d'un chemin complet. Vous ne pouvez spécifier qu'un nom de fichier. Ajoutez des références aux ensembles dans le cache d'ensembles global (GAC, Global Assembly Cache), à l'aide d'un nom qualifié tel que :
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
Vous avez également la possibilité de créer ou d'accéder à des objets COM enregistrés dans une règle à l'aide de CreateObject ou GetActiveObject. Il n'est pas nécessaire d'utiliser AddReference pour une DLL COM.
Inclut le code de la règle spécifiée sous la forme d'un code VB, compilé avec la règle principale. La règle spécifiée ne peut pas être une règle standard. L'option Code Straight VB de la boîte de dialogue Modifier la règle doit y être activée. iLogic ne prétraite pas le code dans ce genre de règle. La règle contient des classes ou des modules qui peuvent être appelés à partir d'autres règles. Utilisez cette instruction pour partager du code entre les règles, ou pour conserver le code modulaire.
Exemple
AddVbRule "Other Rule"
Fonctionne de la même façon que AddVbRule, sauf que le code VB est stocké dans un fichier externe plutôt que dans une règle. Comme avec AddVbRule, l'option Code Straight VB doit être activée dans ce code. Cette instruction est utile pour le partage de code commun entre les modèles. La spécification de fichier doit être un chemin d'accès relatif. iLogic recherche dans le répertoire du document Autodesk Inventor actif ainsi que dans d'autres répertoires, en utilisant le même ordre de recherche utilisé pour les règles externes.
Exemple
AddVbFile "fileName.vb"
Ajoute des ressources telles que des chaînes ou des bitmaps. Les ressources doivent être compilées avec Visual Studio.
Exemple
AddResources "fileName.resources"
Les instructions Imports en double ne sont pas autorisées. Les instructions Imports par défaut répertoriées ci-après sont implicitement utilisées dans toutes les règles :
Si vous utilisez MessageBox dans une règle, iLogic ajoute automatiquement l'instruction suivante :
Imports System.Windows.Forms
Si vous utilisez ThisApplication ou d'autres objets Autodesk Inventor, iLogic ajoute automatiquement les éléments suivants :
Imports Inventor
iLogic fournit des fonctionnalités avancées qui vous permettent de transmettre des informations contextuelles sous la forme d'arguments de règles dans les règles que vous exécutez. Ces informations peuvent servir à modifier le comportement d'une règle sans avoir à la dupliquer.
Pour transmettre des arguments de règles, utilisez les fonctions disponibles dans l'interface IiLogicAutomation (clients externes) et dans iLogicVB (clients internes et d'autres codes de règle). Ces arguments sont disponibles dans une règle par le biais de la propriété RuleArguments.
Les fonctions disponibles pour IiLogicAutomation sont les suivantes :
Function RunRuleWithArguments(ByVal doc As Inventor.Document, By Val 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
Les fonctions disponibles pour iLogicVB sont les suivantes :
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
Créer des arguments de règles
Pour créer des arguments de règles, utilisez l'API Inventor pour créer un objet NameValueMap. L'objet est ensuite transmis à l'une des fonctions lors de l'exécution de la règle.
Accéder à un argument transmis à la règle
x = RuleArguments(“myArg”)
Déterminer si un argument a été transmis à la règle
If RuleArguments.Exists(“myArg”) Then...
Transmettre le jeu d'arguments à une autre règle à l'aide de la commande RunRule
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
Si vous utilisez Sub Main(), la règle suit le format VB.NET standard pour une classe, mais les instructions Class... et End Class ne sont pas visibles et les instructions qui précèdent Sub Main() sont en dehors de la classe. Par conséquent, placez tous les instructions d'affectation dans une fonction Sub, Function ou Property. Vous pouvez inclure des instructions de déclaration pour les variables de membre de classe telles que Private temp As Double = 4.5 hors d'une sous-routine ou d'une fonction.
Vous pouvez ajouter des définitions secondaires, de fonction, de propriété et de classe après Sub Main ()... End Sub. N'importe quelle classe que vous ajoutez est imbriquée dans la classe de règle principale associée à cette règle et ne peut pas être utilisée dans une autre règle. Pour ajouter une classe ou un module indépendant, déclarez explicitement la classe de règle de l'une des manières suivantes :
Class ThisRule ' ... Sub Main End Sub ' ... End Class
Vous pouvez ensuite ajouter un ou plusieurs autres classes ou modules en dehors de ce code. Class ThisRule devient votre classe de règle principale et iLogic appelle Sub Main (depuis la classe) pour exécuter votre règle.
Pour inclure un module ou une classe visible par plusieurs règles, placez-le dans un ensemble externe (DLL). Vous pouvez insérer plusieurs définitions dans le même fichier DLL. Vous pouvez également utiliser AddVbRule pour les placer dans une règle identifiée comme "Code Straight VB" dans le document Inventor () ou utiliser AddVbFile pour les placer dans un fichier VB externe.
Lorsque vous développez du code VB.NET complexe, utilisez Visual Studio ou Visual Basic Express au lieu de coder directement dans une règle. Vous pouvez couper et coller des extraits de code relativement petits de Visual Studio vers une règle. Vous pouvez également coller dans une classe de boîte de dialogue (bien que les ressources ne soient pas facilement prises en charge). Pour les grandes portions de code, ou lorsque nécessaire, créez un ensemble et utilisez-le comme une DLL externe à partir d'une règle.
Vous pouvez stocker des objets qui sont des instances d'une classe définie par l'utilisateur à l'aide des fonctions de variable partagée de règle d'iLogic. Pour stocker ces objets, vous devez numéroter la classe ou la dériver de MarshalByRefObject.
Vous pouvez écrire vos propres fichiers DLL externes dans.NET et les appeler à partir d'une règle. Pour déboguer un fichier DLL, définissez le chemin de sortie de création sous Propriétés du projet Compiler sur iLogicAdd (sous le répertoire Bin d'Inventor). Ensuite, choisissez Inventor.exe pour démarrer le programme externe dans les propriétés du projet de Visual Studio. Cette méthode vous offre tous les avantages de l'environnement de débogage, y compris les options Modifier et Continuer.
Les DLL externes sont utiles pour afficher une boîte de dialogue destinée à la saisie utilisateur.
Pour accéder à l'API Inventor à partir d'une règle, utilisez la propriété ThisApplication. Utilisez ThisDoc.Document pour accéder au document qui contient la règle actuelle. Vous pouvez créer et modifier des fonctions. Utilisez Parameter.Param pour obtenir l'accès direct à un paramètre Inventor.
Pour utiliser l'API Inventor dans votre propre DLL, ajouter une référence à Autodesk.Inventor.Interop.dll dans votre projet Visual Basic. Elle s'affiche dans la boîte de dialogue Ajouter une référence de l'onglet .NET. Pour Inventor 2011, la version est 15.0.0.0.
Toutes les fonctions iLogic sont regroupées sous des objets d'interface tels que Parameter, iProperties, iPart, etc. Vous pouvez transmettre des objets d'interface iLogic sous forme d'arguments pour des fonctions dans les DLL externes. Pour utiliser ces objets dans votre projet, ajoutez une référence à Autodesk.iLogic.Interfaces.dll. Sélectionnez l'onglet Parcourir dans la boîte de dialogue Ajouter une référence, puis accédez au répertoire iLogicBin, sous le répertoire Bin (généralement sous C:\Program Files\Autodesk\Inventor [Version]\Bin\iLogicBin).
La documentation relative aux interfaces iLogic est fournie dans Autodesk.iLogic.Interfaces.xml. Vous pouvez utiliser l'Explorateur d'objets de Visual Studio pour lire les descriptions de l'interface. Ces descriptions incluent les noms des objets qui mettent en oeuvre les interfaces dans les règles. Par exemple, l'objet Feature dans une règle met en oeuvre l'interface ICadFeature.
Par défaut, les paramètres numériques dans les règles ne sont pas déclarés comme double, mais comme un type iLogic personnalisé appelé DoubleForEquals.