79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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')
 |