Changeset View
Changeset View
Standalone View
Standalone View
release/scripts/templates_py/operator_modal_view3d_raycast.py
| Show First 20 Lines • Show All 89 Lines • ▼ Show 20 Lines | class ViewOperatorRayCast(bpy.types.Operator): | ||||
| def invoke(self, context, event): | def invoke(self, context, event): | ||||
| if context.space_data.type == 'VIEW_3D': | if context.space_data.type == 'VIEW_3D': | ||||
| context.window_manager.modal_handler_add(self) | context.window_manager.modal_handler_add(self) | ||||
| return {'RUNNING_MODAL'} | return {'RUNNING_MODAL'} | ||||
| else: | else: | ||||
| self.report({'WARNING'}, "Active space must be a View3d") | self.report({'WARNING'}, "Active space must be a View3d") | ||||
| return {'CANCELLED'} | return {'CANCELLED'} | ||||
| def menu_func(self, context): | |||||
| self.layout.operator(ViewOperatorRayCast.bl_idname, text="Raycast View Modal Operator") | |||||
| # Register and add to the "view" menu (required to also use F3 search "Raycast View Modal Operator" for quick access) | |||||
| def register(): | def register(): | ||||
| bpy.utils.register_class(ViewOperatorRayCast) | bpy.utils.register_class(ViewOperatorRayCast) | ||||
| bpy.types.VIEW3D_MT_view.append(menu_func) | |||||
| def unregister(): | def unregister(): | ||||
| bpy.utils.unregister_class(ViewOperatorRayCast) | bpy.utils.unregister_class(ViewOperatorRayCast) | ||||
| bpy.types.VIEW3D_MT_view.remove(menu_func) | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| register() | register() | ||||