示例#1
0
def call_script(script_fname,
                args,
                log_name='',
                blend_fname=None,
                call_args=None,
                run_in_background=None,
                only_verbose=False,
                err_pipe=None,
                std_pipe=None,
                stay_alive=True):
    # if args.blender_fol == '':
    #     args.blender_fol = get_blender_dir()
    if run_in_background is None:
        run_in_background = args.back
    blender_fol = get_blender_dir()
    if not op.isdir(blender_fol):
        print('No Blender folder!')
        return
    # blend_fname_is_None = True if blend_fname is None else False
    # call_args_is_None = True if call_args is None else False
    if log_name == '':
        log_name = namebase(script_fname)
        if only_verbose:
            print('log name: {}'.format(log_name))
    if len(args.subjects) == 0:
        args.subjects = [args.subject]
    subjects = args.subjects
    for subject in subjects:
        args.subject = subject
        args.subjects = ''
        # print('*********** {} ***********'.format(subject))
        logs_fol = get_logs_fol(subject)
        # if op.isfile(op.join(get_mmvt_dir(), subject, 'logs', 'pizco.log')):
        #     os.remove(op.join(get_mmvt_dir(), subject, 'logs', 'pizco.log'))
        if blend_fname is None:
            blend_fname = get_subject_fname(args)
        else:
            blend_fname = op.join(get_mmvt_dir(), blend_fname)
        if call_args is None:
            call_args = create_call_args(args)
        log_fname = op.join(logs_fol, '{}.log'.format(log_name))
        print('Writing output to {}'.format(log_fname))
        cmd = '"{blender_exe}" "{blend_fname}" {background} --python "{script_fname}" -- {call_args}'.format(  # > {log_fname}
            blender_exe='./blender',
            background='--background' if run_in_background else '',
            blend_fname=blend_fname,
            script_fname=script_fname,
            call_args=call_args,
            log_fname=log_fname)  # op.join(args.blender_fol, 'blender')
        print(cmd)
        if not only_verbose:
            utils.run_script(cmd,
                             stay_alive=stay_alive,
                             log_fname=log_fname,
                             cwd=blender_fol,
                             err_pipe=err_pipe)  #mmvt_addon_fol)
示例#2
0
def call_script(script_fname, args, log_name='', blend_fname=None, call_args=None, only_verbose=False):
    if args.blender_fol == '':
        args.blender_fol = get_blender_dir()
    if not op.isdir(args.blender_fol):
        print('No Blender folder!')
        return
    blend_fname_is_None = True if blend_fname is None else False
    call_args_is_None = True if call_args is None else False
    logs_fol = op.join(utils.get_parent_fol(__file__, 4), 'logs')
    if only_verbose:
        print('Creating logs fol: {}'.format(logs_fol))
    else:
        utils.make_dir(logs_fol)
    if log_name == '':
        log_name = namebase(script_fname)
        if only_verbose:
            print('log name: {}'.format(log_name))
    if len(args.subjects) == 0:
        args.subjects = [args.subject]
    subjects = args.subjects
    for subject in subjects:
        args.subject = subject
        args.subjects = ''
        print('*********** {} ***********'.format(subject))
        if blend_fname is None:
            blend_fname = get_subject_fname(args)
        else:
            blend_fname = op.join(get_mmvt_dir(), blend_fname)
        if call_args is None:
            call_args = create_call_args(args)
        log_fname = op.join(logs_fol, '{}.log'.format(log_name))
        cmd = '{blender_exe} {blend_fname} --background --python "{script_fname}" {call_args}'.format( # > {log_fname}
            blender_exe=op.join(args.blender_fol, 'blender'),
            blend_fname = blend_fname, script_fname = script_fname, call_args=call_args, log_fname = log_fname)
        mmvt_addon_fol = utils.get_parent_fol(__file__, 2)
        print(cmd)
        if not only_verbose:
            os.chdir(mmvt_addon_fol)
            utils.run_script(cmd)
        # Initialize blend_fname and call_args to None if that was their init value
        if blend_fname_is_None:
            blend_fname = None
        if call_args_is_None:
            call_args = None
        call_args, blend_fname = None, None
    print('Finish! For more details look in {}'.format(log_fname))