Discussion:
Extaer capas de un dibujo a varios ficheros dwg
(demasiado antiguo para responder)
Serial # 19781010
2004-01-30 15:23:06 UTC
Permalink
Hola Familia

Una vez más recurro a ustedes en momentos de aprieto.

Me gustaría saber, sí se puede y abusando un poco de los que
programais, extraer de un fichero la información de cada capa a un
fichero unico que por ejemplo se llame como el
dibujomatriz-nombredecapa.dwg
Se trata de hacerlo con una serie de bastantes ficheros dwg y que a
su vez de cada uno de estos salgan tantos como capas contiene cada
uno.

Esa es la idea gracias mil anticipadas.
Eduardo Muñoz
2004-01-30 20:59:43 UTC
Permalink
* Serial # 19781010 <***@ono.com>
| Me gustaría saber, sí se puede y abusando un poco de los que
| programais, extraer de un fichero la información de cada capa a un
| fichero unico que por ejemplo se llame como el
| dibujomatriz-nombredecapa.dwg
| Se trata de hacerlo con una serie de bastantes ficheros dwg y que a
| su vez de cada uno de estos salgan tantos como capas contiene cada
| uno.

No creo que sea muy dificil si no se tiene en cuenta el tema
de los bloques. Una inserción de bloque puede estar en una
capa mientras que las entidades que contiene pueden estar en
otras, lo cual complicaría la separación. ¿Como son los
dibujos?.
--
Eduardo Muñoz | (prog () 10 (print "Hello world!")
http://213.97.131.125/ | 20 (go 10))
Serial # 19781010
2004-01-31 08:03:00 UTC
Permalink
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.


Un Saludo y Gracias
Post by Eduardo Muñoz
| Me gustaría saber, sí se puede y abusando un poco de los que
| programais, extraer de un fichero la información de cada capa a un
| fichero unico que por ejemplo se llame como el
| dibujomatriz-nombredecapa.dwg
| Se trata de hacerlo con una serie de bastantes ficheros dwg y que a
| su vez de cada uno de estos salgan tantos como capas contiene cada
| uno.
No creo que sea muy dificil si no se tiene en cuenta el tema
de los bloques. Una inserción de bloque puede estar en una
capa mientras que las entidades que contiene pueden estar en
otras, lo cual complicaría la separación. ¿Como son los
dibujos?.
Eduardo Muñoz
2004-02-02 18:20:32 UTC
Permalink
* 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))
Serial # 19781010
2004-02-02 21:49:39 UTC
Permalink
Eduardo

Sinceramente Agradecido

Ya está tu código trabajando.
Muchas Gracias
Post by Eduardo Muñoz
| 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< ---
Loading...