【问题标题】:Abaqus Scripting: Call String Stored in A Variable Without Quote?Abaqus 脚本:调用存储在不带引号的变量中的字符串?
【发布时间】:2020-05-15 08:19:50
【问题描述】:
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】:

    问题是'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 part.FaceArray 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')
    

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 2016-08-27
      • 1970-01-01
      • 2012-06-29
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多