Maya cmds.setParent 상세 매뉴얼

Maya cmds.setParent 상세 매뉴얼

 

개요

 

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()

 

주의 사항

 

  1. cmds.setParent 명령어는 잘못 사용하면 레이아웃 계층 구조가 복잡해져 디버깅이 어려울 수 있습니다. 항상 명확한 계층 구조를 유지하고, 필요에 따라 주석을 추가하여 구조를 명확히 하는 것이 좋습니다.
  2. 부모 레이아웃으로 돌아갈 때는 ".."을 사용하여 한 단계 위로 이동할 수 있으며, 특정 레이아웃 이름을 사용하여 정확한 부모 레이아웃을 지정할 수도 있습니다.
  3. Maya의 UI 요소는 생성 순서에 따라 표시되므로, cmds.setParent를 사용하여 올바른 순서로 요소를 배치해야 합니다.

 

참조

 

  • Maya Commands Documentation
  • Maya 스크립팅 관련 기타 명령어들:
    • cmds.window
    • cmds.columnLayout
    • cmds.rowLayout
    • cmds.formLayout
    • cmds.button

 

이 매뉴얼은 Maya의 cmds.setParent 명령어에 대한 포괄적인 설명을 제공하며, 다양한 예제와 사용법을 통해 사용자에게 깊이 있는 이해를 제공합니다.