How to set common max and min values for contour plots across different result objects?

Tasos
Tasos Member, Employee Posts: 9
Name Dropper 5 Likes First Comment Photogenic
✭✭✭
edited October 4 in Structures

In the context of transient analysis, when requesting a result at all sets, each result has its own upper and lower bounds for the contour plot. I want to have a common contour plot scale across my set of results on different time steps so I can make effective comparisons.

Best Answer

  • Tasos
    Tasos Member, Employee Posts: 9
    Name Dropper 5 Likes First Comment Photogenic
    ✭✭✭
    edited December 10 Answer ✓

    To automate this workflow, you can place the result set under a common group in the model tree. Then, with the Group object selected (active) in the tree, use the following script.
    The script iterates over all the results in the group, reads each upper and lower bound, then finds the total maximum and minimum of the set, and applies these as common bounds for all the contour plots.
    (Script tested in 2023R1 and 2024R2)

    # With the group of results selected:
    rgroup = ExtAPI.DataModel.Tree.ActiveObjects[0]
    # Initialising lists of all maxima and minima
    minlist = []
    maxlist = []
    
    # Iterating over the result objects in the group to get all maxima and minima
    for ri in rgroup.Children:
        # Getting current result legend data
        ExtAPI.DataModel.Tree.Activate(ri)
        clset = Ansys.Mechanical.Graphics.Tools.CurrentLegendSettings()
        # Get current minimum:
        cmin = clset.GetLowerBound(0) # Lower bound of lower band.
        # GetLowerBound outputs Quantity type, so we'll postproecess it to get a float 
        cmin = str(cmin) # Convert to String type
        cmin = cmin.Split(' ')[0] # Splitting and keeping the first, numerical part
        cmin = float(cmin) # Converting to float type
        minlist.append(cmin) 
    
        # Get current maximum:
         = clset.NumberOfBands
        cmax = clset.GetUpperBound(-1) # Upper bound of upper band
        # GetUpperBound outputs Quantity type, so we'll postproecess it to get a float 
        cmax = str(cmax) # Convert to String type
        cmax = cmax.Split(' ')[0] # Splitting and keeping the first, numerical part
        cmax = float(cmax) # Converting to float type
        maxlist.append(cmax)
    
    # Iterating over all results and setting the global minimum and maximum as top and bottom contour limits
    tmin = min(minlist)
    tmax = max(maxlist)
    for ri in rgroup.Children:
        ExtAPI.DataModel.Tree.Activate(ri)
        clset = Ansys.Mechanical.Graphics.Tools.CurrentLegendSettings()
        clset.SetLowerBound(0,Quantity(tmin,'W m^-1 m^-1'))
        clset.SetUpperBound(-1,Quantity(tmax,'W m^-1 m^-1'))