Abaqus脚本。调用存储在变量中的字符串而不加引号?

问题描述 投票:0回答:1
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命令中的字符串而不包含开头和结尾的引号?谢谢!

python variables set quote abaqus
1个回答
0
投票

问题是 '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')
© www.soinside.com 2019 - 2024. All rights reserved.