前一段时间学习了姜丙云博士的《abaqus python 二次开发攻略》一书,算是给自己打了点基础,但是由于我是初学,书中的许多内容和函数当时不理解,后续学完了以后忘了的忘了搁置的搁置,很难有动力回头一个个再找一遍。
为了避免这种情况再次出现,我会将曹金凤老师的《python语言在abaqus中的应用》这本书中新见到的函数,难懂的概念记录在这篇帖子下面。如果大家看了觉得有用麻烦点个赞。
1.startwith函数:用于用于检测字符串是否以指定的子字符串开始。
str.startswith('search value', start, end)
例:
str = "Hello world" n = str.startsWith("o", 4) print (n = str.startsWith("o", 4)) #输出Ture
2.全局变量与局部变量:
参考:Python全局变量和局部变量(超详细,纯干货,保姆级教学)_python 全局变量_Kristen_jiang的博客-CSDN博客
3.generator函数
Generator 函数的定义格式与普通函数的定义格式完全相同,唯一区别是,Generator 函数使用保留字 yield 来返回生成的数据项, 而普通函数使用保留字 return 返回函数的计算结果。
yield 保留字不会中止程序的执行,返回数据后程序继续向后执行;而 return 保留字返回值后,程序将终止执行。
值得注意的是,yeild执行的generator运算为一种惰性运算。换句话说,函数里有了yield后,执行到yield就会停住,当需要再往下算时才会再往下算。所以生成器函数即使是有无限循环也没关系,它需要算到多少就会算多少,不需要就不往下算。所以一般结合next()函数一起使用。
在曹金凤老师的书中使用的方法是print gen.next(),这是python2的使用方法。在python3中我们一般用作print(next(gen))。
4.apply()函数
python3中已经移除,用于给函数传递多个参数使用。
apply()
函数用于调用函数或方法,并且允许你传递一个函数的参数作为一个元组(tuple)或字典(dictionary)
5.execfile('filename')函数
该函数在命令行中输入可打开指定脚本,效果等同于文件-运行脚本
6.getInput()以及getInputs()函数
该函数用于与使用者进行交互(个人认为不如RSG),使用者通过输入参数可将参数指定给getInput函数赋予的值,如下图:
当你在ABAQUS脚本中插入这行代码:
input = getInput( please enter a number , 25 )
则会在CAE界面中出现以下提示:
7.CAE命令行的tab键自动补全功能(仅在命令行可用)
在 Abaqus 的命令提示符下, < Tab > 键具有自动输入文件和文件夹名字的功能。与此类似, 在 Abaqus/CAE的命令行接口 中也可以使用 < Tab > 键来自动输入对象名,提高脚本 命令的书写效率。
例如,如果创建了 3 个部件 Part-1、 Part-2 和 Part-3, 在命令行接口中输 入命令 “mdb. models [ Model-1 ]. parts[”,此时,每按一次 < Tab > 键,将对模型中的所有部件进行循环, 并自动完成另一半方括号。如果希望从最 后一个部件向前循环, 则需要按 < Shift + Tab > 组合键。
8.使用getsubset()函数可以获取指定区域的场输出值
直接看例子好理解:
displacement = lastFrame.fieldOutputs[U] center = odb.rootAssembly.instances[ PART-1-1 ].nodeSets[ PUNCH ] centerDisplacement = displacement.getSubset(region = center) centerValues = centerDisplacement.values for v in centerValues: print v.nodeLabel,v.ata
9.后处理背景改白色
session.graphicsOptions.setValues(backgroundStyle = SOLID,backgroundColor = #FFFFFF)
ok,这本书重要的地方很多,比如pretty print函数等。我摘出来的只是我现在还没掌握或者没应用到的重点,特记录在此,如果有二次开发的需求建议大家查看原书进行学习