Hi,
Your routine works fine.
You select a dynamic block, in a dialog box show the characteristics of them, you select a characteristic in the dialog box, and automatic it select all blocks that have this characteristic.
I’m Spanish, and this question I done in other forum (Spanish language) the answer that they done was:
;|******************************************************
Rutina "filtrado_bloques_din_vis" verifica
si hay bloques dinamicos con una cierta
visibilidad dentro de una selección
de bloques........
*<ES CASE SENSITIVE-MAYÚSCULAS/minúsculas>*
*by PREXEM-VICTOR ADOLFO BRACAMONTE-2008*
******************************************************|;
(defun c:filtrado_bloques_din_vis ( /
sel
filtrado
visibilidad
contador
)
(vl-load-com)
;| Hago una selección de bloques;
y luego debo introducir el
nombre de la visibilidad del
bloque dinámico del que
deseo obtener su cantidad, y
me devuelve un numero de bloques
dinámicos con esa visibilidad, pero
primero verifica si es bloque
dinámico: |;
(setq sel (ssget '((0 . "INSERT"))))
(setq visibilidad
(getstring
t
"\ndar nombre de visibilidad a filtrar: "
)
contador 0
)
(repeat
(sslength sel)
(if
(and
(=
(vlax-get-property
(vlax-ename->vla-object
(ssname sel contador)
)
'isdynamicblock
)
:vlax-true
)
(equal visibilidad
(lee_prop_bdin (ssname sel contador))
);equal
);and
(setq filtrado
(cons
(ssname sel contador)
filtrado
)
)
);if
(setq contador (+ 1 contador))
);repeat
(princ "\n**************************************************")
(princ "\nCantidad de bloques dinamicos con esa visibilidad: ")
(princ (length filtrado))
(princ "\n**************************************************")
(if (= (length filtrado) 0)
(prompt
"\n*NO HAY BLOQUES DINÁMICOS CON ESA VISIBILIDAD EN LA SELECCIÓN HECHA*"
)
);if
(princ)
);fin defun c:filtrado_bloques_din_vis
;;;*************************************************************
;;; función "lee_prop_bdin" lee valor de la visibilidad de
;;; un bloque dinámico.........autor anónimo........
(defun lee_prop_bdin (
ent /
prop
vlaobj
variables
valores
lista
total_valores
contador
valor
)
(setq prop "Visibilidad")
(setq vlaobj (vlax-ename->vla-object ent))
(if (= (vlax-get-property vlaobj 'isdynamicblock) :vlax-true)
(progn
(setq variables (vla-getdynamicblockproperties vlaobj)
valores (vlax-variant-value variables)
lista (vlax-safearray->list valores)
total_valores (length lista)
contador 0
)
(while
(< contador total_valores)
(if
(= (vlax-get-property
(nth contador lista)
"PropertyName"
)
prop
)
(progn
(setq valor
(vlax-get-property
(nth contador lista)
"Value"
)
)
(setq contador total_valores))
(setq contador (1+ contador))
);if
);while
);progn
);if
(if valor (vlax-variant-value valor))
);lee_prop_bdin
;;;**********************************************************
Another time, thanks
Yolanda