Blender Python code for Console Search Function
This search allows you to search in the console, and now lets you search
whatever object is active in the 3D viowport. See the directions for
a briefing on how this search works!
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# Searches modules to level 2, beyond that not yet covered
# Search Usage example:
# search('sin', modulename='bpy')
# Default search is bpy module and submodules AKA the Application modules
# Note: **search imports any modules that you search**
#
# Searchable Standalone Modules (for the above parameter "modulename")
# aud, bgl, bl_math, blf, bmesh, bpy, bpy_extras,
# freestyle, gpu, gpu_extras, idprop, imbuf, mathutils, math
# If you enter only the searchitem, it will search the bpy module.
#
# searcha('axis') --> searches the ACTIVE object in the 3d View.
# Select the object you want information on, then use searcha('item')
#
# Search Extended Usage example:
# searchitem = 'hypo'
# searchx(searchitem)
# searchx is (search extended)
# Global search. **imports ALL modules.** That means if you use this search,
# you will probably want to restart blender if you are working on a project.
#
# If you can't crack it, hack it! I've hacked Blender, ohhh nooo!
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#
import bpy
from collections import deque
# Search active object
def searcha(searchitem):
searchitem = str(searchitem)
notfound = True
act = dir(bpy.context.active_object)
act.insert(0, 'bpy.context.active_object')
for item in act:
if searchitem.lower() in item.lower():
if item == 'bpy.context.active_object':
print(item)
else:
print(act[0] + "." + item)
notfound = False
#
if(notfound):
print('Item not found')
# Search modules to level 2, beyond that not yet covered
def search(searchitem, modulename='bpy'):
searchitem = str(searchitem)
q = deque()
if(modulename=='bpy'):
bpyque = dir(bpy)
bpyque.insert(0, 'bpy')
q.append(bpyque)
bpy_app_que = dir(bpy.app)
bpy_app_que.insert(0, 'bpy.app')
q.append(bpy_app_que)
armatures = dir(bpy.data.armatures)
armatures.insert(0, 'bpy.data.armatures')
q.append(armatures)
bpy_context_que = dir(bpy.context)
bpy_context_que.insert(0, 'bpy.context')
q.append(bpy_context_que)
bpy_data_que = dir(bpy.data)
bpy_data_que.insert(0, 'bpy.data')
q.append(bpy_data_que)
bpy_msgbus_que = dir(bpy.msgbus)
bpy_msgbus_que.insert(0, 'bpy.msgbus')
q.append(bpy_msgbus_que)
bpy_ops_que = dir(bpy.ops)
bpy_ops_que.insert(0, 'bpy.ops')
q.append(bpy_ops_que)
bpy_path_que = dir(bpy.path)
bpy_path_que.insert(0, 'bpy.path')
q.append(bpy_path_que)
bpy_props_que = dir(bpy.props)
bpy_props_que.insert(0, 'bpy.props')
q.append(bpy_props_que)
bpy_types_que = dir(bpy.types)
bpy_types_que.insert(0, 'bpy.types')
q.append(bpy_types_que)
bpy_utils_que = dir(bpy.utils)
bpy_utils_que.insert(0, 'bpy.utils')
q.append(bpy_utils_que)
#
if(modulename=='mathutils'):
import mathutils
mathutils_que = dir(mathutils)
mathutils_que.insert(0, 'import mathutils, mathutils')
q.append([mathutils_que])
#
if(modulename=='math'):
import math
math_que = dir(math)
math_que.insert(0, 'import math, math')
q.append([math_que])
#
if(modulename=='aud'):
import aud
aud_que = dir(aud)
aud_que.insert(0, 'import aud, aud')
q.append([aud_que])
#
if(modulename=='bgl'):
import bgl
bgl_que = dir(bgl)
bgl_que.insert(0, 'import bgl, bgl')
q.append([bgl_que])
#
if(modulename=='bl_math'):
import bl_math
bl_math_que = dir(bl_math)
bl_math_que.insert(0, 'import bl_math, bl_math')
q.append([bl_math_que])
#
if(modulename=='blf'):
import blf
blf_que = dir(blf)
blf_que.insert(0, 'import blf, blf')
q.append([blf_que])
#
if(modulename=='bmesh'):
import bmesh
bmesh_que = dir(bmesh)
bmesh_que.insert(0, 'import bmesh, bmesh')
q.append(bmesh_que)
bmesh_geometry_que = dir(bmesh.geometry)
bmesh_geometry_que.insert(0, 'import bmesh, bmesh.geometry')
q.append(bmesh_geometry_que)
bmesh_ops_que = dir(bmesh.ops)
bmesh_ops_que.insert(0, 'import bmesh, bmesh.ops')
q.append(bmesh_ops_que)
bmesh_types_que = dir(bmesh.types)
bmesh_types_que.insert(0, 'import bmesh, bmesh.types')
q.append(bmesh_types_que)
bmesh_utils_que = dir(bmesh.utils)
bmesh_utils_que.insert(0, 'import bmesh, bmesh.utils')
q.append(bmesh_utils_que)
#
if(modulename=='bpy_extras'):
import bpy_extras
bpy_extras_que = dir(bpy_extras)
bpy_extras_que.insert(0, 'import bpy_extras, bpy_extras')
q.append(bpy_extras_que)
bpy_extras_io_utils_que = dir(bpy_extras.io_utils)
bpy_extras_io_utils_que.insert(0, 'import bpy_extras, bpy_extras.io_utils')
q.append(bpy_extras_io_utils_que)
bpy_extras_node_utils_que = dir(bpy_extras.node_utils)
bpy_extras_node_utils_que.insert(0, 'import bpy_extras, bpy_extras.node_utils')
q.append(bpy_extras_node_utils_que)
bpy_extras_object_utils_que = dir(bpy_extras.object_utils)
bpy_extras_object_utils_que.insert(0, 'import bpy_extras, bpy_extras.object_utils')
q.append(bpy_extras_object_utils_que)
#
if(modulename=='freestyle'):
import freestyle
freestyle_que = dir(freestyle)
freestyle_que.insert(0, 'import freestyle, a standalone module')
q.append(freestyle_que)
freestyle_chainingiterators_que = dir(freestyle.chainingiterators)
freestyle_chainingiterators_que.insert(0, 'import freestyle, freestyle.chainingiterators')
q.append(freestyle_chainingiterators_que)
freestyle_functions_que = dir(freestyle.functions)
freestyle_functions_que.insert(0, 'import freestyle, freestyle.functions')
q.append(freestyle_functions_que)
freestyle_predicates_que = dir(freestyle.predicates)
freestyle_predicates_que.insert(0, 'import freestyle, freestyle.predicates')
q.append(freestyle_predicates_que)
freestyle_shaders_que = dir(freestyle.shaders)
freestyle_shaders_que.insert(0, 'import freestyle, freestyle.shaders')
q.append(freestyle_shaders_que)
freestyle_types_que = dir(freestyle.types)
freestyle_types_que.insert(0, 'import freestyle, freestyle.types')
q.append(freestyle_types_que)
freestyle_utils_que = dir(freestyle.utils)
freestyle_utils_que.insert(0, 'import freestyle, freestyle.utils')
q.append(freestyle_utils_que)
#
if(modulename=='gpu'):
import gpu
gpu_que = dir(gpu)
gpu_que.insert(0, 'gpu, gpu')
q.append(gpu_que)
gpu_types_que = dir(gpu.types)
gpu_types_que.insert(0, 'import gpu, gpu.types')
q.append(gpu_types_que)
gpu_matrix_que = dir(gpu.matrix)
gpu_matrix_que.insert(0, 'import gpu, gpu.matrix')
q.append(gpu_matrix_que)
gpu_select_que = dir(gpu.select)
gpu_select_que.insert(0, 'import gpu, gpu.select')
q.append(gpu_select_que)
gpu_shader_que = dir(gpu.shader)
gpu_shader_que.insert(0, 'import gpu, gpu.shader')
q.append(gpu_shader_que)
#
if(modulename=='gpu_extras'):
import gpu_extras
gpu_extras_que = dir(gpu_extras)
gpu_extras_que.insert(0, 'gpu_extras, gpu_extras')
q.append([gpu_extras_que])
#
if(modulename=='idprop'):
import idprop
idprop_types_que = dir(idprop.types)
idprop_types_que.insert(0, 'import idprop, idprop.types')
q.append([idprop_types_que])
#
if(modulename=='imbuf'):
import imbuf
imbuf_que = dir(imbuf)
imbuf_que.insert(0, 'import imbuf, imbuf')
q.append([imbuf_que])
#
notfound = True # For printing "Module not found." if que is empty.
while len(q)>0:
list = q.popleft()
# print('searched ', list[0])
for item in list:
#print('searchitem = ', searchitem, ' i = ', i)
if searchitem.lower() in item.lower():
print(list[0] + "." + item)
notfound = False
#
if(notfound):
print('Item not found')
print()
print('Searchable Standalone Modules:')
print('aud, bgl, bl_math, blf, bmesh, bpy, bpy_extras,')
print('freestyle, gpu, gpu_extras, idprop, imbuf, mathutils, math')
# Extended Search
def searchx(searchitem):
searchitem = str(searchitem)
q = deque()
import mathutils
mathutils_list = dir(mathutils)
mathutils_list.insert(0, 'import mathutils, mathutils')
q.append(mathutils_list)
#
import math
math_list = dir(math)
math_list.insert(0, 'import math, math')
q.append(math_list)
#
import aud
aud_list = dir(aud)
aud_list.insert(0, 'import aud, aud')
q.append(aud_list)
#
import bgl
bgl_list = dir(bgl)
bgl_list.insert(0, 'import bgl, bgl')
q.append(bgl_list)
#
import bl_math
bl_math_list = dir(bl_math)
bl_math_list.insert(0, 'import bl_math, bl_math')
q.append(bl_math_list)
#
import blf
blf_list = dir(blf)
blf_list.insert(0, 'import blf, blf')
q.append(blf_list)
#
import bmesh
bmesh_list = dir(bmesh)
bmesh_list.insert(0, 'import bmesh, bmesh')
q.append(bmesh_list)
bmesh_geometry_list = dir(bmesh.geometry)
bmesh_geometry_list.insert(0, 'import bmesh, bmesh.geometry')
q.append(bmesh_geometry_list)
bmesh_ops_list = dir(bmesh.ops)
bmesh_ops_list.insert(0, 'import bmesh, bmesh.ops')
q.append(bmesh_ops_list)
bmesh_types_list = dir(bmesh.types)
bmesh_types_list.insert(0, 'import bmesh, bmesh.types')
q.append(bmesh_types_list)
bmesh_utils_list = dir(bmesh.utils)
bmesh_utils_list.insert(0, 'import bmesh, bmesh.utils')
q.append(bmesh_utils_list)
#
import bpy_extras
bpy_extras_list = dir(bpy_extras)
bpy_extras_list.insert(0, 'import bpy_extras, bpy_extras')
q.append(bpy_extras_list)
bpy_extras_io_utils_list = dir(bpy_extras.io_utils)
bpy_extras_io_utils_list.insert(0, 'import bpy_extras, bpy_extras.io_utils')
q.append(bpy_extras_io_utils_list)
bpy_extras_node_utils_list = dir(bpy_extras.node_utils)
bpy_extras_node_utils_list.insert(0, 'import bpy_extras, bpy_extras.node_utils')
q.append(bpy_extras_node_utils_list)
bpy_extras_object_utils_list = dir(bpy_extras.object_utils)
bpy_extras_object_utils_list.insert(0, 'import bpy_extras, bpy_extras.object_utils')
q.append(bpy_extras_object_utils_list)
#
import freestyle
freestyle_list = dir(freestyle)
freestyle_list.insert(0, 'import freestyle, a standalone module')
q.append(freestyle_list)
freestyle_chainingiterators_list = dir(freestyle.chainingiterators)
freestyle_chainingiterators_list.insert(0, 'import freestyle, freestyle.chainingiterators')
q.append(freestyle_chainingiterators_list)
freestyle_functions_list = dir(freestyle.functions)
freestyle_functions_list.insert(0, 'import freestyle, freestyle.functions')
q.append(freestyle_functions_list)
freestyle_predicates_list = dir(freestyle.predicates)
freestyle_predicates_list.insert(0, 'import freestyle, freestyle.predicates')
q.append(freestyle_predicates_list)
freestyle_shaders_list = dir(freestyle.shaders)
freestyle_shaders_list.insert(0, 'import freestyle, freestyle.shaders')
q.append(freestyle_shaders_list)
freestyle_types_list = dir(freestyle.types)
freestyle_types_list.insert(0, 'import freestyle, freestyle.types')
q.append(freestyle_types_list)
freestyle_utils_list = dir(freestyle.utils)
freestyle_utils_list.insert(0, 'import freestyle, freestyle.utils')
q.append(freestyle_utils_list)
#
import gpu
gpu_list = dir(gpu)
gpu_list.insert(0, 'gpu, gpu')
q.append(gpu_list)
gpu_types_list = dir(gpu.types)
gpu_types_list.insert(0, 'import gpu, gpu.types')
q.append(gpu_types_list)
gpu_matrix_list = dir(gpu.matrix)
gpu_matrix_list.insert(0, 'import gpu, gpu.matrix')
q.append(gpu_matrix_list)
gpu_select_list = dir(gpu.select)
gpu_select_list.insert(0, 'import gpu, gpu.select')
q.append(gpu_select_list)
gpu_shader_list = dir(gpu.shader)
gpu_shader_list.insert(0, 'import gpu, gpu.shader')
q.append(gpu_shader_list)
#
import gpu_extras
gpu_extras_list = dir(gpu_extras)
gpu_extras_list.insert(0, 'gpu_extras, gpu_extras')
q.append(gpu_extras_list)
#
import idprop.types
idprop_types_list = dir(idprop.types)
idprop_types_list.insert(0, 'import idprop, idprop.types')
q.append(idprop_types_list)
#
import imbuf
imbuf_list = dir(imbuf)
imbuf_list.insert(0, 'import imbuf, imbuf')
q.append(imbuf_list)
#
# Assuming the user has not thoroughly searched each of the modules
# with the normal search function:
import bpy
bpylist = dir(bpy)
bpylist.insert(0, 'bpy')
q.append(bpylist)
bpy_app_list = dir(bpy.app)
bpy_app_list.insert(0, 'bpy.app')
q.append(bpy_app_list)
armatures = dir(bpy.data.armatures)
armatures.insert(0, 'bpy.data.armatures')
q.append(armatures)
bpy_context_list = dir(bpy.context)
bpy_context_list.insert(0, 'bpy.context')
q.append(bpy_context_list)
bpy_data_list = dir(bpy.data)
bpy_data_list.insert(0, 'bpy.data')
q.append(bpy_data_list)
bpy_msgbus_list = dir(bpy.msgbus)
bpy_msgbus_list.insert(0, 'bpy.msgbus')
q.append(bpy_msgbus_list)
bpy_ops_list = dir(bpy.ops)
bpy_ops_list.insert(0, 'bpy.ops')
q.append(bpy_ops_list)
bpy_path_list = dir(bpy.path)
bpy_path_list.insert(0, 'bpy.path')
q.append(bpy_path_list)
bpy_props_list = dir(bpy.props)
bpy_props_list.insert(0, 'bpy.props')
q.append(bpy_props_list)
bpy_types_list = dir(bpy.types)
bpy_types_list.insert(0, 'bpy.types')
q.append(bpy_types_list)
bpy_utils_list = dir(bpy.utils)
bpy_utils_list.insert(0, 'bpy.utils')
q.append(bpy_utils_list)
#
notfound = True
for list in q:
for item in list:
if searchitem.lower() in item.lower():
print(list[0] + "." + item)
notfound = False
#
if(notfound):
print('Item not found')