Hello mjmiddle,
I tried to use a modified version of this script to save the tabular results in a CSV file for a Parameter Set I am evaluating. However, when I try to update the Design Points through Workbench, the script does not work at all. Only when I manually run the simulations through Mechanical does the script store results in a CSV file. I have written the script in a Python Code Object. Can you please let me know what might be going worng? I have been stuck on this issue for many days now. I need to extract these results since I need the temperature values for all the time steps (I am performing transient thermal simuations).
For your reference, I am sharing the script that I am using for my use-case. The Property Provider has been modified to include the Design Point number as a Parameter.
def after_post(this, solution):# Do not edit this line
"""
Called after post processing.
Keyword Arguments :
this -- the datamodel object instance of the python code object you are currently editing in the tree
solution -- Solution
"""
# User Dir
import os
import csv
import wbjn
UserDir = os.path.dirname(ExtAPI.DataModel.AnalysisList[0].WorkingDir) + "\..\..\..\user_files\\"
# DPValue as parameter
DPValue = this.GetCustomPropertyByPath("Parameter/DPValue").Value
dpn = "DP_"+str(int(DPValue))
def writeCSV(filename, data):
#Function to write python list to a csv file
with open(filename, 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=';', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in data:
spamwriter.writerow(row)
ResultsOfInterest = []
ResultsOfInterest.append(ExtAPI.DataModel.AnalysisList[0].Solution.Children[1].Name)
ResultsOfInterest.append(ExtAPI.DataModel.AnalysisList[0].Solution.Children[2].Name)
ResultsOfInterest.append(ExtAPI.DataModel.AnalysisList[0].Solution.Children[3].Name)
ResultsOfInterest.append(ExtAPI.DataModel.AnalysisList[0].Solution.Children[4].Name)
cmd = 'returnValue(GetUserFilesDirectory())'
user_dir = wbjn.ExecuteCommand(ExtAPI, cmd)
solution=ExtAPI.DataModel.AnalysisList[0].Solution
for j, item in enumerate(solution.Children):
if item.GetType() == Ansys.ACT.Automation.Mechanical.Results.ThermalResults.TemperatureResult:
if item.Name in ResultsOfInterest:
item.Activate()
data=[]
del data[:]
Pane=ExtAPI.UserInterface.GetPane(MechanicalPanelEnum.TabularData)
Con = Pane.ControlUnknown
for R in range(1,Con.RowsCount+1):
data.append([])
for C in range(2,Con.ColumnsCount+1):
data[-1].append(Con.cell(R,C).Text)
writeCSV(user_dir + "/" + Model.Analyses[0].Name + " - " + item.Name +dpn+ ".csv", data)
pass
This script was originally written by one Pat Tessaro of Ozen Engineering Inc. I have modified the script which I found on their blogpost.