Для abaqus я пишу скрипт, который использует точки из разных файлов для создания структуры.Чтобы создать набор в abaqus, используется команда findAt. * 1001 *
db.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges.findAt(tensionList), name='Tension')
tensionList:
tensionList = [([0.75, 1.25, 0.0], ()), ([0.25, 0.75, 0.0], ()), ([0.75, 0.25, 0.0], ()), ([0.5, 2.0, 0.0], ()), ([0.0, 1.5, 0.0], ()), ([0.25, 1.75, 0.0], ()), ([1.0, 1.5, 0.0], ())]
При запуске этого скрипта в abaqus возникает следующая ошибка:
"TypeError: arg1; слишком много аргументов; ожидается 1, получено 7"
Однако при удалении внешних скобок [] изtensionList и размещении его непосредственно в скрипте скрипт работает:
mdb.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges.findAt(([0.75, 1.25, 0.0], ()), ([0.25, 0.75, 0.0], ()), ([0.75, 0.25, 0.0], ()), ([0.5, 2.0, 0.0], ()), ([0.0, 1.5, 0.0], ()), ([0.25, 1.75, 0.0], ()), ([1.0, 1.5, 0.0], ())), name='Tension')
(Script не работает с вставкой всего в сценарии с внешними скобками [], но также возникает та же ошибка, если внешние скобки удаляются вtensionList и ссылаются как в примере 1)
Как я мог решить эту проблему, не имея необходимости копировать прошлое?(процесс будет иметь много итераций и очень длинные списки)
РЕДАКТИРОВАТЬ: Решено с помощью обходного пути с краевыми индексами (все еще интересно, как это можно было бы решить с помощью findAt)
index =0
while index < (len(compressiveMembersIndex)+len(tensileMembersIndex)):
mdb.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges[index:index+1],
name=aSetCreating[index])
index +=1