比较两个 Ansys Mechanical 模型树
Comparing two Ansys Mechanical Model Trees
我想比较两个 Ansys Mechanical 模型并总结差异。在某些情况下,只需将两个 ds.dat 文件与例如记事本++。但是不同的网格使这种比较很快变得混乱。
我的想法是将两个模型的树从
ExtAPI.DataModel.Project.Model
到两个词典,然后比较它们。但是我很难保持结构。
当我尝试遍历所有受 this link 和
启发的 Children 时
#recursive function to iterate a nested dictionary
def iterate(dictionary, indent=4):
print '{'
for child in dictionary.Children:
#recurse if the value is a dictionary
if len(child.Children) != 0:
print ' '*indent + child.Name + ": " ,
iterate(child, indent+4)
else:
print ' '*indent+ child.Name
print ' '*(indent-4)+ '}'
我得到可用格式的结构:
iterate(Model)
{
Geometry: {
Part: {
Body1
}
...
}
Materials: {
Structural Steel
}
Cross Sections: {
Extracted Profile1
}
Coordinate Systems: {
Global Coordinate System
} ... }
但现在我正在努力替换递归函数中的打印语句并保留模型树中的结构。
将其移入字典理解:
def iterate(dictionary):
return {
child.Name: (iterate(child) if child.Children else None)
for child in dictionary.Children
}
输出将是:
{
"Geometry": {
"Part": {
"Body1": None
},
...
},
"Materials": {
"Structural Steel": None,
}
"Cross Sections": {
"Extracted Profile1": None,
}
"Coordinate Systems": {
"Global Coordinate System": None
} ... }
如果您希望将其格式化以方便演示,您可以使用 pprint.pprint()
。
我想比较两个 Ansys Mechanical 模型并总结差异。在某些情况下,只需将两个 ds.dat 文件与例如记事本++。但是不同的网格使这种比较很快变得混乱。
我的想法是将两个模型的树从
ExtAPI.DataModel.Project.Model
到两个词典,然后比较它们。但是我很难保持结构。
当我尝试遍历所有受 this link 和
#recursive function to iterate a nested dictionary
def iterate(dictionary, indent=4):
print '{'
for child in dictionary.Children:
#recurse if the value is a dictionary
if len(child.Children) != 0:
print ' '*indent + child.Name + ": " ,
iterate(child, indent+4)
else:
print ' '*indent+ child.Name
print ' '*(indent-4)+ '}'
我得到可用格式的结构:
iterate(Model)
{
Geometry: {
Part: {
Body1
}
...
}
Materials: {
Structural Steel
}
Cross Sections: {
Extracted Profile1
}
Coordinate Systems: {
Global Coordinate System
} ... }
但现在我正在努力替换递归函数中的打印语句并保留模型树中的结构。
将其移入字典理解:
def iterate(dictionary):
return {
child.Name: (iterate(child) if child.Children else None)
for child in dictionary.Children
}
输出将是:
{
"Geometry": {
"Part": {
"Body1": None
},
...
},
"Materials": {
"Structural Steel": None,
}
"Cross Sections": {
"Extracted Profile1": None,
}
"Coordinate Systems": {
"Global Coordinate System": None
} ... }
如果您希望将其格式化以方便演示,您可以使用 pprint.pprint()
。