12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import bpy
- def read_some_data(context, filepath, use_some_setting):
- print("running read_some_data...")
- f = open(filepath, 'r', encoding='utf-8')
- data = f.read()
- f.close()
- # would normally load the data here
- print(data)
- return {'FINISHED'}
- # ImportHelper is a helper class, defines filename and
- # invoke() function which calls the file selector.
- from bpy_extras.io_utils import ImportHelper
- from bpy.props import StringProperty, BoolProperty, EnumProperty
- from bpy.types import Operator
- class ImportSomeData(Operator, ImportHelper):
- """This appears in the tooltip of the operator and in the generated docs"""
- bl_idname = "import_test.some_data" # important since its how bpy.ops.import_test.some_data is constructed
- bl_label = "Import Some Data"
- # ImportHelper mixin class uses this
- filename_ext = ".txt"
- filter_glob: StringProperty(
- default="*.txt",
- options={'HIDDEN'},
- maxlen=255, # Max internal buffer length, longer would be clamped.
- )
- # List of operator properties, the attributes will be assigned
- # to the class instance from the operator settings before calling.
- use_setting: BoolProperty(
- name="Example Boolean",
- description="Example Tooltip",
- default=True,
- )
- type: EnumProperty(
- name="Example Enum",
- description="Choose between two items",
- items=(
- ('OPT_A', "First Option", "Description one"),
- ('OPT_B', "Second Option", "Description two"),
- ),
- default='OPT_A',
- )
- def execute(self, context):
- return read_some_data(context, self.filepath, self.use_setting)
- # Only needed if you want to add into a dynamic menu
- def menu_func_import(self, context):
- self.layout.operator(ImportSomeData.bl_idname, text="Text Import Operator")
- def register():
- bpy.utils.register_class(ImportSomeData)
- bpy.types.TOPBAR_MT_file_import.append(menu_func_import)
- def unregister():
- bpy.utils.unregister_class(ImportSomeData)
- bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)
- if __name__ == "__main__":
- register()
- # test call
- bpy.ops.import_test.some_data('INVOKE_DEFAULT')
|