2016-11-10 6 views
1

스크립트를 사용하여 와이어를 통해 포인트를 연결하려고했습니다. NameError에 관한 경고가 발생했습니다.ABAQUS의 wireType에 대한 NameError에 대한 경고

내가 ABAQUS에서 실행하려고 코드 :

내가 의도적 '으로 코드의 일부를 변경하는 또 다른 시간이 정의되지 않은 이름'각인 ' 나가서 설명하자면 NameError : 여기

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') 

오류 발생 mergeType = 'IMPRINT'이면 오류는 다음과 같습니다. TypeError : mergeType; IMPRINT, MERGE 또는 SEPARATE를 예상 한 문자열을 찾았습니다.

어떻게 문제를 해결할 수 있습니까?

감사

답변

2

당신에게 오류를 제공하는 모듈은 다른 모듈에서 특정 상수를 기대하고있다. 필요한 상수를 사용하여 모듈 가져 오기 : 을 사용하십시오. 다음과 같이 필요한 상수와 함께 모듈을 가져 오십시오. .

import abaqusConstants as ac 

을 그리고 mergeType=ac.IMPRINT, ...을 사용하거나 대신 네임 스페이스와 별칭을 오염 피할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. ABAQUS와 Python을 처음 접했을 때, 내가 모르는 많은 기초가있을 수있다. 그래서 나는 그것을 올바르게 이해하는지 확신 할 수 없다. 코드의 첫 번째 부분을 새 파일로 저장했습니다 : ab.py. 그런 다음 를 실행하십시오. 그런 다음 mergeType = ab.IMPRINT, ...를 사용하십시오. 이제 오류가 발생합니다. open0121

+0

해결! 코드 상단에 를 넣으십시오 ... – open0121

+0

이 답변으로 문제가 해결되었다는 소식을 듣게되어 기쁩니다. 추후 사용자가 점수 아래의 체크 표시를 클릭하여 승인 할 수 있습니다. – TigerhawkT3