I use simple:
bpy.app.timers.register(run_import_periodically, persistent=True)
def run_import_periodically():
bpy.ops.scene.gob_import()
return time_interval
But gob_import operator doesn’t ‘see’ context.object (is none), no context.window etc. and so I can’t make this operator work.
I tried to override context, but then i get bad poll inside gob_import(override) execute method, on bpy.ops.object.mode_set(mode=‘OBJECT’).
Override is:
oContextOverride = {} obj = bpy.context.view_layer.objects.active for oWindow in bpy.context.window_manager.windows: # IMPROVE: Find way to avoid doing four levels of traversals at every request!! oScreen = oWindow.screen for oArea in oScreen.areas: if oArea.type == 'VIEW_3D': # window/screen/area for oRegion in oArea.regions: if oRegion.type == 'WINDOW': oContextOverride = {'window': oWindow, 'screen': oScreen, 'area': oArea, 'region': oRegion, 'scene': bpy.context.scene, 'selected_editable_objects': obj, 'active_object': obj, 'selected_objects': obj}
bpy.ops.scene.gob_import(oContextOverride)
The context should be ok now, but I get the poll error on mode_set(mode = ‘OBJECT’).
I also tried mode_set(context.copy(0), mode = ‘OBJECT’) but then blender just crashes.
Why operator called from new timers, dosen’t see the bpy.context like every other operator can? How to fix it.