请教一个ABAQUS里用Python脚本编辑关键字的问题

Mojave3
4AD 2019-01-06 字数 522

在abaqus CAE中通过关键字编辑,添加分析步的温度场:

*temperature,input=aba_100.dat

在每一个分析步中都添加一行*temperature,关键字,对应的.dat文件依次为 aba_1.dat ~ aba_100.dat。

因涉及到的分析步较多,我想通过 python 脚本实现。但添加关键字后,abaqus.rpy中对应的代码为:

mdb.models['800'].keywordBlock.insert(33, """*temperature, input=aba_100.dat""")

上述代码中 33 即 keyword 的行号,请问如何用 python 代码获取这一行号?

然后就可以通过分析步名称的关键字查找,在python中通过一个循环语句为每一个分析步添加一行 *temperature 关键字

FEA 有限元天地
7 个回复
mcx
娶柠檬妻 2019-01-09

不会,我一般都用Cshell编。

Python版的大神应该知道。

【 在 Mojave3 (4AD) 的大作中提到: 】

: 标  题: 请教一个ABAQUS里用Python脚本编辑关键字的问题

: 发信站: 水木社区 (Sun Jan  6 16:10:36 2019), 站内

: 在abaqus CAE中通过关键字编辑,添加分析步的温度场:

: *temperature,input=aba_100.dat

: 在每一个分析步中都添加一行*temperature,关键字,对应的.dat文件依次为 aba_1.dat ~ aba_100.dat。

: 因涉及到的分析步较多,我想通过 python 脚本实现。但添加关键字后,abaqus.rpy中对应的代码为:

:     mdb.models['800'].keywordBlock.insert(33, """*temperature, input=aba_100.dat""")

: 上述代码中 33 即 keyword 的行号,请问如何用 python 代码获取这一行号?

: 然后就可以通过分析步名称的关键字查找,在python中通过一个循环语句为每一个分析步添加一行 *temperature 关键字

: --

Mojave3
4AD 2019-01-11

Python版搞ABAQUS的不多啊

【 在 mcx 的大作中提到: 】

: 不会,我一般都用Cshell编。

: Python版的大神应该知道。

mcx
娶柠檬妻 2019-01-12

你只是需要抓出这个行号而已,用cshell和perl都做得到,python如何实现,问相关大神即可,不需要大神会 abaqus啊。

【 在 Mojave3 (4AD) 的大作中提到: 】

: 标  题: Re: 请教一个ABAQUS里用Python脚本编辑关键字的问题

: 发信站: 水木社区 (Fri Jan 11 19:44:08 2019), 站内

: Python版搞ABAQUS的不多啊

: 【 在 mcx 的大作中提到: 】

: : 不会,我一般都用Cshell编。

: : Python版的大神应该知道。

: :

: --

Mojave3
4AD 2019-01-12

好,转到Python版

【 在 mcx 的大作中提到: 】

: 你只是需要抓出这个行号而已,用cshell和perl都做得到,python如何实现,问相关大神即可,不需要大神会 abaqus啊。

Mojave3
4AD 2019-01-15

在 help 文件里找到一个例子,有一个函数找位置的函数

##########################################

def GetBlockPosition(modelName, blockPrefix):

if blockPrefix == '':

return len(mdb.modelsodelName].keywordBlock.sieBlocks)-1

pos = 0

for block in mdb.modelsodelName].keywordBlock.sieBlocks:

if block[0:len(blockPrefix)].lower()==blockPrefix.lower():

return pos

pos=pos+1

return -1

##########################################

##

##  Add keywords

##

mdb.models['Model-1'].keywordBlock.synchVersions()

mdb.models['Model-1'].keywordBlock.insert(GetBlockPosition('Model-1', '*End Assembly')-1, """*NORMAL, TYPE=ELEMENT

Inner-a,  Inner-a, -0.3962,  0.9171,  0.0446

Inner-b,  Inner-b,  0.3962, -0.9171,  0.0446

Leg-a,    Leg-a,   -0.1820,  0.9829,  0.0205

Leg-b,    Leg-b,    0.1820, -0.9829,  0.0205""")

##

【 在 mcx 的大作中提到: 】

: 你只是需要抓出这个行号而已,用cshell和perl都做得到,python如何实现,问相关大神即可,不需要大神会 abaqus啊。

junerainn
八戒 2019-01-16

试试正则表达式,来查找

【 在 Mojave3 (4AD) 的大作中提到: 】

: 在abaqus CAE中通过关键字编辑,添加分析步的温度场:

: *temperature,input=aba_100.dat

: 在每一个分析步中都添加一行*temperature,关键字,对应的.dat文件依次为 aba_1.dat ~ aba_100.dat。

: ...................

Z5boy
二五仔 2019-01-18

zan

【 在 Mojave3 (4AD) 的大作中提到: 】

: 标  题: Re: 请教一个ABAQUS里用Python脚本编辑关键字的问题

: 发信站: 水木社区 (Tue Jan 15 12:25:47 2019), 站内

: 在 help 文件里找到一个例子,有一个函数找位置的函数

: ##########################################

: def GetBlockPosition(modelName, blockPrefix):

:     if blockPrefix == '':

:         return len(mdb.modelsodelName].keywordBlock.sieBlocks)-1

:     pos = 0

:     for block in mdb.modelsodelName].keywordBlock.sieBlocks:

:         if block[0:len(blockPrefix)].lower()==blockPrefix.lower():

:             return pos

:         pos=pos+1

:     return -1

: ##########################################

: ##

: ##  Add keywords

: ##

: mdb.models['Model-1'].keywordBlock.synchVersions()

: mdb.models['Model-1'].keywordBlock.insert(GetBlockPosition('Model-1', '*End Assembly')-1, """*NORMAL, TYPE=ELEMENT

: Inner-a,  Inner-a, -0.3962,  0.9171,  0.0446

: Inner-b,  Inner-b,  0.3962, -0.9171,  0.0446

: Leg-a,    Leg-a,   -0.1820,  0.9829,  0.0205

: Leg-b,    Leg-b,    0.1820, -0.9829,  0.0205""")

: ##

: 【 在 mcx 的大作中提到: 】

: : 你只是需要抓出这个行号而已,用cshell和perl都做得到,python如何实现,问相关大神即可,不需要大神会 abaqus啊。

: :

: --