< 2FeRed's Conundrum of Life :: [아바쿠스] 파이썬 스크립팅 #.1 모델생성하기


                     




*. 코드 분석용 형식없는 개인공부.

**. 표기되지 않은 자료의 출처는 Abaqus Scripting User's Manual (v6.8)에서 따옴.


예제완성본



파이썬용 파일 다운로드:




스크립트 분석

"""
modelAExample.py

A simple example: Creating a part.
"""
→ 쌍따옴표(")로 시작하고 묶인 부분은 헤더
    주석은 #으로 시작한다.

from abaqus import *

→ 기본 abaqus 오브젝트를 스크립트에서 사용가능하게 함. (C의 include와 동일)
    import *는 모든 오브젝트를 불러온다는 의미
    또한 mdb로 된 기본모델 DB에 접속가능하게 함.

import testUtils

→ testUtils 오브젝트를 불러옴

testUtils.setBackwardCompatibility()

from abaqusConstants import *

→ abaqus에서 사용가능한 symbolic constant를 스크립트에서도 사용가능하게 함.

import sketch
import part

→ sketch와 part에 관련된 모듈을 불러옴. (파이썬 모듈)

myModel = mdb.Model(name='Model A')



→ ① : Model A라는 이름을 지닌 모델을 생성하여
    ② : mdb에 저장하고
    ③ : 생성된 모델에 myModel이라는 변수명을 지정한다.

    모델을 생성해야 스케치나 파트를 생성할 수 있다.

mySketch = myModel.ConstrainedSketch(name='Sketch A', sheetSize=200.0)

→ 200짜리 크기의 Sketch A라는 스케치를 myModel에 생성한 후 mySketch라고 변수명을 지정한다.

→ 오브젝트를 생성하기 위해서는 대문자로 시작하는 생성자를 만들어야 한다.
    Model A, Sketch A가 그 예이다.

→ 이전에 생성한 변수명인 myModel을 스케치를 생성하면서 지정하였다.
    알기쉬운 변수명을 지정하는 것은 큰 도움이 된다.

xyCoordsInner = ((-5 , 20), (5, 20), (15, 0),
    (-15, 0), (-5, 20))

xyCoordsOuter = ((-10, 30), (10, 30), (40, -30),
    (30, -30), (20, -10), (-20, -10),
    (-30, -30), (-40, -30), (-10, 30))

→ xy 좌표값을 각각 inner과 outer 2개로 분리하여 지정하였다.

for i in range(len(xyCoordsInner)-1):
    mySketch.Line(point1=xyCoordsInner[i],
        point2=xyCoordsInner[i+1])

→ 반복구문을 실시.
    파이썬에서는 C언어와 같이 {}등으로 루프구문을 지정하지 않고 들여쓰기로 구분한다.
    들여쓰기가 끝나면 루프문이 종료되는 것으로 간주한다.

→ len()함수는 xyCoordsInner의 좌표갯수를 돌려준다. (여기에서는 5)

→ range()함수는 정수열을 돌려준다. 파이썬에서는 C와 같이 배열의 인덱스가 0에서 시작된다.
   여기에서는 range(4)는 0,1,2,3을 돌려준다. 

for i in range(len(xyCoordsOuter)-1):
    mySketch.Line(point1=xyCoordsOuter[i],
        point2=xyCoordsOuter[i+1])

→ 위와 거의 동일 하다.

myPart = myModel.Part(name='Part A', dimensionality=THREE_D,
    type=DEFORMABLE_BODY)

→ 3차원의 변형가능한 Part A라는 파트를 myModel내에 생성후 myPart라고 변수명을 지정한다.

myPart.BaseSolidExtrude(sketch=mySketch, depth=20.0)

→ myPart내에 있는 mySketch를 20만큼 뽑아낸다.
   (Normal 방향이겠으나 어느쪽인지 나중에 확인해볼 것.)

myViewport = session.Viewport(name='Viewport for Model A',
    origin=(10, 10), width=150, height=100)

→ Viewport for Model A라는 변수명의 뷰포인트를 생성후 myViewport라는 변수명을 지정
   (원점 10,10에서 150,100크기의 창을 생성)

myViewport.setValues(displayedObject=myPart)

→ myPart를 myViewport로 디스플레이

myViewport.partDisplay.setValues(renderStyle=SHADED)

→ myViewport의 렌더링 스타일을 정함. (여기에서는 Shaded로 설정됨)
아름다운 인터넷 문화를 위해 댓글을 남겨주세요. -0-;
AND