AutoCad - Auto ejecutar LSP despues de cerrar un archivo

 
Vista:

Auto ejecutar LSP despues de cerrar un archivo

Publicado por ldiegoquiros (1 intervención) el 11/03/2016 14:53:46
he creado una rutina para hacer un BIND con ciertas características especificas antes de salvar y cerrar. Pero necesitaría adicionalmente se auto-ejecute en TODOS los archivos abiertos, hasta que finalmente se cierren todos. y se desactive la rutina.
Me suena sencillo pero no conozco la forma de mantener la rutina ejecutándose N veces luego de cerrarse el archivo.

gracias por la ayuda
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

Auto ejecutar LSP despues de cerrar un archivo

Publicado por Gerardo (986 intervenciones) el 13/03/2016 00:47:13
No se a que te refieres con "ciertas caracteristicas especificas" pero si que ese tipo de procedimientos es mejor tratar de realizarlos ya sea sin tener los archivos abiertos o sin cerrarlos si estan abiertos. Esto por la logica de las rutinas que se cargan sobre el mismo dwg abierto y no terminan de forma natural si cierran el archivo desde el mismo codigo de la rutina. El problema es que al cerrar el archivo la rutina sufre un corte y no manda notificcacion de terminacion correcta al invocador, y si el invocador es otra rutina pues no va a saber que hacer

Si no es algo que puedas solucionar con el comando etransmit, poniendo tus caracteristicas en el transmital setup (que lo puedes crear desde rutina escribiendolo directamente en el registro de windows), que seria lo mas simple, pues quizas creando un dbx en el que selecciones la carpeta o los archivos desde una lista y el cad los abra, haga los cambios y los cierre.

Otra opcion es con algun programa tipo "autoscript" que el mismo abre los archivos los modifica y los cierra.

Si insistes en que tiene que ser con los archivos abiertos, pues se me ocurren dos cosas. Una es usar vl-load-all para cargar la rutina en todos los archivos abiertos. Desde luego que si cortas en seco con un close habra error y la rutina invocadora no pasara del primer archivo al segundo, pero le puedes poner un codigo de control de errores o usar la rutina invocado como "puente" o algo asi hacia otra rutina y que el error se quede en el puente y no llegue al invocador del vl-load-all

Lo otro es exactamente lo que estas proponiendo en tu consulta, aunque es mas sencillo si lo controlas desde antes de abrir los archivos. Deben haber mil formas de resolverlo. Una que se me ocurre ahora es que el lisp que invocas no realice directamente las acciones sino que cree un lisp temporal que se cargue en autoload o un acad.lsp que se ejecute solo al abrir cada archivo que por ejemplo al cargarse defina una funcion que terminara por guardar y cerrar el dwg, pero hasta despuesde que se borre a si mismo (el lsp) . Asi para el proximo archivo ya no se ejecutara. O bien, un contador en algun archivo de texto o en el registro que se vaya decrementando y al llegar a cero borre el lsp.

Como ves hay tantas opciones como generica es tu pregunta. Si quieres algo mas especifico puedes subir el codigo que llevas y explicar que quieres que realice exactamente para ayudarte con ideas sobre tu proceso exacto

Por cierto en este tipo de rutinas trata de no usar para nada command ni vl-cmdf porque el procesador de comandos es un recurso cedido al archivo en primer plano y el cad se atonta enviando comandos a otros archivos que no son el que esta corriendo la rutina


Suerte
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