you will find under Kind three kinds of the signal to be forced
freeze - drive - deposite
use deposite as it means that the signal will take the value you give to it till another source drive it at this time it will take the value drived by the other source. which will help you in your case
I think i deleted the .do that I had which used it.. but its rather simple..
If you do a say "force /top/data 16#FF 100" you can then remove that force by doing "force /top/data -cancel 200". So say you write a tcl script for a bidirectional bus. You could make a loop to force data onto it when RD_n = 0 else you could -cancel that force so data can be outputted via the core. But then ya hafta mess with $now to keep track of timing.. unless you did.. force /top/data -cancel [$now] or something like that.. just guessing.. haven't tried it.
If i understand your problem correctly, a 'noforce' command will also do.
A 'noforce' command is used to remove the effect of any active 'force' commands on the selected HDL items.