Usando vla-GetDynamicBlockProperties

Outro dia um camarada me perguntou como alterar o valor de um atributo dinâmico em um bloco. Bom escrevi um pequeno programa para exemplificar, segue:



;subrotina que retorna a lista de atributos dinamicos de um bloco
;vlabloc é o ponteiro VLA para o bloco
(defun get-dynamic-attributes (vlabloc)
;(vl-load-com)

(mapcar (lambda (p) (cons (vla-get-PropertyName p) p))
(
vlax-safearray->list
(vlax-variant-value
(vla-GetDynamicBlockProperties vlabloc)))))

;exemplo de uso:
;|
carrega as funções vl
(vl-load-com)

;selecione um bloco dinamico na tela
(setq bloco (vlax-ename->vla-object (car (entsel “\nSelecione o bloco”))))

;pega a lista de atributos:
(setq atts (get-dynamic-attributes bloco))

;da lista, pegue o atributo COMPRIMENTO:
(setq attComprimento (cdr (assoc “COMPRIMENTO” atts)))

;alerta sobre o valor atual
(alert (strcat “O valor atual é: ” (rtos (vlax-variant-value (vla-get-value attComprimento)) 2 3)))

;redefine o valor para outro valor qualquer
(vla-put-value attComprimento 2.0)

;alerta para o novo valor:
(alert (strcat “O valor atual é: ” (rtos (vlax-variant-value (vla-get-value attComprimento)) 2 3)))

|;


É simples, né? O exemplo te ensina a listar os atributos, que você poderá pegar e alterar.

Deixe um comentário

Carrinho de compras
Rolar para cima