AutoCad - Rutinas Lisp desde VBA

 
Vista:

Rutinas Lisp desde VBA

Publicado por Nito (1 intervención) el 25/09/2002 20:08:25
Hola amigos!
Estoy haciendo una aplicación VB para AutoCad. Se trata de una pantalla en la cual se muestran una serie de comandos. Lo que quiero, es que al seleccionar uno, se ejecute el mismo (se trata de comandos programados en Lisp) y una vez terminado se vuelva a activar la ventana para de VB para poder seleccionar otro.
Ya conseguí lanzar los comandos lisp desde la ventana de VB, pero el problema que tengo, es que una vez ejecutado uno se queda como activa la ventana de AutoCad, y lo que quiero es que retorne automáticamente a la ventana de VB.

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

RE:Rutinas Lisp desde VBA

Publicado por SpeedCAD (367 intervenciones) el 25/09/2002 20:54:30
Hola...

Mira despues de que ejecutes el comando de AutoLISP pon que aparzca la ventana de VB (o el formulario)... por ejemplo

Form1.show

Y deberia mostrartelo, yo lo hago asi claro que no ejecuto una rutina lisp si no que dibujo directamente desde VB...

Espero te sirva...

Un saludo de SpeedCAD... :-)
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

Rutinas Lisp desde VBA

Publicado por zakk (1 intervención) el 07/11/2019 00:25:16
Hola, buena tarde, podrías mostrarme tu código de vba para poder ayudarte.
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
sin imagen de perfil
Val: 1.408
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Rutinas Lisp desde VBA

Publicado por Gerardo (720 intervenciones) el 08/11/2019 21:32:00
¿será que 17 años después de la consulta aún esté necesitando ayuda?

Más que el VBA ya está muy obsoleto
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
sin imagen de perfil
Val: 32
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Rutinas Lisp desde VBA

Publicado por Audad (26 intervenciones) el 30/12/2019 17:00:24
Gerardo... un saludo...
Me interesa despues de los 17 años... creo que aun... es un problema vigente...
como lo resolverias... ?
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
sin imagen de perfil
Val: 1.408
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Rutinas Lisp desde VBA

Publicado por Gerardo (720 intervenciones) el 30/12/2019 21:32:22
No le recomendaría a nadie desarrollar en VBA, que está descontinuado hace muchos años, pero supongamos que ya tienes las rutinas en autolisp y solo sabes programar en vba.

Luego, la respuesta más lógica es simplemente que se ocultó el diálogo y la solución ya la dio Speedcad, mostrarlo de nuevo con un show. Así que si eso no funciona supondremos que hay un bug o comportamiento inesperado que corregir en la lógica del programa

En ese caso, la respuesta en realidad puede ser muy amplia. Habría que ver los códigos para comprender que es lo que está pasando. Además con sinceridad nunca he interactuado entre los dos lenguajes, así que te hablo desde el conocimiento teórico, sin experiencia, aunque si tienes un código de ejemplo podemos hacer las pruebas del caso

Básicamente las rutinas en autolisp se comportan como módulos VBA, cuando las invocas van a realizar un proceso, a retornar un valor de respuesta y devolverle el control a quien las invoca. En este caso a la rutina VBA.

Siempre es un juego de pasarse el control. Para que suceda un problema así se me ocurre que tiene que pasar una de dos cosas: un error (por ejemplo que el usuario presione escape durante su interacción con la rutina - lo cual se corrige con una función de manejo de errores que retorne al programa invocador) o que la rutina lisp que recibió el control desde el VBA se lo ceda a la vez a un tercer elemento (como el command de AutoCad), porque en este último caso perdemos el control, que sale del evaluador lisp y cada comando tiene sus particularidades.

En mi caso tengo por norma, salvo casos extremos, no usar las funciones "command" y "vl-cmdf" de autolisp, que son las únicas que ceden el control al sistema de comandos. Cuando tengo que dibujar o editar lo hago directamente en la base de datos.
De nuevo supongamos que es inevitable que uses un command en una rutina. Además del manejo de errores para atajar cualquier "escape" o la prohibición al usuario de aplicarlo, podríamos agregar a las rutinas una llamada de vuelta al módulo de vba que la invocó. Sería algo parecido a cuando sales de un cuadro de diálogo en DCL para que el usuario interactúe en la pantalla y luego debes volver: respaldar variables, salir de una rutina llamando a la otra, y al final de esta otra llamar a la anterior y restaurar en ella las variables respaldadas.

No sé si te es de ayuda. Si tienes algún caso que no aplica nada de esto te ofrezco que revisemos tu código para detectar el problema e idear la solución

Saludos y feliz 2020
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
sin imagen de perfil
Val: 32
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Rutinas Lisp desde VBA

Publicado por CoquitoPE (26 intervenciones) el 31/12/2019 04:35:46
Gerardo... un saludo con admiración y agradecimiento a tu disposición permanente al foro...
me ayudaste en esto.:

https://www.lawebdelprogramador.com/foros/AutoCad/1441140-Coordenadas-de-Click.html

Se me quemo el disco duro... no llevo registros... y tengo necesidad de esa solución...
lamento no haber estudiado LISP... sigo insistiendo en VBA... y resuelvo con ... script
por favor podrías actualizarme en la solucion que me proporcionaste...
Gracias.... igual un 2020 con los mejores deseos...
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