/// <summary> /// Changes selected issue marker in given document's tracking /// </summary> /// <param name="document">A Revit document</param> /// <param name="controlIndex">Id of the clicked In-Canvas control</param> public static void SelectMarker(Document document, int controlIndex) { TemporaryGraphicsManager tempGraphicsManager = TemporaryGraphicsManager.GetTemporaryGraphicsManager(document); IssueMarkerTracking issueMarkerTracking = IssueMarkerTrackingManager.GetInstance().GetTracking(document); ResourceProvider provider = ResourceProvider.GetInstance(); // Check if the new selection is valid IssueMarker newSelectedMarker = issueMarkerTracking.GetMarkerByIndex(controlIndex); if (newSelectedMarker == null) { return; } // clear previous selection IssueMarker selectedMarker = issueMarkerTracking.GetMarkerByIndex(issueMarkerTracking.GetSelected()); if (selectedMarker != null) { selectedMarker.InCanvasControlData.ImagePath = provider.IssueImage; // This is how to set updated data to a control tempGraphicsManager.UpdateControl(selectedMarker.ControlIndex, selectedMarker.InCanvasControlData); issueMarkerTracking.SetSelected(-1); } if (newSelectedMarker != selectedMarker) { newSelectedMarker.InCanvasControlData.ImagePath = provider.SelectedIssueImage; // This is how to set updated data to a control tempGraphicsManager.UpdateControl(newSelectedMarker.ControlIndex, newSelectedMarker.InCanvasControlData); issueMarkerTracking.SetSelected(controlIndex); } }