* Serial # 19781010 <***@ono.com>
| Hola Eduardo
|
| Ayer, no me habia parado yo en el tema de los bloques pero ahora me
| has llevado a analizar un poco más el caso, y lo suyo sería llevarlos
| tambien a un "lugar" en el tengamos "controlados" la capa origen y el
| nombre de bloque.
| Los dibujos son de planimetría pero no se bien porque estan hechos una
| pena, no ajustandose a ninguna codificación conocida. El tema es que
| partiendo de lo más básico capa, color y ahora tambien nombre de
| bloque, intentar llevarlos a algo estandar y razonable.
| No se si me entiendes. Y el hecho de semiautomatizarlo es porque son
| unos cuantos, y podría repetirse el proceso con los venideros.
Te pego el programa a continuación. Lo único que hace es
separar las capas del dibujo, dejando de momento los de los
bloques. Los dibujos que crea se llaman "DibujoOriginal-Capa.dwg".
Crear un script para modificar muchos dibujos no es
complicado con un buen editor de texto y se deja como
ejercicio para el lector. Por cierto, que al ejecutar el
programa el dibujo queda "modificado" por lo que preguntará
si quieres guardar los cambios. Habrá que incluir algo en el
script para decir que no.
Advertencia: Si hay algun dibujos que se llame igual que los
que se van a crear se sobreescribirá sin preguntar nada.
--- 8< --- 8< --- Cortar aquí --- 8< --- 8< ---
;;;===========================================================================
;;;
;;; Separacapas.lsp
;;;
;;; Eduardo Muñoz
;;; Time-stamp: "Monday, 02 February 2004 - 19:13:28"
;;;
;;;===========================================================================
;;;
;;; Separa las capas de un dibujo en distintos archivos.
;;;
;;;===========================================================================
(defun c:Separacapas ( / cmddia filedia expert dwgprefix dwgname ssEnts)
(setvar "cmdecho" 0)
(setq cmddia (getvar "cmddia")
filedia (getvar "filedia")
expert (getvar "expert")
dwgprefix (getvar "dwgprefix")
dwgname (getvar "dwgname")
dwgname (substr dwgname 1 (- (strlen dwgname) 4)))
(setvar "osmode" 0)
(setvar "cmddia" 0)
(setvar "filedia" 0)
(setvar "expert" 5)
(foreach sCapa (layers-list)
(if (setq ssEnts (ssget "_X" (list (cons 8 sCapa))))
(progn
(command "_-wblock" (strcat dwgprefix dwgname "-" sCapa ".dwg")
"" "_non" "0,0" ssEnts "")
(command "_u"))))
(setvar "cmddia" cmddia)
(setvar "filedia" filedia)
(setvar "expert" expert)
(princ))
(defun layers-list (/ lLayer lReturn)
(while (setq lLayer (tblnext "LAYER" (not lLayer)))
(setq lReturn (cons (cdr (assoc 2 lLayer)) lReturn)))
(reverse lReturn))
(princ)
--- 8< --- 8< --- Cortar aquí --- 8< --- 8< ---
--
Eduardo Muñoz | (prog () 10 (print "Hello world!")
http://213.97.131.125/ | 20 (go 10))