Resultados 1 al 2 de 2

Tema: Pequeño script para limpiar archivos de AutoCAD

  1. #1
    Fecha de ingreso
    May 2006
    Mensajes
    286

    Pequeño script para limpiar archivos de AutoCAD

    Bueno aquí dejo un script para limpiar archivos. Como yo no soy el autor del script, colocaré el nombre de quién lo creó. El autor es Aitor Solozabal merino quién lo público en soloarquitectura é Hispacad.

    Para automatizar este proceso de purgado a todos los ficheros dwg de dibujo de un subdirectorio he escrito esta rutina que puede ser de utilidad:
    Código:
    for %%f in (%1*. Dwg) do echo bindtype 1 -Xref a %%f 0,0,0 -Xref b * zoom e explode l Purge all n saveas 2000(lt2000) %%f y kit >%%f, scr.
    
    For %%f in (%1*. Dwg) do c:\AutoCAD 2006\Acad, exe /b %%f. Scr.
    
    For %%f in (%1*. Dwg) do del %%f, scr.
    
    Del %1*.bak
    Copiar y pegar este código con cualquier editor de textos en un fichero con la extensión. Bat y copiarlo al subdirectorio dónde están los ficheros que se quieren purgar.

    Hay que hacer 2 cambios:
    1.- Sustituir c:\AutoCAD 2006\Acad, exe con el camino hacia el ejecutable en vuestro ordenador.
    2.- El programa además de purgar el dibujo lo salva en una versión inferior de AutoCAD con la instrucción saveas 2000(lt2000) hay que sustituir con saveas y 3 espacios en blanco a continuación.

    Atención : hay que tener mucho ojo con los nombres de los ficheros dwg no deben contener ningún espacio en blanco o letras acentuadas o la letra ññ porque el script no funcionara.

    Desde el explorador hacer 2 clicks con el ratón y empezara el proceso.

    Por ejemplo, para auditar todos los ficheros de un subdirectorio de una manera desatendida tenemos el siguiente procedimiento:
    Código:
    for %%f in (%1*. Dwg) do echo open %%f zoom e Audit y saveas 2000(lt2000) %%f y kit >%%f, scr.
    
    For %%f in (%1*. Dwg) do c:\AutoCAD 2006\Acad, exe /b %%f. Scr.
    
    For %%f in (%1*. Dwg) do del %%f, scr.
    
    Del %1*.baque
    Dibujante Técnico
    AutoCAD 2020
    De vuelta al dibujo en estos tiempos

  2. #2
    Fecha de ingreso
    Apr 2002
    Mensajes
    25,945
    También existen varios scripts y rutinas de AutoLISP que pueden ayudar a limpiar archivos de AutoCAD. Aquí te presento algunos ejemplos:

    CleanUp: Es un script que elimina capas vacías, dimensiones no asociadas y objetos sin nombre en un archivo de AutoCAD. Puedes descargarlo desde aquí: https://www.cadstudio.cz/download/CleanUp/

    Purge: Es una rutina de AutoLISP que elimina todos los objetos no utilizados y las capas vacías en un archivo de AutoCAD. Puedes descargarla desde aquí: https://www.lee-mac.com/purge.html

    Overkill: Es una rutina de AutoLISP que elimina los objetos duplicados, las líneas superpuestas y los objetos solapados en un archivo de AutoCAD. Puedes descargarla desde aquí: https://www.cadstudio.cz/en/download...e=OVERKILL.lsp

    DelDup: Es un script que elimina los objetos duplicados en un archivo de AutoCAD. Puedes descargarlo desde aquí: https://www.cadstudio.cz/download/DelDup/

    Recuerda que antes de usar cualquier script o rutina en un archivo de AutoCAD, es importante hacer una copia de seguridad del archivo original para evitar pérdida de datos.

    Aquí te muestro una posible rutina de AutoLISP para limpiar archivos de AutoCAD. La rutina elimina todos los elementos innecesarios del dibujo, como capas vacías, objetos no utilizados y estilos de texto y dimensionamiento no utilizados.

    Código:
    (defun limpiar-dibujo ()
      (setq layers-borradas 0)
      (setq estilos-texto-borrados 0)
      (setq estilos-dim-borrados 0)
      (setq objetos-borrados 0)
      
      ;Eliminar capas vacías
      (setq capas (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
      (foreach capa capas
        (setq nombre-capa (vla-get-name capa))
        (setq objetos-en-capa (vla-get-count (vla-get-objects capa)))
        (if (= objetos-en-capa 0)
          (progn
            (vla-delete capa)
            (setq layers-borradas (1+ layers-borradas))
          )
        )
      )
      
      ;Eliminar estilos de texto no utilizados
      (setq estilos-texto (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object))))
      (foreach estilo estilos-texto
        (setq nombre-estilo (vla-get-name estilo))
        (if (= (vla-get-count (vla-get-texts estilo)) 0)
          (progn
            (vla-delete estilo)
            (setq estilos-texto-borrados (1+ estilos-texto-borrados))
          )
        )
      )
      
      ;Eliminar estilos de dimensionamiento no utilizados
      (setq estilos-dim (vla-get-dimensionstyles (vla-get-activedocument (vlax-get-acad-object))))
      (foreach estilo estilos-dim
        (setq nombre-estilo (vla-get-name estilo))
        (if (= (vla-get-count (vla-get-dimensions estilo)) 0)
          (progn
            (vla-delete estilo)
            (setq estilos-dim-borrados (1+ estilos-dim-borrados))
          )
        )
      )
      
      ;Eliminar objetos no utilizados
      (setq objetos (vla-get-activedocument (vlax-get-acad-object)))
      (vlax-for obj objetos
        (setq tipo-objeto (vla-get-objectname obj))
        (if (or
              (eq tipo-objeto 'AcDbLine)
              (eq tipo-objeto 'AcDbPolyline)
              (eq tipo-objeto 'AcDbCircle)
              (eq tipo-objeto 'AcDbArc)
              (eq tipo-objeto 'AcDbText)
              (eq tipo-objeto 'AcDbMText)
              (eq tipo-objeto 'AcDbBlockReference)
              (eq tipo-objeto 'AcDbDimension)
            )
            (setq capa-objeto (vla-get-layer obj))
            (if (= (vla-get-count (vla-get-objects capa-objeto)) 0)
              (progn
                (vla-delete obj)
                (setq objetos-borrados (1+ objetos-borrados))
              )
            )
        )
      )
      
      ;Mostrar resumen
      (princ (strcat "\nCapas borradas: " (itoa layers-borradas)))
      (princ (strcat "\nEstilos de texto borrados: " (itoa estilos-texto-borrados)))
      (princ (strcat "\
    (defun c:limpiar ()
      (setq arch (getfiled "Seleccionar archivo" "" "dwg" 1))
      (command "._audit" arch "" "y")
      (command "._purge" "all" "*" "no" arch "")
      (command "._recover" arch "")
      (princ "Archivo limpiado y recuperado.")
    )
    Explicación del código:

    La primera línea define la función "limpiar".
    La segunda línea utiliza la función "getfiled" para que el usuario seleccione el archivo que desea limpiar. La función devuelve la ruta del archivo seleccionado y la guarda en la variable "arch".
    La tercera línea utiliza el comando "audit" para verificar la integridad del archivo seleccionado y lo repara si es necesario.
    La cuarta línea utiliza el comando "purge" para eliminar todos los objetos no utilizados en el archivo seleccionado.
    La quinta línea utiliza el comando "recover" para recuperar el archivo seleccionado y reparar cualquier error que tenga.
    La sexta línea imprime un mensaje indicando que el archivo ha sido limpiado y recuperado.

    Para ejecutar la función, solo tienes que escribir "limpiar" en la línea de comandos de AutoCAD y presionar Enter. Se te pedirá que selecciones el archivo que deseas limpiar y el programa se encargará del resto.
    |Agradecer cuando alguien te ayuda es de ser agradecido|

Temas similares

  1. Existira script para escalar múltiples archivos obj?
    Por comcom.com en el foro Programación y Scripts
    Respuestas: 0
    : 28-10-2014, 22:18
  2. Mi pequeño script: hide-unhide tools
    Por Hecbator en el foro Programación y Scripts
    Respuestas: 0
    : 24-12-2013, 14:58
  3. Pequeño script con utilidad
    Por jmpinero en el foro Programación y Scripts
    Respuestas: 2
    : 05-05-2010, 14:24
  4. Maya Script para visualizar archivos Maya en thunbnails
    Por JCarlos en el foro Programación y Scripts
    Respuestas: 5
    : 12-05-2009, 16:34
  5. Limpiar archivos de 3ds Max
    Por JCV3D en el foro Programas de Diseño 3D y CAD
    Respuestas: 2
    : 08-05-2008, 14:03