Seleccionar un bloque que está en varias presentaciones

dudas y consultas sobre CAD

Moderador: Moderadores

Responder
Avatar de Usuario
Faber
Administrador
Administrador
Mensajes: 2938
Registrado: Mié Nov 09, 2005 12:10 am
Ubicación: Irlanda
Contactar:

Seleccionar un bloque que está en varias presentaciones

Mensaje por Faber »

Hola. Quiero seleccionar el cajetín que está como bloque en muchas presentaciones a la vez, para editar los atributos conjuntamente porque por ejemplo cada vez que hay una revisión es un rollo añadir bloque por bloque.

¿Es posible?
si algo puede salir bien, saldrá bien

Plannerly ™ La plataforma de gestión BIM ™ SmartLeanBIM® © 2021
Plantillas para crear el Plan de Ejecución BIM (BEP). Cumplimiento de la norma ISO-19650
Plan gratuito en el que puedes acceder a todas las plantillas y si al comprarlo introduces el código DELINEACION obtendrás un 10% de descuento
Carlitosdiaz81
En prácticas
Mensajes: 2
Registrado: Sab May 16, 2020 1:45 pm

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Carlitosdiaz81 »

Con selección rápida referencia a bloque y filtrad por nombre
Avatar de Usuario
Faber
Administrador
Administrador
Mensajes: 2938
Registrado: Mié Nov 09, 2005 12:10 am
Ubicación: Irlanda
Contactar:

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Faber »

Carlitosdiaz81 escribió: Jue Jul 02, 2020 2:57 pm Con selección rápida referencia a bloque y filtrad por nombre
De esa manera sólo en la presentación actual
si algo puede salir bien, saldrá bien
Avatar de Usuario
Faber
Administrador
Administrador
Mensajes: 2938
Registrado: Mié Nov 09, 2005 12:10 am
Ubicación: Irlanda
Contactar:

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Faber »

Me respondo a mi mismo por si a alguien le sirve, es tan sencillo como editar el bloque y marcar los atributos como constantes y predefinidos
si algo puede salir bien, saldrá bien
Avatar de Usuario
javi lapina
Auxiliar
Mensajes: 47
Registrado: Sab Abr 14, 2018 7:33 pm
Contactar:

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por javi lapina »

Prueba este lisp de nuestro compañero Lee Mac

Como funciona el programa:
Primero cambia los valores de un bloque con atributos en una sola presentación, después ejecuta el programa y selecciona el bloque
que acabas de cambiar, el programa cambiara todos los bloques (que se llamen igual) igualándolos con los valores del bloque que has seleccionado.

Código: Seleccionar todo

(defun c:syncatts ( / ent enx idx lst sel )
   (while
       (progn (setvar 'errno 0) (setq ent (car (entsel "\nSelect block: ")))
           (cond
               (   (= 7 (getvar 'errno))
                   (princ "\nMissed, try again.")
               )
               (   (null ent) nil)
               (   (or (/= "INSERT" (cdr (assoc 0 (setq enx (entget ent)))))
                       (/= 1 (cdr (assoc 66 enx)))
                   )
                   (princ "\nSelected object is not an attributed block.")
               )
           )
       )
   )
   (if (and ent
           (setq lst (LM:getattributes ent)
                 sel (ssget "_X" (list '(0 . "INSERT") '(66 . 1) (cons 410 (strcat "~" (getvar 'ctab)))))
           )
       )
       (repeat (setq idx (sslength sel))
           (LM:setattributevalues (ssname sel (setq idx (1- idx))) lst)
       )
   )
   (princ)
)

;; Get Attributes  -  Lee Mac
;; Returns an association list of attributes present in the supplied block.
;; blk - [ent] Block (Insert) Entity Name
;; Returns: [lst] Association list of ((<Tag> . <Value>) ... )

(defun LM:getattributes ( blk / enx )
   (if (= "ATTRIB" (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk)))))))
       (cons
           (cons
               (cdr (assoc 2 enx))
               (cdr (assoc 1 enx))
           )
           (LM:getattributes blk)
       )
   )
)

;; Set Attribute Values  -  Lee Mac
;; Sets attributes with tags found in the association list to their associated values.
;; blk - [ent] Block (Insert) Entity Name
;; lst - [lst] Association list of ((<tag> . <value>) ... )
;; Returns: nil

(defun LM:setattributevalues ( blk lst / enx itm )
   (if (= "ATTRIB" (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk)))))))
       (if (setq itm (assoc (cdr (assoc 2 enx)) lst))
           (progn
               (if (entmod (subst (cons 1 (cdr itm)) (assoc 1 enx) enx))
                   (entupd blk)
               )
               (LM:setattributevalues blk lst)
           )
           (LM:setattributevalues blk lst)
       )
   )
)

(princ)
Master en AutoCad y sigo aprendiendo.....
Avatar de Usuario
Faber
Administrador
Administrador
Mensajes: 2938
Registrado: Mié Nov 09, 2005 12:10 am
Ubicación: Irlanda
Contactar:

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Faber »

Gracias Javi, pero es que eso tampoco me valdría, porque hay atributos que los valores son iguales pero otros diferentes
si algo puede salir bien, saldrá bien
Avatar de Usuario
Josess
En prácticas
Mensajes: 3
Registrado: Vie May 22, 2020 8:30 am

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Josess »

Se me ocurren dos alternativas ...

1 Buscar y reemplazar....V2 por V3,...puedes saltar alguno que no quieras sustituir...

2 Hacer una referencia con el cajetín, con los datos generales y dejar como bloque solo los atributos que cambian ( n°,..título,...etc)
Avatar de Usuario
Faber
Administrador
Administrador
Mensajes: 2938
Registrado: Mié Nov 09, 2005 12:10 am
Ubicación: Irlanda
Contactar:

Re: Seleccionar un bloque que está en varias presentaciones

Mensaje por Faber »

Josess escribió: Mié Jul 08, 2020 4:39 pm Se me ocurren dos alternativas ...

1 Buscar y reemplazar....V2 por V3,...puedes saltar alguno que no quieras sustituir...

2 Hacer una referencia con el cajetín, con los datos generales y dejar como bloque solo los atributos que cambian ( n°,..título,...etc)
1 No puedo buscar un atributo que está en blanco, no hay nada en él

2 Todo eso funcionaría pero hay un procedimiento en la empresa que impide hacer REFX del cajetín (ojalá). Por eso pregunto.

Gracias de todas formas por intentar ayudar. Lo he solucionado por esta vez como dije en mi anterior post.
si algo puede salir bien, saldrá bien
Responder