예제 #1
0
파일: abaqus.py 프로젝트: kangwonlee/mechpy
 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)
예제 #2
0
파일: abaqus.py 프로젝트: kangwonlee/mechpy
    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)
예제 #4
0
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)