第十七届智能车竞赛总决赛证书模板与生成

简 介: 本文给出了关于第十七届全国大学生智能车竞赛获奖证书生成办法。

关键词 智能车竞赛证书自动生成

证书打印
目 录
Contents
竞赛组别
获奖证书模板
打印三种证书
批量生成
总 结

01 书打印


  第十六届全国大学生智能车比赛获奖证书格式说明 文档,编撰第十七届竞赛证书相关格式与内容, 也参照了 第十五届智能车竞赛电子证书格式 文档。

  智能车竞赛电子文档主要用于参赛队伍填写相应的文档,盖有公章的获奖文档将会在智能车竞赛网站供下载溯源。

打印程序位于目录: H:\SmartCar\2022\CertPrint

一、竞赛组别

1、组别名称

  在 第十七届全国大学智能车竞赛 中包括 九个竞赛组别 和三个综合类比赛,它们分别是:

  除此之外,竞赛还专门为总决赛设置了以下专项奖项

2、组别编号

  以上各组别分别在证书中的编号为如下面代码所示:

groupdict = {
    
    '四轮电磁':'01', '四轮摄像头':'02', '多车编队':'03',
             '平衡单车':'04', '无线充电':'05', '平衡信标':'06',
             '智能视觉':'07', '极速越野':'08', '完全模型':'09',
             '航天智慧物流':'10', '迅飞智慧服务':'11',
             '百度智慧交通':12'RT-Thread创新专项赛':13,
             '协同搬运':14, '群体灭灯':15}

  证书奖项分为以下各个等级:

awarddict = {
    
    '一等奖':1, '二等奖':2, '三等奖':3, '优胜奖':4, '专项奖':5, '挑战赛':6}

二、获奖证书模板

  每支参赛队伍的证书包括有 参赛队员获奖证书参赛队伍获奖证书指导教师获奖证书。其中参赛队员、指导教师获奖证书是每位队员和教师都各有一份属于自己的整数。参赛队伍证书每个队伍只有一份证书。

  证书模板是由 Adobe Illustrator 进行设计的, 设计交付的文件格式为 .AI 格式, 由 在线文件转换 将其转换成高分辨率 JPEG 文件。

▲ 图1.2.1 获奖证书模板

▲ 图1.2.1 获奖证书模板

三、打印三种证书

1、修改程序

  下面是打印模板的核心程序。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# CERT.PY                      -- by Dr. ZhuoQing 2021-08-25
#
# Note:
#============================================================

from head import *

#------------------------------------------------------------
studentc = [26, 4, 3, 11, 19]        # template, text, award, order, sn

snhead = '○ NCSC2021-09'
text_width = 40

#------------------------------------------------------------
testid = 16

#------------------------------------------------------------
groupdict = {
    
    '四轮电磁':'01', '四轮摄像头':'02', '多车编队':'03',
             '平衡单车':'04', '无线充电':'05', '平衡信标':'06',
             '智能视觉':'07', '极速越野':'08', '完全模型':'09',
             '航天智慧物流':10, '讯飞智慧服务':11,
             '百度智慧交通':12, 'RT-Thread创新专项赛':13,
             '协同搬运':14,      '群体灭灯':15}

awarddict = {
    
    '一等奖':1, '二等奖':2, '三等奖':3, '优胜奖':4, '专项奖':5, '挑战赛':6}

def printjpg(cid, filename):
    tspsaveimagerange(cid, filename,0, 50)
    printff(cid, filename)


#------------------------------------------------------------
def getsnstr(group, award, num):
    printff(group, award, num)
    return '%s-%s-%d%03d'%(snhead, groupdict[group], awarddict[award], num)

#------------------------------------------------------------
def boldheitifont(s):
    rets = ''
    for c in s:
        rets = rets + '\h\*%s\.'%c
    return rets

def boldfont(s):
    rets = ''
    for c in s:
        rets = rets + '\*%s\.'%c
    return rets

def settextwidth(s, width):
    rets = ''
    count = 0

    for id,c in enumerate(s):
        if c in '\\ . * h'.split():
            rets = rets + c
            if c == '.':
                if count >= width - 1:
                    count -= (width - 1)
                    rets += '\r\n'

            continue

        if ord(c) < 127: count += 1
        else: count += 2


        appendcount = 0
        if s[id:id+4] == '2022':
            if count+3 >= width:
                rets += '\r\n'
                count = 0

        rets = rets + c
        if count+appendcount >= width:
            count -= width
            rets += '\r\n'

    return rets


#------------------------------------------------------------
def setstudenttext(tid, university, student, group, division):
    global text_width

    university = boldheitifont(university)
    student = boldheitifont(student)
    group = boldfont(group)

    setstr = '%s %s 同学在2022年第十七届全国大学生智能车竞赛中荣获%s%s组比赛'%(university, student, division,group)
    setstr = settextwidth(setstr, text_width)

    tspsettext(tid, setstr)

def setmentortext(tid, university, mentor, team, group, division):
    global text_width

    university = boldheitifont(university)
    mentor = boldheitifont(mentor)

    nameflag = 0
    if len(team) > 0:
        if team[-1] == '队':
            nameflag = 1

    team = boldfont(team)

    if nameflag == 0:
        team = team + ' 队'
    else: team = team + ''


    group = boldfont(group)

    setstr = '%s %s 教师指导%s在2022年第十七届全国大学生智能车竞赛中荣获%s%s组比赛'%(university, mentor, team, division,group)
    setstr = settextwidth(setstr, text_width)
    tspsettext(tid, setstr)


def setteamtext(tid, university, team, group, division):
    global text_width

    university = boldheitifont(university)

    nameflag = 0
    if len(team) > 0:
        if team[-1] == '队':
            nameflag = 1

    team = boldfont(team)

    if nameflag == 0:
        team = team + ' 队'
    else: team = team + ''

    group = boldfont(group)

    setstr = '%s %s在2022年第十七届全国大学生智能车竞赛中荣获%s%s组比赛'%(university, team, division, group)
    setstr = settextwidth(setstr, text_width)
    tspsettext(tid, setstr)


def setawardstr(awardstr):
    tspsettext(studentc[2], awardstr)

def setorderstr(orderstr):
    if len(orderstr) > 2:
        orderstr = '(%s)'%orderstr
    else: orderstr = ' '

    printf(orderstr)

    tspsettext(studentc[3], orderstr)

#------------------------------------------------------------
printcount = 0
def printcert(university, team, group, award, order, students,
              mentors, division = '全国总决赛', picdir=r'd:\temp'):

    global printcount

    printcount += 1
    snstr = getsnstr(group, award, printcount)
    tspsettext(studentc[4], snstr)

    if len(order) < 2: order = ''

    team = team.replace('"', '')

    setawardstr(award)
    setorderstr(order)

    setteamtext(studentc[1], university, team, group, division)
    tsprv()
    outfn = os.path.join(picdir, '%s_%s_%s.jpg'%(university, team, group))
    printjpg(studentc[0], outfn)

    for s in students:
        printcount += 1
        snstr = getsnstr(group, award, printcount)
        tspsettext(studentc[4], snstr)

        setstudenttext(studentc[1], university, s, group, division)
        tsprv()
        outfn = '%s\\%s_%s_%s.jpg'%(picdir, university, team, s)
        printjpg(studentc[0], outfn)

    for s in mentors:
        printcount += 1
        snstr = getsnstr(group, award, printcount)
        tspsettext(studentc[4], snstr)

        setmentortext(studentc[1], university, s, team, group, division)
        tsprv()
        outfn = '%s\\%s_%s_%s.jpg'%(picdir, university, team, s)
        printjpg(studentc[0], outfn)



#------------------------------------------------------------
if __name__ == "__main__":

    sstr = ['银杏', '红桃']
    mstr = ['金鱼', '银鱼']

    printcert('大红枣大学', '风火轮四轮', '讯飞智慧服务', '一等奖', '第一名', sstr, mstr, picdir=r'd:\temp')

    printf('\a')


#------------------------------------------------------------
#        END OF FILE : CERT.PY
#============================================================

  对于模板打印程序进行修改,以适应 2022年比赛组别定义。注意修改步骤:

  • 修改其中的 studentc 中相关 DOP 文件中的标号。 特别注意 studentc[0] 是证书模板图片 ID 号码;
  • 修改函数 settextwidth() 中的 ‘2022’, 使其对应的比赛年限;
  • 修改 setstudenttext, setmentortext, setteamtext 中的文字。主要是其中的年限和比赛届次;

  修改完毕之后,便可以运行该程序进行打印测试。

2、打印测试文档

  下面是上述程序生成的三种证书样本:

▲ 图1.3.1 打印的三种证书左:学生证书;中:队伍证书;右:指导教师证书

▲ 图1.3.1 打印的三种证书
左:学生证书;中:队伍证书;右:指导教师证书

四、批量生成

1、获奖EXCEL信息表格

  首先将获奖队伍信息整理成如下的 EXCEL 表格。 其中最后一栏为 排序。这一栏可以增加,也可以不不用。

  其中第一栏,应该填写:

  • 全国总决赛;
  • 或者八个分赛区;

  如果是创意组比赛,可以分为 全国总决赛和分赛区比赛两种。
▲ 图1.4.1 EXCEL表格

▲ 图1.4.1 EXCEL表格

  然后将上述表格拷贝成 TEXT文件,粘贴到 DOP 文档中。

赛区	学校名称	队伍名称	指导老师1	指导老师2	参赛队员1	参赛队员2	参赛队员3	参赛队员4	参赛队员5	奖项	
全国总决赛	四川轻化工大学	十勾框连队	赵俊	刘永	梅刚	谢浩	林明辉	毛宇凡		一等奖	第一名
全国总决赛	山东师范大学	风凌一队	潘杰	王晶晶	许佳伟	黄子琛	赵一安	刘洁	肖博学	一等奖	第二名
全国总决赛	浙江工业大学	浙工大鸿泉omega队	褚衍清	陈国定	苏楠	孔杭扬	何士强	宋哲睿		一等奖	第三名
全国总决赛	中国矿业大学(北京)	煤老板的虎头奔	赵锋	张旭	林锐东	邹放达	岳政融	孟靖熹	李国豪	一等奖	第四名
全国总决赛	广西大学	不知道起什么名字一队	李勇		李卓潇	段子炫	樊李淇	刘政	叶彤	一等奖	第五名
全国总决赛	电子科技大学	成电梅勒迪克	王培丞	宫珣	蔡柠泽	杨威	廖云飞	牛振业	王杰	一等奖	
全国总决赛	山东大学	啊对对队	李腾	张伟	梁耀	黄嘉璐	朱佳鑫			一等奖	
全国总决赛	同济大学	智行·小车快跑队	张志明	朱劲	姜垒	王子安	于航	孙睿		一等奖	
全国总决赛	西安工程大学	鲜橙500	李珣	张玥	苏东平	伍荣兴	张婷文	秦杰	任旭辉	一等奖	
全国总决赛	中国计量大学	仰仪Eureka1队	陈锡爱	曾涛	季文康	周浩男	康家鸣	闫琦	展帅影	一等奖	
全国总决赛	上海海事大学	中华小当家	虞旦	王天真	戴昊	王云尧	张浩东	张羽音		一等奖	
............

2、打印程序

(1)DOP 打印界面

▲ 图1.4.2 打印DOP界面

▲ 图1.4.2 打印DOP界面

  对批量打印程序做如下修改:

  • 修改 allstrid :这是上述 EXCEL 表格 TEXT 在 DOP 中的 ID。
  • 修改 group, division;其中 group 需要与 cerf.py 中定义的 group 字符串相同。

(2)打印程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# FINALPRINT.PY                -- by Dr. ZhuoQing 2021-08-26
#
# Note:
#============================================================

from head import *
import cert
import shutil

#------------------------------------------------------------

allstrid = 27

group = '讯飞智慧服务'
division = '分赛区竞赛'
cert.printcount = 110


#------------------------------------------------------------
picdirdef = r'd:\temp\pic'

if not os.path.isdir(picdirdef):
    os.mkdir(picdirdef)
else:
    shutil.rmtree(picdirdef)
    os.mkdir(picdirdef)

#------------------------------------------------------------
allstrsect = [s for s in tspgetdopstring(-allstrid).split('\r\n') if len(s) > 20]

allstr = []
for s in allstrsect:
    if s.count('\t') > 0:
        allstr.append(s.split('\t'))
    else:
        ss = [a for a in s.split() if len(s) > 0]
        allstr.append(ss)




#------------------------------------------------------------
for id,a in enumerate(allstr):
    if a[0] in '赛区 组别'.split() or a[1] in '赛区 组别'.split():
        continue

    a = [s.replace('"', '').replace(' ', '').replace('?', '·') for s in a]


    division = a[0]
    university = a[1]
    team = a[2].replace('_', ' ')
    mentors = [s for s in a[3:5] if len(s) > 1]
    students = [s for s in a[5:-2] if len(s) > 1]


    if a[-1] in "一等奖 二等奖 三等奖 优胜奖 专项奖".split():
        students = [s for s in a[5:-1] if len(s) > 1]
        award = a[-1]
        order = '.'
    else:
        award = a[-2]
        order = a[-1]

    printff(id,university, team, mentors, students, award, order)

    cert.printcert(university,
              team,
              group,
              award,
              order,
              students,
              mentors,
              division,
              picdir = picdirdef)

    printf('\a')


printf('\a')


#------------------------------------------------------------
#        END OF FILE : FINALPRINT.PY
#============================================================

3、批量打印的程序

▲ 图1.4.3 批量打印的程序

▲ 图1.4.3 批量打印的程序

  结 ※


  文给出了关于第十七届全国大学生智能车竞赛获奖证书生成办法。

▲ 图2.1  自动生成过程

▲ 图2.1 自动生成过程


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/126594162