导入bpy 从bl_operators.presets导入AddPresetBase 从bl_ui.utils导入预设面板 从bpy.types导入面板、菜单、操作员、WindowManager 从bpy.props导入( 布尔属性, 字符串属性, 国际财产, Float属性 ) 类CustomProperties(bpy.types.PropertyGroup): fps:IntProperty(名称=“fps”,默认值=24,最小值=1,最大值=244) 质量:IntProperty(名称=“质量”,默认值=75,最小值=1,最大值=100) 类My_OP(运算符): bl_idname=“我的.operator” bl_label=“我的酷OP” bl_options={“预设”} 类MY_MT_Presets(菜单): bl_label='我的预设' preset_subdir='对象/我的预设' preset_operator=“script.execute_preset” draw=菜单.raw_preset 类OT_AddMyPreset(AddPresetBase,运算符): bl_idname='my.add_preset' bl_label='添加预设' preset_menu=“MY_MT_Presets” #用于所有预设值的通用变量 预设定义=[ “obj=bpy.context.object”, '场景=bpy.context.scene' ] #要存储在预设中的属性 预设值=[ '场景.custom_properties.fps', '场景.custom_properties.quality' ] #存储预设的目录 preset_subdir='对象/我的重置' 类MY_PT_presets(预设面板,面板): bl_label='我的预设' preset_subdir='对象/my_prets' preset_operator=“script.execute_preset” preset_add_operator='my.add_preset' 类My_PT_Panel(面板): bl_label='我的面板' bl_space_type='属性' bl_region_type=“窗口” bl_context='输出' bl_category=“输出” 定义draw_header_preset(self,_context): MY_PT_presets.draw_panel_header(自我布局) 定义绘制(自身,上下文): scene=上下文场景 props=场景自定义属性 layout=自布局 row=布局.row layout.prop(props,“fps”) layout.prop(props,“质量”) 定义寄存器(): bpy.utils.register_class(自定义属性) bpy.utils.register_class(My_OP) bpy.utils.register_class(MY_MT_Presets) bpy.utils.register_class(OT_AddMyPreset) bpy.utils.register_class(MY_PT_presets) bpy.utils.register_class(My_PT_Panel) bpy.types类型。 Scene.custom_properties=bpy.props。 指针属性(类型=自定义属性) def unregister(): bpy.utils.unregister_class(自定义属性) bpy.utils.unregister_class(My_OP) bpy.utils.unregister_class(MY_MT_Presets) bpy.utils.unregister_class(OT_AddMyPreset) bpy.utils.unregister_class(MY_PT_presets) bpy.utils.unregister_class(My_PT_Panel) 删除bpy.types。 场景自定义属性 如果__name__==“__main__”: 寄存器()
2个答案
导入bpy 从bl_operators.presets导入AddPresetBase 从bl_ui.utils导入预设面板 从bpy.types导入面板、菜单、操作员、WindowManager 从bpy.props导入BoolProperty、StringProperty,IntProperty和FloatProperty 类CustomProperties(bpy.types.PropertyGroup): fps:IntProperty(名称=“fps”,默认值=24,最小值=1,最大值=244) 质量:IntProperty(名称=“质量”,默认值=75,最小值=1,最大值=100) 类My_OP(运算符): bl_idname=“我的操作员” bl_label=“我的酷OP” bl_options={“预设”} 类MY_MT_Presets(菜单): bl_label=“我的预设” preset_subdir=“对象/我的重置” preset_operator=“script.execute_preset” preset_add_operator=“我的.add_preset” preset_operator_defaults={“menu_idname”:“MY_MT_Presets”} 定义绘制(自身,上下文): self.draw_preset(上下文) 类OT_AddMyPreset(AddPresetBase,运算符): bl_idname=“my.add_preset” bl_label=“添加预设” preset_menu=“MY_MT_预设” #存储预设的目录 preset_subdir=“对象/我的重置” #用于所有预设值的通用变量 preset_defines=[“obj=bpy.context.object”,“scene=bpy.context.scene”] #要存储在预设中的属性 preset_values=[“scene.custom_properties.fps”,“scene.coustom_properties.quality”] 类MY_PT_presets(预设面板,面板): bl_label=“我的预设” 定义绘制(自身,上下文): layout=自布局 layout.emboss=“PULLDOWN_MENU” layout.operator_context=“EXEC_DEFAULT” layout.menu_contents(“MY_MT_Presets”) context.aream.tag_redraw() 类My_PT_Panel(面板): bl_label=“我的面板” bl_space_type=“属性” bl_region_type=“窗口” bl_context=“输出” bl_category=“输出” 定义draw_header_preset(self,_context): MY_PT_presets.draw_panel_header(自我布局) 定义绘制(自身,上下文): scene=上下文场景 props=场景自定义属性 layout=自布局 row=布局.row layout.prop(props,“fps”) layout.prop(props,“质量”) 定义寄存器(): bpy.utils.register_class(自定义属性) bpy.utils.register_class(My_OP) bpy.utils.register_class(MY_MT_Presets) bpy.utils.register_class(OT_AddMyPreset) bpy.utils.register_class(MY_PT_presets) bpy.utils.register_class(My_PT_Panel) bpy.types类型。 Scene.custom_properties=业务流程道具。 指针属性(类型=自定义属性) def unregister(): bpy.utils.unregister_class(自定义属性) bpy.utils.unregister_class(My_OP) bpy.utils.unregister_class(MY_MT_Presets) bpy.utils.unregister_class(OT_AddMyPreset) bpy.utils.unregister_class(MY_PT_presets) bpy.utils.unregister_class(My_PT_Panel) 删除bpy.types。 场景自定义属性 如果__name__==“__main__”: 寄存器()
类MY_PT_presets(预设面板,面板): bl_label='我的预设' preset_subdir='对象/我的重置' preset_operator=“script.execute_preset” preset_add_operator='my.add_preset' 定义_删除_(自身):bpy.context.area.tag_redaw()