acad hispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

seleccionar todo y cambiar a bylayer

5 participantes

Ir abajo

seleccionar todo y cambiar a bylayer Empty seleccionar todo y cambiar a bylayer

Mensaje por cyberactive 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.

cyberactive

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

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp 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 : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp 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 : 223
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

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

De nada, me alegra que les sirva mi ayuda.

Saludos.

carlosmgilp

Mensajes : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por cyberactive 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?

cyberactive

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

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp 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 : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp 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 : 223
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp 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 : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por eliasp 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 : 223
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp 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 : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por cyberactive Jue Mayo 19, 2016 10:42 pm

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

cyberactive

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

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por amc.dicsac 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
amc.dicsac

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

http://axprogramlisp.blogspot.pe/

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por carlosmgilp 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 : 149
Fecha de inscripción : 17/03/2016
Edad : 42
Localización : Venezuela

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por nolo 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 : 182
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

seleccionar todo y cambiar a bylayer Empty Re: seleccionar todo y cambiar a bylayer

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

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