지원 티켓 만들기
팔로우

Q100372 : 파이썬으로 입출력 포트 이름 바꾸기

개요


병합, 스위치 또는 전역 상태 변수 노드와 같이 여러 입력을 사용하여 노드를 설정하는 경우 연결 목적을 명확히하기 위해 각 연결 포트의 이름을 수동으로 바꾸는 것이 매우 지루할 수 있습니다. 프로세스를 자동화하기 위해 이름 바꾸기를 처리 한 Python으로 사용자 정의 선반 항목 또는 수퍼 툴을 만들 수 있습니다. 이 기사에서는 이것이 어떻게 달성 될 수 있는지 설명합니다.

추가 정보

선택된 각 노드의 입력 포트를 반복하고 특정 값으로 이름을 변경하는 예제 스크립트가 아래에 포함되어 설명됩니다.

이것은 예를 들어 Merge 또는 VariableSwitch 노드를 사용하여 Katana 내에서 테스트 할 수 있습니다.

예제 스크립트

# Grab all currently selected nodes
selectedNodes = NodegraphAPI.GetAllSelectedNodes()

# Loop through each selected node for node in selectedNodes:
# Get all the import ports within the node     inputPorts = node.getInputPorts()
# Loop through each port within the node     for inputs in inputPorts:         index= inputs.getIndex()         name = node.getInputPortByIndex(index).getName()
# Name each port 'Shot' plus their indexed location         node.renameInputPort(name,('Shot'+repr(index+1)))

스크립트 사용하기

Katana 내에서 스크립트는 Merge 또는 VariableSwitch 노드를 만들고 여러 개의 입력 포트를 추가하여 테스트 할 수 있습니다 (노드의 가운데 화살표).


노드가 선택된 상태에서 위의 스크립트를 Python 탭에 붙여 넣거나 실행하면 기본 입력 포트의 이름을 다음과 같이 바꿔야합니다.

또한 첨부 된 ' renameInputPorts.py ' 파일을 다운로드하여 사용자의 홈 영역 ' .katana/Shelves/ '디렉토리의 Shelf 폴더 이름 아래에 배치하여 위의 스크립트를 맞춤 선반 항목으로 테스트 할 수 있습니다.

예 :

Windows : C:\Users\usename\.katana\Shelves\RenameShelf\renameInputPorts.py
Linux : /mnt/nethome/users/usename/.katana/Shelves/RenameShelf/renameInputPorts.py


이 설정은 사용자 지정 Shelf 또는 SuperTool의 기초입니다. 여기에서 각 포트의 이름을 바꿀 수있는 팝업 위젯을 추가하거나 SuperTool 노드 자체의 일부로 코드를 포함 할 수 있습니다.


연결 설정, 선반 아이템 및 수퍼 툴 만들기에 대한 자세한 내용은 아래 링크를 사용하여 Katana 온라인 도움말 및 Katana 개발자 안내서를 확인하십시오.


파이썬 연결 노드 : Katana 개발자 가이드 - 노드 작업하기 - 노드 연결하기
선반 스크립트 : Katana 온라인 도움말 - 기술 정보 - 선반 항목 스크립트
SuperTools : Katana 온라인 도움말 - 기술 정보 - SuperTools

성구 설명

selectedNodes = NodegraphAPI.GetAllSelectedNodes()

NodegraphAPI를 사용하여 먼저 스크립트 논리를 적용 할 대상 노드를 찾습니다. 이것은 이름으로 노드를 지정하거나 현재 선택된 노드를 쿼리하여 두 가지 방법으로 수행 할 수 있습니다. 위의 라인은 찾아 selectedNodes 등 현재 선택된 노드 객체의 목록을 저장합니다.

for node in selectedNodes:
inputPorts = node.getInputPorts()

노드 객체의 목록이 있으면 for 루프를 통해 각 노드를 반복하고 노드의 모든 입력 포트를 가져 오는 getInputPorts () 함수를 호출 할 수 있습니다.

for inputs in inputPorts:         
  index= inputs.getIndex()

이제 각 노드의 포트가 있으며, 이름이나 인덱싱 된 위치를 통해 개별 포트를 반복합니다. 위의 행은 getIndex () 함수를 사용하여 색인 위치를 찾습니다.

name = node.getInputPortByIndex(index).getName()
node.renameInputPort(name,('Shot'+repr(index+1))) 

위의 행은 노드 포트의 현재 이름을 검색하고 이름을 Shot으로 바꾸고 그 포트의 색인을 바꿉니다. 최종 이름은 노드에있는 포트 수에 따라 Shot1, Shot2, Shot3과 같습니다.

도움이 되었습니까?
/

We're sorry to hear that!

Please tell us why.
2명 중 2명이 도움이 되었다고 했습니다.

댓글