Blender 3.2+
import bpy
C = bpy.context
for area in C.screen.areas:
if area.type == 'VIEW_3D':
# Check for WIREFRAME, SOLID, RENDERED, MATERIAL
if area.spaces.active.shading.type == 'WIREFRAME':
with C.temp_override(area=area):
bpy.ops.render.opengl(write_still=True)
break
Blender 2.8+
import bpy
C = bpy.context
for area in C.screen.areas:
if area.type=='VIEW_3D':
# Check for WIREFRAME, SOLID, RENDERED, MATERIAL
# area.spaces.active.shading.type
if area.spaces.active.shading.type == 'WIREFRAME':
override = C.copy()
override['area'] = area
bpy.ops.render.opengl(override, write_still=True)
break
Blender 3.2+
file_path = bpy.path.abspath("//screenshot")
for area in C.screen.areas:
if area.type=='VIEW_3D':
if area.spaces.active.shading.type == 'WIREFRAME':
# Store the current output path and set it
temp = C.scene.render.filepath
C.scene.render.filepath = file_path
with C.temp_override(area=area):
bpy.ops.render.opengl(write_still=True)
# Restore the output path
C.scene.render.filepath = temp
break
print (file_path)
Blender 2.8+
file_path = bpy.path.abspath("//screenshot")
for area in C.screen.areas:
if area.type=='VIEW_3D':
if area.spaces.active.shading.type == 'WIREFRAME':
# Store the current output path and set it
temp = C.scene.render.filepath
C.scene.render.filepath = file_path
override = C.copy()
override['area'] = area
bpy.ops.render.opengl(override, write_still=True)
# Restore the output path
C.scene.render.filepath = temp
break
print (file_path)
3.2 Update
Context overrides are deprecated in Blender 3.2 and are scheduled to be removed in Blender 3.3 The replacement is temp_override
. The manual has examples of how to use the new function.