I've played around with this some more today.
The problem with attsync is that any attributes which have been repositioned during drafting are reset back to their original position.
The same thing happens with battman.
'Gatte' seems to be the best option, replacing the invisible attribute with a null value.
Enter block name: pt2
Known tag names for block: TYPE HEIGHT SPREAD GIRTH CODE NO LEVEL
Select attribute or type attribute name: code
Block: pt2 Attribute tag: CODE
Enter new text:
Number of inserts in drawing = 31 Process all of them? [Yes/No] <Yes>:
Please wait...
31 attributes changed.
Maybe the best way is to get a list of all the blocks with invisible attributes. (setq BlocksInCtab (ssget "_X" (list (cons 0 "INSERT") (cons 66 1) (cons 410 (getvar 'CTAB))))) ?
Find out which attribute tag in the blocks are invisible and then parse all this info into the 'gatte' command.
P