Blender의 추가 개발을 통해 하나의 Operator 클래스에서 여러 개의 단추를 만들 수 있습니다
날과 씨
Python에서 Blender의 추가를 개발할 때 패널에 여러 개의 파라미터가 다른 단추를 놓으려고 할 때
Operator 클래스 정의에서 별도의 매개변수를 생성하려는 인스턴스(버튼)
좋은 검색어가 떠오르지 않아 조사하는 데 시간이 걸렸기 때문에 메모
Blender 버전 확인
릴리즈
3.1.2
메서드
버튼을 표시하는 방법
bpy.types.UILayout.operator()
의 반환값bpy.types.OperatorProperties
반환 형식의 데이터이 데이터를 통해 Operator 클래스에 정의된 속성을 읽거나 쓸 수 있습니다.
호출 필요 횟수
bpy.types.UILayout.operator()
, 각자의 반환값을 통해 속성 설정이루어지다
다음과 같은 느낌에서 이루어지다
버튼의 Operator 클래스 정의
class MY_BRUSH_OT_Size(bpy.types.Operator):
bl_idname = "my_brush_size.id"
bl_label = "text"
bl_options = {'REGISTER', 'UNDO'}
#パラメータ用のプロパティ
size: IntProperty(default=0, min=0, max=100, options={'HIDDEN'})
def execute(self, context):
# ウェイトペイントのブラシサイズを変更する
bpy.context.scene.tool_settings.\
unified_paint_settings.size = self.size
return{'FINISHED'}
도면 패널def draw(self, context):
layout = self.layout
row = layout.row(align=True)
#btn: bpy.types.OperatorProperties
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="10")
btn.size = 10 #プロパティ設定
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="20")
btn.size = 20 #プロパティ設定
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="30")
btn.size = 30 #プロパティ設定
결실
감각이 좋다
잡담: 라디오 버튼화
설정 중인 버튼의 색상을 바꾸고 싶어서 라디오 버튼으로 만든 경우
bpy.types.UILayout.operator()
의 depress
매개 변수로 비슷하게 하다def draw(self, context):
layout = self.layout
row = layout.row(align=True)
#現在のブラシサイズ取得
cur_val = bpy.context.scene.tool_settings.unified_paint_settings.size
#btn: bpy.types.OperatorProperties
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="10", depress=(cur_val == 10))
btn.size = 10
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="20", depress=(cur_val == 20))
btn.size = 20
btn = row.operator(MY_BRUSH_OT_Size.bl_idname, text="30", depress=(cur_val == 30))
btn.size = 30
지금 선택한 버튼이 알기 쉬워졌어요.
참고 자료
Reference
이 문제에 관하여(Blender의 추가 개발을 통해 하나의 Operator 클래스에서 여러 개의 단추를 만들 수 있습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/panda_nakami/articles/20220405-blender-python-operator-property텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)