def set_tagged_object_names(tag_name, name_prefix, start_index=1):
    '''
    Given a tag name, set the Name property of each object given the name
    prefix and number. For example: Prefix 'Router', yields names 'Router 1',
    'Router 2', 'Router 3'.
    '''
    obj_list = tag_utils.get_tagged_objects_from_string_names([tag_name])
    for idx, obj in enumerate(obj_list, start=start_index):
        obj.Set('Name', '{}{}'.format(name_prefix, idx))
def process_inputs_for_objects(hnd_list, tag_name_list, obj_class):
    obj_dict = {}

    # Process tag objects
    if len(tag_name_list) > 0:
        tagged_obj_list = tag_utils.get_tagged_objects_from_string_names(
            tag_name_list,
            remove_duplicates=True,
            class_name=obj_class)
        obj_dict = {obj.GetObjectHandle(): obj for obj in tagged_obj_list}

    # Process handles
    obj_list = CCommandEx.ProcessInputHandleVec(obj_class,
                                                hnd_list)
    for obj in obj_list:
        if obj is None:
            continue
        obj_dict[obj.GetObjectHandle()] = obj
    return obj_dict.values()
def get_obj_list_from_handles_and_tags(ObjectHandleList, ObjectTagNameList):
    plLogger = PLLogger.GetLogger("methodology")
    obj_list = []
    hnd_reg = CHandleRegistry.Instance()

    # Get objects from handle list
    for hnd in ObjectHandleList:
        obj = hnd_reg.Find(int(hnd))
        if not obj:
            err_str = "Invalid object with handle " + str(int(hnd))
            plLogger.LogError(err_str)
            return {}
        obj_list.append(obj)

    # Get objects from tag list
    tagged_things = tag_utils.get_tagged_objects_from_string_names(
        ObjectTagNameList)
    obj_list = obj_list + tagged_things

    # Sort by handle and remove duplicates
    obj_list = sort_obj_list_by_handle(obj_list)

    return obj_list