Puede escribir reglas de iLogic utilizando únicamente instrucciones de asignación de parámetros de Inventor, funciones predefinidas de iLogic y código de VB.NET simple.
Sin embargo, estas técnicas no son las únicas. Puede utilizar funciones de VB.NET más avanzadas en una regla. Utilice Visual Basic 2005 y 2008 para crear archivos DLL externos que se puedan ejecutar desde las reglas. También puede ejecutar archivos DLL escritos en C# o C++.
El código de las reglas admite la sintaxis de Visual Basic 2008 (.NET Framework 3.5).
Puede utilizar las siguientes instrucciones en la parte superior de la regla, antes del código principal de ésta:
Opción Explícito activada
Opción Estricto activada
Opción Deducir desactivada
AddReference "filename.dll"
Importa...
AddVbRule "Otra regla"
AddVbFile "filename.vb"
AddResources "filename.resources"
Opción e Importa son instrucciones estándar de VB.NET.
Opción Explícito desactivada es el valor por defecto. Permite utilizar variables locales sin declararlas.
Opción Estricto desactivada es el valor por defecto. Opción Estricto activada también funciona para la mayoría de las reglas.
Opción Deducir activada es el valor por defecto.
El código principal de la regla es una subrutina "implícita". Para añadir más subrutinas, funciones, propiedades o clases, declare un Sub Main() como se indica a continuación:
Sub Main() ' your main rule code here End Sub
Sub Main() se puede utilizar en cualquier regla, independientemente de si la regla tiene código adicional. Para obtener información más detallada sobre la declaración explícita de la clase de una regla, consulte "¿Cómo se procesa una regla?"
Utiliza la sintaxis especial de iLogic. La adición de un nombre de DLL a una instrucción AddReference tiene el mismo efecto que utilizar el comando AddReference y buscar una DLL en Visual Studio o Visual Basic Express.
Sólo se admiten los ensamblajes.NET. La DLL puede ser un ensamblaje normalizado de Microsoft, como el de la carpeta Microsoft.NET\Framework.
Observe, por ejemplo, la siguiente instrucción:
AddReference "System.Drawing.dll"
En esta instrucción, la extensión .dll es opcional.
También puede especificar una biblioteca de clases creada por el usuario o de terceros como referencia. Todas las DLL creadas por el usuario o de terceros deben estar en una carpeta. Por defecto, estas DLL se encuentran en una subcarpeta de iLogicAdd, dentro de la carpeta de instalación de Inventor, como:
C:\Archivos de programa\Autodesk\Inventor [Versión]\Bin\iLogicAdd
Puede cambiar esta ubicación mediante el comando de configuración de iLogic. También puede añadir referencias a DLL en la carpeta Bin principal de Inventor (por ejemplo, C:\Archivos de programa\Autodesk\Inventor [Versión]\Bin).
La instrucción AddReference no admite rutas completas. Sólo se puede especificar un nombre de archivo. Cuando añada referencias a ensamblajes del Caché de ensamblajes global (GAC), utilice un nombre completo como:
AddReference "VsWebSite.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”
También puede crear o acceder a objetos COM registrados de una regla mediante CreateObject o GetActiveObject. No es necesario utilizar AddReference para una DLL de COM.
Incluye el código de la regla especificada como código de VB compilado con la regla principal. La regla no puede ser una regla normalizada. Debe tener la opción Código de VB activada en el panel Opciones del cuadro de diálogo Editar regla. iLogic no preprocesa el código de una regla con esa opción. La regla contiene clases o módulos que se pueden ejecutar desde otras reglas. Utilice esta instrucción para compartir código entre las reglas, o para mantener el carácter modular del código.
Ejemplo
AddVbRule "Other Rule"
Funciona de modo similar a AddVbRule, excepto que el código de VB se almacena en un archivo externo en lugar de una regla. Al igual que ocurre con AddVbRule, el código debe tener la opción Código de VB activada. Esta instrucción es útil para compartir código común entre modelos. La especificación del archivo debe ser el nombre de una ruta relativa. iLogic busca en la carpeta del documento actual de Inventor y en otras carpetas utilizando el mismo orden de búsqueda empleado para las reglas externas.
Ejemplo
AddVbFile "fileName.vb"
Añade recursos como cadenas o mapas de bits. Los recursos deben estar compilados con Visual Studio.
Ejemplo
AddResources "fileName.resources"
No se permiten las instrucciones Imports duplicadas. Las siguientes instrucciones Imports por defecto se utilizan de forma implícita en todas las reglas:
Si utiliza MessageBox en una regla, iLogic añade automáticamente la siguiente instrucción:
Imports System.Windows.Forms
Si utiliza ThisApplication u otros objetos de Inventor, iLogic añade automáticamente lo siguiente:
Imports Inventor
iLogic proporciona funciones avanzadas que permiten pasar información de contexto como argumentos de regla a las reglas que ejecute el usuario. Esta información se puede utilizar para modificar el comportamiento de una regla sin tener que crear un duplicado.
Para pasar argumentos de regla, se utilizan las funciones disponibles en la interfaz IiLogicAutomation (para clientes externos) y en iLogicVB (para otros códigos de regla y clientes internos). Estos argumentos se ponen a disposición de una regla mediante la propiedad RuleArguments.
Para IiLogicAutomation, las funciones disponibles son:
Función RunRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Función RunExternalRuleWithArguments(ByVal doc As Inventor.Document, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Función RunRuleDirectWithArguments(ByVal rule As iLogicRule, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Para iLogicVB, las funciones disponibles son:
Función RunRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Función RunRule(ByVal compoOrDocName As Object, ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Función RunExternalRule(ByVal ruleName As String, ByVal ruleArguments As Inventor.NameValueMap) As Integer
Creación de argumentos de regla
Para crear argumentos de regla, cree un nuevo objeto NameValueMap con la API de Inventor. Éste se transfiere a una de las funciones al ejecutar la regla.
Acceso a un argumento transferido a la regla
x = RuleArguments(“myArg”)
Determinar si un argumento se ha pasado a la regla
If RuleArguments.Exists(“myArg”) Then...
Paso del conjunto de argumentos a otra regla utilizando RunRule
iLogicVB.RunRule(“someOtherRule”, RuleArguments.Arguments)
Si utiliza Sub Main(), la regla sigue el formato normalizado de VB.NET para las clases, salvo que las instrucciones Class... y End Class no están visibles y las instrucciones previas a Sub Main() se encuentran fuera de la clase. Por lo tanto, coloque todas las instrucciones de asignación dentro de una sub, una función o una propiedad. Se pueden incluir instrucciones de declaración para las variables de los miembros de clase como Private temp As Double = 4.5 fuera de una subrutina o función.
Puede añadir definiciones de Sub, Función, Propiedad y Clase después de Sub Main ()... End Sub. Todas las clases que añada se anidarán en la clase de regla principal de esa regla y no se podrán utilizar en otra regla. Para añadir una clase o un módulo independiente, declare explícitamente la clase de regla de la siguiente forma:
Class ThisRule ' ... Sub Main End Sub ' ... End Class
A continuación, puede añadir otra clase o módulo (o varios) fuera de este código. Class ThisRule se convierte en la Clase de regla principal e iLogic llama Sub Main (dentro de ella) para ejecutar la regla.
Para incluir un módulo o clase visible para varias reglas, insértelo en un ensamblaje externo (DLL). Puede insertar más de uno en el mismo archivo DLL. También puede utilizar AddVbRule para incluirlos en una regla identificada como "Código de VB" en el documento de Inventor (). O bien, utilice AddVbFile para incluirlas en un archivo externo de VB.
Cuando desarrolle código avanzado de VB.NET, utilice Visual Studio o Visual Basic Express en lugar de realizar las codificaciones directamente en una regla. A continuación, puede cortar y pegar de Visual Studio a una regla fragmentos de código relativamente pequeños. Puede pegar incluso un cuadro de diálogo Clase completo (aunque los recursos no son compatibles con frecuencia). Para unidades de código más extensas, o cuando resulte necesario, cree un ensamblaje y utilícelo como una DLL externa de una regla.
Puede almacenar objetos que sean ejemplares de una clase definida por el usuario utilizando las funciones de variables compartidas de la regla de iLogic. Para almacenar estos objetos, debe serializar la clase o derivarla de MarshalByRefObject.
Puede crear sus propias DLL externas en .NET y ejecutarlas desde una regla. Para depurar una DLL, defina la ruta de acceso de los resultados de generación en Propiedades del proyecto Compilar a iLogicAdd (en la carpeta Bin de Inventor). A continuación, elija Inventor.exe para Iniciar Programa externo en las propiedades del proyecto de Visual Studio. Este método ofrece todas las ventajas del entorno de depuración, incluidos Editar y continuar.
Las DLL externas son útiles cuando se utiliza una regla para mostrar un cuadro de diálogo para entradas de usuario.
Para acceder a la API de Inventor a partir de una regla, utilice la propiedad ThisApplication para acceder a la aplicación de Inventor. Utilice ThisDoc.Document para acceder al documento que contiene la regla actual. Puede crear y modificar operaciones. Utilice Parameter.Param para obtener acceso directo a un parámetro de Inventor.
Para usar la API de Inventor en su propia DLL, añada una referencia a Autodesk.Inventor.Interop.dll en el proyecto de Visual Basic. Se muestra en el cuadro de diálogo Agregar referencia de la ficha .NET. La versión para Inventor 2011 es 15.0.0.0.
Todas las funciones de iLogic se agrupan en objetos de interfaz como parámetro, iProperties, iPart, etc. Puede transferir objetos de interfaz de iLogic a funciones de DLL externas como argumentos. Para utilizar estos objetos en el proyecto, añada una referencia a Autodesk.iLogic.Interfaces.dll. Seleccione la ficha Examinar en el cuadro de diálogo Agregar referencia y vaya a la carpeta iLogicBin, dentro de la carpeta bin de Inventor (normalmente en C:\Archivos de programa\Autodesk\Inventor [Versión]\Bin\iLogicBin).
La documentación de las interfaces de iLogic se encuentra en Autodesk.iLogic.Interfaces.xml. Puede utilizar el Examinador de objetos de Visual Studio para leer las descripciones de interfaz. Estas descripciones contienen los nombres de los objetos que implementan las interfaces de las reglas. Por ejemplo, el objeto Operación de una regla implementa la interfaz ICadFeature.