개요
Autodesk Maya의 cmds.setParent 명령어는 UI 요소의 부모 레이아웃을 설정하거나, 기존의 부모 레이아웃으로 돌아가는 데 사용됩니다. 이는 복잡한 UI 구조를 생성할 때 필수적인 명령어로, 계층 구조를 명확하게 하고 관리하기 쉽게 합니다.
구문
cmds.setParent([parent])
파라미터
parent: 부모 레이아웃의 이름을 지정합니다. 이 값이 생략되면 최상위 레이아웃으로 돌아갑니다.
cmds.setParent("parentLayout")
상세 설명
cmds.setParent 명령어는 Maya에서 UI 요소를 계층적으로 배치할 때 사용됩니다. 이 명령어는 새로운 UI 요소가 특정 부모 레이아웃 아래에 배치되도록 지정하거나, 기존의 부모 레이아웃으로 돌아가는 데 사용됩니다.
예제 1: 기본 사용법
간단한 창을 생성하고, cmds.setParent를 사용하여 여러 레이아웃을 계층적으로 배치하는 예제입니다.
import maya.cmds as cmds
def create_simple_window():
if cmds.window("simpleWindow", exists=True):
cmds.deleteUI("simpleWindow")
window = cmds.window("simpleWindow", title="Simple Window", widthHeight=(300, 200))
cmds.columnLayout(adjustableColumn=True)
# 첫 번째 행 레이아웃
cmds.rowLayout(numberOfColumns=2)
cmds.button(label="Button 1")
cmds.button(label="Button 2")
cmds.setParent("..") # 부모 레이아웃으로 돌아감
# 두 번째 행 레이아웃
cmds.rowLayout(numberOfColumns=2)
cmds.button(label="Button 3")
cmds.button(label="Button 4")
cmds.setParent("..") # 부모 레이아웃으로 돌아감
cmds.showWindow(window)
create_simple_window()
예제 2: 부모 레이아웃 설정
cmds.setParent를 사용하여 특정 부모 레이아웃을 설정하고, 해당 레이아웃에 UI 요소를 추가하는 예제입니다.
import maya.cmds as cmds
def create_nested_layout():
if cmds.window("nestedWindow", exists=True):
cmds.deleteUI("nestedWindow")
window = cmds.window("nestedWindow", title="Nested Layout Window", widthHeight=(300, 200))
main_layout = cmds.columnLayout(adjustableColumn=True)
# 첫 번째 열 레이아웃
cmds.columnLayout(adjustableColumn=True)
cmds.button(label="Top Button")
first_column = cmds.columnLayout(adjustableColumn=True)
cmds.button(label="Button 1.1")
cmds.button(label="Button 1.2")
cmds.setParent("..") # 첫 번째 열 레이아웃으로 돌아감
# 두 번째 열 레이아웃
second_column = cmds.columnLayout(adjustableColumn=True)
cmds.button(label="Button 2.1")
cmds.button(label="Button 2.2")
cmds.setParent(main_layout) # 메인 레이아웃으로 돌아감
cmds.showWindow(window)
create_nested_layout()
고급 사용법
cmds.setParent를 사용하여 더 복잡한 UI 구조를 생성하고 관리하는 방법에 대한 고급 예제입니다.
예제 3: 복잡한 계층 구조
여러 부모 레이아웃과 자식 레이아웃을 포함하는 복잡한 계층 구조를 생성합니다.
import maya.cmds as cmds
def create_advanced_window():
if cmds.window("advancedWindow", exists=True):
cmds.deleteUI("advancedWindow")
window = cmds.window("advancedWindow", title="Advanced Window", widthHeight=(400, 300))
main_layout = cmds.columnLayout(adjustableColumn=True)
# 상단 버튼 레이아웃
cmds.rowLayout(numberOfColumns=2)
cmds.button(label="Top Button 1")
cmds.button(label="Top Button 2")
cmds.setParent("..") # 부모 레이아웃으로 돌아감
# 좌측 열 레이아웃
left_column = cmds.columnLayout(adjustableColumn=True)
cmds.button(label="Left Button 1")
cmds.button(label="Left Button 2")
cmds.setParent("..") # 부모 레이아웃으로 돌아감
# 우측 열 레이아웃
right_column = cmds.columnLayout(adjustableColumn=True)
cmds.button(label="Right Button 1")
cmds.button(label="Right Button 2")
cmds.setParent(main_layout) # 메인 레이아웃으로 돌아감
# 하단 버튼 레이아웃
cmds.rowLayout(numberOfColumns=2)
cmds.button(label="Bottom Button 1")
cmds.button(label="Bottom Button 2")
cmds.showWindow(window)
create_advanced_window()
주의 사항
cmds.setParent명령어는 잘못 사용하면 레이아웃 계층 구조가 복잡해져 디버깅이 어려울 수 있습니다. 항상 명확한 계층 구조를 유지하고, 필요에 따라 주석을 추가하여 구조를 명확히 하는 것이 좋습니다.- 부모 레이아웃으로 돌아갈 때는
".."을 사용하여 한 단계 위로 이동할 수 있으며, 특정 레이아웃 이름을 사용하여 정확한 부모 레이아웃을 지정할 수도 있습니다. - Maya의 UI 요소는 생성 순서에 따라 표시되므로,
cmds.setParent를 사용하여 올바른 순서로 요소를 배치해야 합니다.
참조
- Maya Commands Documentation
- Maya 스크립팅 관련 기타 명령어들:
cmds.windowcmds.columnLayoutcmds.rowLayoutcmds.formLayoutcmds.button
이 매뉴얼은 Maya의 cmds.setParent 명령어에 대한 포괄적인 설명을 제공하며, 다양한 예제와 사용법을 통해 사용자에게 깊이 있는 이해를 제공합니다.