2013-03-09 1 views
1

선택한 개체 유형을 얻는 방법 :나는 기본적으로 쿼리 PYMEL, 예를 들어 현재 선택에 따라 몇 가지 작업을 수행해야

from pymel.core import *  
s = selected() 
if (s.selType() == 'poly'): 
    #do something  
if (s.selType() == 'surface'): 
    #do something  
if (s.selType() == 'cv'): 
    #do something  
if (s.selType() == 'vertex'): 
    #do something  
if (s.selType() == 'face'):  
    #do something 
if (s.selType() == 'edge'): 
    #do something 
if (s.selType() == 'curve'): 
    #do something 

내가 selType() 실제 pymel 기능 아니라는 것을 알아, 또한 pymels api 명령을 사용하고 표준 멜 명령을 사용하지 않는 것이 좋습니다.

+2

질문하면 도움이됩니다. – User

+0

내 제목은 설명과 함께 꽤 자기 설명입니다. '선택한 개체 유형을 얻는 방법'을 알아야합니다. –

+0

명령을 사용하면 많은 수의 사슬을 묶어서 함수가 포함 된 사전을 사용하는 것이 좋습니다. – joojaa

답변

1

PyMEL는 (모든 것이 단순 데이터 형이며, MEL, 달리.) 노드에 당신을 위해 선택 목록을 변환합니다 적어도이 ls 및 관련 명령과 함께 사실이다 (selected 그냥 ls(sl=True)입니다.) 점에서

모든 것 목록은 PyNode의 서브 클래스가 될 것이므로 nodeType 메소드를 사용하는 것에 의존 할 수 있습니다.

거기에서 각 유형을 유형에 따라 쉽게 처리 할 수 ​​있습니다.


구성 요소 pymel.core.Component에서 상속하고, 각 구성 요소 유형에 대한 하나 개의 클래스가있다; 예 : MeshVertex.

당신은 구성 요소를 걸러 isinstance(obj, type_sequence)을 사용할 수 있습니다 : 당신은 PyMEL 워드 프로세서에서 general 섹션에서 찾을 수

filter(lambda x: isinstance(x, (pm.MeshVertex, pm.MeshEdge, pm.MeshFace)), pm.selected()) 

.

+0

네,하지만 이것을 구성 요소에서 작동시키지 못했습니다. 어떻게 구성 요소에서 찾았습니까? –

+0

내 편집을 참조하십시오. .. – Skurmedel

1

maya native filterExpand 명령을 사용하여 각각을 각각의 유형으로 정렬 할 수 있습니다. 그것은 본질적으로 당신의 선택을 통해 가려 당신은 예를 들어

찾고있는 유형에 해당하는 개체의 목록을 만든다 :

import maya.cmds as cmds 

selection = cmds.ls(sl=1) # Lists the current selection and 
          # stores it in the selection variable 

polyFaces = cmds.filterExpand(sm=34) # sm (selectionMask) = 34 looks for polygon faces. 
            # Store the result in polyFaces variable. 

if (polyFaces != None): # If there was any amount of polygon faces. 
    for i in polyFaces: # Go through each of them. 
     print(i)   # And print them out. 

더 많은 명령에 대한 정보 및 INT 값을 해당하는 필터 python 또는 mel 명령 참조에 있습니다.

관련 문제