Control de eventos en los procesos largos de FreeCAD-Ship

Uno de los problemas de FreeCAD-Ship es prepararlo para los usuarios de Windows, las razones de esto todos las conocemos.

Pues bien, recientemente he recibido quejas relacionadas con algo que se encuentra documentado en los tutoriales, pero que efectivamente se puede volver una situación difícil de manejar, y es cuando los cálculos son muy largos. Si el número de geometrías es muy grande o estas son muy complejas el cálculo de las hidrostáticas y de la curva de brazos adrizantes GZ pueden llevar minutos, o incluso horas, algo que en Linux no era complicado de seguir, y en su caso detener, pues se lanzaba FreeCAD desde la terminal y listos, allí aparecía la evolución del proceso, y se podía detener con nuestro amado Ctrl+C.

Pero en Windows… Dichosos los usuarios de Windows… ¿Quién querría usar la terminal de Windows para lanzar FreeCAD? Y si no hay terminal, no hay seguimiento del proceso, y se puede volver un tanto frustrante. Por ello he añadido un control mejorado de los eventos en el cálculo de hidrostáticas y curva de GZ, de tal forma que ahora el programa se actualiza al final del cálculo de cada punto, mostrando la evolución en la vista de informe, y permitiendo detener el cálculo presionando el botón Cancelar del cuadro de diálogo.

La respuesta estaba en realidad en los foros de FreeCAD, pero he tenido que adaptarla a mis necesidades, lo que no era del todo trivial. De regalo además ahora la herramienta será capaz de guardar y graficar los resultados obtenidos hasta el momento del corte.

La integración es en un principio sencilla, así que espero que se encuentre disponible en la mayoría de los canales lo antes posible.

Módulo de graficado en FreeCAD (matplotlib)

Desde que se integró oficialmente FreeCAD-Ship uno de los problemas graves de mi módulo de FreeCAD era que en Windows no se podían graficar las curvas de una forma sencilla puesto que se empleaba pyxplot.

Para solucionarlo he creado un módulo de graficado basado en matplotlib.

Multiaxes example

El módulo ofrece, a traves de la consola o los macros de FreeCAD, toda la potencia de matplotlib, y una capa sobre el mismo que permite un control sencillo. Además se ofrecen algunas herramientas en la interfaz gráfica de usuario para controlarlo. Podeís encontrar ejemplos de como usarlo aquí y aquí.

Además FreeCAD-Ship ya ha sido adaptado para emplear el nuevo módulo con matplotlib, permitiendo curvas como estas:

Curvas hidrostáticas de los principales coeficientes de formas

Lamentablemente numpy y matplotlib no serán incluidos en el instalador de FreeCAD por el momento, así que hay que instalarlos manualmente si se quiere disponer de las nuevas herramientas (que ya usan otros módulos de FreeCAD).

Respecto del instalador de FreeCAD para Windows, podeís obtener la última versión (que aunque sea unstable es mucho más estable que la 0.12, paradojas de la vida) aquí.

Los usuarios de distribuciones derivadas de Debian (incluidas Mint, Ubuntu, etc.) podeís usar las daily builds.

El resto ojear esta página.

¡FreeCAD-Ship ya está en los paquetes autoinstalables!

FreeCAD-Ship fue oficialmente integrado en FreeCAD hace algunos meses, tal y como anunciaba en este otro post, pero ahora está presente en los paquetes autoinstalables.

FreeCAD-Ship lleva funcionando algunas semanas en la paquetería de Linux, y más concretamente en el daily build, donde podeís encontrar los repositorios y las instrucciones para instalar FreeCAD-Ship en distribuciones Linux derivadas de Debian.

La novedad es que desde hace unas horas los paquetes autoinstalables Windows ¡también traen FreeCAD-Ship!

Podeis encontrar los instaladores aquí (por supuesto instalar el más reciente).

Lamentablemente, y como cabría esperar, FreeCAD-Ship tiene dos problemas:

  • El paquete autoinstalable emplaza los iconos en una carpeta con nombre equivocado, y por tanto hay que renombrarla manualmente.
  • FreeCAD-Ship requiere, para pintar los gráficos, de pyxplot, que en la actualidad no dispone de paquetes para Windows.

Ambos problemas son culpa mía, y ambos serán solucionados lo antes posible. Pero hasta entonces he actualizado los tutoriales (1 y 2) añadiendo comentarios sobre como se puede evadir el problema.

¡A disfrutarlo!

HydrOCL, un módulo para Hydrax acelerado con OpenCL

Dentro del plan de renovación de SonSilentSea he desarrollado un modulo para Hydrax que básicamente tiene la peculiaridad de estar acelerado con OpenCL. Lo cierto es que en un Hardware convencional, si se emplea Hydrax de un modo liviano, la implementación de OpenCL no aporta un gran valor, pero lo cierto es que con el activo se puede aumentar la complejidad de la escena sin por ello perjudicar notablemente los FPS. Esto es especialmente notable cuando se emplean olas, puesto que el módulo que desarrolle hace ya tiempo en Hydrax-0.5.4 sufría de forma notable cuando el número de olas superaba 4 o 5, ahora se pueden añadir hasta 20 sin problemas. Habrá que ver que ocurre con los puntos de presión.

Más información aquí:

http://www.ogre3d.org/forums/viewtopic.php?f=11&t=69924

FreeCAD-Ship esta siendo rediseñado

Mejor ahora que en un tiempo, cuando haya más trabajo realizado.

FreeCAD-Ship se está rediseñando al completo. El objetivo principal es ajustar el módulo a los criterios de FreeCAD para que sea también oficialmente integrado cuando llegue el momento.

La lista de cambios:

  1. Ya no existen palabras reservadas. FreeCAD-Ship trabajara a partir de ahora con las entidades seleccionadas, y si la entidad no es de un tipo admisible la herramienta no se abrirá y se mostrará el error.
  2. Ahora se pueden emplear tantos barcos como se quiera simultáneamente
  3. ShipData se ha renombrado como CreateShip.
  4. Cuando se crea un barco nuevo aparecen anotaciones en pantalla para ayudar en la tarea.
  5. El proceso de discretizado de la geometría ha sido añadido a CreateShip.
  6. Se revoca el soporte a antiguas versiones de FreeCAD.
  7. Se han arreglado algunos errores relacionados con los permisos al instalar el software.
  8. El objeto antiguamente llamado Instance se llama ahora Ship.
  9. Se añade un icono al objeto Ship
  10. Se mueven las herramientas desde diálogos independientes al Task Panel (menos invasivo).
  11. Se rediseña completamente la herramienta de trazado de planos de formas.
  12. Se aceleran los procesos de discretizado de la geometría y de creación de plano de formas.

La consecuencia negativa es la inevitable regresión del modulo, que ahora sólo tiene las herramientas de creación de superficies y de trazado de planos de formas. Pero espero recuperar el antiguo estado de la herramienta pronto (y espero que merezca la pena este esfuerzo).

FreeCAD-Ship Surfaces será oficialmente integrado.

Estoy de enhorabuena porque las herramientas desarrolladas para trabajar con superficies van a ser oficialmente integradas.

Las herramientas por ahora son:

  1. Extraer borde de una superficie
  2. Extraer ISO curva de una superficie
  3. Obtener sección de una superficie con un plano coordinado.
  4. Convertir superficie en superficie de 4 lados (aun no es capaz de trabajar con superficies cortadas).

Herramientas para superficies en FreeCAD-Ship

FreeCAD-Ship va a necesitar de algunas herramientas de las que FreeCAD adolece, y por ello voy a tratar de desarrollarlas como parte de mi modulo, y que se integren posteriormente en FreeCAD si es necesario.

Por ahora se trata de tres herramientas:

Extraer ISO curva

A partir de un parámetro UV (entre 0 y 1) y la dirección (U o V) se trata de extraer la curva que conforma la superficie. Actualmente esta curva se puede obtener desde un punto seleccionado con el ratón, pero no se emplea Snap por ahora.

Extraer borde

Se extrae el borde de la superficie como una única entidad divisible en cada uno de los edges que la componen. En este caso tan sólo es necesario tener seleccionada la superficie (o conjunto de ellas). El desarrollo de esta herramienta ha sido completado.

Convertir imagen

A partir de una superficie (o conjunto de ellas), y cuatro curvas (que deben formar una curva cerrada) se genera una nueva superficie. Ésta nueva superficie se obtiene tomando nU punto en la dirección U, y nV puntos en la dirección V. El contorno estará conformado por puntos tomados del borde, y el resto se tomarán de la superficie. El desarrollo de ésta herramienta acaba de comenzar.