Sistemas Informáticos Curso 2007-08 Diseño e Implementación de un Sistema de Control de la Construcción de una Instalación Industrial Mª del Mar Gutiérrez Fernández César Marqués Collado Raquel Rodríguez Casero Dirigido por: Prof. Yolanda García Ruiz Facultad de Informática Universidad Complutense de Madrid II INDICE Palabras clave____________________________________________________ 1 Resumen ________________________________________________________ 2 Summary________________________________________________________ 3 1 Introducción. _________________________________________________ 4 1.1 Marco / Actividad Empresarial ___________________________________ 4 1.2 Objetivo del Sistema ____________________________________________ 5 2 Ingeniería____________________________________________________ 7 2.1 Fase de Especificación de Requisitos _______________________________ 7 2.2 Fase de Construcción del Software________________________________ 20 3 Ampliaciones y Conclusiones ___________________________________ 54 3.1 Sistema Gestor de Base de Datos _________________________________ 54 3.2 Visual Basic 6 _________________________________________________ 55 3.3 Visualizador 3D _______________________________________________ 55 3.4 Integración con herramientas de planificación de proyectos___________ 56 4 Bibliografía _________________________________________________ 57 Libros _____________________________________________________________ 57 Páginas Web________________________________________________________ 57 Anexo A. Ejemplo de Informe de Avance _____________________________ 58 1 Informe de avance en Kg_______________________________________ 58 Anexo B. Ejemplo de Isométrica ____________________________________ 59 Anexo C. Manual de Usuario ______________________________________ 60 1 Introducción_________________________________________________ 60 2 Consideraciones previas _______________________________________ 61 2.1 Estructura de carpetas__________________________________________ 61 2.2 Configuración regional _________________________________________ 62 3 Menú Principal ______________________________________________ 63 4 Menú Administración _________________________________________ 65 4.1 Gestión de Usuarios ____________________________________________ 65 4.2 Configuración del Proyecto______________________________________ 68 4.3 Borrar Vales __________________________________________________ 70 4.4 Borrar Isométrica _____________________________________________ 71 5 Menú Taller _________________________________________________ 72 III 5.1 Marcar Realizado______________________________________________ 72 6 Menú Herramientas __________________________________________ 80 6.1 Importar Isométricas___________________________________________ 80 6.2 Importar Vale de Salida ________________________________________ 81 6.3 Importar Vales de Forma Masiva ________________________________ 82 6.4 Gestión de cargas de Isométricas _________________________________ 83 6.5 Configurar Colores ____________________________________________ 83 7 Menú Dir. Construcción _______________________________________ 84 7.1 Costes________________________________________________________ 84 7.2 Informes _____________________________________________________ 86 Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 1 Palabras clave Navisworks Microsoft Access Planta Industrial Isométrica Construcción Maqueta 3D ADO (ActiveX Data Objects) UML (Unified Modeling Language) PDS (Plant Design System) PDMS (Plant Design Management System) Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 2 Resumen El proyecto consiste en realizar el desarrollo de un Sistema que permita calcular el porcentaje de avance de la Construcción de una Instalación Industrial. Para lograr este objetivo, es necesario desarrollar también una herramienta gráfica que, apoyada en un visualizador 3D (Navisworks JetStreamv5), permita al usuario seleccionar los objetos en la maqueta 3D que hayan sido construidos, de forma que se sustituya así el método manual que se sigue actualmente. Para ello, ha sido necesario estudiar en detalle los flujos de trabajo entre la fase de Diseño y la fase de Construcción, que se llevan a cabo a lo largo de un proyecto industrial, con el fin de determinar qué información resulta necesaria para el sistema y establecer así las interfaces externas entre el sistema a desarrollar y las herramientas existentes. Con el objetivo de facilitar el proceso de selección de los objetos en la maqueta 3D, se ha optado por implementar una integración con la herramienta de visualización elegida, de manera que desde el sistema se puedan utilizar los comandos propios de dicho visualizador. Por este motivo, ha sido necesario realizar un análisis de la interfaz de programación (API) de Navisworks JetStreamv5 con el fin de poder utilizar sus comandos desde el nuevo Sistema. Para realizar el desarrollo se ha utilizado como lenguaje de programación Visual Basic 6.0, debido a que la interfaz de programación (API) de los visualizadores 3D está implementada en este lenguaje. El sistema de base de datos elegido para almacenar la información necesaria es Microsoft Access. La elección del gestor de la base de datos ha estado motivada por un lado, por el lenguaje de programación utilizado y, por otro lado, por la facilidad de manejo y mantenimiento que ofrece, teniendo en cuenta que se utilizará en Obra, donde no siempre se cuenta con las mejores infraestructuras tecnológicas. El visualizador de la maqueta 3D es Navisworks JetStreamv5, que es una de las herramientas más extendidas en el mercado por permitir visualizar la mayoría de formatos de maquetas electrónicas 3D. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 3 Summary This Project consists in developing a System which allows calculating the progress percentage of the construction of an Industrial Facility. In order to achieve this goal, it is necessary to develop a graphic tool which, based on a 3D model viewing software (Navisworks JetStreamv5), allows the user to select the items of the 3D model which have been created. This is how the present manual method would be replaced. This is why it has been necessary to study in great detail the work flows from the Design phase to the Construction phase, carried out along an industrial project, so that the information needed for the system can be determined and that it can be established the external interfaces between the system to be developed and the existing software tools. With the aim of making the process of selecting the items of the 3D model easier, we have opted to implement integration with the chosen 3D model viewing tool, so that its own commands can be used. This is why it has been needed to carry out an analysis of the Navisworks JetStreamv5 API, so that its commands can be used from the new System. In order to execute the development, it has been Visual Basic 6.0 the programming language used, since the Application Programming Interface (API) of the 3D model viewing software is implemented in this language. The database system chosen in order to store the needed data has been Microsoft Access. The election of the database manager has been brought about on the one hand by the programming language used, and, on the other hand, by its easiness in use and maintenance, taking into account that it will be used in the Field, where not the best technological infrastructures can always be counted on. 3D model viewing software is Navisworks JetStreamv5, which is one of the more extended tools in market, due to the fact that it allows visualising most of the formats of 3D electronic models. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 4 1 Introducción. 1.1 Marco / Actividad Empresarial El proyecto consiste en el desarrollo de una herramienta software que se ajusta a las necesidades de una empresa privada que desarrolla su actividad en el ámbito de la ingeniería y construcción de todo tipo de plantas industriales. A continuación, se explica con más detalle en qué consiste su área de trabajo y qué tipo de proyectos lleva a cabo. TÉCNICAS REUNIDAS, TR, es un contratista general con actividad internacional que se dedica a la ingeniería, diseño y construcción de todo tipo de instalaciones industriales para un amplio espectro de clientes de todo el mundo que incluye muchas de las principales compañías petroleras estatales (national oil companies o NOCs en inglés) y multinacionales, además de grandes grupos españoles. Desarrolla sus diseños en sistemas 3D mediante "maquetas electrónicas", que garantizan mayor precisión que las herramientas 2D convencionales, y eliminan problemas de inconsistencias entre las diferentes disciplinas, generando un producto de alta calidad con mayor valor añadido. El siguiente cuadro ilustra cómo se clasifica la actividad empresarial que desarrolla en áreas de negocio perfectamente definidas: Petróleo y Gas Natural Generación de Energía Infraestructuras e Industrias Refino y Petroquímica Producción de Crudo y Gas Natural • Refino • Petroquímica Know how propio: • Unidades de Refino • Transferencia de Calor • Fertilizantes y Ácido Nítrico • Desarrollo de Campos de Petróleo y Gas (Onshore/Offshore) • GNL, Licuefacción, Regasificación y Tanques • Oleoductos- Gasoductos • Ciclos combinados • Nuclear • Térmica convencional • Renovables • Cogeneración • Tratamiento de Agua • Desalinización • Gestión de Residuos • Instalaciones de Transporte Aéreo • Transporte Terrestre • Puertos Know how propio: • Hidrometalurgia En todos estos sectores, TR ofrece a sus clientes todo tipo de servicios de ingeniería y construcción de instalaciones industriales, que contempla desde estudios de viabilidad o ingenierías básicas y conceptuales, hasta la ejecución completa de grandes y complejos proyectos "llave en mano" incluyendo ingeniería y diseño, gestión de aprovisionamiento y entrega de equipos y materiales, y la construcción de instalaciones y otros servicios relacionados o vinculados, como la asistencia técnica, supervisión de construcción, dirección de obra, dirección facultativa, puesta en marcha, entrenamiento, etc. http://www.tecnicasreunidas.es/spanish/p04r.html http://www.tecnicasreunidas.es/spanish/p04p.html http://www.tecnicasreunidas.es/spanish/p04r.html http://www.tecnicasreunidas.es/spanish/p04r.html http://www.tecnicasreunidas.es/spanish/p06-1.html http://www.tecnicasreunidas.es/spanish/p06-1.html http://www.tecnicasreunidas.es/spanish/p08.html http://www.tecnicasreunidas.es/spanish/p08.html http://www.tecnicasreunidas.es/spanish/p03gn-INI01.html http://www.tecnicasreunidas.es/spanish/p03gn-INI01.html http://www.tecnicasreunidas.es/spanish/p03gn-INI01.html http://www.tecnicasreunidas.es/spanish/p03gn-INI02.html http://www.tecnicasreunidas.es/spanish/p03gn-INI02.html http://www.tecnicasreunidas.es/spanish/p03gn-INI02.html http://www.tecnicasreunidas.es/spanish/p03gn-INI03.html http://www.tecnicasreunidas.es/spanish/p03gn-INI03.html http://www.tecnicasreunidas.es/spanish/p05.html http://www.tecnicasreunidas.es/spanish/p05.html http://www.tecnicasreunidas.es/spanish/p05.html http://www.tecnicasreunidas.es/spanish/p05.html http://www.tecnicasreunidas.es/spanish/p05.html http://www.tecnicasreunidas.es/spanish/p06-2A.html http://www.tecnicasreunidas.es/spanish/p06-2B.html http://www.tecnicasreunidas.es/spanish/p09.html http://www.tecnicasreunidas.es/spanish/p09.html http://www.tecnicasreunidas.es/spanish/p09.html http://www.tecnicasreunidas.es/spanish/p09.html http://www.tecnicasreunidas.es/spanish/p09.html http://www.tecnicasreunidas.es/spanish/p10.html http://www.tecnicasreunidas.es/spanish/p10.html http://www.tecnicasreunidas.es/spanish/p10.html http://www.tecnicasreunidas.es/spanish/p10.html http://www.tecnicasreunidas.es/spanish/p10.html http://www.tecnicasreunidas.es/spanish/p07.html Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 5 Desde su creación, las compañías del grupo TR han diseñado y construido más de 1000 plantas industriales. Entre los principales clientes y licenciantes de TR figuran las primeras empresas del mundo, habiendo realizado proyectos en más de 50 países en los cinco continentes. 1.2 Objetivo del Sistema El desarrollo del Sistema de Control de Construcción, en adelante SCC, se centra en la fase de construcción de una instalación industrial. Consiste en desarrollar una herramienta que permita controlar el avance de la obra de forma automatizada sustituyendo así el proceso manual que se sigue actualmente y que resulta lento e ineficiente. Para ello, es necesario disponer de la información que se genera en la fase de diseño con el fin de establecer una relación entre lo que se ha diseñado y lo que se ha construido. En el siguiente gráfico se muestra la información generada en la fase de diseño y en la fase de construcción que es necesaria utilizar en el SCC para calcular el avance de la obra. En la fase de diseño, se utilizan herramientas CAD 3D (PDS/PDMS) que permiten a los proyectistas construir una maqueta electrónica 3D de acuerdo a lo diseñado. En este tipo de sistemas, la información se organiza por disciplinas y, en este caso, la disciplina que se va a tratar y que resulta la más importante en este tipo de plantas es la de Tuberías. En esta disciplina, los datos se tratan por línea de tubería. Por cada una de las líneas de tubería existentes en la maqueta electrónica, se genera un plano constructivo que consiste en una vista isométrica de la línea diseñada y la lista de material necesario para su construcción. Este documento emitido para construcción se denomina isométrica (ver Anexo B). Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 6 Con el fin de optimizar la construcción de la planta, los materiales necesarios de cada línea se clasifican en materiales de prefabricación, que son aquellos que van soldados y es posible realizar su construcción en un taller, y de montaje, que son aquellos que se incorporan a la línea en la obra. El coste de prefabricación y de montaje es diferente y depende del diámetro de la tubería y del proyecto. Por tanto, con la información generada en diseño: isométricas, material necesario por línea, y la maqueta electrónica; así como con la información generada por el sistema de control de almacén en Obra, el desarrollo del SCC deberá cumplir los siguientes objetivos: Establecer una interfaz con el sistema de gestión de materiales (MATUB) que permita importar la información necesaria correspondiente a isométricas, material necesario y vales de salida de material. Integrar las funcionalidades del visualizador 3D, que permita realizar el proceso de marcado, sobre la maqueta 3D, de los materiales que ya han sido prefabricados o montados, por cada una de las isométricas generadas en el proyecto y emitidas para construcción (IFC). Crear una herramienta que permita a la Dirección de Construcción, en adelante DC, incorporar los costes de prefabricación y montaje. Desarrollar una opción que permita generar los informes de avance de la construcción en términos de peso y coste económico. Con esta finalidad, como ya se ha explicado, será necesario automatizar los procesos manuales que se siguen actualmente para obtener los informes de avance de forma inmediata. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 7 2 Ingeniería 2.1 Fase de Especificación de Requisitos 2.1.1 Introducción Mediante esta Especificación de Requisitos se pretende describir las funcionalidades que debe implementar un sistema que permita controlar el avance de la construcción de una planta industrial. Hasta el momento, el control del avance de la construcción de una planta industrial se llevaba a cabo partiendo de las isométricas, generadas en papel, sobre las que el contratista iba marcando la parte que ya había sido prefabricada o montada. Teniendo en cuenta que una planta industrial de estas características puede haber del orden de diez mil isométricas, la transcripción manual de la información generada por el contratista a un fichero en formato electrónico resulta muy costosa tanto en tiempo como en términos económicos. Con este método de trabajo, resulta muy complicado llevar el control, por parte de la dirección de la construcción, de lo que realmente ha construido ya el contratista y es necesario, en muchos casos, trabajar con estimaciones con el riesgo que ello supone. Por todo esto, lo que pretende el SCC es unificar el proceso de marcado de lo construido y el traspaso de esa información hacia un formato electrónico, de manera que el contratista cuente con una herramienta software con la que pueda realizar este proceso de forma directa. Para ello, se sustituirá el papel por la maqueta 3D, generada en la fase de diseño del proyecto industrial, y se implementará una base de datos asociada que permitirá almacenar, al mismo tiempo, toda la información necesaria para permitir a la DC generar los informes de avance más adecuados a las necesidades del proyecto. Asimismo, será necesario facilitar la documentación de utilización necesaria para asegurar el correcto funcionamiento del sistema por los usuarios finales de la aplicación. 2.1.1.1 Objetivo El objeto de esta Especificación de Requisitos es definir cuáles son las funcionalidades necesarias para una aplicación que permita controlar el avance de la Construcción de una instalación industrial. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 8 2.1.1.2 Alcance El sistema permitirá, partiendo de la información generada en la fase de diseño de la ingeniería de una planta industrial, obtener los informes necesarios sobre el avance de la fase de construcción de la planta. Por tanto, es alcance del sistema desarrollar y documentar lo siguiente: La interfaz adecuada con la herramienta software que gestiona los materiales (MATUB) en la fase de diseño, con el fin de poder importar el recuento de material por línea. La interfaz adecuada con la herramienta software que gestiona los materiales (MATUB, módulo de Obra) en la fase de construcción, con el fin de poder importar los Vales de Salida de Material. Una interfaz gráfica de usuario que enlace la información del diseño con la maqueta 3D y permita al contratista marcar los elementos prefabricados o montados. Una herramienta que permita introducir los costes de prefabricación y montaje, y sea capaz de generar los informes de avance definidos por la DC. No está dentro del alcance de este sistema realizar lo siguiente: Gestionar los recuentos de material de las líneas de tubería. Para este cometido se utilizará la herramienta habitual que, en este caso, es MATUB. Gestionar las compras del material necesario para llevar a cabo la construcción de la planta; tampoco es alcance del sistema gestionar el almacén de material en Obra. Para ello, se utilizará el módulo correspondiente del programa MATUB. 2.1.1.3 Acrónimos y términos MATUB Sistema de Gestión de Materiales de Tubería. PDS Plant Design System. PDMS Plant Design Management System. SPR Smart Plant Review. NavisWorks Visualizador de la maqueta 3D. SCC Sistema de Control de Construcción. DC Dirección de Construcción. IFC Emitido para Construcción. API Application Programming Interface. Isométrica Plano constructivo de una línea (o tramo) de tubería (Anexo B). Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 9 2.1.2 Descripción General 2.1.2.1 Perspectiva del producto En los últimos años, se ha extendido la utilización de sistemas 3D para el diseño de plantas industriales debido a que permiten representaciones reales de las plantas diseñadas, de forma que se garantiza una mayor precisión y se eliminan problemas de inconsistencia entre las diferentes disciplinas. Con la utilización de estos nuevos sistemas surgen nuevas necesidades en el trabajo que facilitan la automatización de algunos procesos que en la actualidad se realizan de forma manual y que suponen una gestión de recursos ineficiente. Los proyectos “llave en mano” que lleva a cabo TR suponen una gran inversión y, por consiguiente, un importante riesgo. En este tipo de proyectos, la fase de construcción resulta crucial por lo que es imprescindible gestionarla de forma eficiente. Una de las tareas que es necesario realizar en esta fase es la que corresponde al cálculo del avance de la obra. El desarrollo de esta herramienta plantea automatizar esta tarea sustituyendo el proceso manual, que se lleva a cabo en la actualidad, por la utilización del sistema SCC optimizando así los recursos y consiguiendo mayor precisión en el resultado. En primer lugar, es necesario desarrollar una interfaz con el sistema de gestión de materiales en Obra (MATUB), en el que se almacena la información sobre el material necesario, por isométrica o línea de tubería, y el estado del almacén. La interfaz permitirá importar dicha información a nuestro sistema y controlar así el material necesario por línea y el material entregado al contratista por vale de salida. Partiendo de esta información como base, el contratista, desde el SCC, podrá seleccionar las isométricas emitidas para construcción (IFC), de las que se le ha entregado material para prefabricar o montar, sobre la maqueta 3D e indicar al mismo tiempo qué elementos de la isométrica están ya prefabricados o montados, según corresponda. Esta información será almacenada automáticamente en la base de datos asociada. Así, esta operación sustituye al proceso de marcado manual que el contratista lleva a cabo sobre el papel, para cada isométrica, que luego es necesario traspasar a un fichero electrónico (Excel) para poder obtener los listados deseados. Utilizando el nuevo sistema, la dirección de Construcción podrá obtener al instante, desde la base de datos, los informes requeridos acerca del avance de la construcción y del coste asociado. El siguiente dibujo ilustra el flujo de información entre las entidades del sistema: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 10 2.1.2.2 Interfaces del sistema El sistema deberá implementar las interfaces correspondientes con MATUB para poder disponer de la información necesaria, y deberá ser capaz de visualizar la maqueta 3D permitiendo la interacción con el usuario, de forma que el sistema pueda leer los datos del 3D e interpretarlos adecuadamente con el fin de almacenarlos en la base de datos asociada al SCC. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 11 2.1.2.2.1 Módulos del sistema Administración En el módulo de Administración se implementarán las opciones restringidas al perfil de usuario de administrador del sistema. Las opciones corresponden a la gestión de los usuarios, así como aquellas opciones necesarias para la configuración de la herramienta con el fin de adaptarla a cada uno de los proyectos en los que se desee utilizar. También se definirán funcionalidades que permitan acceder a la base de datos para realizar determinadas operaciones que el resto de usuarios tienen restringidas, como es el caso de eliminar datos en determinadas tablas. Interfaz con el Sistema de Gestión de Materiales en Obra En este módulo se definirán dos interfaces con el Sistema de Gestión de Materiales que permitirán importar la información necesaria correspondiente a: o Listado de material por isométrica o línea de tubería que haya sido emitidas como IFC. o Vales de salida de material que se generan cuando desde el almacén se entregan materiales al contratista para construir isométricas. Este módulo facilitará al usuario la opción de importar los datos anteriormente mencionados tantas veces como sea necesario de acuerdo al avance del diseño y a la llegada de materiales al almacén de la Obra. Módulo de Taller En este módulo se definirán tanto las funcionalidades básicas de visualización que el usuario necesita para interactuar con la maqueta 3D como operaciones más avanzadas que le permitan realizar búsquedas sobre el 3D. También en este módulo se implementarán las opciones que faciliten al usuario realizar el marcado de aquellos elementos de tubería que han sido prefabricados/montados por el contratista. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 12 Informes Desde este módulo la DC será capaz de generar los informes de avance de la construcción que hayan sido definidos para el proyecto. Se generará un fichero en formato Excel al que el usuario podrá acceder para editarlo si fuera necesario. También se definirá la interfaz gráfica de usuario que permita a la DC introducir los costes de prefabricación y montaje que permitan realizar el cálculo del coste del avance de la Construcción. 2.1.2.2.2 Interfaces Hardware Los requisitos hardware mínimos que debe cumplir el equipo en el que se ejecute la aplicación para que el software funcione correctamente son los siguientes: PC o compatible Pentium 4 o superior. 1Gb de memoria RAM 1Gb de disco duro Tarjeta gráfica con 512 Mb de memoria RAM 2.1.2.2.3 Interfaces Software La aplicación trabajará correctamente en un entorno que cumpla los siguientes requisitos: Sistema Operativo: Windows XP SP2. Base de datos: MS Access 2003. Informes de entrada: MS Word 2003. Informes de salida: MS Excel 2003. Visualizador maqueta 3D: Navisworks Jetstream v5. El sistema será desarrollado utilizando el lenguaje de programación de Microsoft Visual Basic 6.0. Se ha elegido este entorno de programación debido, en gran parte, a que era necesario desarrollar una interfaz con el visualizador de la maqueta 3D, en este caso Navisworks, e integrar sus comandos en nuestro sistema. Para ello, era necesario utilizar la interfaz de programación (API) que proporciona Navisworks, que está implementada para Visual Basic. Además, la utilización de este lenguaje también facilita la tarea de trabajar con el paquete MS Office que se utilizará para generar informes, para cargar datos en el sistema y como base de datos para almacenar toda la información que requiera la aplicación. Una vez finalizado el desarrollado del sistema, se creará un paquete de distribución que permitirá instalarlo en las máquinas que se requiera, de forma que no será necesario tener instalado el entorno de desarrollo de Visual Basic para su correcta ejecución Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 13 El gestor de base de datos que se ha elegido es MS Access. Esta decisión está motivada debido a que se trata de un formato que resulta fácil de mantener, de transportar de un lugar a otro y de configurar. Es necesario tener en cuenta que el sistema se va a utilizar en Obras donde puede darse el caso de que las infraestructuras no permitan utilizar arquitecturas más complejas. En un futuro, podría plantearse el uso de un gestor de bases de datos más robusto y más consistente, como puede ser Oracle. El visualizador de la maqueta electrónica 3D que se ha elegido, corresponde al que está siendo utilizado actualmente por la empresa. 2.1.2.3 Características de los usuarios En este punto se van a definir los perfiles de usuario básicos que, por defecto, debe tener el sistema. Aparte de los perfiles aquí mencionados y con el fin de cubrir las necesidades que puedan surgir en el futuro, el sistema debe permitir crear nuevos perfiles y modificar las opciones a las que éstos tienen acceso. La gestión de usuarios, por tanto, se realizará utilizando perfiles de forma que cada usuario que se cree estará asociado a un perfil que determinará las opciones a las que tendrá acceso dentro del sistema. Los perfiles básicos que se han definido se detallan a continuación. 2.1.2.3.1 Administrador del sistema El administrador del sistema se encargará de realizar la configuración inicial de la aplicación definiendo las opciones adecuadas a las particularidades del proyecto concreto: definición de usuarios y perfiles, carga de la información de inicialización del proyecto, configuración de la estructura de carpetas asociada, etc. Este usuario deberá tener conocimientos avanzados de bases de datos (MS Access) ya que se encargará de la configuración de la base de datos del sistema así como de realizar las tareas de mantenimiento que sean necesarias. 2.1.2.3.2 Usuario del taller El usuario del taller es el encargado de incorporar al sistema la información correspondiente a los elementos prefabricados/montados de cada una de las isométricas Emitidas Para Construcción (IFC) y entregadas al contratista. Este usuario sólo tendrá acceso a las opciones de importar isométricas e importar vales de salida así como a la interfaz con el visualizador de la maqueta 3D que le permitirá realizar el marcado de elementos sobre la maqueta electrónica. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 14 2.1.2.3.3 Usuario de DC El usuario de Dirección de Construcción se encargará de introducir los costes de prefabricación y montaje correspondientes al proyecto que permitirán realizar el cálculo del avance del proyecto en coste. Será el encargado de generar los informes de avance que ofrece el sistema. Con el fin de supervisar el trabajo que realiza el usuario del taller, también deberá tener acceso a las mismas opciones que dicho usuario. 2.1.3 Requisitos Específicos 2.1.3.1 Gestionar opciones de Proyecto Cada Proyecto debe estar identificado por un código externo al sistema, así como por un nombre de proyecto, los cuales se podrán cargar o modificar por el Administrador del sistema tanto al comienzo como durante la vida del Proyecto. El sistema debe poder establecer una imagen de fondo del menú principal personalizada para cada proyecto. El cambio de la cual solo debe ser accesible desde el administrador del sistema. El sistema debe tener identificado un Cliente para el conjunto del Proyecto, estando accesible para las diversas opciones de la aplicación en modo consulta y en modo edición solo para el Administrador del Sistema. El sistema deberá utilizar una maqueta en 3D en el formato de datos que utiliza el programa “NavisWorks JetStream”, de modo que se pueda ubicar en el Sistema la ruta en la que se encuentra dicha maqueta. El sistema debe tener la opción de personalizar el color utilizado en la maqueta para marcar los elementos montados y prefabricados, esta opción de cambio de color debe estar disponible para todos los Usuarios del Sistema 2.1.3.2 Gestionar usuarios El sistema debe utilizar un sistema de gestión de usuarios con claves, las cuales deben cumplir con la Ley de Protección de Datos. El sistema gestionará los usuarios como miembros de grupos o perfiles a los que el Administrador podrá añadir o eliminar opciones de acceso. Se contarán con tres perfiles predeterminados, pero se podrán modificar estos perfiles, añadir nuevos o eliminarlos en funciones de las necesidades del proyecto. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 15 2.1.3.3 Importar Isométricas Las Isométricas del Sistema se cargarán por medio de ficheros “.rtf” generados por el Sistema de Gestión de Materiales existente en la Compañía (MATUB). En el que cada fichero corresponderá a una Isométrica o a un tramo de una Isométrica. El sistema debe tener un mecanismo para cargar vales iniciales de forma masiva o vales de salida individuales que se generan a lo largo del proyecto en los que se listan varias Isométricas. El Formato de estos ficheros Isométricas será el siguiente: Identificación del la Isométrica Material de la Isométrica Resumen Final de la Isométrica No se deberá mantener en el sistema la misma isométrica y en dos revisiones diferentes. En este caso, se deberá notificar y dejar constancia de la actualización de la Isométrica a la última revisión. Esta circunstancia se puede dar debido a un cambio en el diseño de una línea, las diferencias que afecten al recuento de material, que este hecho puede conllevar, serán debidamente controladas por el sistema de materiales en Obra y no por el SCC. 2.1.3.4 Importar Vales de Salida de Material El Sistema deberá cargar los vales de Salida en el mismo formato en que se entregan a los contratistas. Estos vales se entregan en el formato de salida de MATUB. El formato de estos ficheros es el siguiente: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 16 Identificación del la Isométrica Material del Vale No se podrán cargar Vales de Salida con material perteneciente a Isométricas que no hayan sido cargadas previamente en el SCC mediante la opción de importar Isométricas. Cada Vale de Salida puede contener información de una o varias isométricas. 2.1.3.5 Marcar Realizado Taller El Sistema debe implementar una interfaz adecuada con la maqueta 3D que permita al usuario realizar las operaciones básicas de visualización sobre el 3D como son: diferentes funciones de navegación, selección de elementos, ocultar elementos no seleccionados, zoom sobre objetos, búsqueda de líneas, etc. Desde esta opción el usuario debe tener acceso a la información de los vales de salida de material entregados al contratista y debe poder visualizar las líneas incluidas en cada vale. Para cada una de las líneas se deberá mostrar el material asociado clarificándolo, según corresponda, de la siguiente forma: Material no marcado: lista del material necesario que aún no se ha sido marcado en la maqueta 3D por el contratista. Material Entregado: lista del material necesario que ha sido entregado al contratista en algún vale de salida. Material Prefabricado: lista del material de prefabricación, entregado en algún vale de salida, que ha sido marcado en la maqueta 3D. Material Montado: lista del material de montaje, entregado en algún vale de salida, que ha sido marcado en la maqueta 3D. Se debe implementar una funcionalidad que permita al usuario resaltar sobre la maqueta 3D los elementos prefabricados, los elementos montados y, en general, dar la posibilidad de distinguir los elementos de la líneas que ya han sido construidos (prefabricado o montados) de los elementos que faltan por construir, bien porque aún no se haya entregado el material o bien porque el contratista aún no los haya construido. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 17 En esta opción también se debe recoger la posibilidad de que el usuario pueda marcar elementos especiales que no se representan en la maqueta 3D, como es el caso de pernos y juntas, pero que es necesario tener en cuenta puesto que forman parte de la lista de material necesario para construir la línea y, por tanto, son necesarios para el cálculo del avance de la construcción. De la misma forma que se debe permitir al usuario marcar elementos, también debe existir una funcionalidad que permita desmarcar elementos que hayan sido marcados por error o que sea necesario desmarcarlos por cualquier otro motivo. 2.1.3.6 Gestionar datos de costes El sistema debe contener una opción de gestión de datos de coste en una interfaz gráfica de usuario que permita introducir los costes para poder realizar un cálculo del coste del avance de la construcción. De esta manera el coste será independiente en cada proyecto y se almacenará el tipo: prefabricado o montaje, el diámetro y el coste. 2.1.3.7 Gestionar informes El sistema debe contener un sistema de gestión de informes para poder controlar el avance de la construcción. Se generará un fichero en formato Excel al que el usuario podrá acceder para modificarlo si lo necesitara. Habrá dos tipos de informe: Informe de avance por línea en kg Informe de avance por línea en coste En cada uno se podrán elegir las unidades del proyecto que formarán parte de dicho informe. El informe de avance por línea en kg se compondrá de una primera hoja que será un resumen que incluirá: peso necesario, peso construido, diferencia y avance de cada unidad seleccionada y un total de todas las unidades incluidas en el informe. Y en las hojas siguientes se detallará el avance por línea en kg de cada unidad. En el informe de avance por línea en coste también se incluirá una hoja resumen que incluirá: cantidad necesaria, cantidad prefabricada o montada, diferencia y avance. Y en las hojas siguientes se detallará el avance por línea en coste de cada unidad. En el Anexo A se adjunta un ejemplo del formato que deben cumplir los informes de avance. El formato será el mismo para los dos tipos de informes variando las unidades en que se muestra la información: kg o euros. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 18 2.1.4 Definición de Casos de uso El diagrama de Casos de uso muestra los perfiles básicos que han sido definidos y cada perfil determina las opciones a las que tendrá acceso en el sistema, de manera que cada usuario que se cree estará asociado a un perfil. El administrador se encargará de realizar la configuración de la aplicación definiendo las opciones adecuadas para cada proyecto concreto: gestión de usuarios, configuración del proyecto, carga de la información inicial del proyecto... Y además tendrá acceso a todo el sistema. El usuario del taller sólo tendrá acceso a las opciones de importar isométricas e importar vales de salida, así como a la interfaz con el visualizador de la maqueta 3D para realizar el marcado de elementos sobre la maqueta. El usuario de Dirección de Construcción se encarga de introducir costes para realizar el cálculo de avance y poder generar los informes de avance que ofrece el sistema y también deberá tener acceso a las mismas opciones que el usuario taller. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 19 Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 20 2.2 Fase de Construcción del Software 2.2.1 Diagramas de Secuencia del Sistema 2.2.1.1 Inicio de la ejecución Al inicial el Modulo principal (ModSCC) se realiza la creación de los objetos necesarios para la autenticación del usuario, estos son un objeto de la clase cUsusario y otro de la clase cBaseDatos. Lo primero que se hace tras crear estos objetos es lanzar un formulario de captura de datos (FRM_AccesoUsuario) en el que se introduce el nombre del usuario y la contraseña. Si el usuario cancela, se detiene la ejecución. Si el usuario Acepta: 1.- Se consulta al objeto base de datos el usuario, devolviendo la contraseña Cifrada, si no se devuelve ninguna contraseña, el usuario no existe y se finaliza la ejecución. 2.- Se cifra la contraseña introducida por el usuario y se compara con la contraseña cifrada obtenida de la base de datos. Si no son iguales no finaliza la ejecución. 3.- Una vez identificado, el objeto base de datos contiene una lista de opciones disponibles según el perfil cargado de la base de datos. Dichas opciones son utilizadas por el FRM_Prinicpal para presentar solamente las opciones permitidas. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 21 2.2.1.2 Importar Todos los proceso de Importar como son: Importar Isométricas, Importar Vales e Importar Vales de Forma Masiva realizan la actividad de importación siguiendo el siguiente diagrama de secuencia: cBaseDatosModSCC cFichero New Word_TXT Procesa Word Trasforma fichero_txt Carga Se utiliza un objeto de la libria de Word para guardar un rtf como txt Se pasa el txt a lineas en memoria pasa_recordset Se lee la estructura del ficher pasandola a BD inserta BD Si la linea es de carga en bd, se inserta sino se cargan los datos de la linea y se continua vuelve a procesa_linea procesa_linea Lo primero que se hace es crear una instancia de la clase cFichero a la que se le pasa un fichero rtf, la clase lo trasforma atxt usando librerías de la herramienta Word. Una vez asado a fichero txt, se realiza su carga en estructuras manejables en memoria y se llama al método privado pasa_recordset. El método pasa a recordset realiza la función abstracta de pasar el fichero de txt a la base de datos, para ello utiliza la función procesa_linea, la cual tras consumir una línea indica que clase de línea es (cabecera, totales, línea a insertar) y en caso de ser una línea con información necesaria almacena en variables los datos leídos. El método pasa a recordset, una vez analizada la línea, inserta en base de datos si es necesario, almacena temporalmente los datos o no realiza ninguna acción y vuelve a invocar a procesa_linea con la siguiente línea hasta que no quedan más lineas. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 22 2.2.1.3 Guardar/ Modificar Coste Muestra el diseño de la acción de guardar el coste de prefabricación y montaje. Si el coste no está indicado muestra un mensaje de aviso y si no lo modifica o lo inserta dependiendo de si este coste existe o no en la tabla de COSTES. La ejecución comienza con la solicitud de la conexión a la base de datos para mostrar los datos de costes que hay registrados en ella y realizar las consultas necesarias de modificación o inserción mediante los métodos correspondientes de la clase cBaseDatos. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 23 2.2.1.4 Guardar Color Muestra el diseño de la acción de guardar el color que queremos asignar en la maqueta al material que haya sido marcado como prefabricado o montado. El color se selecciona desde el formulario FRM_Colores. En él se muestra la paleta de colores de Windows. En la base de datos, el color se guarda en formato RGB como una cadena de texto de la siguiente forma: (0..255, 0..255, 0..255). Por este motivo es necesario utilizar los métodos ponColorDesdeVb y dameFormatoStr de la clase cColor, que se encargan de guardar el color seleccionado desde el formulario y luego convertirlo al formato establecido en la base de datos y lo modifica en la tabla _CONFIG_COLORES. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 24 2.2.1.5 Aplicar Color Muestra el diseño de la acción de aplicar color en los materiales que previamente han sido configurados, aplica el color de la tabla _CONFIG_COLORES a los materiales ya sean prefabricados o montados en la maqueta. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 25 2.2.1.6 Barra de herramientas de selección de isométricas Muestra el diseño de la acción de las opciones de la barra de herramientas de selección de isométricas, que para utilizarla, es necesario activar mediante un clic la tabla de datos (grid) sobre la que se desea trabajar (tabla de vales o tabla de líneas). En este caso muestra el clic de la opción de la barra de herramientas Orden Ascendente pero es similar para las demás opciones (Orden Descendente, Buscar, Filtro por Selección y Quitar Filtro). Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 26 2.2.1.7 Barra de herramientas de la Interfaz del visualizador 3D Muestra el diseño de la acción que se desencadena al utilizar alguna de las opciones de la barra de herramientas de la interfaz con el visualizador de la maqueta 3D. El diagrama ilustra la opción de realizar un zoom sobre los elementos seleccionados en la maqueta. En este caso muestra el clic de la opción de la barra de herramientas Zoom de elementos seleccionados. 2.2.1.8 Ver elemento de la lista en el 3D Muestra el diseño de la acción de ver elemento de la lista en 3D que permite visualizar sobre la maqueta 3D el elemento seleccionado en la lista de material activa. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 27 2.2.1.9 Visualizar Línea sobre el 3D En el siguiente diagrama se ilustra la secuencia de código que debe implementarse para buscar una línea y visualizarla en la maqueta 3D. La ejecución se inicia en el formulario del Taller, invocando el evento clic del botón correspondiente a la opción de Visualizar Línea. Esta acción desencadena una serie de llamadas a métodos que permiten realizar las comprobaciones necesarias para visualizar la línea seleccionada o mostrar el mensaje de aviso oportuno. Para poder visualizar una línea se deben cumplir las siguientes condiciones: que exista una línea seleccionada en la tabla, que la línea que se busca se encuentre en el fichero con extensión nwd que está cargado actualmente y, por último, que la línea efectivamente esté en la maqueta 3D. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 28 2.2.1.10 Marcar elementos del 3D En el siguiente diagrama de secuencia se indica el comportamiento que debe implementar el sistema con el fin de realizar la acción que permite al usuario marcar elementos sobre la maqueta 3D. En primer lugar, se debe extraer información de la maqueta 3D con lo que se utilizarán los métodos de la clase cNavisworks necesarios para obtener los datos siguientes: El número de elementos seleccionados, mediante el método dameCuantosSel. La información necesaria para identificar el elemento que se ha seleccionado. Para ello, es necesario recuperar la ruta en la jerarquía de objetos de la maqueta utilizando el método damePathEn. A continuación, se extraerán los datos del elemento seleccionado mediante los métodos: dameProp, dameCoord y dameLineid. Se validarán los datos extraídos. Si son correctos, se insertará en la base de datos el registro de datos asociado al elemento marcado, mediante el método insertaEltoMarcado y se creará, en la maqueta 3D, la propiedad que indica que el elemento ha sido prefabricado o montado, utilizando el método agregarPropUserDef. En caso de detectarse algún error, se tratará mediante el procedimiento controlErr. Finalmente, se guardarán los cambios realizados sobre la maqueta 3D, utilizando el método guardarCambios de la clase cNavisworks,y se actualizará la información del formulario para reflejar el nuevo estado que presentan las diferentes listas de material mediante el método actualizarDBGridMat del formulario taller. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 29 2.2.1.11 Desmarcar elementos del 3D En el siguiente diagrama de secuencia se indica el comportamiento que debe implementar el sistema con el fin de realizar la acción que permite al usuario desmarcar elementos sobre la maqueta 3D. En primer lugar, se debe extraer información de la maqueta 3D con lo que se utilizarán los métodos de la clase cNavisworks necesarios para obtener los datos siguientes: El número de elementos seleccionados, mediante el método dameCuantosSel. La información necesaria para identificar el elemento que se ha seleccionado. Para ello, es necesario recuperar la ruta en la jerarquía de objetos de la maqueta utilizando el método damePathEn. A continuación, se extraerán los datos del elemento seleccionado mediante los métodos: dameProp y dameCoord. Una vez extraídos los datos se eliminará el registro correspondiente en la base de datos, mediante el método eliminaEltoMarcado y se borrará, de la maqueta 3D, la propiedad que indica que el elemento ha sido prefabricado o montado según corresponda, utilizando el método borrarPropUserDef. En caso de detectarse algún error, se tratará mediante el procedimiento controlErr. Finalmente, se guardarán los cambios realizados sobre la maqueta 3D, utilizando el método guardarCambios de la clase cNavisworks,y se actualizará la información del formulario para reflejar el nuevo estado que presentan las diferentes listas de material mediante el método actualizarDBGridMat del formulario taller. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 30 2.2.1.12 Marcar elementos desde lista En el siguiente diagrama de secuencia se indica el comportamiento que debe implementar el sistema con el fin de realizar la acción que permite al usuario marcar elementos sobre la lista de material no marcado de una isométrica. La secuencia de código se desencadena desde el formulario del taller mediante el evento clic del botón correspondiente a esta opción. A continuación, se realiza la llamada al método marcarEltoSelLista del módulo auxiliar ModEltosMarcados. Este método se encarga de comprobar los elementos que están seleccionados en la lista de materiales y de realizar la inserción en la base de datos de los elementos correspondientes mediante el procedimiento marcarElto. Durante la ejecución, se escribirá en el fichero log información sobre las operaciones que se han ido realizando. Esta tarea se llevará a cabo mediante el método escribeLogUsr del módulo principal, ModSCC. Finalmente, se guardarán los cambios realizados sobre la maqueta 3D, utilizando el método guardarCambios de la clase cNavisworks,y se actualizará la información del formulario para reflejar el nuevo estado que presentan las diferentes listas de material mediante el método actualizarDBGridMat del formulario taller. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 31 2.2.1.13 Generar Informe Muestra el diseño de la acción de generar informe. En este caso, se muestra la secuencia para el informe de avance por línea de coste. Análogamente, se realizará para generar el informe de avance por línea en kg. Una vez que se muestra el formulario principal (FRM_Main) y se selecciona la opción de Dir. Construccion→ Informes→ Avance por línea en coste, se invoca el procedimiento generaInforme("AVANCE_POR_LINEA"), que se encuentra en el Módulo principal (ModSCC). Este procedimiento se encargará de mostrar el formulario FRM_ElegirUnidad, que permite elegir la unidad o unidades de las que se quiere generar el informe. Al generar el informe, se realiza una llamada a expExcel(rpt, unidades), que está en el módulo que se encarga de crear los informes en Excel (Mod_ExportaExcel), y éste, a su vez, llama a expExcelAvancePorLineas(cExcel, tabla, unidades) que se encarga de ir generando el informe realizando los accesos necesarios a la base de datos y dando el correspondiente formato. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 32 2.2.2 Diagrama de Clases del Sistema 2.2.2.1 Diagrama de clases Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 33 2.2.2.2 Clase cColor Descripción: implementa el comportamiento necesario para tratar el formato de color que maneja Visual Basic y el formato RGB que se almacena en la base de datos. Métodos: o dameRed() As Double: accedente que devuelve el valor establecido para el color rojo. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve un Double con el valor de r. o dameGreen() As Double: accedente que devuelve el valor establecido para el color verde. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve un Double con el valor de g. o dameBlue() As Double: accedente que devuelve el valor establecido para el color azul. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve un Double con el valor de b. o ponRed(ByVal red As Double): mutador que establece el color rojo con el valor pasado por parámetro. Parámetros por valor: red de tipo Double. Parámetros por referencia: Ninguno. Salida: Ninguna. o ponGreen(ByVal green As Double): mutador que establece el color verde con el valor pasado por parámetro. Parámetros por valor: green de tipo Double. Parámetros por referencia: Ninguno. Salida: Ninguna. o ponBlue(ByVal blue As Double): mutador que establece el color azul con el valor pasado por parámetro. Parámetros por valor: blue de tipo Double. Parámetros por referencia: Ninguno. Salida: Ninguna. o dameFormatoStr() As String: función que devuelve el valor almacenado en el objeto cColor, en el formato (R, G, B). Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve un String con el color en formato (R,G,B). o ponColorDesdeVB (ByVal String c): establece los valores del vector RGB a partir del valor recibido como parámetro en el formato de texto almacenado en la base de datos (R,G,B). Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 34 Parámetros por valor: c de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna o dameColorVb() As Long: función que devuelve el valor almacenado en el objeto cColor, en el formato que utiliza Visual Basic. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve un Long con el color en formato que utiliza Visual Basic. o ponColorDesdeStr (ByVal Long c): establece los valores del vector RGB a partir del valor recibido como parámetro en el formato utilizado por Visual Basic. Parámetros por valor: c de tipo Long. Parámetros por referencia: Ninguno. Salida: Ninguna. o Class_Initialize(): procedimiento que inicializa los atributos r, g y b de color a cero. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna. Referencias: 2.2.2.3 Clase cPropiedad Descripción: implementa el par atributo-valor de una propiedad. Métodos: o ponClase(ByVal c As String): mutador que establece la clase de una propiedad con el valor pasado por parámetro. Parámetros por valor: c de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna. o ponAtributo(ByVal a As String): mutador que establece el atributo de una propiedad con el valor pasado por parámetro. Parámetros por valor: a de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna. o ponValor(ByVal v As String): mutador que establece el valor de una propiedad con el valor pasado por parámetro. Parámetros por valor: v de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna. o dameClase() As String: accedente que devuelve el valor establecido para la clase de una propiedad. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 35 Salida: devuelve un String. o dameAtributo() As String: accedente que devuelve el valor establecido para el atributo de una propiedad. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: devuelve un String. o dameValor() As String: accedente que devuelve el valor establecido para el valor de una propiedad. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: devuelve un String.. o mostrar() As String: función que devuelve un String para mostrar el atributo con su correspondiente propiedad. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: devuelve un String. Referencias: 2.2.2.4 Clase cLog Descripción: implementa como generar ficheros .log donde se indique, y se utiliza para informar sobre el resultado de los procesos de carga de datos, como pueden ser: la importación de isométricas, de vales… Métodos: o setFileName (ByVal String s): mutador que establece la ruta y nombre del fichero con el valor pasado por parámetro. Parámetros por valor: s de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna. o Add (ByVal String s): añade al final del fichero indicado el valor pasado por parámetro. Parámetros por valor: s de tipo String. Parámetros por referencia: Ninguno. Salida: Ninguna. o Mostrar (): sirve para mostrar posibles errores Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna. Referencias: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 36 2.2.2.5 Clase cBaseDatos Descripción: Esta clase es la encargada de crear, mantener y gestionar tanto los accesos a bases de datos del sistema como la creación de recordsets no vinculados a consultas específicas. Sólo se debe crear una instancia de esta clase en la aplicación por base de datos que se utilice. Es el interfaz de la aplicación con el gestor de bases de datos. Métodos: o cBaseDatos new(): Este método devuelve un objeto de la clase cBaseDatos, crea la conexión a la base de datos “SCC.mdb” que se encuentra en el subdirectorio MDB del directorio de la aplicación. Parámetros por valor: Ninguno Parámetros por referencia: Ninguno Salida: Devuelve una instancia de la clase cBaseDatos. o ADODB.Connection dame_conexion() accedente que devuelve la conexión de un objeto de clase CBaseDatos. Parámetros por valor: Ninguno Parámetros por referencia: Ninguno Salida: Devuelve una conexión de tipo ADODB.Connection. o ADODB. Recordset dame_recordset(ByVal sql As String): Crea un recordset y carga en él la consulta especificada en sql, en caso que sql sea una tabla se carga entera con todos los campos y filas. Parámetros por valor: sql de tipo String, especifica una consulta sql o el nombre de una tabla Parámetros por referencia: Ninguno. Salida: ADODB.Recordset. o inserta(ByVal sql As String): Ejecuta la instrucción insert into especificada en sql. Parámetros por valor: sql de tipo String, especifica una instrucción “insert into” para una de las tablas del sistema. Parámetros por referencia: Ninguno. Salida: Ninguna. o modifica(ByVal sql As String): Ejecuta la instrucción “update” especificada en sql. Parámetros por valor: sql de tipo String, especifica una instrucción “update” para una de las tablas del sistema. Parámetros por referencia: Ninguno. Salida: Ninguna. o borra (By val sql as String) método que invoca la instrucción delete especificada en sq Parámetros por valor: sql de tipo String que especifica una instrucción SQL de tipo Delete. Parámetros por Referencia: Ninguno. Salida: Ninguna. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 37 o crea_recordset(ByVal tabla As String, rs As ADODB.Recordset): Inicia el recordset pasado como rs con la estructura de tabla/consulta especificada en tabla. El recordset estará vacío y no vinculado a la tabla en la Base de Datos Parámetros por valor: tabla de tipo String, especifica una consulta sql o el nombre de una tabla Parámetros por referencia: rs, de tipo ADODB.Recordset, elimina el contenido anterior y se carga la estructura de sql. Salida: Ninguna. o copia_estructura_recordset(ByVal rsorigen As ADODB.Recordset, rsdestino As ADODB.Recordset): Inicia el recordset pasado como rsdestino con la estructura del recordset rsorigen. El recordset rsdestino estará vacío y no vinculado a ninguna tabla en la Base de Datos Parámetros por valor: rsorigen de tipo ADODB.Recordset, contiene el recordset cuya estructura se quiere copiar. Parámetros por referencia: rsdestino, de tipo ADODB.Recordset, elimina el contenido anterior y se carga la estructura de rsorigen. Salida: Ninguna. o MakeAView(ByVal SPTQueryName As String, ByVal strSql As String): Crea una vista en la base de datos del Sistema con el nombre especificado en SPTQueryName, la vista ejecutará la consulta contenida en strSql. Parámetros por valor: • SPTQueryName de tipo String, contiene el nombre de la vista. • strSql: de tipo String Contiene la consulta a guardar e la base de datos. Parámetros por referencia: Ninguno. Salida: Ninguna. o DeleteAView(ByVal SPTQueryName As String): Borra la vista de la base de datos del Sistema con el nombre especificado en SPTQueryName. Parámetros por valor: SPTQueryName de tipo String, contiene el nombre de la vista. Parámetros por referencia: Ninguno. Salida: Ninguna. o Cierra(): Cierra la conexión existente con la base de datos del sistema. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna Referencias: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 38 2.2.2.6 Clase cFichero Descripción: Esta clase es la encargada de leer los ficheros generados por el sistema de gestión de materiales y de cargar la información contenida en ellos en la base de datos del sistema mediante la clase CBaseDatos. Es el interfaz de la aplicación con los ficheros generados por el sistema de gestión de materiales. Métodos: o Word_Txt(Path_Doc As String): Procedimiento que convierte el fichero especificado en Path_Doc de formato “.rtf” a formato de texto plano “.txt” y lo almacena en un fichero con el mismo nombre que el original con extensión .txt. Parámetros por valor: Path_Doc, ruta completa del documento a convertir, el fichero debe ser un fichero rtf válido. Parámetros por referencia: Ninguno. Salida: Ninguna. o Procesa(Path_Doc As String): Procedimiento principal que realiza la invocación del resto de procedimientos privados que interpretan el fichero, el fichero pasado en Path_Doc debe tener el formato de “material por isométrica” especificado. El resultado de invocar este método es la carga en Base de Datos la información del fichero de texto Path_Doc. Parámetros por valor: Path_Doc, ruta completa del documento a procesar, el fichero debe ser un fichero de texto con el formato indicado. Parámetros por referencia: Ninguno. Salida: Ninguna. o Procesa_Vale(Path_Doc As String): Procedimiento principal que realiza la invocación del resto de procedimientos privados que interpretan el fichero, el fichero pasado en Path_Doc debe tener el formato de “vale” especificado. El resultado de invocar este método es la carga en Base de Datos la información del fichero de texto Path_Doc. Parámetros por valor: Path_Doc, ruta completa del documento a procesar, el fichero debe ser un fichero de texto con el formato indicado. Parámetros por referencia: Ninguno. Salida: Ninguna. o Procesa_Vale_Masivo(Path_Doc As String): Procedimiento principal que realiza la invocación del resto de procedimientos privados que interpretan el fichero, el fichero pasado en Path_Doc debe tener el formato de “vale_masivo” especificado, el cual es igual al formato de “material por isométrica”. Solo se utilizará en cargas iniciales. El resultado de invocar este método es la carga en Base de Datos la información del fichero de texto Path_Doc. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 39 Parámetros por valor: Path_Doc, ruta completa del documento a procesar, el fichero debe ser un fichero de texto con el formato indicado. Parámetros por referencia: Ninguno. Salida: Ninguna. Referencias: o CBaseDatos 2.2.2.7 Clase cUsuarios Descripción: Clase encargada de realizar el control de acceso a la aplicación. Para ello, hace uso del formulario FRM_Acceso_Usuario. En la aplicación debe existir un objeto global de esta clase llamado Usuario. Métodos: o cUsuarios new(): Este método devuelve un objeto de la clase cUsuarios. Se encarga de inicializar los atributos de la clase. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Devuelve una instancia de la clase cUsuario. o Pregunta(): Procedimiento que muestra el formulario FRM_Acceso_Usuario, el cual guarda al Aceptar el usuario y la contraseña en los atributos privados. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna. o es_ok(): Función que devuelve si se ha realizado con éxito el proceso de identificación sobre el usuario actual, se debe haber invocado anteriormente el método identifica() al menos una vez. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: True si se a identificado correctamente, false en caso contrario. o set_nombre(ByVal nom as String): Accedente del atributo nombre. Parámetros por valor: nom, nombre del usuario. Parámetros por referencia: Ninguno. Salida: Ninguna. o set_pwd(ByVal password as String): Accedente del atributo pwd. Parámetros por valor: pwd, contraseña en claro. Parámetros por referencia: Ninguno. Salida: Ninguna. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 40 o Identifica(): Metodo que comprueba el usuario con los datos almacenados en los atributos usuario y pwd, previo a la consulta a base de datos se pasa la contraseña por una función Hash unidireccional, luego se compara con el valor almacenado en base de datos. En caso de que la correlación sea correcta, se establece el atributo ok a true y se carga opciones con los establecidos en base de datos. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna. o dame_opciones(): Accedente al atributo opciones, en caso de que no se haya inicializado se devuelve nothing. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguna. Referencias: o CBaseDatos o FRM_Acceso_Usuario 2.2.2.8 Clase cNavisworks Descripción: se utiliza para encapsular el acceso al API de programación de Navisworks. En esta clase se implementan los métodos necesarios para interactuar con Navisworks desde el proyecto. De esta forma es posible utilizar el navegador sin necesidad de conocer las particularidades de sus librerías. Métodos: o cargarFich(ByVal f as String): abre en el control de Navisworks (nwControl) el fichero .nwd pasado como parámetro. Parámetros por valor: nombre del fichero, incluyendo su extensión nwd, que se quiere abrir. Parámetros por referencia: Ninguno Salida: Ninguna. o ponNwControl(nwc As nwControl): accedente que establece el objeto nwControl con el valor pasado por parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: el objeto nwControl que se va a establecer dentro del objeto Navisworks. Salida: Ninguna. o abrirNwkIntegrado(): establece el objeto InwOpState7 del objeto Navisworks con el valor del objeto nwControl que se utiliza desde el formulario. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: Ninguna. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 41 o localizarLinea (ByVal String line_id) As Boolean: busca y selecciona sobre la maqueta todos los elementos asociados a la línea cuyo identificador se pasa como parámetro. Parámetros por valor: identificador de la línea que se va a buscar en la maqueta 3D. Parámetros por referencia: Ninguno Salida: True si se encuentra False en otro caso. o localizarElem(ByVal line_id As String, ByVal comp_no As String, _ ByVal npd As String, ByVal sch As String, ByVal zoom As Boolean) As Boolean: busca y selecciona el componente cuyos datos se indican en los parámetros de entrada. Parámetros por valor: • Line_id, identificador de la línea. • Comp_no, valor de la propiedad Comp no en la maqueta. • Npd, valor de la propiedad NPD (diámetro nominal). • Sch, valor de la propiedad Sch/thk (Schedule). • si el parámetro zoom se establece a True se hará un zoom sobre el elemento una vez encontrado y si se establece a False no se realizará el zoom. Parámetros por referencia: Ninguno Salida: True si encuentra el elemento indicado, False en otro caso. o dameInfoComp(listProp As Collection): método que devuelve en listProp la lista de atributos del elemento seleccionado. Parámetros por valor: Ninguno. Parámetros por referencia: colección de la clase cPropiedad. Salida: en listProp se devolverá la información asociada al componente seleccionado en la maqueta 3D. o ponColorACurSel (c As cColor): establece el color pasado por parámetro, como color para la selección actual en la maqueta. Parámetros por valor: Ninguno. Parámetros por referencia: c, objeto color que se va a establecer como color para la selección actual en la maqueta 3D. Salida: Ninguna. o ponStrColorACurSel (ByVal c As String): establece el color pasado como parámetro, en formato vector RGB (255, 255, 255), como color para la selección actual. Parámetros por valor: c, valor del color, en formato cadena de caracteres, que se va a establecer como color para la selección actual en la maqueta 3D. Parámetros por referencia: Ninguno Salida: Ninguna. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 42 o resetAll(): deshace los cambios realizado anteriormente y deja la configuración como estaba al abrir el fichero de Navisworks. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: Ninguna. o dameCoordCurSel() As cPos3D: función que devuelve un objeto cPos3D con las coordenadas del elemento seleccionado en la maqueta. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: coordenadas X, Y, Z del elemento seleccionado. o dameCoord(p As InwOaPath3, centro As cPos3D): método que devuelve en centro las coordenadas del elemento situado en p. Parámetros por valor: Ninguno. Parámetros por referencia: • p indica la ruta dentro de la jerarquía de Navisworks del elemento. • Centro, devolverá sus coordenadas X, Y, Z. Salida: en el parámetro centro se devolverán las coordenadas X, Y, Z del elemento indicado. o saveInfoCurSel(): método que almacena en el atributo de clase propiedades , los atributos del elemento seleccionado en la maqueta. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: Ninguna. o dameProp(p As InwOaPath3, listProp As Collection): método que devuelve en listProp , que es una colección de objetos cPropiedad, los atributos correspondientes al elemento situado en p. Parámetros por valor: Ninguno. Parámetros por referencia: • p indica la ruta dentro de la jerarquía de Navisworks del elemento. • listProp, devolverá la lista de propiedades correspondiente al elemento. Salida: listProp, lista de propiedades correspondiente al elemento indicado. o haySeleccion() As Boolean: función que devuelve True si hay algún elemento seleccionado en la maqueta y False, en otro caso. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: True si hay algún elemento seleccionado en la maqueta False en otro caso. o dameCuantosSel() As Integer: función que devuelve el número de elementos seleccionados en la maqueta. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: número de elementos seleccionados en la maqueta 3D. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 43 o damePathEn(ByVal i As Integer) As InwOaPath3: función que devuelve el objeto InwOaPath3 seleccionado en i-ésimo lugar. Parámetros por valor: i, posición en la que se encuentra el objeto InwOaPath3 al que se quiere acceder. Parámetros por referencia: Ninguno Salida: objeto InwOaPath3 situado en la posición i-ésima. o dameCodigo(propiedades As Collection) As String: devuelve el valor de la propiedad Comp no de la colección propiedades, pasada como parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: propiedades, lista de propiedades. Salida: valor de la propiedad Comp no de la lista pasada como parámetro. o dameNPD(propiedades As Collection) As String: devuelve el valor de la propiedad NPD de la colección propiedades, pasada como parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: propiedades, lista de propiedades. Salida: valor de la propiedad NPD de la lista pasada como parámetro. o dameSCH(propiedades As Collection) As String: devuelve el valor de la propiedad Sch/thk de la colección propiedades, pasada como parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: propiedades, lista de propiedades. Salida: valor de la propiedad Sch/thk de la lista pasada como parámetro. o dameLineid(propiedades As Collection) As String: devuelve el valor de la propiedad Line_id de la colección propiedades, pasada como parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: propiedades, lista de propiedades. Salida: valor de la propiedad Line_id de la lista pasada como parámetro. o dameDMRS(propiedades As Collection) As String: devuelve el valor de la propiedad DMRS de la colección propiedades, pasada como parámetro. Parámetros por valor: Ninguno. Parámetros por referencia: propiedades, lista de propiedades. Salida: valor de la propiedad DMRS de la lista pasada como parámetro. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 44 o guardarCambios(): método que guarda en el fichero .nwd abierto, los cambios realizados. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: Ninguna. o apregarPropUserDef(p As InwOaPath3, ByVal ndx As Long, ByVal userx As String, ByVal internalx As String, ByVal sx As String): método que añade una propiedad al elemento situado en el path p. Parámetros por valor: ndx, con valor 0 para indicar que se añade la propiedad en otro caso se modifica. • Userx, indica el nombre de la propiedad que se añade. • Internalx, indica el nombre interno de la propiedad que se añade. • Sx, valor de la propiedad que se añade. Parámetros por referencia: p indica la ruta dentro de la jerarquía de Navisworks del elemento. Salida: Ninguna. o existeProp(p As InwOaPath3, ByVal clase As String) As Boolean: fucnión que devuelve true si la clase de propiedades clase, existe en elemento situado en el path p. Parámetros por valor: clase, valor del nombre de la clase de propiedades que quiere comprobarse si existe. Parámetros por referencia: p indica el path dentro de la jerarquía de Navisworks del elemento. Salida: True si existe la clase de propiedades clase en el elemento indicado. False en otro caso. o borrarPropUserDef(p As InwOaPath3, userx As String): borra la propiedad de usuario userx del elemento situado en p. Parámetros por valor: userx, valor del nombre de la clase de propiedades que se quiere eliminar. Parámetros por referencia: p indica el path dentro de la jerarquía de Navisworks del elemento. Salida: Ninguna. o crearSelectionSet(ByVal nombre As String, ByVal atrib_i As String, ByVal atrib_n As String, ByVal prop As String, ByVal valor As String, tipo As NWK_TipoCond)): método que crea en el fichero nwd activo un Selection Set que permite seleccionar todos los elementos de la maqueta que cumplan una determinada condición de búsqueda. Parámetros por valor: nombre, indica el nombre del Selection Set. • atrib_i, nombre interno de la clase de propiedades que se utiliza en el criterio de búsqueda. • atrib_n, nombre de usuario de la clase de propiedades que se utiliza en el criterio de búsqueda. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 45 • Prop, nombre de la propiedad por la que se realizará la búsqueda. • Valor, valor de la propiedad indicada en prop. Parámetros por referencia: Tipo, tipo de búsqueda (Tiene Atributo o Contiene). Salida: Ninguna. o existeSelectionSet(ByVal nombre As String) As Boolean: comprueba si en Navisworks existe un Selection Set con el nombre pasado por parámetro. Parámetros por valor: nombre, indica el nombre del Selection Set. Parámetros por referencia: Ninguno Salida: True si existe un Selection Set con nombre indicado, False en otro caso. o activaSelectionSet(ByVal nombre As String, ok As Boolean): método que selecciona en la maqueta los elementos que cumplen el criterio indicado en el Selection Set cuyo nombre se pasa por parámetro. Parámetros por valor: nombre, indica el nombre del Selection Set que se quiere activar. Parámetros por referencia: ok, parámetro de control. Salida: ok, devolverá True si la operación se ha realizado con éxito, y devolverá False en otro caso. o mostrarTodosEltos(): método que permite visualizar todos los elementos de la maqueta, incluso los que estuvieran ocultos por la aplicación de algún Selection Set. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. o ocultarEltosNoSel(): método que oculta todos aquellos elementos de la maqueta 3D que no estén seleccionados. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. o verMatMontado(): método que activa el Selection Set correspondiente al material “Montado”. Si el Selection Set no existe, lo crea. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. o verMatNoMarcado(ByVal Negado As Boolean): método que permite mostrar/ocultar los elementos que han sido marcados por el contratista como montados o prefabricados. Parámetros por valor: negado, si tiene valor True se muestran los no marcados, si tiene valor False, se muestran los marcados. Parámetros por referencia: Ninguno. Salida: Ninguno. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 46 o verMatPrefab(): método que activa el Selection Set correspondiente al material “Prefabricado”. Si el Selection Set no existe, lo crea. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. o cambiaViewPointA(ByVal p As String): método que permite cambiar al usuario la forma de desplazarse por la maqueta. Parámetros por valor: p, indica el tipo de desplazamiento que se permite. Puede tomar uno de los siguientes valores: Fly, Examine, Wak, Turntable, Pan, Zoom, ZoomBox, Orbit y Select. Parámetros por referencia: Ninguno. Salida: Ninguno. o ponStrBackColor(ByVal sColor As String): método que establece el color del fondo del visualizador de la maqueta al color pasado por parámetro. Parámetros por valor: sColor, color que se quiere establecer como color de fondo en formato RGB. Parámetros por referencia: Ninguno. Salida: Ninguno. o zoomASeleccion(): método que realiza un zoom sobre el 3D hacia el elemento o elementos que estén seleccionados en la maqueta. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. Referencias: o cColor o cPos3D o cPropiedad 2.2.2.9 Clase cPos3D Descripción: implementa el comportamiento de un vector de 3 dimensiones. Permite acceder a cada una de las componentes por separado y se utilizará para manejar las coordenadas de los objetos de la maqueta 3D. Métodos: o ponX (ByVal dato As Double): mutador que establece la coordenada X del vector 3D con el valor pasado por parámetro. Parámetros por valor: valor de la coordenada X que se quiere establecer en el objeto. Parámetros por referencia: Ninguno Salida: Ninguna. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 47 o ponY (ByVal dato As Double): mutador que establece la coordenada Y del vector 3D con el valor pasado por parámetro. Parámetros por valor: valor de la coordenada Y que se quiere establecer en el objeto. Parámetros por referencia: Ninguno Salida: Ninguna. o ponZ (ByVal dato As Double): mutador que establece la coordenada Z del vector 3D con el valor pasado por parámetro. Parámetros por valor: valor de la coordenada Z que se quiere establecer en el objeto. Parámetros por referencia: Ninguno Salida: Ninguna. o dameX () As Double: accedente que devuelve el valor de la coordenada X del vector 3D. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: valor de la coordenada X. o dameY () As Double: accedente que devuelve el valor de la coordenada Y del vector 3D. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: valor de la coordina Y. o dameZ () As Double: accedente que devuelve el valor de la coordenada Z del vector 3D. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno Salida: valor de la coordenada Z. Referencias: 2.2.2.10 Clase cToolbar Descripción: está clase se encarga de manejar las barras de herramientas en el formulario de Taller. Métodos: o ejecutaToolBarGrid(TOOL As Object, DBG As DataGrid, DT As Adodc, ByVal Key As String): método que ejecuta el comando asociado al botón que se ha pulsado en la barra de herramientas de las tablas de datos. Parámetros por valor: Key, indica el valor de la propiedad Key del botón que se ha pulsado en la barra de herramientas. Parámetros por referencia: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 48 • TOOL, objeto que representa la barra de herramientas que se va a utilizar. • DBG, objeto que representa el DataGrid sobre el que se realizarán las operaciones. • DT, objeto Adodc asociado al DataGrid. Salida: Ninguno. o ejecutaToolBarNwk(Boton_actual As MSComctlLib.Button, lView As ListView, lViewCoord As ListView): método que ejecuta el comando asociado al botón que se ha pulsado en la barra de herramientas para Navisworks. Parámetros por valor: Ninguno. Parámetros por referencia: • boton_actual, objeto que representa el botón que se ha pulsado en la barra de herramientas. • lView, objeto que representa el control en el que se visualizarán los atributos de los elementos de la maqueta. • lViewCoord, objeto que representa el control en el que se visualizarán las coordenadas de los elementos de la maqueta. Salida: Ninguno. o inicializaToolBarNwk(): método que se encarga de realizar las operaciones de inicialización necesarias para la barra de herramientas de Navisworks. Parámetros por valor: Ninguno. Parámetros por referencia: Ninguno. Salida: Ninguno. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 49 2.2.3 Diseño de BBDD La base de datos del sistema se ha protegido con un sistema de seguridad basada en contraseña, la cual puede ser modificada por un usuario con privilegios de administrador. La contraseña cambiada se guarda encriptada en un fichero dentro del directorio de la BBDD llamado bd.pwd. Para generar este fichero se ha utilizado un algoritmo de tipo RSA de clave pública y privada, que utiliza dos parámetros para generar la contraseña encriptada que son: la clave pública y la longitud, que se puede encontrar en el mismo directorio en el fichero claves.txt. Diagrama entidad-relación: Para el diagrama entidad-relación del Sistema se han clasificado las tablas en dos grupos: • Las tablas de Aplicación: que utiliza el sistema con información propia de la operativa del sistema. Estas tablas almacenan los datos que el sistema debe procesar para lograr los objetivos marcados. • Las tablas del Sistema: que utiliza el sistema para mantenimiento y configuración de diversos aspectos del mismo. Se trata de tablas auxiliares que se serán utilizadas para establecer la personalización del entorno de cada proyecto. A continuación, se describe el contenido y la función de cada una de estas tablas según su clasificación. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 50 2.2.3.1 Tablas de la aplicación El diagrama entidad-relación de la parte de aplicación es el siguiente: MATERIAL_POR_VALE PK,FK3,I3 NUMERO PK,FK2,I2 UNIDAD PK,FK2 FLUIDO PK,FK2 NUM_LINEA PK,FK2 TRAMO PK,FK1,FK2,I1 CODIGO HOJA HOJAS REV CANT_DESPACHADA COSTES PK TIPO PK DIAM COSTE LISTA_LINEAS_POR_AREA LINE_ID AREA_NO AREA_NAME DISCIPLINE_NO FK1 UNIT_NUMBER FK1 FLUID FK1 LINE_SEQUENCE_NO FK1 TRAIN_NUMBER nwd DIAMETROS ORDEN DIAM_STR DIAM_NUM AUX_Clave_input I1 CLAVE_INPUT CODIGO_CAPS ELEMENTOS_MARCADOS PK,I2 UNIDAD PK FLUIDO PK NUM_LINEA PK TRAMO PK DMRS PK X PK Y PK Z PK,FK1,I1 CODIGO FK2 DIAM1 DIAM2 CANT FK2 PREF_MONT FECHA AUX_Comm_caps DIAM1 DIAM2 SCH1 SCH2 COMMODITY I1 CODIGO_CAPS MATERIAL_POR_ISO PK,I3 UNIDAD PK FLUIDO PK NUM_LIN PK TRAMO PK,FK1,I1 CODIGO I2 LINE_ID HOJA HOJAS REV FECHA ESPEC TIPO DIAM1 DIAM2 PREF_MONT CANT PESO AUX_Comm_capsOLD DIAM1 DIAM2 COMMODITY CODIGO_CAPS VALES_DE_SALIDA PK NUMERO FECHA HORA CONTRATISTA CLAVE_INPUT_CODIGO_CAPS FK2,I1 CLAVE_INPUT FK1,I2 CODIGO_CAPS CLAVE_INPUT_PESO PK,I1 CLAVE_INPUT PESO DESCRIPCION COMMODITY_CODIGO_CAPS PK,FK1,FK2,I1 CODIGO_CAPS DIAM1 DIAM2 SCH1 SCH2 COMMODITY Como información y en lugar de establecer cada tipo de datos de los atributos de las tablas, se explicará el significado de cada tabla y las relaciones entre ellas (aún aquellas que se establece por parte de el uso normal de la aplicación). MATERIAL_POR_ISO Tabla que almacena el conjunto de isométricas que componen el proyecto, y el material que lo constituye. Para cada isométrica son clave los siguientes campos: Unidad, Fluido, y Num_Lin (todos de tipo VarChar). Cada isométrica se divide en uno o más tramos, con lo cual, la clave estaría formada por la clave de la isométrica y Tramo (También VarChar). Cada tramo está compuesto de uno o más componentes de material diferenciados por el campo Codigo (Tipo VarChar). Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 51 VALES_SALIDA Tabla que almacena los índices de los vales de salida de material que han sido emitidos por el sistema de gestión de materiales y cargados en SCC, en esta tabla se almacena: o Numero, que se establece como clave principal y establece relación implícita en código con la tabla MATERIAL_POR_VALES. o Fecha y Hora, indicadas en el vale origen. o Contratista: Identificador de la empresa a la que se expidió el vale. MATERIAL_POR_VALE Tabla que establece el material entregado a un contratista en un determinado vale, el material estará identificado con las mismas claves utilizadas en la MATERIAL_POR_ISO y el contenido de la tabla deberá ser coherente con el de la tabla citada. ELEMENTOS_MARCADOS Esta tabla relaciona los elementos cargados en el sistema por medio de ficheros con los elementos utilizados en la maqueta 3D, por ello necesitamos los campos clave de la tabla MATERIAL_POR_ISO para identificar los elementos a la cual añadimos la parte especifica de posición en la maqueta como son los campos X,Y,Z y el campo DMRS. Aparte de lo ya indicado, se recupera los datos referentes a diámetros de la tabla catálogo de diámetros para cada elementoAUX_Comm_caps. Se establecen los parámetros de fecha en el que se almacena la fecha de la modificación y Pref_Mont para establecer la categoría del elemento. COSTES Tabla que establece el coste por metro o por pieza, dependiendo del elemento, relacionado con su diámetro COMMODITY_CODIGO_CAPS Esta entidad relaciona los códigos de materiales generados por el sistema de materiales con los códigos de materiales utilizados en la maqueta 3D, es una tabla generada externamente y cargada en el sistema íntegramente. El campo COMMODITY es clave para el Sistema de de la maqueta 3D; y el campo CODIGO_CAPS es clave para el sistema de materiales. Aux_Comm_Caps y Aux_Comm_Caps_Old Son tablas creadas ex profeso para la relación de materiales y 3D cuando algunos de los 2 sistemas no es o bien NavisWorks o el Sistema de Materiales no es MATUB. Se utilizan campos necesarios para cada uno de los sistemas necesarios. Estas tablas son tratadas como extensiones de la tabla COMMODITY_CODIGO_CAPS. LISTA_LINEAS_POR_AREA Usada para determinar el fichero de la maqueta 3D en el que se encuentra cada Isométrica o línea. El campo nwd contiene el nombre del fichero NavisWorks en el que debe encontrarse. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 52 DIAMETROS Se utiliza como catálogo para establecer las relaciones posibles entre los diámetros de los materiales del Sistema. Se utiliza como Clave el campo Orden, generado de forma externa a la propia tabla. Estas tablas son utilizadas por la aplicación para su trabajo normal, 2.2.3.2 Tablas Auxiliares En este apartado tenemos tablas de gestión del sistema, no relacionadas mediante relaciones SQL pero con las siguientes características: _CONFIG_COLORES: En esta tabla se guarda el color asignado en el formulario de colores a los materiales de cada categoría (Montado o Prefabricado). ERR_CARGA_ISO: Tabla destinada a guardar errores relacionados con procesos de cargas de isométricas o vales, así como de errores en borrados o actualizaciones de los mismos. En ella se especifica la Isométrica que ha dado el error y un texto descriptivo del evento sucedido. En el campo HECHO, se especifica S/N, indicando S si se ha revisado el error o N si todavía está pendiente de revisión. _CONFIG_PROYECTO: Tabla de Configuración del sistema, en ella se establecen los parámetros generales del proyecto: o Descripción: Se establece el resumen del proyecto. o Cliente: Identificador del cliente del proyecto. o Imagen: Ruta de la imagen a mostrar en la pantalla principal. o Nwd_ini: Ruta de la maqueta 3D en formato legible por Naviswork sobre la que trabajará la aplicación. o Perfiles: Se establecen las opciones disponibles para cada perfil. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 53 o Usuarios: Almacena el nombre del usuario, el perfil de la tabla perfiles al que está asignado y el valor hash de la contraseña (contraseña cifrada) para comparar en el inicio de la aplicación. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 54 3 Ampliaciones y Conclusiones 3.1 Sistema Gestor de Base de Datos El sistema se ha apoyado en una base de datos comercial, de fácil instalación y ampliamente difundida como es Microsoft Access. No obstante, esta base de datos no garantiza la seguridad requerida en un entorno de trabajo industrial y es probable que para un volumen de trabajo real se vea desbordada. Estos motivos suscitaron la creación de una clase cBaseDatos, que gestione la interfaz con el sistema gestor de bases de datos, facilitando la migración a cualquier otro sistema con solo cambiar esta clase. Los métodos públicos de esta clase, como son: inserta, borra o modifica, en la implementación actual tan sólo ejecutan las sentencias SQL que se les pasa por parámetro, pero debido a la diferenciación y al buen uso de la clase, el cambiar a otro sistema supone los siguientes trabajos: Gestión de las conexiones adecuadamente para el Sistema Gestor de Bases de Datos seleccionado. En caso de que el Sistema no implemente SQL o tenga diferencias sustanciales con el SQL empleado por Access, se deberá implementar una traducción de las SQL admitidas como parámetros de la clase actual a una implementación SQL del Sistema seleccionado. Esta separación en una clase aparte de todo el acceso a base de datos, también permite el acceso a bases de datos centralizadas si se tiene previsto conexión de datos de banda ancha con el emplazamiento físico del sistema, modificando la clase actual por otras que incorpore: Procedimientos de acceso a bases de datos remotas. Nivel de seguridad acorde a la información que se va a utilizar. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 55 3.2 Visual Basic 6 En la elección del lenguaje de programación a utilizar en la realización de SCC, se han evaluado diferentes aspectos, siendo el lenguaje de programación Visual Basic 6 el que más se adecuaba al proyecto en cuestión. Como características favorables de Visual Basic 6, podemos destacar: • Facilidad de aprendizaje: En este apartado se debía tener en cuenta que parte del equipo desarrollador no conocía esta tecnología. • Facilidad en el Manejo de Bases de Datos por medio de Recordsets. • Integración de API del sistema de visualización de maquetas 3D: El sistema de visualización de maquetas 3D utilizado (JetStream NavisWorks), provee una API propia del programa implementada en Visual Basic 6, con lo que la interacción con ella era requisito indispensable. En cuanto a desventajas y problemas destacables de este lenguaje de programación, se pueden mencionar los siguientes: • Aunque el análisis del sistema y el desarrollo se ha realizado siguiendo el paradigma de Orientación a Objetos, este lenguaje de programación no provee las características típicas de estos lenguajes, por lo que se han debido buscar artificios para realizar técnicas típicas como puede ser la implantación de patrones (Vista-Controlador, Singleton…), encapsulación de clases, etc. • Se ha puesto de manifiesto la problemática de la gestión de errores entre módulos-clases, por ello se ha tenido que implementar un sistema de gestión de errores basado en ficheros logs y lectura de los mismos. 3.3 Visualizador 3D La elección del visualizador de la maqueta 3D ha estado sujeta a los requerimientos del cliente, que en este caso utiliza mayoritariamente Navisworks. Este visualizador tiene la ventaja de que permite manejar maquetas 3D generadas utilizando como herramienta de diseño PDS (de Intergraph) o PDMS (de Aveva) indistintamente. Sin embargo, en el futuro, no se descarta la posibilidad de utilizar otro visualizador comercial, denominado Smart Plant Review, que suministra Intergraph y que ofrece mayores posibilidades cuando se trabaja con PDS. Teniendo en cuenta esta posibilidad, se ha realizado el diseño, de forma que los cambios que se tienen que introducir, en caso de que se quiera optar por esta mejora, están perfectamente definidos y no suponen un impacto en el resto de la aplicación. Estos cambios consisten en: Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 56 Crear una nueva clase, análoga a la clase cNavisworks que existe actualmente, que implemente los métodos necesarios para poder interactuar con la maqueta. Añadir las funcionalidades necesarias en el formulario Taller utilizando los métodos de la nueva clase. De esta manera, resulta relativamente sencillo ampliar el sistema a nuevos visualizadores, o bien, adaptarlo a las nuevas funcionalidades que incorporen versiones futuras del visualizador para el que ha sido implementada la aplicación. 3.4 Integración con herramientas de planificación de proyectos En el futuro se puede plantear la integración con una herramienta de planificación de tareas, como puede ser Microsoft Project o Primavera. Esta integración permitiría introducir las siguientes mejoras: • Actualmente los informes reflejan el progreso real de la construcción con respecto al total diseñado. Con la integración de una herramienta de este tipo se obtendría la posibilidad de comparar el progreso real con el planificado. De esta forma, sería posible generar informes referentes tanto al progreso real como al progreso planificado. Y sería posible también obtener comparativas entre ambos. • Desde el visualizador de la maqueta 3D se podría realizar una simulación del avance de la construcción, en un determinado periodo de tiempo, utilizando como base la planificación realizada en la herramienta correspondiente. • Realizar una comparación visual sobre la maqueta 3D entre el progreso real de la construcción y el planificado. Al enlazar los objetos del 3D con las tareas planificadas sería posible reflejar gráficamente los retrasos y/o las diferencias en los que se ha incurrido durante la construcción de la instalación industrial. Diseño e implementación de un Sistema de Control de Construcción de una Instalación Industrial 57 4 Bibliografía Libros [Booch99] El Lenguaje Unificado de Modelado. G. Booch, J. Rumbaugh, I. Jacobson. Addison Wesley Iberoamericana, 1999. [Booch94] Object-Oriented Analysis and Design. G. Booch. Benjamin/Cummings, 1994. [BJR97] The UML Specification Document. G. Booch, I. Jacobson and J. Rumbaugh. Rational Software Corp., 1997. [Jacobson92] Object-Oriented Software Engineering: A Use Case Driven Approach. I. Jacobson. Addison-Wesley, 1992. [Larman99] UML y Patrones. C. Larman. Prentice Hall, 1999. [Rumbaugh91] Object-Oriented Modeling and Design. J. Rumbaugh et al.Prentice- Hall,1991. [Ceballos97] Enciclopedia de Microsoft Visual Basic 6. Fco. Javier Ceballos. RA-MA 1997 Páginas Web http://www.vbasic.astalaweb.com http://www.recursosvisualbasic.com http://www.caesoft.es http://www.navisworks.com http://www.trsa.es http://msdn.microsoft.com/es-es/vbasic/ https://customer.navisworks.com/slxweb/portal/portalKnown.php http://www.vbasic.astalaweb.com/ http://www.recursosvisualbasic.com/ http://www.caesoft.es/ http://www.naviswor