Vincular Bloques

Ver el tema anterior Ver el tema siguiente Ir abajo

Vincular Bloques

Mensaje por cybor el Jue Jun 16, 2016 5:48 pm

Holas: Quisiera saber si se puede vincular bloques de tal manera que al yo seleccionar uno de los bloques y cambiar su dato por ejemplo si tuviese un numero denominado 5 los de más bloques cambien el dato a el numero 5, gracias por la atención.

cybor

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por amc.dicsac el Jue Jun 16, 2016 8:10 pm

Hola "cybor", te adjunto un lisp compilado, el comando a ejecutar es "MODATT", donde dice "attribute value" digitas el nuevo valor de texto, despues activas la casilla global y luego pulsas el boton "global" y los atributos del bloque se te sincronizaran en total.

https://www.dropbox.com/sh/hq7jdhx03bc4qhw/AACPuR9fDDto0zbUdDImdOJna?dl=0

Saludos, espero te sirva
avatar
amc.dicsac

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

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

Volver arriba Ir abajo

actualizar bloques

Mensaje por Admin el Vie Jun 17, 2016 1:16 am

cybor escribió:Holas: Quisiera saber si se puede vincular bloques de tal manera que al yo seleccionar uno de los bloques y cambiar su dato por ejemplo si tuviese un numero denominado 5 los de más bloques cambien el dato a el numero 5, gracias por la atención.

Es de suponer que el 5 , es un valor asignado a un atributo del bloque. ¿O es el 5 , uno de los elementos del bloque ?

Admin
Admin

Mensajes : 157
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por cybor el Vie Jun 17, 2016 4:30 pm

Hola: Cualquier dato, solo quería dar a entender que al cambiar el dato que se muestra en un bloque se repita en los demás.

cybor

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por Admin el Vie Jun 17, 2016 7:41 pm

Sigo sin saber si el DATO es un atributo, o parte del bloque.

Admin
Admin

Mensajes : 157
Fecha de inscripción : 16/03/2016
Edad : 69
Localización : CORDOBA ARGENTINA

Ver perfil de usuario http://acadhispano.foroargentina.net

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por cybor el Lun Jun 20, 2016 5:31 pm

Hola amc.dicsac: Disculpa por no responder antes, revise tu aplicación y me pareció muy buena y detallada, ya resolví mi duda, muchas gracias.

cybor

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por Dominguez el Vie Jun 24, 2016 10:53 am

Tambien te puede servir esta rutina.
Código:

; Iguala atributos de bloques con otro como patron.
; Created by Will DeLoach  Copyright 2005
(vl-load-com)
(defun c:dtatr_igual (/ blk eblk atts tags keys vals dcl_id dcl_name strt lst ssa morder ename lst rname incre)
 (defun ent_sel (msg / ent)
   (while (not ent)
     (cond ((setq ent (entsel msg)))
           ((= (getvar "ErrNo") 7) (princ "\nSelection missed.  Please try again."))
           ((= (getvar "ErrNo") 52) (exit))
     )
   )
   ent
 )
 (defun get_atts (obj) (vlax-invoke (vlax-ename->vla-object obj) 'getattributes))
 (defun createdialog (lst keys / num tfn fn wid cnt str)
   (defun write_line (lst file) (foreach x lst (write-line x file)))
   (setq num (length tags))
   (cond ((> num 24) (setq wid 4))
         ((> num 12) (setq wid 3))
         ((> num 6) (setq wid 2))
         (t (setq wid 1))
   )
   (setq tfn (vl-filename-mktemp "match_attribute_value.dcl"))
   (setq fn (open tfn "w"))
   (write_line
     (list
       "temp:dialog{label=\"Match Attributes\";
:boxed_column{label=\"Select Attributes Values to Match:\";:row{"
     )
     fn
   )
   (setq cnt 0)
   (repeat (1+ wid)
     (write-line ":column{" fn)
     (repeat (/ num wid)
       (if (setq str (nth cnt lst))
         (progn (write-line (strcat ":toggle{label=" "\"" str "\"" ";key=" "\"" (nth cnt keys) "\"" ";}") fn)
                (setq cnt (1+ cnt))
         )
       )
     )
     (write-line "}" fn)
   )
   (write_line (list "}spacer_1;:toggle{key=\"All\";label=\"Select All\";}}ok_cancel;}") fn)
   (close fn)
   tfn
 )
 (defun on_all_pick (lst / str)
   (if (eq (get_tile "All") "0")
     (setq str "0")
     (setq str "1")
   )
   (mapcar '(lambda (x) (set_tile x str)) lst)
 )
 (defun create_list (vals objs)
   (vl-remove nil
              (mapcar '(lambda (x y)
                         (cons y
                               (if (eq x "1")
                                 1
                                 0
                               )
                         )
                       )
                      vals
                      objs
              )
   )
 )
 (defun ssnames (selection_set / num lst)
   (repeat (setq num (sslength selection_set))
     (setq num (1- num)
           lst (cons (ssname selection_set num) lst)
     )
   )
   lst
 )
 (defun dxf (gcode elist) (cdr (assoc gcode elist)))
 (while (not blk)
   (setq blk (car (ent_sel "\nSeleciona Objeto Modelo:  ")))
   (cond ((not (setq eblk (entget blk))))
         ((not (eq (dxf 0 eblk) "INSERT"))
          (setq blk nil)
          (princ "\nPlease select a block with attributes. ")
         )
         ((not (eq (dxf 66 eblk) 1)) (setq blk nil) (princ "\nPlease select a block with attributes. "))
         (t blk)
   )
 )
 (setq atts (get_atts blk)
       tags (mapcar 'vla-get-tagstring atts)
       keys (mapcar 'vla-get-handle atts)
       vals (mapcar 'vla-get-textstring atts)
 )
 (setvar "ErrNo" 0)
 (and (setq dcl_name (createdialog tags keys))
      (> (setq dcl_id (load_dialog dcl_name)) 0)
      (new_dialog "temp" dcl_id)
      (mapcar '(lambda (x) (action_tile x "(set_tile \"All\" \"0\")")) keys)
      (action_tile "All" "(on_all_pick keys)")
      (action_tile "cancel" "(done_dialog 0)")
      (action_tile "accept" "(setq lst (mapcar '(lambda (x)(get_tile x)) keys))(done_dialog 1)")
      (setq strt (start_dialog))
      (not (unload_dialog dcl_id))
      (vl-file-delete dcl_name)
      (setq morder t)
      (if (eq strt 1)
        (and (defun replaceatts (ent atlst tags vals / blkobj cnt idx)
               (setq blkobj (vlax-ename->vla-object ent)
                     cnt    0
               )
               (foreach atto (vlax-invoke blkobj 'getattributes)
                 (cond ((and morder (= 1 (cdr (nth cnt atlst))) (eq (vla-get-tagstring atto) (nth cnt tags)))
                        (vla-put-textstring atto (nth cnt vals))
                       )
                       ((and (not morder)
                             (= 1 (cdr (nth cnt atlst)))
                             (setq idx (vl-position (vla-get-tagstring atto) tags))
                        )
                        (vla-put-textstring atto (nth idx vals))
                       )
                 )
                 (setq cnt (1+ cnt))
               )
               (vla-update blkobj)
             )
             (setq atts (create_list lst atts))
             (not (prompt "\nSelect blocks to update or enter ALL for all matching blocks."))
             (if (and (setq ssa (ssget (list '(0 . "INSERT") '(66 . 1))))
                      (setq rname (vlax-ename->vla-object blk))
                      (if (vlax-property-available-p rname 'effectivename)
                        (progn (setq rname (vla-get-effectivename rname))
                               (mapcar '(lambda (x)
                                          (if (/= rname (vla-get-effectivename (vlax-ename->vla-object x)))
                                            (ssdel x ssa)
                                          )
                                        )
                                       (ssnames ssa)
                               )
                        )
                        (progn (setq rname (vla-get-name rname))
                               (mapcar '(lambda (x)
                                          (if (/= rname (vla-get-name (vlax-ename->vla-object x)))
                                            (ssdel x ssa)
                                          )
                                        )
                                       (ssnames ssa)
                               )
                        )
                      )
                 )
               (progn (setq incre -1)
                      (while (setq ename (ssname ssa (setq incre (1+ incre))))
                        (if (not (eq ename blk))
                          (replaceatts ename atts tags vals)
                        )
                      )
                      (if (= 0 (sslength ssa))
                        (princ "\nInvalid blocks selected.  Please start over. ")
                      )
               )
             )
        )
        (princ "\nFunction Terminated by User!")
      )
 )
 (princ)
)
Saludos
avatar
Dominguez

Mensajes : 56
Fecha de inscripción : 20/03/2016
Edad : 67
Localización : Zaragoza (España)

Ver perfil de usuario

Volver arriba Ir abajo

Re: Vincular Bloques

Mensaje por Contenido patrocinado


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.