Abaqus脚本:调用存储在变量中的字符串(不带引号)?

2024-06-14 09:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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命令的字符串?谢谢


Tags: instancesnameinfor结尾command引号join
1条回答
网友
1楼 · 发布于 2024-06-14 09:14:29

问题是'm.rootAssembly.instances[\''+i+'\'].faces.getByBoundingBox(0,0,0,X,Y,Z'给你一个字符串。它不是Python表达式。您可能想查看一些Python教程,以了解表达式、变量和基本类型(如字符串)的介绍

在本例中,您需要将字符串中的内容作为实际表达式运行,以获取返回的面序列,并从中构建面数组。更复杂的是,当您调用getByBoundingBox时,Abaqus返回自己的内部类型Sequence。这种类型很难处理,因为您无法创建空类型(至少我不知道)。因此,动态地为集合构建面列表需要一些额外的注意。在下面的代码中,我获得每个钢筋实例的面序列,然后将每个面添加到我自己的faces列表中。最后,为了创建集合,Abaqus对faces参数的类型很挑剔We need to create a ^{} object for Abaqus to be satisfied.

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')

相关问题 更多 >