可以将命令行参数传递给Abaqus Python吗?
我有一个在Abaqus中用的Python脚本,用来做参数研究。每次想要运行不同的选项时,都要进代码里去修改,真是太麻烦了。我希望能通过传递参数给脚本,这样就可以在不改代码的情况下运行不同的选项。
我想做的事情大概是这样的……
abaqus cae script='Script.py --verbose --data=someData.dat'
我试过上面的做法,也试过
abaqus python Script.py --verbose --data=someData.dat
但都没有成功。这真的有可能吗?
4 个回答
2
这应该是可行的。我们来看一个例子,如果你尝试运行这样的命令:
abaqus python script.py 30 40
30和40是传给distance.py这个脚本的参数。在这个脚本的Python代码里,你应该把第一个参数当作:
import sys
def someFunction(x,y):
#some code
return someThing
if __name__ == "__main__":
x = sys.argv[1]
y = sys.argv[2]
returnedVal = someFunction(x,y)
print (returnedVal)
9
好发现,Schickmeister。对我来说,怎么实现这个还不太清楚,所以这里有个例子。
在命令提示符(cmd.exe)中启动 abaqus python。
abaqus cae noGUI
输入一些 python 代码。
>>>import sys
>>>print sys.argv
['C:\\ABAQUS\\6.13-2SE\\code\\bin\\ABQcaeK.exe', '-cae', '-noGUI', '-lmlog', 'ON', '-tmpdir', 'C:\\Windows\\TEMP']
>>>quit()
看看有多少个参数出现了?这就是我们需要获取最后一个参数的原因。现在用参数 "test.odb" 启动你的 python 脚本。
abaqus cae noGUI=odb_to_video.py -- test.odb
然后在你的脚本中获取最后一个参数,方法是:
odbname = sys.argv[-1]
myOdb = visualization.openOdb(path=odbname)
希望这能帮到你!
6
来自Abaqus脚本用户手册:
你可以通过在命令行中输入--,然后用一个或多个空格分开后面的参数,把参数传递给脚本。这些参数在Abaqus/CAE执行过程中会被忽略,但在脚本内部是可以使用的。想了解更多信息,可以查看“Abaqus/CAE执行”,在Abaqus分析用户手册的第3.2.5节,以及“Abaqus/Viewer执行”,在Abaqus分析用户手册的第3.2.6节。