Создание набора узлов в Abaqus программно (сценарии Python) - PullRequest
0 голосов
/ 12 февраля 2019

Буду признателен, если кто-нибудь скажет мне, что мне не хватает.Я пытаюсь создать зависимый от геометрии набор узлов из объединенной части экземпляра.После генерации геометрии, экземпляров, слияния и объединения полученной части код выглядит так:

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],...

Итак, почему они разные?Можно ли это исправить или есть лучший способ добиться этого?Заранее спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

Похоже, что для метода assembly.Set необходимо указать MeshNodeArray в качестве входных данных, поэтому это решило мою проблему:

good_left_nodes = mesh.MeshNodeArray(left_nodes)
model_assembly.Set(nodes=good_left_nodes , name='Set-left')
...