public CIMVoxelRenderer Renderer {get;}
Public ReadOnly Property Renderer As CIMVoxelRenderer
public CIMVoxelRenderer Renderer {get;}
Public ReadOnly Property Renderer As CIMVoxelRenderer
ArcGIS.Desktop.Mapping.Events.MapMemberPropertiesChangedEvent.Subscribe((args) => { var voxel = args.MapMembers.OfType<VoxelLayer>().FirstOrDefault(); if (voxel == null) return; //Anything changed on a voxel layer? //At 2.x - if (args.EventHints.Any(hint => hint == MapMemberEventHint.VoxelSelectedVariableProfileIndex)) if (args.EventHints.Any(hint => hint == MapMemberEventHint.VoxelSelectedVariable)) { //Voxel variable profile selection changed var changed_variable_name = voxel.SelectedVariableProfile.Variable; //TODO respond to change, use QueuedTask if needed } else if (args.EventHints.Any(hint => hint == MapMemberEventHint.Renderer)) { //This can fire when a renderer becomes ready on a new layer; the selected variable profile //is changed; visualization is changed, etc. var renderer = voxel.SelectedVariableProfile.Renderer; //TODO respond to change, use QueuedTask if needed } }); ArcGIS.Desktop.Mapping.Voxel.Events.VoxelAssetChangedEvent.Subscribe((args) => { //An asset changed on a voxel layer System.Diagnostics.Debug.WriteLine(""); System.Diagnostics.Debug.WriteLine("VoxelAssetChangedEvent"); System.Diagnostics.Debug.WriteLine($" AssetType: {args.AssetType}, ChangeType: {args.ChangeType}"); if (args.ChangeType == VoxelAssetEventArgs.VoxelAssetChangeType.Remove) return; //Get "what"changed - add or update //eg IsoSurface VoxelLayer voxelLayer = null; if (args.AssetType == VoxelAssetEventArgs.VoxelAssetType.Isosurface) { var surface = MapView.Active.GetSelectedIsosurfaces().FirstOrDefault(); //there will only be one selected... if (surface != null) { voxelLayer = surface.Layer; //TODO respond to change, use QueuedTask if needed } } //Repeat for Slices, Sections, LockedSections... //GetSelectedSlices(), GetSelectedSections(), GetSelectedLockedSections(); });
//var voxelLayer = ... ; //Must be on the QueuedTask.Run() var variable = voxelLayer.GetVariableProfiles().First(); var renderer = variable.Renderer; if (variable.DataType == VoxelVariableDataType.Continuous) { //Renderer will be stretch var stretchRenderer = renderer as CIMVoxelStretchRenderer; //access the renderer } else //VoxelVariableDataType.Discrete { //Renderer will be unique value var uvr = renderer as CIMVoxelUniqueValueRenderer; //access the renderer }
//var voxelLayer = ... ; //Must be on the QueuedTask.Run() //Get the variable profile on which to access the data var variable = voxelLayer.SelectedVariableProfile; //or use ...voxelLayer.GetVariableProfiles() //Data range //At 2.x - //var min = variable.GetVariableStatistics().MinimumValue; //var max = variable.GetVariableStatistics().MaximumValue; var min = variable.Statistics.MinimumValue; var max = variable.Statistics.MaximumValue; //Color range (Continuous only) double color_min, color_max; if (variable.DataType == VoxelVariableDataType.Continuous) { var renderer = variable.Renderer as CIMVoxelStretchRenderer; color_min = renderer.ColorRangeMin; color_max = renderer.ColorRangeMax; }
Target Platforms: Windows 11, Windows 10