Diapositiva 1 - Cafes de CIMNE

Anuncio
Café de CIMNE
Curso en creación de 'problem types'
de GiD y detalles de personalización
Enrique Escolano
3 Marzo 2013
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
¿Que es un ‘problemtype’ de GiD?
GiD es un pre/postproceso neutro, se adapta a un
programa de cálculo mediante una colección de
ficheros, denominado ‘problemtype’
Información:
•Help->GiD Customization (manual de referencia)
•Help->GiD Tutorials->Defining a problemtype (ejemplo)
Clásico
•
•
•
•
•
•
•
•
.mat: materiales
.prb: datos generales
.cnd: condiciones
.tcl: scripts Tcl
.bas: plantilla/s escritura
.bat: ejecución cálculo
.sim: iconos (condiciones)
.xml: declaraciones
Información:
•Help->GiD Customization & Tutorials
•Carpeta \problemtypes (ejemplos)
CompassLib
• Librería desarrollada por Compass IS www.compassis.com
• Cambio filosófico: una propiedad no se asigna
directamente a entidades, sino a un grupo.
• Visualmente hay un árbol con toda la información
• Se define todo en un fichero xml, y los datos los
maneja la librería con Tcl y los guarda en su
propio fichero .spd
• Escribe el fichero de cálculo con Tcl
• Comercial, gratuito para uso académico
Información:
• www.gidhome.com/news/gid-conf/gid-convention-2012 (curso)
•problemtypes\Examples\cmas2d_CompassLIB.gid (ejemplo)
Problemtypes Compack y Kratos
Compack:
•
Salva y lee los datos de su fichero .spd xml, los guarda
en ‘arrays’ Tcl, no en objetos ‘dom’ de xml
• Sus ventanas están especializadas, no son genéricas.
• No visualiza y manipula los datos desde un árbol
Kratos:
• Es análogo a CompassLib, lee/salva su .spd xml, y
mantiene en memoria el ‘dom’ de xml
• Muestra un árbol para editar los datos
• Usa ‘grupos nativos’ de GiD, en vez de ‘condiciones’
Información:
• www.quantech.es
•www.cimne.com/Kratos
Grupos
Colección de entidades, a diferencia de las capas una
entidad puede pertenecer a varios grupos
• CompassLIB usa condiciones como ‘pseudo-grupos’
• Los ‘grupos nativos’ no dependen del problemtype
• Hay nuevas funciones especializadas para
manipularlos: creación, asignación de entidades,
lectura/escritura, acceso desde Tcl y .bas
• Se pueden definir condiciones ‘over group’
• GiD se encarga de la lectura/escritura
Información:
• Help->GiD Customization
•Carpeta \templates\Dump.bas (plantilla .bas que ‘vuelca todo’)
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Lenguaje Tcl/Tk
• Tcl (Tool Command Language) es un lenguaje
interpretado, Tk (Tool Kit) es una librería
adicional para crear interfaces gráficas.
• Es multiplataforma y código abierto
• En GiD el interprete Tcl está compilado dentro del
propio programa, no es un interprete
independiente que evalúe un fichero script.
Información:
es.wikipedia.org/wiki/Tcl (descripción básica y enlaces)
Distribución de ‘Active Tcl’
• Active State es una compañía que distribuye
compilaciones de lenguajes como Tcl o Python.
• Hay una versión gratuíta “ActiveTcl community
edition”. Version actual: 8.6 (diciembre 2012)
• “tclsh”: interprete Tcl, programa de consola
• “wish”: incorpora tambien Tk, abre su propia ventana
de consola (ficheros.tcl se asocian con él)
• “tkcon”: script que mejora un poco la consola wish
• Documentación de ayuda del lenguaje
• Colección de Demos simples de Tk
Información:
•www.activestate.com/activetcl (descarga de instalador Tcl)
Sintáxis Tcl
Tcl Built-In Commands • Input and Output
• Packages and Source
• String Handling
files
• List Handling
• Interpreter Routines
• Dictionary Handling
• Library Procedures
• Math
• System Related
• Control Constructs
• Platform-specific
• Variables and Procedures
Información:
•www6.uniovi.es/tcl/tutorial (tutorial Tcl/Tk en Español)
•www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html (tutorial Tcl solo, en inglés)
•Ayuda de ActiveTcl (manual de referencia y ejemplos de código Tk)
•www.beedub.com/book (libro ‘Practical programming in Tcl and Tk”)
Sintáxis Tk
Tk Built-In Commands
• Geometry management
• General
• Resources and Options • Events and bindings
• Inter-client
• Widgets *
Communication
• Themed Widgets
• Dialogs and toplevels
* Un ‘widget’ es un objeto gráfico de Tk (un botón, un menu, etc)
Información:
•www6.uniovi.es/tcl/tutorial (tutorial Tcl/Tk en Español)
•Ayuda de ActiveTcl (manual de referencia y ejemplos de código Tk)
•www.beedub.com/book (libro ‘Practical programming in Tcl and Tk”)
RamDebugger
• RamDebugger es un entorno de desarrollo (IDE) para Tcl
• Está escrito en puro tcl, puede usarse:
• Abriendolo desde GiD (F12) o Data->Problemtype->Debugger
• con wish cargando el package (está en \scripts\ramdebugger)
• como ejecutable independiente (descargado desde COMPASS)
• Proporciona:
• Editor especializado de Tcl: colorea comandos, indenta el código
• Depuración: (F5) se pueden poner paradas (F9), y ver variables
• Ayuda html contextual (F1 sobre un comando)
Información:
•www.compassis.com/ramdebugger (descarga)
Comandos Tcl de GiD
• GiD_Process: envío a la cola de comandos de GiD
• GiD_Info: obtención de datos de GiD
• Eventos: procedimientos lanzados
automáticamente: InitGIDProject, etc.
• Comandos especializados: GiD_Geometry,
GiD_Mesh, GiD_Assigndata,GiD_Result,
GiD_Graph, GiD_Opengl, GiD_Set, etc. Sin pasar
por “process”
Información:
•Help->GiD Customization->Tcl and Tk extension
•www.gidhome.com/news/gid-conf/gid-conference-2004 (capítulo 8)
•www.gidhome.com/news/gid-conf/gid-conference-2002 (capítulo 3)
Procedimientos Tcl de GiD
Fichero \scripts\dev_kit.tcl
• Manejo de menus: GiDMenu::Create, …
• GidUtils: interacción con GiD:
•
•
•
•
•
•
•
•
•
Seleccionar entidades
Desactivar redibujado
Mostrar un mensaje en la barra de mensajes
Crear una barra de avance
Mostrar una ventana de ‘splash’
Obtener un nombre de fichero temporal
Ocultar barras de herramientas
Procedimientos predefinidos para casos típicos de “tkwidget”
Sintaxis de ventana de dialogo común de selección de ficheros
Información:
•Help->GiD Customization->Tcl and Tk extension
Packages Tcl interesantes
Librerías Tcl, ubicadas en subcarpetas de \scripts
• Tdom : xml, C
• Hdf5: ‘wrapper’ básico de librería HDF5 (similar a xml pero binario:
eficiente para volumen de datos elevado), C++
• Tcllib: colección de pequeñas utilidades sin Tk (ftp, encriptación,
cálculo numérico, etc), puro Tcl.
• Tklib: colección de pequeñas utilidades Tk (plotchart: dibujo de
gráficas, etc), puro Tcl
• Treectrl:’widget’ de árbol y tabla, C.
• Tktable: ‘widget’ de tabla, C
• Tablelist: ‘widget’ de tabla, puro Tcl.
• Vtk: ‘wrapper’ de la librería vtk, usado para importación de resultados
en este formato, C++
Información:
•Ayuda de ActiveTcl
•Documentación en la carpeta del package y su web
Crear nuevos comandos Tcl en C
Tcl está programado en C, y es extendible
implementando nuevos comandos en C/C++
• Se puede implementar como package en una
librería dinámica dll/so cargable con el comando
‘load’
• Una aplicación como GiD puede incluir dentro su
propio interprete y controlarse el flujo con
comandos tcl, y crear su interfaz con Tk. El
trabajo duro se hace por debajo en C.
Información:
•www.beedub.com/book/3rd/Cprogint.pdf (capítulo libro)
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Macros
La barra de herramientas de macros da fácil acceso
desde un botón o tecla a un procedimiento Tcl
Inicialmente se crea de
scripts\toolbarmacros_defaults.tcl
Cada usuario guarda su propia copia modificada
Plug-ins
Hay dos mecanismos completamente distintos:
1. Plug-in Tcl: carga un ficheroTcl, independiente del
problemtype y sin modificar los scripts de GiD.
El código puede hacer lo que quiera.
Ejemplos: importación Vtk, GDAL, Star-CD, exportación ‘Google Earth’
2. Plug-in libreria dinámica de GiD: carga dll/so, para
una tarea predefinida, con una interfaz dada.
Ejemplos: importación en post de ficheros off, ply y obj.
Una carpeta ‘x’ dentro \plugins, si contiene un fichero
’x’.tcl o ‘x’.dll/so, se cargará al inicio.
Información:
•Help->GiD Customization->Plug-in extensions
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Resultados de GiD y GiDPost
Un problemtype típicamente involucra a un programa de
cálculo, cuyos resultados quieren ser visualizados en post
Deben escribirse en un formato aceptado: GiD results
• Escritura directa del formato ASCII
• Mediante la librería ‘GiDPost’, con un ‘flag’ se puede escribir
ASCII, binario comprimido y próximamente en HDF5 (se
proporciona código fuente en C, puede enlazarse con
programas C/C++ o FORTRAN)
Los resultados se cargan automáticamente al pasar a post si
tienen extensión .post.res o .post.lst (un listado de múltiples
ficheros)
Información:
•www.gidhome.com/gid-plus/tools/gidpost (descarga gidpost)
•Help->GiD Customization->Postprocess data files
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Traducción y RamTranslator
Un problemtype o plug-in ‘serio’ debe estar preparado para ser
multilingüe.
El texto del código fuente debe ser en inglés, que es ASCII
Las ‘frases’ visibles en la interfaz de GiD se obtienen en tiempo
de ejecución con un prodimiento Tcl llamado _
Las ‘frases’ de problemtypes se obtienen con otro llamado =
• RamTranslator es una aplicación auxiliar que escanea el
código fuente C/C++/Tcl y extrae estas frases a una tabla
• Puede obtenerse una pre-traducción automática de una web
• Cada lenguaje tiene su catalogo: es.msg, ja.msg (en
scripts\msgs para GiD y \msgs para el problemtype)
Información:
•www.gidhome.com/gid-plus/tools/ramtranslator (descarga)
•www.gidhome.com/news/gid-conf/gid-conference-2004 (capítulo 10)
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Ayuda y Lognoter
Un ‘problemtype’ debería incluir su propia ayuda
• GiD proporciona el ‘package helpviewer’, para mostrar
ayuda en formato html (mediante el ‘widget’ Tkhtml)
• Conviene estructurarlo con una subcarpeta por idioma,
denotado por dos letras estandarizadas (en=inglés, es=español,..)
Edición de la ayuda: ‘Lognoter’, desarrollado por Compass
• Documento organizado en páginas, con texto e imágenes
• Exportación a html, pdf o Word (xml)
• Almacenamiento en base de datos local o remota (MySql)
• Similar a una ‘wiki’, pero con GUI especializada.
Información:
•Help->GiD Customization->Html help support
•www.lognoter.com (descarga)
Índice
• ¿Que es un ‘problemtype’ de GiD?
• Clásico
• CompassLib, libreria de Kratos y grupos
• Lenguaje Tcl/Tk
•
•
•
•
•
•
•
•
•
•
Distribución de ‘Active Tcl’
Sintaxis Tcl y Tk
RamDebugger
Comandos y procedimientos Tcl de GiD
Packages y creación de comandos en C
Macros y Plug-ins de GiD
Resultados de GiD y GiDPost
Traducción y RamTranslator
Ayuda y Lognoter
Protección: Verifp y PasServer
Protección: Verifp y PasServer
Los programas de cálculo comerciales usualmente son
protegidos para evitar su uso no autorizado.
‘Verifp’ es una librería C++ desarrollada para GiD y los
problemtypes de CIMNE, con estas posibilidades:
• Contraseña local: usa un identificador del ordenador
• Contraseña USB: usa un identificador de un ‘memory stick’
• Contraseña flotante, obtenido de un servidor donde está
ejecutándose ‘PasServer’, nuestro programa servidor
• Las Contraseñas pueden ser temporales (caducan)
• Enlazable en programas C/C++/FORTRAN/Tcl
Nota: se distribuye la librería compilada, no el código fuente
Información:
•www.gidhome.com/gid-plus/tools/passerver (descarga)
Lenguaje Tcl/Tk
Fin de la presentación
Gracias por la atención
Información:
•http://wiki.tcl.tk (wiki con multitud de consejos y trucos)
•http://www.tcl.tk
Descargar