def xplot_history(self, s, x): """plots the historys based on a list x = 'Reaction force: RF1 at Node 58 in NSET SET-NODE-BOTTOM' Building the input from info from the odb """ sName = self.myOdbDat.steps.keys()[s] xy1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=x, steps=(sName, ), ) xy1 = butterworthFilter(xyData=xy1, cutoffFrequency=0.1) c1 = session.Curve(xyData=xy1) self.chart.setValues(curvesToPlot=(c1, ), ) self.myVp.setValues(displayedObject=self.xyp) chartName = self.xyp.charts.keys()[0] self.chart = self.xyp.charts[chartName] path_filename = '%s_Xplot_step-%s_x-%s.png' % \ (self.myOdbDat.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1]) print(path_filename) # fname = self.myOdbDat.name.replace('.odb','')+'_Xplot_step-'+sName+'_'+x.split(':')[1].split(' ')[1]+'.png' #session.printToFile(fileName=fname, format=PNG, canvasObjects=(self.myVp, )) self.myVp.setValues(height=250, width=350) try: session.printToFile(path_filename, PNG, (self.myVp, )) print('%s saved' % path_filename) except: print('failed to save %s' % path_filename)
def xyplot_history(self, s, x, y): """ Display curves of theoretical and computed results in a new viewport x='Reaction force: RF1 at Node 58 in NSET SET-NODE-BOTTOM' y='Spatial displacement: U1 at Node 574 in NSET SET-NODE-MIDDLE' """ sName = self.myOdbDat.steps.keys()[s] x1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=x, steps=(sName, ), ) y1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=y, steps=(sName, ), ) xy1 = xyPlot.combine(x1, y1) # xy3.setValues(sourceDescription='combine ( "XYData-strain","XYData-stress" )') # session.xyDataObjects.changeKey(xy3.name, 'XYData-stress-strain') c1 = session.Curve(xyData=xy1) self.chart.setValues(curvesToPlot=(c1, ), ) self.myVp.setValues(displayedObject=self.xyp) chartName = self.xyp.charts.keys()[0] self.chart = self.xyp.charts[chartName] self.chart.axes1[0].labelStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes1[0].titleStyle.setValues( font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes2[0].titleStyle.setValues( font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes2[0].labelStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') #session.printOptions.setValues(vpDecorations=OFF, reduceColors=False) path_filename = '%s_XYplot_step-%s_x-%s_y-%s.png' % \ (self.myOdbDat.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1], y.split(':')[1].split(' ')[1] ) print(path_filename) # fname = self.myOdbDat.name.replace('.odb','')+'_XYplot_step-'+sName+'_'+x.split(':')[1].split(' ')[1]+'_'+y.split(':')[1].split(' ')[1]+'.png' #session.printToFile(fileName=fname, format=PNG, canvasObjects=(self.myVp, )) self.myVp.setValues(height=250, width=350) self.simple_png_save(path_filename) path_filename = path_filename.replace('png', 'avi') session.animationController.setValues(animationType=TIME_HISTORY, viewports=(self.myVp.name, )) session.animationController.animationOptions.setValues( xyShowSymbol=True, xySymbolSize=LARGE) session.animationController.play(duration=UNLIMITED) self.simple_avi_save(path_filename)
def configure_session(): """Improve layout and colors of the current figures in visualization """ from abaqus import session from abaqusConstants import (ON, OFF, SMALL, DASHED, OUTSIDE, HOLLOW_CIRCLE, DECIMAL, INCREMENT) plot_names = session.xyDataObjects.keys() if not 'XYPlot-1' in session.xyPlots.keys(): xyp = session.XYPlot('XYPlot-1') else: xyp = session.xyPlots['XYPlot-1'] chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] tmp = session.xyDataObjects.keys() if len(tmp) == 0: return xy1 = session.xyDataObjects[tmp[0]] c1 = session.Curve(xyData=xy1) chart.setValues(curvesToPlot=(c1, ), ) session.viewports['Viewport: 1'].setValues(displayedObject=xyp) chart = session.charts['Chart-1'] chart.minorAxis1GridStyle.setValues(show=True) chart.majorAxis1GridStyle.setValues(show=True) chart.majorAxis1GridStyle.setValues(style=DASHED) chart.minorAxis2GridStyle.setValues(show=True) chart.majorAxis2GridStyle.setValues(show=True) chart.majorAxis2GridStyle.setValues(style=DASHED) chart.gridArea.style.setValues(fill=False) chart.legend.setValues(show=False) # necessary to update legend values chart.legend.setValues(show=True) chart.legend.area.setValues(inset=True) chart.legend.area.setValues(originOffset=(0., 0.)) chart.legend.area.style.setValues(fill=True) chart.legend.textStyle.setValues( font='-*-arial narrow-medium-r-normal-*-*-480-*-*-p-*-*-*') for name in plot_names: c = session.Curve(xyData=session.xyDataObjects[name]) chart = session.xyPlots['XYPlot-1'].charts['Chart-1'] chart.setValues(curvesToPlot=(c, )) chart.fitCurves(fitAxes1=True, fitAxes2=True) curve = session.charts['Chart-1'].curves[name] curve.curveOptions.setValues(showSymbol=ON) curve.curveOptions.setValues(symbolSize=SMALL) curve.lineStyle.setValues(thickness=1.6) curve.symbolStyle.setValues(size=5, marker=HOLLOW_CIRCLE) ax = chart.axes1[0] ay = chart.axes2[0] ax.labelStyle.setValues( font='-*-arial narrow-bold-r-normal-*-*-480-*-*-p-*-*-*', color=COLOR_BLACK) ax.titleStyle.setValues( font='-*-arial narrow-bold-r-normal-*-*-480-*-*-p-*-*-*', color=COLOR_BLACK) ay.labelStyle.setValues( font='-*-arial narrow-bold-r-normal-*-*-480-*-*-p-*-*-*', color=COLOR_BLACK) ay.titleStyle.setValues( font='-*-arial narrow-bold-r-normal-*-*-480-*-*-p-*-*-*', color=COLOR_BLACK) ax.setValues(tickPlacement=OUTSIDE) ax.axisData.setValues( labelFormat=DECIMAL, labelNumDigits=0, minorTickCount=4, ) ay.setValues(tickPlacement=OUTSIDE) ay.axisData.setValues( labelFormat=DECIMAL, labelNumDigits=0, ) if ax.axisData.title.find('ispl') > -1: ax.axisData.setValues(labelNumDigits=1) if name.find('circumference') > -1: ax.axisData.setValues(tickMode=INCREMENT, tickIncrement=20, minorTickCount=0, minAutoCompute=False, minValue=-180, maxAutoCompute=False, maxValue=185) # if (name.find('FI_HSNFCCRT') > -1 or name.find('FI_HSNFTCRT') > -1 or name.find('FI_HSNMCCRT') > -1 or name.find('FI_HSNMTCRT') > -1 or name.find('FI_TSAIW') > -1): ay.axisData.setValues(labelNumDigits=1, minAutoCompute=False, minValue=0, maxAutoCompute=False, maxValue=2) curve.lineStyle.setValues(thickness=1.6, color=COLOR_WHINE) curve.curveOptions.setValues(showSymbol=OFF) ay.titleStyle.setValues(color=COLOR_WHINE) ay.labelStyle.setValues(color=COLOR_WHINE) # if (name.find('MS_HSNFCCRT') > -1 or name.find('MS_HSNFTCRT') > -1 or name.find('MS_HSNMCCRT') > -1 or name.find('MS_HSNMTCRT') > -1 or name.find('MS_TSAIW') > -1 or name.find('MS_MAX') > -1 or name.find('MS_MIN') > -1): ay.axisData.setValues(labelNumDigits=1, minAutoCompute=False, minValue=-0.5, maxAutoCompute=False, maxValue=1.0) curve.lineStyle.setValues(thickness=1.6, color=COLOR_DARK_BLUE) curve.curveOptions.setValues(showSymbol=OFF) ay.titleStyle.setValues(color=COLOR_DARK_BLUE) ay.labelStyle.setValues(color=COLOR_DARK_BLUE)
chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.legend.setValues(show=False) chart.legend.titleStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') chart.gridArea.style.setValues(fill=False) xyp.title.style.setValues(font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') x = 'Strain energy: ALLSE for Whole Model' sName = myOdb.steps.keys()[s] xy1 = xyPlot.XYDataFromHistory( odb=myOdb, outputVariableName=x, steps=(sName, ), ) c1 = session.Curve(xyData=xy1) chart.setValues(curvesToPlot=(c1, ), ) myViewport.setValues(displayedObject=xyp) chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] path_filename = '%s_Xplot_step-%s_x-%s' % \ (myOdb.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1]) try: myViewport.view.fitView() session.printToFile(path_filename + '.png', PNG, (myViewport, )) myViewport.view.fitView() session.animationController.setValues( animationType=TIME_HISTORY, viewports=(myViewport.name, )) # SCALE_FACTOR TIME_HISTORY session.animationController.play(duration=UNLIMITED)