Tag and Group Result Objects Based on Scoping and Load Steps

Goal:

  • Add results based on the number of load steps

  • Assign tags to created results based on scoping and type of result

  • Group results based on tags

Code:

# Get the number of steps for the analysis
analysis_settings = Model.Analyses[0].AnalysisSettings
number_of_steps = analysis_settings.NumberOfSteps

# Get the Named Selection of interest
solution = Model.Analyses[0].Solution
bolt = DataModel.GetObjectsByName("Bolt")[0] #This is a named selection!!

with Transaction():
    # Create tags that will be used later for finding objects
    tag2 = Ansys.Mechanical.Application.ObjectTag("Bolt")
    tag3 = Ansys.Mechanical.Application.ObjectTag("U Sum")
    tag4 = Ansys.Mechanical.Application.ObjectTag("EQV")
    DataModel.ObjectTags.Add(tag2)
    DataModel.ObjectTags.Add(tag3)
    DataModel.ObjectTags.Add(tag4)

    # For each step add the desired result objects with appropriate settings
    for step in range(1, number_of_steps):
        u_result = solution.AddTotalDeformation()
        u_result.Name = "Total Deformation @ " + str(step) + " sec"
        u_result.DisplayTime = analysis_settings.GetStepEndTime(step)
        # Apply tags
        tag3.AddObject(u_result)

        s_result = solution.AddEquivalentStress()
        s_result.Name = "Eqv Stress @ " + str(step) + " sec"
        tag4.AddObject(s_result)

    for step in range(1, number_of_steps):
        u_result = solution.AddTotalDeformation()
        u_result.Name = "Bolt Deformation @ " + str(step) + " sec"
        u_result.Location = bolt
        u_result.DisplayTime = analysis_settings.GetStepEndTime(step)
        u_result.CalculateTimeHistory = False
        tag2.AddObject(u_result)
        tag3.AddObject(u_result)

        s_result = solution.AddEquivalentStress()
        s_result.Name = "Bolt Stress @ " + str(step) + " sec"
        s_result.Location = bolt
        tag2.AddObject(s_result)
        tag4.AddObject(s_result)

    tag2_list = tag2.Objects
    tag3_list = tag3.Objects
    tag4_list = tag4.Objects

    # Find similar objects using the tags
    u_all = [x for x in tag3_list if x not in tag2_list]
    u_bolt = [x for x in tag3_list if x in tag2_list]
    s_all = [x for x in tag4_list if x not in tag2_list]
    s_Bolt = [x for x in tag4_list if x in tag2_list]

# Group similar objects
group = Tree.Group(u_all)
group.Name = "Total Deformation (All Bodies)"
group = Tree.Group(u_bolt)
group.Name = "Total Deformation (Bolt)"
group = Tree.Group(s_all)
group.Name = "Stress (All Bodies)"
group = Tree.Group(s_Bolt)
group.Name = "Stress (Bolt)"

Tree.Activate([solution])