rebar_set_command=[]
for i in rebar_instances:
rebar_set_command.append('m.rootAssembly.instances[\''+i+'\'].faces.getByBoundingBox(0,0,0,X,Y,Z')
a='+'.join(rebar_set_command)
m.rootAssembly.Set(faces=a, name='A')
但是不能这样做,因为我认为 faces=a 中的 a 值包含引号。
我怎样才能调用这个Abaqus命令中的字符串而不包含开头和结尾的引号?谢谢!
问题是 'm.rootAssembly.instances[\''+i+'\'].faces.getByBoundingBox(0,0,0,X,Y,Z'
给你一个字符串。这不是一个 Python 表达式。你可能需要查看一些 Python 教程来了解表达式、变量和基本类型,例如字符串。
在你的例子中,你需要将字符串中的内容作为一个实际的表达式来运行,以获得返回的面孔序列,并由此建立一个面孔数组。为了使其更复杂,Abaqus返回他们自己的内部类型。Sequence
,当你呼叫 getByBoundingBox
. 这种类型的工作很麻烦,因为你不能创建一个空的(至少我不知道)。所以动态地建立一个集合的面列表需要一些额外的注意。在下面的代码中,我得到了每个钢筋实例的面序列,然后将每个单独的面添加到我自己的面列表中。faces
. 最后,为了创建集合,Abaqus对类型上的 faces
参数。我们需要创建一个 part.FaceArray
对象,让阿巴库斯满意。
import part
faces = []
for i in rebar_instances:
face_sequence = m.rootAssembly.instances[i].faces.getByBoundingBox(0,0,0,X,Y,Z)
faces += [f for f in face_sequence]
m.rootAssembly.Set(faces=part.FaceArray(faces), name='A')