Selección de Entidades.El API de Autodesk Inventor proporciona dos maneras para la selección de entidades: el conjunto de selección (SelectSet) y la selección interactiva. Conjunto de selección (SelectSet).Este es el procedimiento más sencillo pero a la vez el menos flexible. El conjunto de selección (SelectSet) es el conjunto de entidades que el usuario ha seleccionado mediante el comando Selección de la interfaz de usuario de Autodesk Inventor. La utilización de este comando por el usuario es totalmente independiente del API. El programador puede, a través del API inspeccionar los contenidos del conjunto seleccionado. Los comandos que emplean el conjunto de selección funcionan en modo objeto->acción. Esto quiere decir que el usuario primero selecciona los objetos adecuados y después invoca la macro que se aplicará a los objetos previamente seleccionados. En estos casos el programador no se involucra en el proceso de selección. Se presupone que el usuario entiende lo que debe seleccionar para ejecutar correctamente la macro. Ésta se limita a inspeccionar lo seleccionado para comprobar si se han seleccionado entidades válidas y en ese caso las emplea. El objeto SelectSet se encuentra disponible para todos los documentos a través de la propiedad SelectSet. Procedimiento.El procedimiento usual sería como se describe a continuación:
Objetos BRep.Las caras y aristas delimitan el interior de un sólido del exterior definiendo así su forma. Esta delimitación es lo que se conoce como el Boundary Representation o de manera más concisa, BRep. El API BRep permite acceder a esta información. El modelo de objetos BRep se muestra en la siguiente figura. Espacio Paramétrico.Al trabajar con objetos planos se suelen definir en términos de su propio plano. El objeto se divide de una manera conceptualmente conveniente para referenciar un punto determinado de la superficie. Una superficie, por ejemplo puede ser parametrizada como muestra el siguiente esquema: Las superficies se parametrizan en su espacio 2D. Las aristas (curvas) se parametrizan linealmente. Pero es posible evaluarlas para obtener coordenadas XYZ del espacio del modelo. Para obtener las coordenadas XYZ del espacio del modelo de un punto de una superficie será necesario suministrar las coordenadas 2D de su espacio paramétrico. Para las de un punto sobre una arista se suministrará un único valor correspondiente a su parámetro. El API BRep incluye varios objetos Evaluator, a través de los cuales se realiza la conversión entre el espacio paramétrico y espacio del modélico. El siguiente ejemplo muestra la manera de informar al usuario el área de la cara referenciada por oFace: Dim oSurfEval As SurfaceEvaluator Ejercicio.Crear una macro que informe al usuario del área de una cara preseleccionada. En caso de no haber nada seleccionado debe informar que debe existir una selección previa a ejecutar la macro. En primer término crearemos un nuevo Proyecto de Usuario al que llamaremos ConsultaArea_1. Para esta primera aproximación no crearemos un formulario, sino que mostraremos los resultados empleando la ventana de mensajes (objeto MsgBox) standard de Windows. Controlar la conversión de unidades.Como hemos explicado en un tema anterior (Expresión de las Unidades en los Valores Predeterminados del Dibujo) las unidades en que trabaja internamente Inventor son centímetros, mientras que las unidades predeterminadas del dibujo suelen ser milímetros. Cuando se trata de valores de área tenemos una dificultad adicional, ya que en este caso no existe una constante de enumeración. En ocasiones como ésta tendremos que definir nosotros una en forma de cadena de caracteres. El procedimiento que seguiremos es el siguiente:
Obtener y procesar el conjunto de selección.Esta macro requiere que el usuario haya seleccionado una o más caras del modelo para reportar su área. Lo seleccionado está contenido en el objeto SelectSet del documento. Pero pueden darse tres casos diferentes:
If TypeOf elem Is Face
Informe del los resultados.Una vz concluido el recorrido examinamos el valor de dblArea. Si este valor aún fuera 0, eso querría decir que ninguno de los objetos seleccionados era una cara, lo que se deberá informar al usuario. En caso contrario se informará del valor total obtenido. Para ello convertiremos el valor obtenido a las unidades del dibujo, utilizando el espcificador de unidades de área que hab íamos configurado previamente:
Código de la macro.El código completo de la macro se muestra a continuación. Este código se incluirá en uno de los módulos del proyecto.El proyecto VBA para la selección previa puede descargarse delde el enlace al final de la página. |