I have been doing some snooping around amongst the events available, and so far not finding any really good looking results. When monitoring UserInputEvents.OnActivateCommand, we can see when the command to 'toggle' visibility happens, and we can tell the difference between part or assembly by command name, but not the resulting visibility status, not what document is was involved, and not what object had its visibility changed. Also while monitoring that same event, we can see when a new WorkPlane gets created, but same problem about not having a reference to the WorkPlane, or what document it is in. And when monitoring the DocumentEvents.OnChange Event, we can see when a 'general' work feature is created or deleted, and although this one gives us a reference to the document involved, it does not give us a direct reference to the actual work feature object. And since this event does not give us specifics about which type of work feature it was, we can't just get the last one of that type by its Index position in the collection (unless it is the only custom work feature in the document). If this is possible at all, it may require monitoring multiple minor events at the same time, and somehow cross referencing what is going on between those multiple events. Since I am not that experienced with creating add-ins yet, I'm not sure where to look next, or what the right combination of events might be, or how to cross reference the data between multiple events happening at the same time.
I hope you (or someone else here) can figure this out, because I am also interested in that type of ability. Not just limited to work feature visibility, but components and other stuff too. I know we can 'lock' DVR's, but more control is needed. Good luck.
Wesley Crihfield

(Not an Autodesk Employee)