【Python&Hypermesh】ABAQUS导入网格,并在Part内保留SET

发布时间 2023-05-03 21:54:20作者: hayden_william

在Hypermesh定义好set,划分好网格以后,可以导出为INP。然后在ABAQUS导入inp,就可以得到网格。但是这样倒进来的网格一般有两个问题:

  1. 网格全在一个部件里,原来定义好的Set会出现在装配级别下,而不是Part级别,这在某些情况还是比较麻烦的
  2. Hypermesh中的component并不和ABAQUS的Part相对应

这是由于Hypermesh的模板有问题,导出时缺少某些关键字。可以自己补充完整

python脚本:

# ********只处理单个PART*****
def function(InpFile,OutInp):
    if len(InpFile)==1:
        OutInp='Out.inp'
    else:
        OutInp=[]
        for i in range(1,len(InpFile)):
            OutInp.append(str(i)+'.inp')
    for i in range(len(InpFile)):
        SubFun(InpFile[i],OutInp[i])
        
def SubFun(OutInp,InpFile):
    f2 = open(OutInp, 'w')
    with open(InpFile, 'r',encoding="utf-8") as f1:
        for i in f1:
            if i=='*NODE':
                f2.write("*PART,NAME=PART-1\n")
                f2.write(i)
            elif i=='\n'|i=='*****':
                f2.write('*END PART\n')
                f2.write('*ASSEMBLY,NAME=ASSEM-1\n')
                f2.write('   *INSTANCE, NAME=IN-1, PART=Part-1\n')
                f2.write('   *END INSTANCE\n')
                f2.write('*END ASSEMBLY\n')
    f2.close()