static void Start()
        {
            objectPreviews = new Dictionary <Guid, DocumentPreviewServer>();

            using (var service = DBES.ExternalServiceRegistry.GetService(DBES.ExternalServices.BuiltInExternalServices.DirectContext3DService) as DBES.MultiServerService)
            {
                var activeServerIds = service.GetActiveServerIds();
                foreach (var o in ActiveDocument.Objects)
                {
                    if (!ObjectPrimitive.IsSupportedObject(o, true))
                    {
                        continue;
                    }

                    var preview  = new DocumentPreviewServer(o);
                    var serverId = preview.GetServerId();
                    objectPreviews.Add(serverId, preview);
                    service.AddServer(preview);
                    activeServerIds.Add(serverId);
                }
                service.SetActiveServers(activeServerIds);
            }

            Revit.RefreshActiveView();
        }
 static void RhinoDoc_DeleteRhinoObject(object sender, RhinoObjectEventArgs e)
 {
     if (e.TheObject.Document == ActiveDocument && ObjectPrimitive.IsSupportedObject(e.TheObject, false))
     {
         Revit.EnqueueReadAction((doc, canceled) => objectPreviews[e.TheObject.Id]?.Unregister());
         Revit.RefreshActiveView();
     }
 }
 static void RhinoDoc_AddRhinoObject(object sender, RhinoObjectEventArgs e)
 {
     if (e.TheObject.Document == ActiveDocument && ObjectPrimitive.IsSupportedObject(e.TheObject, true))
     {
         Revit.EnqueueReadAction((doc, canceled) => new DocumentPreviewServer(e.TheObject).Register());
         Revit.RefreshActiveView();
     }
 }