diff --git a/scripts/addons/select_similar.py b/scripts/addons/select_similar.py new file mode 100644 index 00000000..c5a240a7 --- /dev/null +++ b/scripts/addons/select_similar.py @@ -0,0 +1,166 @@ +''' +bl_info = { + "name": "Select Similar extended", + "author": "Vilem Novak", + "version": (1, 0), + "blender": (2, 69, 0), + "location": "View3D > Select > Grouped", + "description": "Adds a new Mesh Object", + "warning": "", + "wiki_url": "", + "category": "Add Mesh"} + ''' +import bpy +from bpy.props import * +prec=0.001; + + + +def precc3(v1,v2,prec): + return v1[0]-prec0: + m=ao.material_slots[0].material.diffuse_color + + for o in bpy.context.scene.objects: + #print (o.material_slots) + if len(o.material_slots)>0 and o.material_slots[0].material!=None: + print (precc3(m,o.material_slots[0].material.diffuse_color,prec)) + if precc3(m,o.material_slots[0].material.diffuse_color,prec): + o.select=1; + + if condition =='DIMENSIONS': + d = ao.dimensions + for o in bpy.context.scene.objects: + if o.dimensions.x-prec0: + for li in range(0,len(m.loops)): + l=m.loops[li] + v=m.vertices[l.vertex_index] + if v.select: + color = m.vertex_colors['Col'].data[li].color + print(color) + for li in range(0,len(m.loops)): + l=m.loops[li] + v=m.vertices[l.vertex_index] + + color1 = m.vertex_colors['Col'].data[li].color + if compareColor(color, color1, threshold): + v.select=True + bpy.ops.object.editmode_toggle() + + +class SelectSimilarObject(bpy.types.Operator): + """Select similar objects""" + bl_idname = "object.select_similar_addon" + bl_label = "Select similar objects" + bl_options = {'REGISTER', 'UNDO'} + + condition = EnumProperty( + name="type", + description="type", + items=(('DIMENSIONS','DIMENSIONS','DIMENSIONS'), + ('MATERIAL_COLOR','MATERIAL_COLOR','MATERIAL_COLOR'), + ('VERTEX_COLOR','VERTEX_COLOR','VERTEX_COLOR'), + ('VERTEX_COUNT','VERTEX_COUNT','VERTEX_COUNT') + ), + default='DIMENSIONS' + ) + threshold = FloatProperty( + name="Threshold", + description="Threshold", + min=0.000001, max=100.0, + default=0.1, + ) + + conditions=[] + def execute(self, context): + + selectSimilarObject(self.condition,self.threshold) + + return {'FINISHED'} + +class SelectSimilarMesh(bpy.types.Operator): + """Select similar elements""" + bl_idname = "mesh.select_similar_addon" + bl_label = "Select similar elements" + bl_options = {'REGISTER', 'UNDO'} + + condition = EnumProperty( + name="type", + description="type", + items=( + ('VERTEX_COLOR','VERTEX_COLOR','VERTEX_COLOR'), + ('VERTEX_COUNT','VERTEX_COUNT','VERTEX_COUNT') + ), + default='VERTEX_COLOR' + ) + threshold = FloatProperty( + name="Threshold", + description="Threshold", + min=0.000001, max=100.0, + default=0.1, + ) + + conditions=[] + #view_align = BoolProperty( + # name="Align to View", + # default=False, + # ) + # generic transform props + + + + def execute(self, context): + + selectSimilarMesh(self.condition,self.threshold) + + return {'FINISHED'} + +def register(): + bpy.utils.register_class(SelectSimilarObject) + bpy.utils.register_class(SelectSimilarMesh) + #bpy.types.INFO_MT_mesh_add.append(menu_func) + + +def unregister(): + bpy.utils.unregister_class(SelectSimilarObject) + bpy.utils.unregister_class(SelectSimilarMesh) + #bpy.types.INFO_MT_mesh_add.remove(menu_func) + +if __name__ == "__main__": + register() + + # test call + #bpy.ops.mesh.primitive_box_add()