Linea de comandos o rutina lisp que permita abrir directorios o carpetas

Linea de comandos o rutina lisp que permita abrir directorios o carpetas

Anonymous
Not applicable
2,826 Views
6 Replies
Message 1 of 7

Linea de comandos o rutina lisp que permita abrir directorios o carpetas

Anonymous
Not applicable

Buenos días a todos. He gastado 2 días buscando y buscando y no he encontrado solución a mi problema.

 

Quiero crear un menú desplegable y sencillo que al hacer "click" en la opción deseada, autocad, abra el directorio que yo le indique. He conseguido mediante el comando "shell" abrir archivos.dwg pero no consigo que ese comando o el comando "open" abra un directorio concreto para seleccionar dentro los archivos.dwg que yo quiero abrir.

 

Aquí dejo un ejemplo sencillo a modo de aclaración de lo que me gustaría hacer y que yo sé que no funciona:

 

__________________________________________

***menugroup=BIBLIOTECA_PHB

***POP1
[BIBLIOTECA_PHB]
[->CINTAS/ESTRUCTURAS]
[->CINTAS_NORMALES]
[B_0650]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_NORMALES/B_0650
[B_1000]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_NORMALES/B_1000
[<-B_2200]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_NORMALES/B_2200
[->CINTAS_MOVILES]
[B_0650]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_MOVILES/B_0650
[B_1000]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_MOVILES/B_1000
[<-B_2200]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_MOVILES/B_2200
[->CINTAS_EXTRACTORAS]
[B_0650]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_EXTRACTORAS/B_0650
[B_1000]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_EXTRACTORAS/B_1000
[<-B_2200]^C^CS_open C:/Users/antoniojose.moreno/Documents/Trabajo/CINTAS/CINTAS_EXTRACTORAS/B_2200
[--]

_________________________________

 

ESPERO PUEDAN AYUDARME, bien mediante una linea de comandos escrita correctamente o una rutina lisp de autocad que pueda relacionar con el menú personalizado y donde pueda introducir los directorios deseados.

 

Gracias y un saludo.

0 Likes
Accepted solutions (2)
2,827 Views
6 Replies
Replies (6)
Message 2 of 7

edwinvezga
Contributor
Contributor

Hay varias formas de conseguir lo que quieres, pero creo que lo mas fácil es arrastrar la carpeta deseada al lado izquierdo de la caja de dialogo "OPEN". Mira la imagen adjunta.

 

Si no es eso lo que quieres, puedes usar el comando lisp (getfiled title default ext flags), donde en title vas a poner el titulo que quieres que tenga la caja de dialogo, en default vas a poner la ruta del directorio cerrado entre comillas, en ext vas a colocar "dwg" para que muestre solo los archivos con esa extensión y en flags pones 8 para que haga una busqueda.

 

ejemplo:

(getfiled "prueba" "C:/Users/PA400217/Documents" "dwg" 😎 

Message 3 of 7

edwinvezga
Contributor
Contributor

al final no va 😎 eso lo coloca la pagina web por defecto al colocar un 8 junto a un ). Al fina va 8).

Message 4 of 7

Anonymous
Not applicable

Muchas muchas gracias, 

Lo primero que expones no me sirve porque yo puse un ejemplo muy simple pero yo tengo que hacerlo para muchos directorios. 

Lo segundo que me indicas mediante el comando lisp SI QUE ME SIRVE !! es justo lo que necesitaba para poder aportar utilidad al menú personalizado que voy a hacer.

Soy muy novato en esto de personalizar cosas del Autocad, asique estoy muy agradecido de haber recibido ayuda tan rápido. Nuevamente muchas gracias.

 

Saludos.

0 Likes
Message 5 of 7

Anonymous
Not applicable

Buenos días, dije que estaba solucionado demasiado rápido, lo siento.

Lo que sucede ahora es que si yo hago click en el botón "abrir" del cuadro de diálogo no me abre el archivo.dwg seleccionado ( lo que sucede es que se muestra el nombre del archivo en la ventana de comandos) .

Para abrir el archivo.dwg localizado tengo hacer "click derecho" en el archivo.dwg , seleccionar "abrir" y por último cancelar el cuadro de diálogo. Dejo un vídeo que he subido a youtube para que se entienda mejor mi caso.

 

En el archivo.mnu de mi menú personalizado, tengo escrito la linea de comandos así:

 

[--]
[PRUEBA_ABRE_CARPETA]^C^C(getfiled "PRUEBA" "C:/Users/antoniojose.moreno/Documents/Trabajo/" "dwg" 8);
[--]

 

https://youtu.be/EYRcp7giekk

 

 

Ojalá podamos encontrar solución a esto.

 

Un saludo y gracias

0 Likes
Message 6 of 7

edwinvezga
Contributor
Contributor
Accepted solution

Ya tienes la ruta de la carpeta, la que pones en getfiled, y este te devuelve el nombre del archivo. Ahora debes concatenarlo con strcat asi..

(strcat "ruta de carpeta" "archivo")

 

luego debes usar el comando "fileopen", te dejo un ejemplo

 

(setq archivo (getfiled "titulo de caja" "C:/Users/PA400217/Documents/" "dwg" 8))
(setq ruta (strcat "C:/Users/PA400217/Documents/" archivo))
(command "fileopen" ruta)

 

Espero te funcione.

0 Likes
Message 7 of 7

Anonymous
Not applicable
Accepted solution

Hola muchas gracias por responder.

 

Tal cual me lo indicaste no me funcionaba, pero me diste buenas ideas, busqué información de cada comando que pusiste para entender como funcionan y logré hacerlo ( no tengo conocimientos sobre programación de cad, para mi ha sido todo un reto ). Te explico:

 

Esto no me funcionaba:

"(setq archivo (getfiled "titulo de caja" "C:/Users/antoniojose.moreno/Documents/Trabajo/" "dwg" 8)) 
(setq ruta (strcat "C:/Users/antoniojose.moreno/Documents/Trabajo/" archivo)) 
(comando "fileopen "ruta)"

 

Primeramente me salia error al usar "CARGARMENU" me decía que no se podía cargar, supongo que fue por separar cada línea de comandos en un salto de linea diferente. Al ponerlo todo seguido o al poner al final de cada linea el símbolo (+) se solucionó. Después me decía que el comando "fileopen" no existía o era desconocido... probé cambiándolo por "-fileopen", "_fileopen" y no tuve solución. Encontré un comando alternativo "ABREARCH" CON EL QUE SI FUNCIONABA pero tenia el problema que pedía trabajar con "SDI" en 1 ( tuve que investigar que era eso) a mi no me servía poder tener abierto sólo un dibujo de cada vez... yo estaba ya desesperado. Pero recordé  que hay un comando llamado SHELL que escribiendo la ruta exacta te abre el dibujo en una nueva pestaña y no te hace cerrar el dibujo actual. Asique sumando todo mi "BOTON" del menú quedó asi:

 

[--]
[ABRIR_CARPETA]^C^C(setq archivo (getfiled "PRUEBA" "C:/Users/antoniojose.moreno/Documents/Trabajo/" "dwg" 8))+
(setq ruta (strcat "C:/Users/antoniojose.moreno/Documents/Trabajo/" archivo))+
(command "SHELL" ruta);
[--]

 

Y por fin me ha funcionado todo !!!! muchas gracias.  

No se si hay alguna forma de simplificar más esto y que funcione teniendo que escribir menos cosas... pero de momento así como está me sirve para ir trabajando en la creación de mi menú.

 

Muchas gracias

 

0 Likes