MODIFICAR ATRIBUTOS CON VARIAS PROGRAMACIONES
Hola buenos días.
Tema:
MODIFICAR ATRIBUTOS CON VARIAS PROGRAMACIONES
Tengo un bloque llamado “Pto” con 3 entidades: 2 líneas que forman una cruz - | - y un atributo
tag = “primero”
prompt = “uno”
value = “1”
Mi intención es cambiar el valor de “value”
Programación con AUTOLISP
(defun cambia->atrib(/ entBL entAt lstAt enAtNew)
(setq entBL (ssname (ssget) 0))
(setq entAt (entnext entBl)
lstAt (entget entAt))
(setq entAtNew (subst (cons 1 "2") (assoc 1 lstAt) lstAt))
(entmod entAtNew)
(entmod (entget entBl))
)
;; creo que tendría que utilizar la función (entupd entAtNew)
;; pero bueno así funciona.
Programación con VISUAL LISP
(vl-load-com)
(defun cambia->atrib-VL()
(setq entBL (ssname (ssget) 0))
(setq bloque (vlax-ename->vla-object entBL))
(setq atributos (vlax-variant-value
(vla-getattributes bloque)))
(if (>= (vlax-safearray-get-u-bound atributos 1) 0)
(foreach atrib (vlax-safearray->list atributos)
(vlax-put-property atrib "TextString" "2"))))
;; no haría falta la función foreach para un solo atributo, pero también funciona
Programación con VISUAL BASIC.
He aquí mi problema, tengo poca idea de Visual Basic, he conseguido recorrer el bloque ver el valor que tienen el “tag” y el “value”.
He modificado el valor de “value”, lo veo cuando depuro el programa, pero no consigo la modificación en el bloque “pto” del dibujo.
¿Visual Basic tiene alguna función para que se regeneren las entidades compuestas, como la que tiene autolisp (entupd)?
¿gracias por adelantado?
Un saludo.
Xavier.
Tema:
MODIFICAR ATRIBUTOS CON VARIAS PROGRAMACIONES
Tengo un bloque llamado “Pto” con 3 entidades: 2 líneas que forman una cruz - | - y un atributo
tag = “primero”
prompt = “uno”
value = “1”
Mi intención es cambiar el valor de “value”
Programación con AUTOLISP
(defun cambia->atrib(/ entBL entAt lstAt enAtNew)
(setq entBL (ssname (ssget) 0))
(setq entAt (entnext entBl)
lstAt (entget entAt))
(setq entAtNew (subst (cons 1 "2") (assoc 1 lstAt) lstAt))
(entmod entAtNew)
(entmod (entget entBl))
)
;; creo que tendría que utilizar la función (entupd entAtNew)
;; pero bueno así funciona.
Programación con VISUAL LISP
(vl-load-com)
(defun cambia->atrib-VL()
(setq entBL (ssname (ssget) 0))
(setq bloque (vlax-ename->vla-object entBL))
(setq atributos (vlax-variant-value
(vla-getattributes bloque)))
(if (>= (vlax-safearray-get-u-bound atributos 1) 0)
(foreach atrib (vlax-safearray->list atributos)
(vlax-put-property atrib "TextString" "2"))))
;; no haría falta la función foreach para un solo atributo, pero también funciona
Programación con VISUAL BASIC.
He aquí mi problema, tengo poca idea de Visual Basic, he conseguido recorrer el bloque ver el valor que tienen el “tag” y el “value”.
He modificado el valor de “value”, lo veo cuando depuro el programa, pero no consigo la modificación en el bloque “pto” del dibujo.
¿Visual Basic tiene alguna función para que se regeneren las entidades compuestas, como la que tiene autolisp (entupd)?
¿gracias por adelantado?
Un saludo.
Xavier.