seleccionar todo y cambiar a bylayer

Ver el tema anterior Ver el tema siguiente Ir abajo

seleccionar todo y cambiar a bylayer

Mensaje por cybor el Mar Mayo 17, 2016 6:35 pm

Buenos Dias: Tengo que cambiar en varios archivos y ordenarlos a BYLAYER
por lo pronto puedo seleccionar pero no se como indicar que cecolor haga el cambio...aver si me explico mejor:
(defun c:cbyl ()
(setq entg (ssget "_x")); hasta aca va bien
(command "cecolor" entg "256") ; aca ya me perdi
)

el comando cecolor te permite cambiar a bylayer cuando digitas 256, pero no se como indicarle que seleccione todo el archivo y lo cambie a bylayer, lo que pasa es que esta es una rutina que seria el final de otra es por eso que necesito esta ayuda.

saludos.

cybor

Mensajes : 14
Fecha de inscripción : 16/05/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Mar Mayo 17, 2016 8:38 pm

Hola cybor

No se si la necesidad es programarlo.
Pero yo aplico el comando SETBYLAYER luego YES YES y listo.
Te convierte todo a bylayer, y solo cambio el color del layer.

Y si no lo puedes aplicar así.
Código:
(defun c:xxx  (/ entg)
  (setq entg (ssget "_x"))
  (command "_.setbylayer" entg "" "_yes" "_yes")
  (princ))

Espero te sirva de ayuda.
Saludos.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp el Mar Mayo 17, 2016 9:18 pm

Que tal... buena respuesta. Yo iba a sugerir que, una vez seleccionado todo en el grupo, crees un bucle para ir cambiando cada objeto, pero esta solución está mucho mejor. Gracias por compartirla

Saludos

eliasp

Mensajes : 37
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Mar Mayo 17, 2016 9:25 pm

De nada, me alegra que les sirva mi ayuda.

Saludos.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por cybor el Miér Mayo 18, 2016 12:54 am

Hola Carlosmgilp: Muchas gracias, he probado en autocad 2016 y funciona correctamente pero en 2007 no existia ese comando por lo que me sale Unknown command "SETBYLAYER", existe algun comando o variable comun para todas las versiones?

cybor

Mensajes : 14
Fecha de inscripción : 16/05/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Miér Mayo 18, 2016 1:03 am

Hola hermano como estás, de verdad esa información no la tengo clara, pues yo utilizo AutoCAD 2017 y no tengo como verificar.
Esperemos a ver que más aportan o si alguien sabe algo sobre ese comando en otras versiones.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp el Miér Mayo 18, 2016 1:40 am

En ese caso, creo que mi sugerencia inicial te servirá mejor, aquí la tienes
Código:

(vl-load-com)
(defun c:cambcol()
  (prompt "\nRutina que cambia a color por capa")
  (setq ind 0)
  (setq conjunto(SSGET "_X"))
  (setq cuantos(sslength conjunto))
  (repeat cuantos
    (setq ent(ssname conjunto ind))
    (setq ent1(vlax-ename->vla-object ent))
    (vla-put-color ent1 256)
    (setq ind(1+ ind))
    )
  (prompt "\nNuevo comando ejecutado")
  (princ)
  )
Saludos

eliasp

Mensajes : 37
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Miér Mayo 18, 2016 1:48 am

Muy buena opción, pero no entra dentro de los bloques, sería lo único que le veo, aparte de que si son bloques anidados se complica más.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp el Miér Mayo 18, 2016 3:26 am

Pues si... así se complica. Y es inevitable recordar los "reglazos" del maestro Devitg, cuando solicita: "Explica bien que quieres, anexa un DWG con un antes y un después" una vez mas... ¡Que razón tienes maestro...!

jajajaja, fuera de todo esto. Creo recordar que el maestro Gerardo Calvo resolvió ese problema en el extinto Hispcad....
Sería interesante si alguien guardó esa solución que la comparta. O mejor aún, si el mismo Gerardo la puede subir.

Saludos

eliasp

Mensajes : 37
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Miér Mayo 18, 2016 3:42 am

Yo cambiaría a un AutoCAD más nuevo, no subir al último pero si hasta el que tenga el comando, jejeje.
Que de por si, el 2008 me pareció el mejor. Pero no se si traía ese comando.
Voy a ver que investigó.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por cybor el Jue Mayo 19, 2016 10:42 pm

Muchas gracias, funciona correctamente todo, me sirvió de mucho.

cybor

Mensajes : 14
Fecha de inscripción : 16/05/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por amc.dicsac el Vie Mayo 20, 2016 3:57 am

Hola que tal, te adjunto un lisp, espero que sea util.

Código:
;;;  File Name: Layerfix.LSP
;;;  Description:  Changes the block definitions to BYLAYER .  Will skip all
;;;                XREF & XREF dependent blocks.
;;;
;;;  Global Variables:  None
;;;
;;;  Local Variables:  Self-explanatory
;;;
;;;  Program Arguments:  None
;;;  Subroutines/Functions Defined or Called:  None
;;;
;;;***************************************************************************


(defun c:Layerfix (/ BLKDATA NEWCOLOR NEWCOLOR NEWLAYER LAYER XREFFLAG XDEPFLAG BLKENTNAME
                    COUNT ENTDATA ENTNAME ENTTYPE OLDCOLOR OLDLAYER SSCOUNT SS)
 
  (command ".undo" "group")
  (setq BLKDATA (tblnext "BLOCK" t))
  (setq NEWCOLOR (cons 62 256))  ;this will set 62 (color) to bylayer
  (setq NEWLAYER (cons 8 "0"))  ;this will set 8 (layer) to 0
  ; While there is an entry in the block table to process, continue
  (while BLKDATA
      (prompt "\nRedefining colors for block: ")
      (princ (cdr (assoc 2 BLKDATA)))
      ; Check to see if block is an XREF or is XREF dependent
      (setq XREFFLAG (assoc 1 BLKDATA))
      (setq XDEPFLAG (cdr (assoc 70 BLKDATA)))
      ; If block is not XREF or XREF dependent, i.e., regular block, then proceed.
      (if (and (not XREFFLAG) (/= (logand XDEPFLAG 32) 32))
        (progn
            (setq BLKENTNAME (cdr (assoc -2 BLKDATA)))
            (setq COUNT 1)
            (terpri)
            ; As long as we haven't reached the end of the block's defintion, get the data
            ; for each entity and change its color assignment to BYLAYER.
            (while BLKENTNAME
              (princ COUNT)
              (princ "\r")
              (setq ENTDATA (entget BLKENTNAME)); get entities data
              (setq OLDCOLOR (assoc 62 ENTDATA))  ;get entities old color value
              (if OLDCOLOR                        ; if value exist (null = bylayer)
                  (entmod (subst newcolor oldcolor ENTDATA)) ; substitute old color to byblock
                  (entmod (cons newcolor ENTDATA))      ; modify ent data w/ byblock values
              )
              (setq BLKENTNAME (entnext BLKENTNAME)) ;if attributes exist, then edit next one
              (setq COUNT (+ COUNT 1));
            ) ;end while for attribute trap
        ) ;progn
        (progn
            (princ "    XREF...skipping!")
        ) ;progn
      );end if not an Xref
      (setq BLKDATA (tblnext "BLOCK")) ;next block please
  ) ;end while loop of blk data available to edit
  (command ".undo" "end")
  (command ".regen")
  (princ))

amc.dicsac

Mensajes : 62
Fecha de inscripción : 17/03/2016
Edad : 26
Localización : Lima - Perú

Ver perfil de usuario http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp el Vie Mayo 20, 2016 6:43 am

Hola hermano muchas gracias por la información, ya lo estaba sacando pero no había pensado en los xref.
Analizando y estudiando para futuros proyectos, saludos.

carlosmgilp

Mensajes : 65
Fecha de inscripción : 17/03/2016
Edad : 34
Localización : Venezuela

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por nolo el Lun Mayo 23, 2016 5:40 pm

Sólo un apunte,
Desde las primeras versiones de Autocad, existe también el comando <  _change >

Código:
(command "_change" <selección> "_p" "_la" "nueva_capa" "")

Un saludo

nolo

Mensajes : 95
Fecha de inscripción : 17/03/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: seleccionar todo y cambiar a bylayer

Mensaje por Contenido patrocinado Hoy a las 10:59 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.