5.6. Incluir el código en el Proyecto de la Aplicación.

Algunas cuestiones previas.

A diferencia de los ejercicios propuestos en las secciones anteriores, debemos controlar en este proyecto la posibilidad de que se generen errores a partir del hecho de que este comando estará siempre disponible.
En el caso del proyecto de documento, el programa está incluido en el documento que reúne todas las condiciones para su ejecución. En el caso de la creación automática de una pieza, todo el proceso, desde la creación del documento de parte hasta la conclusión de todas las operaciones necesarias se ejecutan por el programa. En los ejemplos de comandos de selección, tanto previa como interactiva única o múltiple, el comando deberá ser cargado desde la interfaz del Editor VBA, por lo cual no es probable que se invoque el comando de forma accidental.
Pero al estar disponible el comando desde el proyecto de la aplicación y asociado a un botón de la interfaz de usuario, cabría la posibilidad de que se invocara sin que existiera un documento de parte (IPT) abierto. Para evitar esto debemos preverlo al invocar la macro. Para ello modificaremos el código de la macro que muestra el formularip para comprobar:
  1. Si hay algún documento abierto. En caso que no lo hubiera se mostrará un mensaje al usuario advirtiéndolo y no se cargará el formulario.
  2. Si el documento abierto no es un documento de parte (IPT). Si no lo fuera se le advertirá también y terminará el comando sin cargar el formulario
Para el primer caso basta comprobar si existe algún documento activo recurriendo a la propiedad ActiveDocument del objeto Application: ThisApplication.ActiveDocument Is Nothing

En caso de que hubiera algún documento abierto, podemos recurrir a comprobar el tipo de documento recurriendo a la propiedad DocumentType del documento activo. esta propiedad debe corresponder a la constante de enumeración kPartDocumentObject mediante la expresión:
 ThisApplication.ActiveDocument.DocumentType = kPartDocumentObject

Si no lo fuera se presentará el mensaje que advierte que el documento debe ser un documento de parte.
De manera que la macro quedaría como sigue:

Sub MatrizAgujeros()
    If ThisApplication.ActiveDocument Is Nothing Then
        MsgBox "Debe haber un documento activo", vbCritical
    ElseIf ThisApplication.ActiveDocument.DocumentType = kPartDocumentObject Then
        frmMatrizAg.Show
    Else
        MsgBox "El documento activo debe ser un documento de Parte(IPT)", vbExclamation
    End If
End Sub

Incluir la herramienta desarrollada en el Proyecto de la Aplicación.

El proyecto VBA que Inventor usa como Proyecto de la Aplicación es un proyecto de usuario normal cuya trayectoria se define en el cuadro de diálogo de Opciones de la Aplicación.

Figura 1. Opciones de la Aplicación.

El proyecto predeterminado se ecuentra normalmente en la carpeta
C:\Users\Public\Documents\Autodesk\Inventor 2011
La manera más sencilla sería la de editar directamente el proyecto de la aplicación, pero esto no es recomendable sobre todo si ya se tienen otras macros definidas en el mismo. Lo que normalmente hacemos es el desarrollar la herramienta dentro de un proyecto de usuario y una vez depurado, importar sus componentes al proyecto de la aplicación. Otra posibilidad sería el definir una trayectoria a nuestro proyecto en el cuadro de diálogo que se muestra en la Figura 1.

Para pasar nuestro programa al proyecto de la aplicación debemos primero exportar sus componemtes:
  • El Formulario frmMatrizAg.
  • El Módulo de Clase clsSeleccionar.
  • El Módulo1 que contiene la Macro MatrizAgujeros.
Para exportar cada uno de estos módulos basta hacer clic con el botón dereco sobre el mismo en el explorador de proyectos y seleccionar en el menú contextual la opción Exportar Archivo...

Figura 3. Exportación del archivo del formulario.

Una vez exportados los componentes del proyecto hacemos clic con el botón derecho sobre el proyecto de la aplicación y seleccionamos la opción Importar archivo...

Figura 4. Proyecto de la Aplicación una vez importados los componentes.

La Figura 4 muestra el resultado. Podemos observar que nuestro Módulo 1 ha sido renombrado como Módulo 11 al ya existir un módulo de igual nombre en el Proyecto de la Aplicación. Los archivos exportados los he icluido como documento adjunto al final de esta página.
ċ
MatrizAgujeros.zip
(16k)
Reinaldo Togores Fernández,
13 mar. 2011 4:49