Ok, I assume you are using RhinoCommon. If not, and you’re using Rhino_DotNet, switch to RhinoCommon while you still can.
A second assumption is that when you say Guid, you mean a geometry object in the document. You display the geometry in Rhin and you can rotate and translate it.
So, how Rhino works is that when you change a geometry, for instance by translating or rotating, that it deletes the old object from the document and it adds a new object to the document at the new position. The object has the same identifier (the Guid accessible by the Id property).
Now, you can monitor this replacement (deleting + adding) by subscribing to events. These events are fired whenever an object is deleted or added. In particular you want to subscribe to
RhinoDoc.ReplaceRhinoObject
RhinoDoc.AddRhinoObject
RhinoDoc.DeleteRhinoObject
For example, the DeleteObject event must be subscribed to with a delegate of signature
EventHandler<RhinoObjectEventArgs>
// this is the same as:
void MyEventHanderMethodName(object sender, RhinoObjectEventArgs)
So, you must write a method that has that signature:
void OnDeleteRhinoObject(object sender, RhinoObjectEventArgs args)
{
RhinoApp.WriteLine("Object with id {0} removed", args.ObjectId);
// here you react to the fact that the object has been removed
}
To subscribe to the event, you can put this for example in the constructor or OnLoad method of your plug-in
RhinoDoc.DeleteRhinoObject += OnDeleteRhinoObject;
Now, each time that the user deletes or replaces an object, your method OnDeleteRhinoObject will be called and executed.