Vincular Bloques
4 participantes
Página 1 de 1.
Vincular Bloques
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.
cyberactive- Mensajes : 28
Fecha de inscripción : 16/05/2016
Re: Vincular Bloques
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
https://www.dropbox.com/sh/hq7jdhx03bc4qhw/AACPuR9fDDto0zbUdDImdOJna?dl=0
Saludos, espero te sirva
actualizar bloques
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 ?
Re: Vincular Bloques
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.
cyberactive- Mensajes : 28
Fecha de inscripción : 16/05/2016
Re: Vincular Bloques
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.
cyberactive- Mensajes : 28
Fecha de inscripción : 16/05/2016
Re: Vincular Bloques
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)
)
Dominguez- Mensajes : 151
Fecha de inscripción : 20/03/2016
Edad : 74
Localización : Zaragoza (España)
Temas similares
» Seleccion Bloques Intersectados
» Objetos dentro de bloques
» Rutina importar Bloques de un Archivo a Otro
» Cambiar la transparencia del sombreado en algunos bloques
» Selección de bloques según estado de visualización
» Objetos dentro de bloques
» Rutina importar Bloques de un Archivo a Otro
» Cambiar la transparencia del sombreado en algunos bloques
» Selección de bloques según estado de visualización
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|