mikarts Posted November 5, 2024 Posted November 5, 2024 Buenas tardes. La orden exportarpresentacion (_exportlayout) exporta una presentación cada vez. Estoy intentando hacer un lisp que exporte todas las presentaciones de un dwg, una por una. Funciona, pero me guarda los nuevos archivos en Documentos y no en la ruta que quiero, que es la del archivo. Adjunto el código, a ver si alguien me puede ayudar. ¡Gracias por vuestro tiempo! (defun c:exx (/) (setq actual (getvar "CTAB")) ;almacena el nombre de la presentación en la que estamos (setq presentaciones (layoutlist)) ;crea una lista con los nombres de las presentaciones (setq n 0) (while n (setq presentacion (nth n presentaciones)) ;toma la presentación n de la lista (if (/= presentacion nil) (progn (command "_.-layout" "d" presentacion) (command "_exportlayout" presentacion (strcat (getvar "dwgprefix") (cadr (fnsplitl (getvar 'dwgname))) " " (getvar "ctab") ".dwg") ) ; esto es lo que debería hacer que el nuevo dwg se guardase en la ruta del archivo abierto. (setq n (+ 1 n)) ) (setq n nil) ) ) (setvar "CTAB" actual) ;define como actual la presentación en la que estábamos trabajando al principio ) Quote
devitg Posted November 5, 2024 Posted November 5, 2024 (edited) 5 hours ago, mikarts said: Buenas tardes. La orden exportarpresentacion (_exportlayout) exporta una presentación cada vez. Estoy intentando hacer un lisp que exporte todas las presentaciones de un dwg, una por una. Funciona, pero me guarda los nuevos archivos en Documentos y no en la ruta que quiero, que es la del archivo. Adjunto el código, a ver si alguien me puede ayudar. ¡Gracias por vuestro tiempo! (defun c:exx (/) (setq actual (getvar "CTAB")) ;almacena el nombre de la presentación en la que estamos (setq presentaciones (layoutlist)) ;crea una lista con los nombres de las presentaciones (setq n 0) (while n (setq presentacion (nth n presentaciones)) ;toma la presentación n de la lista (if (/= presentacion nil) (progn (command "_.-layout" "d" presentacion) (command "_exportlayout" presentacion (strcat (getvar "dwgprefix") (cadr (fnsplitl (getvar 'dwgname))) " " (getvar "ctab") ".dwg") ) ; esto es lo que debería hacer que el nuevo dwg se guardase en la ruta del archivo abierto. (setq n (+ 1 n)) ) (setq n nil) ) ) (setvar "CTAB" actual) ;define como actual la presentación en la que estábamos trabajando al principio ) @mikarts Edited November 5, 2024 by devitg my error Quote
devitg Posted November 5, 2024 Posted November 5, 2024 (edited) 14 minutes ago, devitg said: @mikarts Edited November 5, 2024 by devitg my error Quote
devitg Posted November 5, 2024 Posted November 5, 2024 @mikarts Creo que esto puede funcionar (defun c:exx+devitg (/) (setq actual (getvar "CTAB")) ;almacena el nombre de la presentación en la que estamos (setq presentaciones (layoutlist)) ;crea una lista con los nombres de las presentaciones ;(setq n 0) ;(while n ; (setq presentacion (nth 2 presentaciones)) ;toma la presentación n de la lista ; (if (/= presentacion nil) ( FOREACH presentacion presentaciones (setvar 'ctab presentacion) ;(command "_.-layout" "_d" presentacion) (command "_exportlayout" (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) presentacion ) ;(getvar "ctab") ".dwg") ) ; esto es lo que debería hacer que el nuevo dwg se guardase en la ruta del archivo abierto. ;(setq n (+ 1 n)) ); fin del FOREACH ; (setq n nil) (setvar "CTAB" actual) ;define como actual la presentación en la que estábamos trabajando al principio ) Quote
ivaj Posted Friday at 08:07 AM Posted Friday at 08:07 AM Buenos días Me parece muy interesante, se pudiera colocar un guion en el archivo de DWG. Ejemplo: el Archivo de llama Tomo.dwg y tengo varias presentaciones, 001,002, etc. ya la hora de crear el archivo independiente de cada una de las presentaciones me crea un fichero Tomo001.dwg, Tomo002.dwg, etc. y en mi caso me haría falta que saliera Tomo-001.dwg, Tomo-002.dwg, etc. Quote
devitg Posted Saturday at 12:06 AM Posted Saturday at 12:06 AM 15 hours ago, ivaj said: Buenos días Me parece muy interesante, se pudiera colocar un guion en el archivo de DWG. Ejemplo: el Archivo de llama Tomo.dwg y tengo varias presentaciones, 001,002, etc. ya la hora de crear el archivo independiente de cada una de las presentaciones me crea un fichero Tomo001.dwg, Tomo002.dwg, etc. y en mi caso me haría falta que saliera Tomo-001.dwg, Tomo-002.dwg, etc. @ivaj Please upload tomo.dwg Quote
mikarts Posted Saturday at 03:38 AM Author Posted Saturday at 03:38 AM (edited) Hola. Contesto desde el móvil y sin probarlo, pero si no me equivoco bastaría con introducir el guión modificando esta parte del código así: (command "_exportlayout" (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) "-" presentacion ) ;(getvar "ctab") ".dwg") @ivaj Ya nos dices si te va. Edited Saturday at 03:41 AM by mikarts Mistake 1 Quote
ivaj Posted yesterday at 06:20 AM Posted yesterday at 06:20 AM Muchas gracias por intentar ayudarme, pero no funciona, lo he copiado literalmente y me sale. " Restituyendo las ventanas en memoria caché - Regenerando presentación. ; error: tipo de argumento erróneo: stringp nil " Quote
devitg Posted 22 hours ago Posted 22 hours ago 9 hours ago, ivaj said: Muchas gracias por intentar ayudarme, pero no funciona, lo he copiado literalmente y me sale. " Restituyendo las ventanas en memoria caché - Regenerando presentación. ; error: tipo de argumento erróneo: stringp nil " @ivaj Hola , ¿que cad tienes ? y si puedes subir el DWG , se puede analizar. Quote
BIGAL Posted 15 hours ago Posted 15 hours ago (edited) You are correct. change the value of presentacion. (strcat (getvar "dwgprefix") (vl-filename-base (getvar "dwgname")) "-" presentacion ) (setq num (getint "\nEnter start number ")) (cond ((< num 10)(setq presentacion (Strcat "00" (rtos num 2 0)))) ((< num 100)(setq presentacion (Strcat "0" (rtos num 2 0)))) ((>= num 100)(setq presentacion (rtos num 2 0))) ) (setq num (1+ num)) Edited 15 hours ago by BIGAL Quote
ivaj Posted 8 hours ago Posted 8 hours ago Buenos días, el autocad que tengo es el 2026, pertenece a mi empresa. Los planos que realizo son isométricas de tubería y cuando tengo que hacer una línea, pueden que salgan entre 4 hasta 35 planos de isométricas. Todos los planos los tengo en el modelo y me creo una presentación de cada isométrica, "Selecciono todas las presentaciones", ejecuto "publicar las presentaciones seleccionadas" y me crean PDF independientes, ejemplo: - Fichero de autocad "Tomo.dwg" y presentaciones 001, 002, 003, etc. La rutina me lee "TOMO" y las presentaciones, una a una. Y me crea TOMO-(con un guion y seguidamente el nombre de las presentaciones) TOMO-001, TOMO-002, TOMO-003, etc. Pero a la rutina del principio que funciona muy bien, no separa el nombre de fichero dwg y la presentación. Muchas gracia por ayudarme "bidal", pero no se donde colocar lo que has mandado, siento ser tan torpe. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.