blender/blender python

대화 상자

monstro 2025. 7. 9. 11:25
728x90
반응형

- 개요

이전에 만든 오브젝트 추가 Add-On에 대화상자를 추가하여 오브젝트의 이름을 설정하는 기능을 추가한다

대략적인 구성은 다음과 같다

  • execute 함수를 통한 오브젝트의 이름과 스케일 설정
  • invoke 함수를 통한 대화 상자의 팝업

 

- 대화 상자 클래스 구성

...

class WM_OT_myOp(bpy.types.Operator):
    bl_label = "Add Cube Dialog Box"
    bl_idname = "wm.myop"
    
    # Use ":" in Blender 3.4+ versions
    # This property can change Cube`s name
    text : bpy.props.StringProperty(name="Enter Text", default="")
    
    # This property can change Cube`s scale
    scale : bpy.props.FloatVectorProperty(name="Scale:", default=(1, 1, 1))
    
    def execute(self, context):
        
        t = self.text
        s = self.scale
        
        bpy.ops.mesh.primitive_cube_add()
        obj = bpy.context.object
        obj.name = t
        # obj.scale[2] = z value
        bpy.ops.transform.resize(value=s)

        return {'FINISHED'}
    
    # This method open dialog box  
    def invoke(self, context, event):
        return context.window_manager.invoke_props_dialog(self)
        
...

 

WM_OT_myOp 클래스를 통해 대화상자를 구현한다

우선, 해당 클래스는 대화상자를 띄우는 액션으로 동작하므로 bpy.types.Operator 클래스를 상속받는다

 

다음으로 프로퍼티를 구성한다

우선 클래스를 사용하기 위해 라벨아이디이름을 추가하고 설정하였다

이어서 BPY의 속성인 StringPropertyFloatVector를 사용하여 프로퍼티를 설정한다

설정한 2개의 프로퍼티는 오브젝트의 이름과 오브젝트의 Scale을 조정하는데 사용한다

 

execute 함수를 구현하여 해당 클래스의 동작방식을 정의한다

우선, 프로퍼티 중에서 오브젝트의 이름과 오브젝트의 Scale을 가져온다

이후 큐브를 추가하고 추가한 큐브의 이름과 Scale을 설정한다

 

invoke 함수를 구현하여 대화 상자를 팝업한다

대화 상자의 팝업은 추가한 오브젝트의 window_manager 속성을 통해 이뤄진다

 

- 메인 패널 클래스 및 대화 상자 클래스 등록

 

메인 패널인 TestPanel 클래스에서 큐브를 추가하던 행의 액션새로 추가한 대화 상자 클래스로 수행한다

따라서 대화 상자 클래스의 아이디이름을 인자로 추가한다

 

 

register 함수unregister 함수에 대화 상자 클래스를 추가하여 해당 클래스의 등록과 등록해제를 진행한다

 

- 최종 실행 결과

 

728x90
반응형

'blender > blender python' 카테고리의 다른 글

커스텀 노드 그룹  (0) 2025.07.16
텍스트 Add-On  (0) 2025.07.09
BPY를 이용한 키프레임 모디파이어 추가  (0) 2025.07.02
다이아몬드 쉐이더 Add-On  (0) 2025.07.02
BPY 스크립트를 Add-On으로 완성  (0) 2025.06.25