Well I think this idea is a bust. It will not work with Dynamic block. I tested in '06 and '09. It will redefine each dynamic block definition again. So lets say you have one dy block, dyblock. It has a couple of visibility states, and when you change the state it creates an anonymous definition per state. So you copy that three times, so there is now two blocks, dyblock & *U1. After you run the code you will have four block definition, dyblock, *U1, *U2 & *U3. Not cool. At least with only changing the layer, they still look correct, but they still get renamed, so you don't really get a true representation of the block being isolated.