2012년 11월 5일 월요일

MAYA Python

MAYA PYTHON
-------------------------------------------------------------------------
 print u'하이 MAYA'
#유니코드를 사용하기 때문에 앞에 u를 붙인다.



import sys
print sys.version
을 치면 버전 정보가 print된다.


a=1 을 치고 a를 치면 1이 뜬다.

하지만

a=1
a
를 치게 되면, 그냥
a=1
a
가 뜬다. 왜냐하면, 한줄 이상을 입력하게 되면 대화형이 아닌 script모드로 바로 전환되기 때문이다. 그래서 a값이 바로 반환되지는 않는다..

아니면 원하는 부분만 블록 지정을 한뒤, execute를 실행해도 된다.





-Python Module Path 확인/추가하기

import sys
print sys.path
그럼 시스템경로가 print된다.

만약 c:\\myModle이라는 폴더에 python스크립트가 있으면,
import sys
sys.path.append('c:\\myModule\\')
로 경로를 추가한다..






-import maya.cmds as cmds

import maya.cmds as cmds
print cmds.ls( selection=True )
를 치면 선택한 obj가 프린트가 된다.

as 처럼...,~~로써
maya.cmds라는 module을 cmds라는 이름으로 불러오는 명령..
즉, maya.cmds라는 명령을 cmds로 바꿔서 명령을 수행하게 된다..
import maya.cmds as cmds
maya.cmds를 자주 쓰기 때문에, cmds로 짧게 바꾼 것 뿐이다..

따라서import maya.cmds as m을 쓰면
import maya.cmds as m
print m.ls( selection=True )
를 치면 똑같이 프린트가 된다.

그리고 import를 한 번만 읽어도 게속 사용이 가능하다..즉,
cmds.ls(selection=True)
m.ls( selection=True )
를 치면 똑같이 선택된 obj를 보여준다.

하지만
cmds.ls(selection=True)
cmds.ls(selection=True)
두번을 똑같은걸 치면
보이지 않는다. 왜냐하면 대화형 모드와 script모드의 차이 때문이다..






-select,wildcard
nurbsCone obj를 그리드에 맞춰 25개를 만든다.
import maya.cmds as cmds
cmds.select(all=True)
를 치면 전체가 선택이 된다.

cmds.select('*')
를 치면 결과는 똑같다.

cmds.select('nurbsCone1?')
를 치면 10~19까지 Cone이 선택된다.

cmds.select('nurbsCone1', 'nurbsCone2','nurbsCone3')
적힌 nurbsCone만 선택이 된다.

sel_obj = cmds.ls(sl=1)
cmds.select(clear=1)
를 치면 sel_obj라는 변수에 select된 목록 자료를 담고, 현재 select를 해제하였습니다.

sel_obj = cmds.ls(sl=1)명령은 sel_obj에 지금 선택한 목록을 저장하라는 명령니 된다.
sl=1은 sl=True와 같다.(python command에서 ls를 검색)(ls의 sl차입이 boolean이라서..)

sel_obj
를 치면 선택했던 obj이름이 뜬다.

obj왜에 node들도 가능하다..





-Python Sequence자료 다루기
노드나, 오브젝트를 선택
import maya.cmds as cmds
sel_=cmds.ls(sl=1)
를 치면 sle_이라는 변수에 선택된 노드를 저장한다.

sel_
를 치면 선택된 이름들이 리스트형으로 나온다.

cmds.select(sel_[0])
를 치면 0번째 node가 선택이 된다. 인덱싱.리스트자료에서 0번째

cmds.select(sel_[-1])
를 치면 마지막 node가 선택

cmds.select(sel_[:10])
를 치면 앞에서 부터 10개만 선택이 된다.

cmds.select(sel_[-10:])
를 치면 뒤에서부터 10개 선택이 된다.

cmds.select(sel_[5:15])
를 치면 5번째 부터 15번째 까지 선택

cmds.select(sel_[::2])
를 치면 한칸씩 건너뛰면서 선택








-Python Sequence자료 다루기-2
len(sel_)
를 치면 len모듈을 쳤기 때문에 자료의 계수 숫자가 나온다.

sel_.count('nurbsCone14')
를 치면 nurbsCone14의 계수를 보여준다.

sel_.index('nurbsCone14')
를 치면 리스트 자료상에서 몇번째에 있는지 알 수 있다.

sel_.remove('nurbsCone14')
를 치면 nurbsCone14가 지워진다.sel_을 쳐서 확인

del sel_[3]
를 치면 리스트 자료 중에 3번째가 지워진다.

sel_.append(u'nurbsCone14')
sel_
를 치면 append모듈로 sel_리스트에 'NURBSCone14'를 추가한다.

sel_.insert(3, u'nurbsCone14')
sel_
를 치면 3위치에 삽입이 된다.

sel_.count('nurbsCone14')
를 치면 nurbsCone14의 계수가 나온다.

sel_[3:3] = [u'nurbsCone14']
sel_
를 치면 3:3인덱싱 위치에 삽입한다.

sel_+= [u'nurbsCone14']
sel_
를 쳐도 삽입이 된다.

sel_.sort()
를 치면 이름 순서대로 리스트를 정리 한다.

sel_.reverse()
sel_
를 치면 reverse()모듈를 이용해 리스트의 순서를 반전 시킨다.

sel_.extend([u'노드',u'노드',u'노드',u'노드'들....])
sel_
를 치면 자료와 자료를 합친다.

sel_ +=[u'노드',u'노드',u'노드',u'노드'들....]
를 치면 이 역시 자료와 자료를 합친다.

sel_

'nurbsCone18' in sel_
를 치면 sel_변수안에 'nurbsCone18'가 있는지 검사




댓글 없음:

댓글 쓰기