Exemple #1
0
def salvar(trelica_objeto):
    borders = Borders()
    bord = 2
    borders.left = bord
    borders.right = bord
    borders.top = bord
    borders.bottom = bord

    bord_lateral = Borders()
    bord = 2
    bord_lateral.left = bord
    bord_lateral.right = bord
    ## FONTES
    fonte_titulo = Font()
    fonte_titulo.name = 'Times New Roman'
    fonte_titulo.bold = True
    fonte_titulo.height = 240
    fonte_titulo.borders = bord_lateral

    fonte_normal = Font()
    fonte_normal.name = 'Times New Roman'
    fonte_normal.borders = bord_lateral

    fonte_normal_problema = Font()
    fonte_normal_problema.name = 'Times New Roman'
    fonte_normal_problema.borders = bord_lateral
    fonte_normal_problema.colour_index = 2  #5=amarelo | 4=azul | 3=verde | 2=vermelho

    fonte_destaque = Font()
    fonte_destaque.name = 'Arial'
    fonte_destaque.colour_index = 4  # azul
    ## ESTILOS
    estilo_titulo = XFStyle()
    estilo_titulo.borders = borders
    estilo_titulo.font = fonte_titulo
    estilo_titulo.alignment.horz = 2

    estilo_sub_titulo = XFStyle()
    estilo_sub_titulo.borders = borders
    estilo_sub_titulo.alignment.horz = 2
    estilo_sub_titulo.font = fonte_destaque

    estilo_normal = XFStyle()
    estilo_normal.font = fonte_normal
    estilo_normal.num_format_str = "#,##0.00"
    estilo_normal.alignment.horz = 2

    estilo_normal_esquerda = XFStyle()
    estilo_normal_esquerda.font = fonte_normal

    estilo_normal_tabela = XFStyle()
    estilo_normal_tabela.font = fonte_normal
    estilo_normal_tabela.borders = borders
    estilo_normal_tabela.alignment.horz = 2
    estilo_normal_tabela.num_format_str = "#,##0.00"

    estilo_normal_tabela_red = XFStyle()
    estilo_normal_tabela_red.font = fonte_normal_problema
    estilo_normal_tabela_red.borders = borders
    estilo_normal_tabela_red.alignment.horz = 2
    estilo_normal_tabela_red.num_format_str = "#,##0.00"

    estilo_destaque = XFStyle()
    estilo_destaque.font = fonte_destaque
    # estilo_destaque.alignment.horz = 2
    estilo_destaque.alignment.vertical = 2

    estilo_destaque_tabela = XFStyle()
    estilo_destaque_tabela.font = fonte_destaque
    estilo_destaque_tabela.borders = borders
    estilo_destaque_tabela.alignment.horz = 2

    estilo_id_tabela = estilo_normal_tabela
    estilo_id_tabela.alignment.num_format_str = "#0"

    text_file = filedialog.asksaveasfile(mode='w',
                                         defaultextension=".xls",
                                         filetypes=[('excel files', '.xls')])
    wb = Workbook()
    sheet = wb.add_sheet('Treliceca')
    sheet.col(2).width = 0x0d00 + 22
    sheet.col(4).width = 0x0d00 + 40
    sheet.col(7).width = 0x0d00 + 15
    sheet.col(8).width = 0x0d00 + 15

    vt = trelica_objeto.vt
    banzo_reto = trelica_objeto.banzo_reto
    # padrão de viga treliçada
    viga = 'Viga de Cobertura Treliçada com banzos paralelos'

    if vt == 1:
        viga = 'Viga de Transição Treliçada'
    if banzo_reto == 1:
        viga = 'Viga de Cobertura Treliçada com banzo inferior reto'

    # combinações de carregamentos atuando na treliça
    carregamento_grav = trelica_objeto.carregamentos[0]
    carregamento_cv = trelica_objeto.carregamentos[1]
    vaos = ''
    for ponto in trelica_objeto.pontos_vao:
        vaos += ' ' + str(ponto[0]) + ','

    # pesos calculados da treliça
    peso = trelica_objeto.peso
    peso_dobrado = trelica_objeto.peso_dobrado
    peso_soldado = trelica_objeto.peso_soldado
    peso_linear = trelica_objeto.peso_linear
    peso_miscelanias = trelica_objeto.peso_miscelanias
    # pecas = trelica_objeto.pecas
    h_viga = trelica_objeto.h_viga

    # lista com as barras da treliça, separadas por tipo
    banzos_inferiores = []
    banzos_superiores = []
    diagonais = []
    montantes = []

    for barra in trelica_objeto.barras_objetos:
        if barra.tipo == 'diagonal':
            diagonais.append(barra)
        elif barra.tipo == 'montante':
            montantes.append(barra)
        elif barra.tipo == 'banzo-superior':
            banzos_superiores.append(barra)
        elif barra.tipo == 'banzo-inferior':
            banzos_inferiores.append(barra)

    lista_barras = [banzos_inferiores, banzos_superiores, montantes, diagonais]

    linha = 0

    # inserindo o titulo = viga
    sheet.write_merge(linha, linha, 1, 11, viga, estilo_titulo)
    linha += 1

    sheet.write_merge(linha, linha, 1, 11, 'Dados da Viga Treliçada',
                      estilo_sub_titulo)
    linha += 1

    sheet.write_merge(linha, linha, 8, 11, 'Combinações [kg/m]',
                      estilo_destaque_tabela)
    sheet.write(linha, 1, 'Vãos[m]=', estilo_destaque)
    sheet.write_merge(linha, linha, 2, 4, vaos, estilo_normal)
    linha += 1

    sheet.write(linha, 1, 'Altura [m]', estilo_destaque)
    sheet.write(linha, 2, h_viga, estilo_normal)

    sheet.write(linha, 4, 'Soldado [kg]', estilo_destaque)
    sheet.write(linha, 5, peso_soldado, estilo_normal)

    sheet.write_merge(linha, linha, 8, 9, 'Grav. ', estilo_destaque_tabela)
    sheet.write_merge(linha, linha, 10, 11, 'Vento', estilo_destaque_tabela)
    linha += 1

    sheet.write(linha, 1, 'Peso [kg]', estilo_destaque)
    sheet.write(linha, 2, peso, estilo_normal)

    sheet.write(linha, 4, 'Dobrado [kg]', estilo_destaque)
    sheet.write(linha, 5, peso_dobrado, estilo_normal)

    sheet.write_merge(linha, linha, 8, 9, '1.25xCP + 1.5xSC + 1.4xSU',
                      estilo_normal_tabela)
    sheet.write_merge(linha, linha, 10, 11, '1.0xCP + 1.4xCV',
                      estilo_normal_tabela)
    linha += 1

    sheet.write(linha, 1, 'Y [kg/m]', estilo_destaque)
    sheet.write(linha, 2, peso_linear, estilo_normal)

    sheet.write(linha, 4, 'Miscelanias [kg]', estilo_destaque)
    sheet.write(linha, 5, peso_miscelanias, estilo_normal)

    sheet.write_merge(linha, linha, 8, 9, carregamento_grav,
                      estilo_normal_tabela)
    sheet.write_merge(linha, linha, 10, 11, carregamento_cv,
                      estilo_normal_tabela)
    linha += 2

    # Barras da treliça
    sheet.write_merge(linha, linha, 1, 11, 'Barras da Treliça',
                      estilo_destaque_tabela)
    linha += 1
    sheet.write(linha, 1, 'id', estilo_destaque_tabela)
    sheet.write(linha, 2, ' ', estilo_destaque_tabela)
    sheet.write(linha, 3, 'tipo ', estilo_destaque_tabela)
    sheet.write(linha, 4, 'seção ', estilo_destaque_tabela)
    sheet.write(linha, 5, 'Peso [kg]', estilo_destaque_tabela)
    sheet.write(linha, 6, 'l [m]', estilo_destaque_tabela)
    sheet.write(linha, 7, 'Comp [kgf]', estilo_destaque_tabela)
    sheet.write(linha, 8, 'Tração [kgf]', estilo_destaque_tabela)
    sheet.write(linha, 9, 'Ratio ', estilo_destaque_tabela)
    sheet.write(linha, 10, 'compr.', estilo_destaque_tabela)
    sheet.write(linha, 11, 'tração', estilo_destaque_tabela)
    linha += 1

    for lista in lista_barras:
        for barra in lista:
            estilo = estilo_normal_tabela
            if barra.ratio > 1:
                estilo = estilo_normal_tabela_red
            else:
                estilo = estilo_normal_tabela
            sheet.write(linha, 1, barra.id, estilo)
            sheet.write(linha, 2, barra.tipo, estilo)
            sheet.write(linha, 3, barra.section.tipo, estilo)
            sheet.write(linha, 4, stringSecaoBarra(barra), estilo)
            sheet.write(linha, 5, barra.peso, estilo)
            sheet.write(linha, 6, barra.comprimento(), estilo)
            sheet.write(linha, 7, barra.compressao, estilo)
            sheet.write(linha, 8, barra.tracao, estilo)
            sheet.write(linha, 9, barra.ratio, estilo)
            sheet.write(linha, 10, barra.ratio_compressao, estilo)
            sheet.write(linha, 11, barra.ratio_tracao, estilo)
            linha += 1

    linha = 1
    sheet.write(linha, 15, 'Reações nos Apoios = [h1, v1, v2, v3, ..., vn] ',
                estilo_normal_esquerda)
    linha += 1

    sheet.write(linha, 15, 'Apoios numerados conforme desenho do canvas',
                estilo_normal_esquerda)
    linha += 1
    sheet.write(linha, 15, 'Numeração da esquerda, para direita',
                estilo_normal_esquerda)
    linha += 1

    sheet.write(linha, 15, 'F', estilo_destaque_tabela)
    sheet.write_merge(linha, linha, 16, 17, 'kgf', estilo_destaque_tabela)
    linha += 1

    sheet.write(linha, 15, ' ', estilo_destaque_tabela)
    sheet.write(linha, 16, 'grav', estilo_destaque_tabela)
    sheet.write(linha, 17, 'vento', estilo_destaque_tabela)
    linha += 1

    reacoes_grav = trelica_objeto.reacoes_grav
    reacoes_cv = trelica_objeto.reacoes_cv
    qtd_reacoes = len(reacoes_grav)

    sheet.write(linha, 15, 'Fx 1', estilo_destaque_tabela)
    sheet.write(linha, 16, reacoes_grav[0], estilo_normal_tabela)
    sheet.write(linha, 17, reacoes_cv[0], estilo_normal_tabela)
    linha += 1

    for i in range(1, qtd_reacoes):
        sheet.write(linha, 15, 'Fy {:.0f}'.format(i), estilo_destaque_tabela)
        sheet.write(linha, 16, reacoes_grav[i], estilo_normal_tabela)
        sheet.write(linha, 17, reacoes_cv[i], estilo_normal_tabela)
        linha += 1

    wb.save(text_file.name)