76 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.1 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'},
 | |
|             )
 | |
| 
 | |
|     # 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.INFO_MT_file_import.append(menu_func_import)
 | |
| 
 | |
| 
 | |
| def unregister():
 | |
|     bpy.utils.unregister_class(ImportSomeData)
 | |
|     bpy.types.INFO_MT_file_import.remove(menu_func_import)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     register()
 | |
| 
 | |
|     # test call
 | |
|     bpy.ops.import_test.some_data('INVOKE_DEFAULT')
 |