许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Python代码实现Abaqus创建路径并提取节点应力

Python代码实现Abaqus创建路径并提取节点应力

阅读数 9
点赞 0
article_banner


以下是全部python代码,因为导入到abaqus中时,代码中出现中文后会出现报错(即使在注释内也会)。

代码块

Python


     自动换行
   


     复制代码

import numpy
from abaqusConstants import *
import odbAccess
import csv
import os

def odb_data_of_select_frame(odbpath,csv_path,TransformPath,SelectFrame,Path_Name,Path_Node,Outputdata):
    # open
    o1 = session.openOdb(name=odbpath)
    path = session.Path(name=Path_Name, type=NODE_LIST, expression=(('PART-1-1', (Path_Node,)),))
    data_dict = {}
    #select output data
    if Outputdata == 's11':
        s11 = session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='S',
                                                                             outputPosition=INTEGRATION_POINT,
                                                                             refinement=(COMPONENT, 'S11'), )
    elif Outputdata == 's22':
        s22 = session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='S',
                                                                             outputPosition=INTEGRATION_POINT,
                                                                             refinement=(COMPONENT, 'S22'), )
    elif Outputdata == 'sm':
        sMises = session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='S',
                                                                                outputPosition=INTEGRATION_POINT,
                                                                                refinement=(INVARIANT, 'Mises'))
    elif Outputdata == 'cfm':
        cfm = session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='CF', outputPosition=NODAL,
                                                                             refinement=(INVARIANT, 'Magnitude'), )
    elif Outputdata == 'cf3':
        cf3 = session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='CF', outputPosition=NODAL,
                                                                             refinement=(COMPONENT, 'CF3'), )
    #Generate data and write it to data_dict
    for i in range(0, len(SelectFrame), 1):
        # name
        XY_DateName = 'Frame' + str(SelectFrame[i])
        # select Frame
        session.viewports['Viewport: 1'].odbDisplay.setFrame(step=0, frame=SelectFrame[i])
        # Data
        pth = session.paths[Path_Name]  # path name
        session.XYDataFromPath(name=XY_DateName, path=pth, includeIntersections=False,
                               projectOntoMesh=False, pathStyle=PATH_POINTS, numIntervals=10,
                               projectionTolerance=0, shape=DEFORMED, labelType=TRUE_DISTANCE,
                               removeDuplicateXYPairs=True, includeAllElements=False)
        xy = session.xyDataObjects[XY_DateName]
        data_dict[XY_DateName] = xy
    # Write data to CSV, each dataset as a separate column
    f = open(csv_path, "w", )
    for i in range(0, len(SelectFrame), 1):
        XY_Name = 'Frame' + str(SelectFrame[i])
        if i == 0:
            for j in range(0, len(data_dict[XY_Name]), 1):
                f.write(str(data_dict[XY_Name][i][0]) + ',')
            f.write('\n')
            for j in range(0, len(data_dict[XY_Name]), 1):
                f.write(str(data_dict[XY_Name][i][1]) + ',')
            f.write('\n')
        elif i == len(data_dict):
            for z in range(0, len(data_dict[XY_Name]), 1):
                f.write(str(data_dict[XY_Name][i][1]) + ',')
        else:
            for z in range(0, len(data_dict[XY_Name]), 1):
                f.write(str(data_dict[XY_Name][i][1]) + ',')
            f.write('\n')
    f.close()

    with open(csv_path, 'rb') as infile:
        reader = csv.reader(infile)
        data = list(reader)

    # transform
    transposed_data = zip(*data)

    # output
    with open(TransformPath, 'wb') as outfile:
        writer = csv.writer(outfile)
        for row in transposed_data:
            writer.writerow(row)
    # delect
    for i in range(0, len(SelectFrame), 1):
        DelectName = 'Frame' + str(SelectFrame[i])
        del session.xyDataObjects[DelectName]
    del session.paths[Path_Name]
    # Delete the redundant files and obtain the target file
    os.remove(csv_path)
    os.rename(TransformPath, csv_path)

#Modify the variables as required
OutputFileName = 'bottom'#This is output csv name.
odbname = 'YourFile.odb'
FilePath = 'F:/Progressive_collapse_behaviour/obd/'#modify to your path
SelectFrame = [12,435,233,423]#target frame
Path_Node = '42175:42225:1'#create path
Outputdata = 's11'

# Don't modify the following variables
Path_Name = 'P2'
TransformName = OutputFileName+'TT'
odbpath = FilePath + odbname
csv_path = FilePath + 'output/' + OutputFileName + '.csv'
TransformPath = FilePath + 'output/' + TransformName + '.csv'
#run
odb_data_of_select_frame(odbpath,csv_path,TransformPath,SelectFrame,Path_Name,Path_Node,Outputdata)

      复制成功
     
     
     
     

程序会在odb所在的文件中,生成一个output文件夹,输出的csv文件在里面。

通过运行脚本来启动代码



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空