Предупреждение об ошибке NameError для wireType в ABAQUS

Пробовал подключать точки через провода с помощью скрипта. Возникло предупреждение об ошибке NameError.

код, который я пытался запустить в abaqus:

a = mdb.models['Model-1'].rootAssembly
v11 = a.instances['r-mesh-2'].vertices
v12 = a.instances['s-mesh-1'].vertices
v13 = a.instances['r-mesh-1'].vertices
v14 = a.instances['s-mesh-1-lin-2-1'].vertices
a.WirePolyLine(points=((v11.findAt(coordinates=(2.595, 0.22, -35.7)), 
    v12.findAt(coordinates=(2.595, 0.2, -35.7))), (v11.findAt(coordinates=(
    2.445, 0.22, -35.7)), v12.findAt(coordinates=(2.445, 0.2, -35.7))), (
    v13.findAt(coordinates=(1.095, 0.22, -35.7)), v12.findAt(coordinates=(
    1.095, 0.2, -35.7))), (v13.findAt(coordinates=(0.945, 0.22, -35.7)), 
    v12.findAt(coordinates=(0.945, 0.2, -35.7))), (v11.findAt(coordinates=(
    2.595, 0.22, -35.1)), v14.findAt(coordinates=(2.595, 0.2, -35.1)))), 
    mergeType=IMPRINT, meshable=OFF)
a = mdb.models['Model-1'].rootAssembly
e1 = a.edges
edges1 = e1.findAt(((2.595, 0.215, -35.1), ), ((0.945, 0.215, -35.7), ), ((
    1.095, 0.215, -35.7), ), ((2.445, 0.215, -35.7), ), ((2.595, 0.215, -35.7), 
    ))
a.Set(edges=edges1, name='Wire-1-Set-1')

Вот ошибка: NameError: имя 'IMPRINT' не определено

В другой раз я намеренно изменил эту часть кода на 'mergeType='IMPRINT', после чего ошибка стала такой: TypeError: mergeType; найденная строка, ожидающая IMPRINT, MERGE или SEPARATE

Как решить проблему?

Благодарность


person open0121    schedule 10.11.2016    source источник


Ответы (1)


Модуль, выдающий вам ошибку, ожидает определенную константу от другого модуля. Импортируйте модуль с необходимыми константами:

from abaqusConstants import *

Затем используйте mergeType=IMPRINT, ..., как вы уже делаете. Или вы могли бы не загрязнять свое пространство имен и вместо этого использовать псевдоним:

import abaqusConstants as ac

А затем используйте mergeType=ac.IMPRINT, ....

person TigerhawkT3    schedule 10.11.2016
comment
Спасибо за ваше предложение! Я новичок в ABAQUS и Python, может быть много основ, о которых я не знаю. Так что я не уверен, правильно ли я понимаю. Я сохранил первую часть кода как новый файл: ab.py. Затем выполните ‹import abaqusConstants as ab›. А затем используйте mergeType=ab.IMPRINT, ... Теперь я получаю сообщение об ошибке ‹mergeType=ab.IMPRINT, meshable=OFF TypeError: объект «AbaqusBoolean» не является итерируемым›. Как правильно это сделать? - person open0121; 10.11.2016
comment
Решено! поставить ‹ from abaqusConstants import * › вверху кода... - person open0121; 10.11.2016
comment
Я рад слышать, что этот ответ решил проблему. Вы можете пометить его как таковой для будущих пользователей, щелкнув галочку под его оценкой, чтобы принять его. - person TigerhawkT3; 10.11.2016