per chi fosse interessato dallo spunto di bolo ho creato la procedura degli express "explode attribute to text" in vba... praticamente fa la stessa cosa, ma non serve avere gli express caricati per farla funzionare.
permette però di visualizzare o meno gli attributi invisili una volta convertiti in testo.
public sub explode_att_text()
dim sset2 as acadselectionset
dim blocco as acadblockreference
dim sset3 as acadselectionset
dim attributo as acadentity
dim vlabel(0 to 100) as variant
dim vtext(0 to 100) as variant
dim kwordlist as string
kwordlist = "s n"
thisdrawing.utility.initializeuserinput 1, kwordlist
thisdrawing.utility.prompt vblf & vblf
dim returnstring as string
returnstring = thisdrawing.utility.getkeyword("visualizzare attributi nascosti? (s)

: ")
on error resume next
if not isnull(thisdrawing.selectionsets.item("blocco")) then
set sset2 = thisdrawiang.selectionsets.item("blocco")
sset2.delete
end if
set sset2 = thisdrawing.selectionsets.add("blocco")
dim filtertype(0) as integer
dim filterdata(0) as variant
filtertype(0) = 0
filterdata(0) = "insert"
' filtertype(1) = 2
' filterdata(1) = "numvan"
sset2.select acselectionsetall, , , filtertype, filterdata
for each blocco in sset2
if blocco.hasattributes then
dim array1 as variant
array1 = blocco.getattributes
for i = lbound(array1) to ubound(array1)
vlabel(i) = array1(i).tagstring
vtext(i) = array1(i).textstring
debug.print (vtext(i))
next i
blocco.explode
blocco.delete
on error resume next
if not isnull(thisdrawing.selectionsets.item("attributo")) then
set sset3 = thisdrawiang.selectionsets.item("attributo")
sset3.delete
end if
set sset3 = thisdrawing.selectionsets.add("attributo")
dim filtertype1(0) as integer
dim filterdata1(0) as variant
filtertype1(0) = 0
filterdata1(0) = "attdef"
sset3.select acselectionsetall, , , filtertype1, filterdata1
if returnstring = "" then returnstring = "s"
for each attributo in sset3
if ucase(returnstring) = "n" then
if attributo.invisible = true then attributo.delete
end if
for i = lbound(array1) to ubound(array1)
if attributo.tagstring = vlabel(i) then
attributo.tagstring = vtext(i)
end if
next i
next attributo
end if
sset3.delete
next blocco
sset2.delete
end sub