Set Analysis Settings from Excel file - demo extension
Pernelle Marone-Hitz
Member, Moderator, Employee Posts: 871
✭✭✭✭
Below is an example extension that illustrates reading information from an Excel file and defining analysis settings (number of steps, step end tile, number of substeps) based on data written in Excel file.
Tagged:
0
Answers
-
Excel file is defined as follows:
Some important points:
Tab is called “AnalysisSettings”
User must first define number of steps in B6 cell
User can add new values (in columns) but should not change the lines (ie, step end time is read in line 10 for example)
Some settings are hardcoded in the extension and not read from file (Autotime stepping and “Define By” settings).
The .xml file is:
<extension version="1" name="SetAnalysisSettings"> <guid shortid="SetAnalysisSettings">B8050A4F-DB37-46D9-BB33-349D70027F2D</guid> <script src="main.py" /> <interface context="Mechanical"> <images>images</images> <toolbar name="SetAnalysisSettings" caption="Set Analysis Settings"> <entry name="SetAnalysisSettings" icon="testIcon"> <callbacks> <onclick>SetAnalysisSettings</onclick> </callbacks> </entry> </toolbar> </interface> </extension>
The .py file is:
def SetAnalysisSettings(analysis): import clr clr.AddReference("Ans.UI.Toolkit") clr.AddReference("Microsoft.Office.Interop.Excel") import Microsoft.Office.Interop.Excel as Excel excel = Excel.ApplicationClass() #excel.Visible = True # makes the Excel application visible to the user #excel.ScreenUpdating = True # enables screen refreshing. import Ansys.UI.Toolkit ## Create Windows explorer pop-up DefaultFolder = r'C:\' FilePath =Ansys.UI.Toolkit.FileDialog.ShowOpenFilesDialog(Ansys.UI.Toolkit.Dialog(),DefaultFolder,'All Files(s)|*.*',0,'Select .fac file',None) if str(FilePath[0]) != 'OK': return filename = list(FilePath[1])[0] # only one Excel file must be selected workbook = excel.Workbooks.Open(filename) inputdata=workbook.Worksheets("AnalysisSettings").Select()# Select Worksheet by Name ws1 = workbook.Worksheets("AnalysisSettings") ## Create analysis settings from reading Excel sheet analysisSettings = analysis.AnalysisSettings # Read and store values numberSteps = int(ws1.Range("B6").Value2) stepEndTimeList=[] autotimeSteppingList=[] numberSubstepsList=[] for step in range(numberSteps): # read values stepEndTime = str(ws1.Cells(10,2+step).Value2) # read step end time autotimeStepping = str(ws1.Cells(11,2+step).Value2) # read autotimeStepping numberSubsteps = str(ws1.Cells(13,2+step).Value2) # read number of substeps # store values stepEndTimeList.append(stepEndTime) # append to list of steps end time autotimeSteppingList.append(autotimeStepping) # append to list of autotimeStepping numberSubstepsList.append(numberSubsteps) # append to list of substeps # transform values with needed format stepEndTimeList = [Quantity(i+"[sec]") for i in stepEndTimeList] numberSubstepsList = [int(float(i)) for i in numberSubstepsList] # Apply settings analysisSettings.Activate() for step in range(1,numberSteps+1): analysisSettings.NumberOfSteps = step analysisSettings.CurrentStepNumber = step # set current step number analysisSettings.StepEndTime = stepEndTimeList[step-1]# apply step end time analysisSettings.DefineBy = TimeStepDefineByType.Substeps analysisSettings.NumberOfSubSteps = numberSubstepsList[step-1] analysisSettings.AutomaticTimeStepping = AutomaticTimeStepping.Off ExtAPI.Log.WriteMessage(str(numberSubstepsList[step-1])) ExtAPI.Log.WriteMessage(str(analysisSettings.NumberOfSubSteps)) ExtAPI.DataModel.Tree.Refresh() excel.Application.Quit() ## Close Only the Excel file. excel.Quit() ## Close entire Excel
2