this is a simple python class to help with different ways of selecting vertices. tested in Blender 2.79.
it allows for growing/shrinking/selecting linked vertices - which could be useful if wanted to do these operations when for example painting weights in weight paint mode. (there may be bugs so please modify/use at your own risk)
import bpy
class VertexSelector(object):
"""class to help with various ways of selecting vertices - tested in blender 2.79
ex:
vs = VertexSelector()
vs.linked()
#or
#vs.more()
#or
#vs.less()
"""
def __init__(self):
pass
def more(self):
"""grow selection
"""
curMode = self._getMode()
if curMode != "EDIT":
self._enterMode(mode="EDIT")
#do task
bpy.ops.mesh.select_more()
#return to previous mode
self._enterMode(mode=curMode)
def less(self):
"""lessen selection
"""
curMode = self._getMode()
if curMode != "EDIT":
self._enterMode(mode="EDIT")
#do task
bpy.ops.mesh.select_less()
#return to previous mode
self._enterMode(mode=curMode)
def linked(self):
"""select linked vertices
"""
curMode = self._getMode()
if curMode != "EDIT":
self._enterMode(mode="EDIT")
#do task
bpy.ops.mesh.select_linked(delimit=set())
#return to previous mode
self._enterMode(mode=curMode)
def _enterMode(self, mode="EDIT"):
"""enter given blender mode
"""
curMode = self._getMode()
if curMode != mode:
#handle weight paint
if mode in ["PAINT_WEIGHT", "WEIGHT_PAINT"]:
bpy.ops.object.mode_set(mode="WEIGHT_PAINT", toggle=False)
return
#handle all other cases
bpy.ops.object.mode_set(mode=mode, toggle=False)
def _getMode(self):
return bpy.context.mode
Happy Scripting! and Happy Sketching!