AutoCad - Programacion Autolisp cuadros de dialogo

 
Vista:
sin imagen de perfil

Programacion Autolisp cuadros de dialogo

Publicado por Pavel (1 intervención) el 16/02/2018 22:11:08
Hola alguien que me ayude con un problema que tengo, he creado un cuadro de dialogo DCL y lo llamo a traves de un programa en Lisp, pero aparece en un lugar de la pantalla que no deseo, como podria hacer para que aparesca en un lugar que no estorbe y lo pueda visualizar en todo momento?
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.285
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Programacion Autolisp cuadros de dialogo

Publicado por Gerardo (986 intervenciones) el 20/02/2018 16:44:03
El cuarto argumento de la función new_dialog es un punto en la pantalla donde se ubicará la esquina superior izquierda de tu dialogo

Si estas llamando con algo asi:

(new_dialog "TUDIALOGO" ID )

utiliza esto:

(new_dialog "TUDIALOGO" ID "" punto )

Si punto es '(-1 -1) el autocad calculará la posicion centrada del dialogo en la pantalla

La función done_dialog retorna las coordenadas de la posicion que tiene el dialogo al momento de cerrarlo, así que lo único que debes hacer para que un diálogo se abra de nuevo donde se cerro la ultima vez es guardar el valor que retorna done_dialog para pasarselo como cuarto argumento a new_dialog

Eso si, debes tener cuidado de no poner unidades arbitrarias porque como hay variedad de resoluciones de monitores y equipos multipantalla puedes abrirlo fuera del area visible. Es mejor que almacenes las ultimas coordenadas donde estuvo el dialogo, ya sea en un archivo de texto, en el registro de windows (así lo trabaja el propio autocad con algunos de sus dialogos) o en una variable global (esto implicaría de que la primera vez que lo uses en cada sesion aparecera en el centro y debas acomodarlo y de ahi en adelante cada vez que lo invoques de nuevo dentro de esa misma sesion aparecerá donde lo cerraste)

Entonces cada vez que tu funcion lisp se apresta a crear el dialogo con newdialog debes traer a una variable las coordenadas guardadas, y si no existen dichas coordenadas (porque no hay un uso anterior del dialogo todavia) darle un valor por defecto de '(-1 -1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis
Val: 27
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Programacion Autolisp cuadros de dialogo

Publicado por Luis (11 intervenciones) el 23/02/2018 13:33:21
Muy buena explicacion GERARDO.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar