0

这里我需要知道如何找到每个 PID 的材质名称。我是初学者,所以每个答案都可以帮助我很多。


    odb= odbAccess.openOdb(path=(path+file), readOnly=True)
    tag="ERT"
    step = []
    step.append(odb.steps[odb.steps.keys()[0]])
    
    frame = []
    frame.append(step[0].frames[-1])
    
    
    assembly = []
    assembly.append(odb.rootAssembly)
    
    instance = []
    instance.append(assembly[0].instances[instance_n])
        
    PIDs = []
    for key in instance[0].elementSets.keys():
      if tag in key:
        PIDs.append(key)
        
        
    for PID in PIDs:   
        print(material_name[PID])  # here i need to know name of material for this PID  
4

1 回答 1

0

有关材料或截面的信息存储在截面对象中。如果您知道您的部分(您没有提到您是否可以实际访问该模型)。如果没有,那么您还必须从 odb 获取材料信息和部分信息。

你可以在你的集合中做的是这个

odb = odbAccess.openOdb(path=(path+file), readOnly=True)
my_elset = odb.rootAssembly.instances[0].elementSets[setname]
element_from_set = my_elset.elements[0] # list with mesh element object, e.g. first
sec_category = element_from_set[0].sectionCatergory

部分类别包含有关基础部分的若干信息。如果您确实知道您的部分和相应的材料(可能在创建模型后存储在文件中):好。

如果不是,您必须通过以下方式进一步获取部分信息:

odb.sections[sectionname]

其中包含 odb 中每个部分的材料。

无论如何,如果可能的话,如果您直接在 mdb 中获取该信息,我认为您会让您的生活更轻松。

上面的例子只是初步的,如果你没有明确的集合名,你可能需要循环它们,但它们也可以获得。

编辑:作为一般建议:您可以在命令行中尝试所有这些,方法是打开 abaqus 命令提示符并键入

abaqus python

你会得到 abaqus python shell,或者,使用开放的 abaqus,你可以使用底部的 shell(>>> 在黄色地面上)或 PDE。

于 2021-02-17T23:49:01.703 回答