import bpy


#def main(context):
#    for ob in context.scene.objects:
#        print(ob)

class DropToFloor(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.drop_to_floor"
    bl_label = "Drop To Floor"

    #@classmethod
    #def poll(cls, context):
    #    return context.active_object is not None

    def execute(self, context):
        for obj in bpy.context.selected_objects:
            mx = obj.matrix_world
            minz = min((mx @ v.co)[2] for v in obj.data.vertices)
            mx.translation.z -= minz
        #main(context)
        return {'FINISHED'}


def register():
    bpy.utils.register_class(DropToFloor)


def unregister():
    bpy.utils.unregister_class(DropToFloor)


if __name__ == "__main__":
    register()

    # test call
    #bpy.ops.object.drop_to_floor()





