如果有人能告诉我我所缺少的内容,我将不胜感激。我正在尝试从合并的实例部分创建一组与几何相关的节点。生成几何图形,实例后,将其合并并网格化生成的零件,代码如下:
all_nodes = model_assembly.instances[merged_part_instance_name].nodes
left_nodes = []
bottom_nodes = []
for n in all_nodes:
xcoord = n.coordinates[0]
ycoord = n.coordinates[1]
if xcoord > xmin and xcoord < xmax:
left_nodes.append(n)
if ycoord > ymin and ycoord < ymax:
bottom_nodes.append(n)
使用上面的代码,我有一个'MeshNode objects'
的列表,因此编写此代码很正常:
model_assembly.Set(nodes=all_nodes, name='Set-all')
但是,当我写的时候:
model_assembly.Set(nodes=left_nodes, name='Set-left')
它给我错误Feature creation failed.
我在CAE控制台中签入,all_nodes[0]
和left_nodes[0]
的结构相同:
mdb.models['mymodel'].rootAssembly.instances['merged_part_instance'].nodes[x] # x may differ
尽管如此,我注意到打印列表给出了不同的结果:
>>>print(all_nodes)
['MeshNode object', 'MeshNode object', ...
>>> print(left_nodes)
[mdb.models['mymodel'].rootAssembly.instances['merged_part_instance'].nodes[57], mdb.models['mymodel'].rootAssembly.instances['merged_part_instance'].nodes[59],...
那么,为什么它们不同?我可以修复它,还是有更好的方法来实现? 预先感谢
答案 0 :(得分:0)
似乎assembly.Set
方法需要专门输入MeshNodeArray
作为输入,因此解决了我的问题:
good_left_nodes = mesh.MeshNodeArray(left_nodes)
model_assembly.Set(nodes=good_left_nodes , name='Set-left')