El porque
Bueno, como me acabo de enterar que padezco de laringitis por reflujo y que no debo ir a la cama sino hasta por lo menos 30 minutos despues de comer algo, otra vez aqui ando...
Retomando
En la entrada anterior hacia una introduccion acerca de como habia llegado a conocer SketchUp y mi primer script Ruby para acceder a datos almacenados en MySQL, bueno, ahora vengo a levantar los ejemplos...
Las pruebas
Primero y antes que nada, deberian crear un componente cualquiera, en mi caso me tomo unos segundo diseñar una gondola comun, sin demasiados detalles y asignarle un nombre, mediante el atributo [NAME], que es uno de los que ya vienen por defecto para agregar.
Ya teniendo el objeto al cual asignarle los atributos que interesaban recuperar desde la base de datos, tenia que crear un origen de datos, cuyo script se los dejo en este enlace, para que lo descarguen y ejecuten en su herramienta de administracion de MySQL, en mi caso utilizo HeidySQL, recomendado.
Una vez que hayan ejecutado el script de creacion de la base de datos, deberian tener algo como esto
Como notaran, tengo un registro con el valor del campo [DESCRIPCION] con el nombre de mi gondola [G01], por medio del que me voy a valer para recuperar sus valor de atributos posteriormente. Ahora necesitaba crear el script Ruby que se encargaria de relacionar el componente diseñado con los datos a recuperar desde la base de datos, se los dejo aqui.
Una vez que lo hayan abierto y analizado, veran que lo unico que hace es, de abajo hacia arriba...
Entonces, lo que queda es probar todo el conjunto.
Seleccionamos nuestra gondola, nos aseguramos de que el nombre aparesca como uno de los valores del campo [DESCRIPCION] de la tabla espacios, cargamos nuevo plugin al Sketchup, para lo que previamente tuvimos que haberlo guardado en el directorio "Plugins/propios" del mismo directorio de instalacion del SketchUp, lo cargamos ejecutando en la consola (Menu Ventana -> Consola Ruby) el siguiente comando
load "propios/superMysql.rb"
Se escribe el path al archivo a partir del directorio "Plugins"
Y deberia aparecer el item en la barra de menues si no hubo inconvenientes
Nos aseguramos de tener seleccionada nuestra gondola, y le damos click a ese menu item y... (redoblesss)
Taraaannn!!... los atributos cuyos valores estaban cargados en la base de datos ahora estan asignados a nuestra gondola, que ademas paso a ser de color verde, pues esta actualmente activa, y ya partir de esto generar un reporte con los valores de atributos de esta gondola.
Por cierto, olvide mencionarles antes ya que la opcion de generacion de reportes solo esta disponible con la version PRO del SketchUp, no asi en la version Gratuita, se me paso eso =P
Los resultados
Con lo que hasta ahora vimos, mi siguiente paso fue algo mas "masivo"...
Y ya se imaginan lo que siguio despues, crear mas registros en la tabla y nombrar a cada uno de estos componentes de forma unica.
Entonces, hasta aqui de nuevo por hoy con este tema, a ver si en la siguiente entrada lo vuelvo a tratar o ya sera otro tema...
Parte I
Bueno, como me acabo de enterar que padezco de laringitis por reflujo y que no debo ir a la cama sino hasta por lo menos 30 minutos despues de comer algo, otra vez aqui ando...
Retomando
En la entrada anterior hacia una introduccion acerca de como habia llegado a conocer SketchUp y mi primer script Ruby para acceder a datos almacenados en MySQL, bueno, ahora vengo a levantar los ejemplos...
Las pruebas
Primero y antes que nada, deberian crear un componente cualquiera, en mi caso me tomo unos segundo diseñar una gondola comun, sin demasiados detalles y asignarle un nombre, mediante el atributo [NAME], que es uno de los que ya vienen por defecto para agregar.
Ya teniendo el objeto al cual asignarle los atributos que interesaban recuperar desde la base de datos, tenia que crear un origen de datos, cuyo script se los dejo en este enlace, para que lo descarguen y ejecuten en su herramienta de administracion de MySQL, en mi caso utilizo HeidySQL, recomendado.
Una vez que hayan ejecutado el script de creacion de la base de datos, deberian tener algo como esto
Como notaran, tengo un registro con el valor del campo [DESCRIPCION] con el nombre de mi gondola [G01], por medio del que me voy a valer para recuperar sus valor de atributos posteriormente. Ahora necesitaba crear el script Ruby que se encargaria de relacionar el componente diseñado con los datos a recuperar desde la base de datos, se los dejo aqui.
Una vez que lo hayan abierto y analizado, veran que lo unico que hace es, de abajo hacia arriba...
- Añadir un Item al Menu [PlugIns] que tendra por titulo [Actualizar Atributos] y que cuando se haga click en el mismo, ejecutara la funcion "iniciar".
- La funcion "iniciar" abre una conexion a la BD MySQL.
- Toma la lista de componentes actualmente seleccionados en el SketchUp y muestra en un cuadro de dialogo la cantidad de elementos seleccionados que seran actualizados.
- Recorre la lista de componentes de la seleccion.
- Si el componente actual es del tipo "ComponentInstance", entonces recupera el diccionario (estom en Python es lo que en Ruby y PHP seria un arreglo asociativo, o en Java un HashMap) de atributos que actualmente posee ese componente y lo asigna a una variable global.
- Invoca al metodo "procesar", que lo unico que realiza en un recorrido por los pares clave-valor del diccionario (o arreglo asociativo, o HashMap) y va invocando para cada uno a la funcion "actualizarAtributos".
- Esta funcion evalua si el valor de la clave es "name", que almacena el nombre del componente, y si es asi ejecuta la sentencia SELECT para recuperar el registro en cuyo campo [DESCRIPCION] se aloja la cadena que coincide con el valor del atributo actual, en este caso "G01".
- Recuperados los registros (deberia de ser siempre uno solo), se procede a agregar nuevos pares clave-valor al diccionario de atributos del componente actualmente seleccionado, mediante la funcion "setAtributo", en este caso, con un agregado extra, respecto del atributo "estado", se ejecuta el cambio de color del material del componente actual, verde si su valor de campo [ACTIVO] es 1, y blanco si no lo esta.
Entonces, lo que queda es probar todo el conjunto.
Seleccionamos nuestra gondola, nos aseguramos de que el nombre aparesca como uno de los valores del campo [DESCRIPCION] de la tabla espacios, cargamos nuevo plugin al Sketchup, para lo que previamente tuvimos que haberlo guardado en el directorio "Plugins/propios" del mismo directorio de instalacion del SketchUp, lo cargamos ejecutando en la consola (Menu Ventana -> Consola Ruby) el siguiente comando
load "propios/superMysql.rb"
Se escribe el path al archivo a partir del directorio "Plugins"
Nos aseguramos de tener seleccionada nuestra gondola, y le damos click a ese menu item y... (redoblesss)
Taraaannn!!... los atributos cuyos valores estaban cargados en la base de datos ahora estan asignados a nuestra gondola, que ademas paso a ser de color verde, pues esta actualmente activa, y ya partir de esto generar un reporte con los valores de atributos de esta gondola.
Por cierto, olvide mencionarles antes ya que la opcion de generacion de reportes solo esta disponible con la version PRO del SketchUp, no asi en la version Gratuita, se me paso eso =P
Los resultados
Con lo que hasta ahora vimos, mi siguiente paso fue algo mas "masivo"...
Y ya se imaginan lo que siguio despues, crear mas registros en la tabla y nombrar a cada uno de estos componentes de forma unica.
Entonces, hasta aqui de nuevo por hoy con este tema, a ver si en la siguiente entrada lo vuelvo a tratar o ya sera otro tema...
Parte I






Excelente, Daniel...solo que no puedo accedera dropbox para ver los scripts que propones. Me interesa saber cuales son los pasos a seguir para conectar Sketchup con una base de datos (mi proyecto es cambiar los componentes de un diseño 3D de manera interactiva (desde la base de datos)... Un saludo y gracias por la ayuda que me puedas brindar en esto
ResponderEliminarHola Rod
EliminarTrataré de recuperar los scripts y te estaré notificando.
Listo.. los enlaces dejaron de funcionar debido a una actualización de dropbox. espero te sirvan.
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhola Rod
ResponderEliminarTe habrás fijado en la fecha de publicación original del post, por lo tanto es probable que sea algo relacionado con las versiones nuevas de Sketchup y/o la de Ruby. Me intriga el problema, lamentablemente ahora estoy con muchos proyectos en el trabajo y casi no me queda tiempo para revisarlo. Si en una de esas lo resuelves antes de que pueda darte un retorno, te agradecería que compartieras tu experiencia.
Hola Daniel... miraré lo que me indicas (las versiones). Acabo de borrar la entrada mia anterior pues he logrado que aparezca el boton "Actualizar Atributos" en el menu "Extensiones", esto después de haber movido, en superMsql.rb, la llamada require 'mysql', poniéndola justo después de: def iniciar. Pero teniendo el componente seleccionado y dándole al botón "Actualizar Atributos", no ocurre nada aunque tampoco me da un aviso de no conexión con la BD... (estoy trabajando con Sketchup 2016 Pro trial y con Xampp).
ResponderEliminarGracias, Daniel, por tu atención, a pesar de tus curros