static void RhinoDoc_ModifyObjectAttributes(object sender, RhinoModifyObjectAttributesEventArgs e) { if (e.Document == ActiveDocument) { Revit.RefreshActiveView(); } }
static void RhinoDoc_LayerTableEvent(object sender, LayerTableEventArgs e) { if (e.Document == ActiveDocument) { Revit.RefreshActiveView(); } }
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_MaterialTableEvent(object sender, Rhino.DocObjects.Tables.MaterialTableEventArgs e) { if (e.Document == ActiveDocument) { 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(); } }
static void Stop() { using (var service = DBES.ExternalServiceRegistry.GetService(DBES.ExternalServices.BuiltInExternalServices.DirectContext3DService) as DBES.MultiServerService) { var activeServerIds = service.GetActiveServerIds(); foreach (var preview in objectPreviews) { activeServerIds.Remove(preview.Key); } service.SetActiveServers(activeServerIds); foreach (var preview in objectPreviews) { service.RemoveServer(preview.Key); preview.Value.ClearPrimitives(); } } objectPreviews = null; Revit.RefreshActiveView(); }