Chapter 2 – SWAT Model Development and Calibration for Perry Lake and Kanopolis Lake Watersheds
2.2 Methods
2.2.3 Model Parameterization
Se corresponde con el primer ejemplo que aparece en este MÓDULO (figura primera), el de control de variables de AutoCAD denominado Variables y que se encuentra en la página segunda de este MÓDULO DIEZ.
Existen numerosas variables de sistema de AutoCAD que, o bien no se encuentra definido ningún acceso directo a ellas en ningún cuadro de diálogo, o bien nos los encontramos dichos accesos desperdigados por entre los menús o botones de las barras de herramientas del programa. El cuadro que estudiaremos a continuación recoge una serie de estas variables, proporcionando un buen y rápido acceso a las mismas.
Análisis jerárquico :dialog |__ :row | |__ :boxed_column | | |__ :edit_box | | |__ :edit_box | | |__ spacer_1 | | |__ :button | |__ :boxed_column | |__ :edit_box | |__ :edit_box | |__ spacer_1 | |__ :toggle | |__ :button |__ :row | |__ :toggle |__ :row | |__ :toggle |__ :row |__ ok_cancel Código
//Archivo .DCL de control de variables de AutoCAD. variables:dialog {label="Variables"; :row { :boxed_column {label="Mallas"; :edit_box {label="SURFTAB&1";edit_width=3;edit_limit=3;key="Surf1";} :edit_box {label="SURFTAB&2";edit_width=3;edit_limit=3;key="Surf2";} spacer_1; :button {label="De&fecto";fixed_width=true;alignment=centered;key="Def1";} } :boxed_column {label="Sólidos"; :edit_box {label="Isolíneas";edit_width=2;edit_limit=2;key="Iso"; mnemonic="s";} :edit_box {label="Suavizado";edit_width=4;edit_limit=8;key="Suav"; mnemonic="v";} spacer_1; :toggle {label="Si&lueta";key="Sil";} :button {label="Defe&cto";fixed_width=true;alignment=centered;key="Def2";} } } spacer_1;
:row {:toggle {label="&Diálogo al imprimir";key="Dia";}} :row {:toggle {label="&Gestión de archivos";key="Ges";}} spacer_1;
:row {ok_cancel_help;} }
Explicación
Descubrimos aquí otro nuevo tile, :edit_box. :edit_box define una casilla de edición en la que el usuario introducirá datos, en este caso valores a las variables en cuestión. A estas casillas, entre otros, casi siempre les acompañan dos argumentos muy típicos para ellas, los cuales son edit_with y edit_limit. edit_with controla el tamaño físico de la casilla, o sea, el tamaño en caracteres que nosotros veremos en el letrero de diálogo. Pero, como sabemos, a veces el tamaño físico aparente poco tiene que ver con el número de caracteres que podemos introducir en una casilla.
Muchas veces, como decimos, una casilla tiene una longitud aparentemente pequeña y, sin embargo, debemos introducir en ella una cadena de caracteres extensa. Lo que ocurre es que, al llegar escribiendo al final aparente de la casilla, se produce un scroll o desplazamiento hacia la izquierda y, mientras se van escondiendo los primeros caracteres introducidos, podemos seguir escribiendo por la derecha hasta un tope. Este tope real de escritura es el que se controla mediante edit_limit, argumento también indicado en las casillas editables del ejemplo.
Un nuevo argumento que podemos observar es key. key define una palabra clave para cada elemento del cuadro que luego será utilizada desde AutoLISP para controlar dicho elemento. Todos los componentes que interactúan en un letrero de diálogo deben poseer un argumento key. Así, y después en AutoLISP, podremos indicar que “tal elemento con determinada key realice tal acción” al determinarse unas características concretas en la sesión actual de dibujo.
NOTA: Todo esto se estudiará en el MÓDULO siguiente, por ahora que quede afianzada
la idea.
Con respecto a la clave introducida en el atributo key, decir que se realiza distinción entre mayúsculas y minúsculas. Por ejemplo, si le damos una clave "Suav" a un tile y,
después, desde AutoLISP indicamos "suav", el elemento no será reconocido y no funcionará correctamente.
Examinemos ahora los elementos :button introducidos. Estos elemento definen botones que, al ser pulsados realizarán una determinada acción controlada desde AutoLISP. El argumento label indica el nombre que ocupará el espacio del botón. El argumento fixed_width, por su lado, indica si un elemento tiende o no a ocupar el espacio disponible. En este caso, si se establece como true, o no se establece (true es la opción predeterminada), el botón ocupará todo el espacio del que dispone de lado a lado de :boxed_column. El efecto no es muy atractivo —pruébese a quitarle dicho atributo o a declararlo como true— por lo que se suele establecer como false fixed_width en los botones de acción, lo que hace que el tamaño físico de los mismos se trunque con respecto al tamaño de texto que lleva dentro.
En el código que define este cuadro de diálogo podemos apreciar los caracteres & introducidos en las cadenas de etiquetas label. Estos caracteres funcionan de la misma manera que lo hacían en la definición de menús, vista en el MÓDULO UNO de este curso. Es decir, el carácter que sigue a & será una definición de tecla rápida o mnemotécnica (que aparecerá subrayada) la cual, con solo ser pulsada (o con ALT dependiendo del momento), hará acceder directamente al elemento que la lleve en su definición. Pero ojo, es una acceso rápido no una tecla de acción. Por ejemplo, los botones definidos que establecerían una configuración por defecto de las variables del cuadro, al pulsar una de las teclas mnemotécnicas que llevan implícitos serán designados (se dibuja una pequeña línea de puntos alrededor del texto) pero no pulsados. Para pulsarlos habría que presionar INTRO.
Las consideraciones que debemos observar a la hora de definir estas teclas son las mismas que en los menús. Por ejemplo, no podemos definir dos iguales en un mismo letrero (si existen dos iguales sólo funcionará la primera definida en el archivo .DCL o irán rotando), ni letras acentuadas, etcétera.
Otra forma de definir estas teclas mnemotécnicas es con el atributo mnemonic. Podemos ver un par de ejemplos en el código anterior (en las :edit_box Isolíneas y
Suavizado). mnemonic se hace igual a un carácter (si se indica más de uno únicamente se
toma el primero) que ha de corresponder con uno existente en el atributo label. Si no existe en la cadena de label dicho carácter, la definición será ignorada. Si existen dos caracteres iguales en label, se toma como válido el primero.
NOTA: Cuidado con los botones Ayuda e Info... que vienen con los caracteres “u” e “I”
predefinidos como teclas mnemotécnicas.
Por último decir que el tile predefinido ok_button_help, que muestra los tres botones correspondientes, está introducido dentro de la definición de una :row. Como sabemos esto no es necesario, pero se suele establecer así por mayor estructuración y claridad.
NOTA: En este cuadro de este último ejemplo existen un par de aspectos que
demuestran lo que nunca se debe hacer a la hora de diseñar un letrero de diálogo, y si queremos que resulte vistoso. No es que quede mal del todo, pero apréciese la falta de gusto al incluir más elementos en la :boxed_column de la derecha que en la de la izquierda. También apréciese lo desigual de las dos :edit_box de la :boxed_column derecha. Podían haberse hecho iguales limitando después su tamaño real mediante edit_limit.