Página 1 de 1
Maquinaria
Publicado: Jue Feb 28, 2008 10:30 am
por nabero
Tengo un problema con ciertos planos que me dan.
Resulta que muchas veces me pasan planos de maquinaria de una industria, hay mucha maquinaria en bloques, bloques anidados en otros, y muchas capas distintas con distintos colores y casi nunca en color por capa.
Mi pregunta es la siguiente: ¿Hay alguna forma, de poder cambiar fácilmente todas los elementos de esa maquinaria, bien a una capa con un color específico o bien cambiar los todos los elementos de la maquinaria para que sean en color por capa?. Gracias.
Se me ocurre
Publicado: Jue Feb 28, 2008 12:24 pm
por Julio
Se me ocurre que si no son muchas maquinas diferentes y si lo són utiliza más paciencia. modificas las características de cada uno de esos bloques a tu gusto y los unes todos en un mismo archivo de dibujo.
Luego utilizas este dibujo como base en el cual insertas los otros. De esta manera las definiciones de bloque NO se redefiniran a las de ellos, manteniendo de esta manera tus características necesarias.
Espero que te venga bien.
Publicado: Jue Feb 28, 2008 12:43 pm
por Paco Fernandez
Ese mismo problema lo tenemos nosotros con algunos CD que nos mandan las empresas suministradoras de maquinaria (bombas, pretratamientos compactos, soplantes, valvuleria.........) y no hemos encontrado una solucion final y viable. Algunos incluso al descomponerlos para poder tenerlos en una sola capa y a escala real para poder insertarlos donde precisemos, desaparecen, otros es imposible y traen asociadas capas imborrables. En fin una locura, al final hemos tamado la decision de al abrir el fichero en cuestion lo descomponemos un monton de veces, limpiamos lineas que no valgan, limpiamos tambien el fichero, lo pasamos a escala real, capa 0 y color por capa y luego ya lo insertamos, ay aun asi alguans veces se trae algo.
Eso si una vez lo conseguimos lo guardamos en una base de datos para usarlos ya tranquilamente.
Un saludo
Publicado: Jue Feb 28, 2008 1:23 pm
por nabero
Gracias chi@s, de momento seguiré descomponiendo. Es que no se si en las herramientas express había algo.
Publicado: Jue Abr 03, 2008 8:10 pm
por luzbe_merlo
Hu see a mi tambien me paso!! un monton de veces, que feo es tener que descubrir como hizo el trabajo otra persona!! a veces tambien acotan de manera distinta. o las cotas explotadas
, todos las capas mezcladas
Saludoss
Publicado: Lun May 05, 2008 6:34 pm
por Wasserkraft713
En la versión 2007 eso es fácil.
Editas bloque, haces una captura, cambias todo al mismo color o misma capa. Si hay otro bloque dentro de ese, lo mismo: editar bloque. Así hasta que tengas todos los bloques editados.
Luego acuérdate de guardar los cambios.
No es necesario andar "explotando" nada. Te siguen quedando como bloques, lo que pasa es que están todos en la misma capa/color.
Publicado: Lun May 05, 2008 7:07 pm
por Paco Fernandez
Pues te aseguro que muchos bloques de estas empresas suministradoras vienen preparados de tal manera que queden casi todas sus capas y si los editas desaparece el bloque entero, tambien muchas veces estas maquinas vienes compuestas de varios bloques y algun atributo y dan mucha lata.
Publicado: Mar May 06, 2008 6:49 pm
por elhombredelsaco
Existe una rutina rulando por intenet llamada Fixblock.
Creo recordar que ponia en la base de datos de autocad, todos los objetos que componian un bloque en color "porbloque" y tipo de linea "porbloque", sin necesidad de descomponer el bloque en cuestion.
Publicado: Mar May 06, 2008 8:22 pm
por elhombredelsaco
Publicado: Mié May 07, 2008 8:42 am
por cacos
a las muy buenas, yo no puedo acceder
Publicado: Mié May 07, 2008 9:16 am
por elhombredelsaco
Efectivamente la URL parece no funcionar (hoy) pero rebuscando entre mis archivos, lo he encontrado.
Espero que os sirva; ya me contareis.
Código: Seleccionar todo
; File Name: FIXBLOCK.LSP
; Description: put... all of a blocks sub-entities on layer 0 with color and
; linetype set to BYBLOCK. The block, itself, will remain on
; its' original layer.
;
; Revision:
; 3-Dec-2003 YZ
; Changed program to work from a keyword on the command line
;*******************************************************************************
(defun d_FixBlock (/ eBlockSel ; Block selection
lInsertData ; Entity data
sBlockName ; Block name
lBlockData ; Entity data
eSubEntity ; Sub-entity name
lSubData ; Sub-entity data
iCount ; Counter
)
;; Redefine error handler
(setq
d_#error *error*
*error* d_FB_Error
) ;_ end setq
;; Set up environment
(setq #SYSVARS (#SaveSysVars (list "cmdecho")))
(setvar "cmdecho" 0)
(command "._undo" "_group")
;; Get block from user and make sure it's an INSERT type
(if (setq eBlockSel (entsel "\nSelecciona bloque para cambiar color a Por bloque :"))
(progn
(if (setq lInsertData (entget (car eBlockSel)))
(if (= (cdr (assoc 0 lInsertData)) "INSERT")
(setq sBlockName (cdr (assoc 2 lInsertData)))
(progn
(alert "El objeto seleccionado no es un bloque!")
(exit)
) ;_ end progn
) ;_ end if
(progn
(alert "El bloque ni ha sido seleccionado!")
(exit)
) ;_ end progn
) ;_ end if
;; Get block info from the block table
(setq
lBlockData (tblsearch "BLOCK" sBlockName)
eSubEntity (cdr (assoc -2 lBlockData))
) ;_ end setq
;; Make sure block is not an Xref
(if (not (assoc 1 lBlockData))
(progn
(princ "\nProcessing block: ")
(princ sBlockName)
(princ "\nUpdating blocks sub-entities. . .")
;; Parse through all of the blocks sub-entities
(while eSubEntity
(princ " .")
(setq lSubData (entget eSubEntity))
;; Update layer property
(if (assoc 8 lSubData)
(progn
(setq lSubData
(subst
(cons 8 "0")
(assoc 8 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
) ;_ end if
;; Update the linetype property
(if (assoc 6 lSubData)
(progn
(setq lSubData
(subst
(cons 6 "BYBLOCK")
(assoc 6 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
(entmod (append lSubData (list (cons 6 "BYBLOCK"))))
) ;_ end if
;; Update the color property
(if (assoc 62 lSubData)
(progn
(setq lSubData
(subst
(cons 62 0)
(assoc 62 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
(entmod (append lSubData (list (cons 62 0))))
) ;_ end if
(setq eSubEntity (entnext eSubEntity))
; get next sub entity
) ; end while
;; Update attributes
(idc_FB_UpdAttribs)
) ; end progn
(alert "XREF selected. Not updated!")
) ; end if
) ; end progn
(alert "Nothing selected.")
) ; end if
;;; Pop error stack and reset environment
(idc_RestoreSysVars)
(princ "\nDone!")
(setq *error* d_#error)
(princ)
) ; end defun
;*******************************************************************************
; Function to update block attributes
;*******************************************************************************
(defun idc_FB_UpdAttribs ()
;; Update any attribute definitions
(setq iCount 0)
(princ "\nUpdating attributes. . .")
(if (setq ssInserts (ssget "x"
(list (cons 0 "INSERT")
(cons 66 1)
(cons 2 sBlockName)
) ;_ end list
) ;_ end ssget
) ;_ end setq
(repeat (sslength ssInserts)
(setq eBlockName (ssname ssInserts iCount))
(if (setq eSubEntity (entnext eBlockName))
(setq
lSubData (entget eSubEntity)
eSubType (cdr (assoc 0 lSubData))
) ;_ end setq
) ;_ end if
(while (or (= eSubType "ATTRIB") (= eSubType "SEQEND"))
;; Update layer property
(if (assoc 8 lSubData)
(progn
(setq lSubData
(subst
(cons 8 "0")
(assoc 8 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
) ;_ end if
;; Update the linetype property
(if (assoc 6 lSubData)
(progn
(setq lSubData
(subst
(cons 6 "BYBLOCK")
(assoc 6 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
(entmod (append lSubData (list (cons 6 "BYBLOCK"))))
) ;_ end if
;; Update the color property
(if (assoc 62 lSubData)
(progn
(setq lSubData
(subst
(cons 62 0)
(assoc 62 lSubData)
lSubData
) ;_ end subst
) ;_ end setq
(entmod lSubData)
) ;_ end progn
(entmod (append lSubData (list (cons 62 0))))
) ;_ end if
(if (setq eSubEntity (entnext eSubEntity))
(setq
lSubData (entget eSubEntity)
eSubType (cdr (assoc 0 lSubData))
) ;_ end setq
(setq eSubType nil)
) ;_ end if
) ; end while
(setq iCount (1+ iCount))
) ; end repeat
) ; end if
(command "regen")
) ; end defun
;*******************************************************************************
; Function to save a list of system variables
;*******************************************************************************
(defun #SaveSysVars (lVarList / sSystemVar)
(mapcar
'(lambda (sSystemVar)
(setq lSystemVars
(append lSystemVars
(list (list sSystemVar (getvar sSystemVar)))
) ;_ end append
) ;_ end setq
) ;_ end lambda
lVarList
) ;_ end mapcar
lSystemVars
) ;_ end defun
;*******************************************************************************
; Function to restore a list of system variables
;*******************************************************************************
(defun idc_RestoreSysVars ()
(mapcar
'(lambda (sSystemVar)
(setvar (car sSystemVar) (cadr sSystemVar))
) ;_ end lambda
#SYSVARS
) ;_ end mapcar
) ;_ end defun
;*******************************************************************************
; Error Handler
;*******************************************************************************
(defun d_FB_Error (msg)
(princ "\nError occurred in the Fix Block routine...")
(princ "\nError: ")
(princ msg)
(setq *error* d_#error)
(if *error*
(*error* msg)
) ;_ end if
(command)
(if (/= msg "quit / exit abort")
(progn
(command "._undo" "_end")
(command "._u")
) ;_ end progn
) ;_ end if
(idc_RestoreSysVars)
(princ)
) ;_ end defun
;*******************************************************************************
(defun C:FIXBLOCK () (d_FixBlock))
(princ)
Un saludo a todos.
Publicado: Mié May 07, 2008 11:25 am
por nabero
He conseguido bajarme el Fixblock.lsp
Podría explicarme alguien como co.. funciona esto. Gracias.
Publicado: Mié May 07, 2008 1:46 pm
por elhombredelsaco
¿Como funciona la rutina? o ¿Como cargar la rutina?
Para lo primero, si ya tienes cargada la rutina, lo unico que tienes que hacer es llamar a la orden tecleando en la linea de comandos fixblock,
despues seleccionas el bloque que quieres arreglar (arregla la definición de bloque, con lo que arreglando uno, te arregla todos los bloques iguales que tengas insertados en el archivo).
Una vez hecho esto ya puedes poner todos los bloques de esa definición en el color y el tipo de linea que quieras (incluido porcapa).
La finalidad de la herramienta es poder modificar bloques que tienen (dentro de la definicion) diferentes elementos en color por objeto, y que por lo tanto una vez insertados, dichos elementos no son susceptibles de ser modificados.
Un saludo.
Publicado: Mié May 07, 2008 1:54 pm
por elhombredelsaco
Matizo, no son modificables salvo que realices un refedit, y manualmente dejes los colores y tipos de linea a tu antojo.
Si las modificaciones que pretendeis realizar son parciales o afectan al aspecto geometrico del propio bloque, del refedit no os libra ni...
Un saludo a todos.
Publicado: Mié May 07, 2008 3:28 pm
por nabero
OK Gracias.