RhinoDoc.DeleteRhinoObject event : How?

Hi,
In this example Rhino.RhinoDoc.AddRhinoObject works fine
but Rhino.RhinoDoc.DeleteRhinoObject don’t work
How can this fixed؟

public RhinoToGrasshopperPlugin()
        {
            Instance = this;
            Rhino.RhinoDoc.AddRhinoObject += OnAddObject;
            Rhino.RhinoDoc.DeleteRhinoObject += OnDeleteObject;
        }

public static List<Rhino.Geometry.GeometryBase> addedobj = new List<Rhino.Geometry.GeometryBase>();

private static void OnAddObject(object sender, RhinoObjectEventArgs args)
        {
            addedobj.Add(args.TheObject.Geometry);
        }

private static void OnDeleteObject(object sender, RhinoObjectEventArgs args)
        {
            addedobj.Remove(args.TheObject.Geometry);
        }

Hi @anon39580149 ,
The args.TheObject.Geometry might not be pointing to the same object that you added to the List. Try to store the “Id” of the object as well, so you know where the geometry came from. Something like this:

public RhinoToGrasshopperPlugin()
        {
            Instance = this;
            Rhino.RhinoDoc.AddRhinoObject += OnAddObject;
            Rhino.RhinoDoc.DeleteRhinoObject += OnDeleteObject;
        }

public static Dictionary<Guid, Rhino.Geometry.GeometryBase> addedobjDict = new Dictionary<Guid, Rhino.Geometry.GeometryBase>();

private static void OnAddObject(object sender, RhinoObjectEventArgs args)
        {
            addedobjDict.Add(e.ObjectId,e.TheObject.Geometry);
        }

private static void OnDeleteObject(object sender, RhinoObjectEventArgs args)
        {
            addedobjDict.Remove(e.ObjectId);
        }
1 Like

Thank you very much @Darryl_Menezes , It works perfectly