
    {g                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZ d dlZ ej        d           d dlmZ d dl Z!d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE g dZFg dZGd dlmZmHZH d dlmZ d ZId  ZJd! ZKd&d#ZLd$ ZMed%             ZNdS )'    N)datetime)settings)messages)login_required)
connection)HttpResponseHttpResponseForbidden)renderget_object_or_404)Document)InchesPt)WD_ALIGN_PARAGRAPH)WD_ROW_HEIGHT_RULE)
WD_SECTIONAgg)Ambiente)Parede)Porta)Projeto)Telhado)DadosTermicos)Vidro   )calcular_carga_termica_paredecalcular_carga_insolacao_paredecarregar_temperaturas_projeto2)calcular_cargas_vidros)calcular_carga_insolacao_portacalcular_carga_termica_portacalcular_cargas_portas)calcular_cargas_telhados calcular_carga_insolacao_telhadocalcular_carga_termica_telhado)!calcular_cargas_termicas_ambiente#calcular_calor_sensivel_ar_exterior"calcular_calor_latente_ar_exteriorcalcular_vazao_ar_infiltracaocalcular_vazao_ar_renovacao calcular_vazao_total_ar_exteriorcalcular_densidade_ar)nortesullesteoeste)z06:00z07:00z08:00z09:00z10:00z11:00z12:00z13:00z14:00z15:00z16:00z17:00z18:00)r   RGBColorc                    d}| j         D ]O}|j        }|j        r|j        d         n|                                }|                    |          }t          d          |j        _        t          ddd          |j        j	        _
        t          j        |_        |                    d|z              |j        }|j        r|j        d         n|                                }|                    |          }t          d          |j        _        t          ddd          |j        j	        _
        t          j        |_        |                    d|z              QdS )uq   
    Insere uma marca d'água de texto em todas as páginas do documento de forma mais visível e inclinada.
    u-   VERSÃO DE TESTE – NÃO USAR COMERCIALMENTEr         z

N)sectionsheader
paragraphsadd_paragraphadd_runr   fontsizer0   colorrgbr   CENTER	alignmentfooter)	docwatermark_textsectionr5   paragraph_header
run_headerr?   paragraph_footer
run_footers	            ?/var/www/html/cag/calculotermica/relatorio_ambiente_completo.pyinserir_marca_daguarH   .   sL    EN< : :393D`6,Q//&J^J^J`J`%--n==
!"vv
$,S#s$;$;
!%7%>" 	  .!8999 393D`6,Q//&J^J^J`J`%--n==
!"vv
$,S#s$;$;
!%7%>" 	  .!89999+: :    c           	      H   d |D             }t           j                            d           t          j        d           t          j        | |dd           t          j        dd	
           t          j        d           t          j        d           t          j        d           t          j	        d           t          |          D ]<\  }}t          j        |t          |          t          |          dddd           =t          j        |          }||         }| |         }t          j        ddd|dd| dddd           t          j        g d           t"          j                            |d          }	t          j        |	d d!"           t          j                     t          j        d           t          j        | |d#d           t          j        d$d	
           t          j        d           t          j        d%           t          j        d           t          j	        d           t          |          D ]"\  }}t          j        |||dd&dd           #t          j        |          }
||
         }| |
         }t          j        ddd|dd'| dddd           t          j        g d           t"          j                            |d(          }t          j        |d d!"           t          j                     |	|fS ))u5   
    Cria gráficos de carga térmica em W e TR.
    c                     g | ]}|d z  S )   ).0ws     rG   
<listcomp>z&create_load_graphs.<locals>.<listcomp>Q   s    ===1$===rI   default)      )figsizezb-o   )	linewidthu&   Variação da Carga Térmica Total (W)   )padu   Horáriou   Carga Térmica (W)T-   )rotationz.0fWcenterbottom)havag      ?g{Gz?u\   O gráfico demonstra a variação da carga térmica ao longo do dia, com o valor máximo de .2fu    W atingido às .rR   )r^   fontsizewrap)r   gQ?r   r   )rectzgraph_w.pngi,  tight)dpibbox_incheszr-ou'   Variação da Carga Térmica Total (TR)u   Carga Térmica (TR)TRu    TR atingido às zgraph_tr.png)pltstyleusefigureplottitlexlabelylabelgridxticks	enumeratetextfloatnpargmaxfigtexttight_layoutospathjoinsavefigclose)horarioscarga_termica_total_ambiente
output_dircarga_trivmax_index_wmax_value_w
max_hour_wgraph_w_pathmax_index_trmax_value_trmax_hour_trgraph_tr_paths                 rG   create_load_graphsr   L   sz   
 >= <===H IMM) JwHX3UaHHHHI6B????JzJ#$$$HTNNNJ 677 L L1E!HHq0000X(KKKKK)899K.{;K+&J KT ^oz  ^  ^  ^  Q[  ^  ^  ^bt5 5 5 5 ///****7<<
M::LK#7;;;;IKKK JwHXx!4444I7R@@@@JzJ$%%%HTNNNJ (## ? ?1A!||||X>>>>>9X&&LL)L<(K KT ao{  a  a  a  S^  a  a  abt5 5 5 5 ///****GLL^<<MK3G<<<<IKKK&&rI   c                    | j         D ]G}t          d          |j        d         _        |j        dd         D ]}t          d          |_        H| j         D ]}|j        D ]~}|j        d         }|j        }t          d          |_        t          d          |_        t          j
        |_        |j        D ]'}t          d          |j        _        d|j        _        (| j         d         j        D ];}|j        D ]1}|j        D ]'}d	|j        _        t          d          |j        _        (2<| j         D ]'}t          d
          |_        t$          j        |_        (dS )z%
    Formata uma tabela do Word.
    g      @r   r   Ng      ?rU      ArialTg333333?)rowsr   cellswidthr6   paragraph_formatr   space_beforespace_afterr   r=   r>   runsr9   r:   nameboldheightr   AT_LEASTheight_rule)tablerowcell	paragraphr   runs         rG   format_tabler      s   
 z % %#C[[	!IabbM 	% 	%DDJJ	% z ( (I 	( 	(D*I(9,.qEE)+-a55("4";I ~ ( ( "1 '(	( 
1# & & 	& 	&I ~ & & $ "1&	& z 6 6C[[
,56 6rI   Fc                 D   |D ]}|                                  j        }|d         |d         _        t          |d                   D ]X\  }}t	          |t
          t          j        f          r|dd||dz            _        ;t          |          ||dz            _        YdS )zE
    Adiciona linhas a uma tabela com base nos dados fornecidos.
    r   r   r`    WN)	add_rowr   rt   rs   
isinstanceru   rv   float64str)r   datar5   row_data	row_cellsr   values          rG   add_table_rowsr      s      1 1MMOO)	$QK	!!(1+.. 	1 	1HAu%%!455 1).&6&6&6&6	!A###&)%jj	!A###		11 1rI   c                     t          | t          t          j        f          rt          |           g|z  S t          | t          j                  r|                                 S | S )zH
    Garante que um valor seja um array de determinado comprimento.
    )r   ru   rv   r   ndarraytolist)r   lengths     rG   ensure_arrayr      sW     %%,-- e~&&	E2:	&	& ||~~LrI   c                 b5   	 | j         j        r| j         j        st          d          S t	          j        | j         j        j                   t          t          |          }t          t          ||          }t          t          |          }t          j                            |          }t          j                            |          }t          j                            |          }t           j                            |          }		 t#          |          \  }
}}nN# t$          $ rA}t'          j        | t+          |                     t-          | d||dd          cY d }~S d }~ww xY w|j        }|j        |j        nd}t3          |          }t5          |j        |j                  }t;          |j        |j                  }tA          |j        |j        |j        |j                  }tC          ||
||          }tE          ||||j#        |	          }i }i }tI          j%        tM          tN                              }tI          j%        tM          tN                              }|D ]h}tP          D ]^}tS          ||||          }tU          ||          }|tI          j+        |          z  }|tI          j+        |          z  }||| <   ||| <   _i||z   }|||d
}tY          |||          \  } }!tI          j%        tM          tN                              }"tI          j%        tM          tN                              }#| -                                D ]\  }}|"tI          j+        |          z  }"|!-                                D ]\  }}|#tI          j+        |          z  }#|"|#z   }$|"|#|$d}%i }&i }'tI          j%        tM          tN                              }(tI          j%        tM          tN                              })|D ]}*tP          D ]}t]          ||*||          }t_          |*|          }|&0                    |tI          j%        tM          tN                                        tI          j+        |          z   |&|<   |'0                    |tI          j%        tM          tN                                        tI          j+        |          z   |'|<   |(tI          j+        |          z  }(|)tI          j+        |          z  })|(|)z   }+|(|)|+d},i }-i }.tI          j%        tM          tN                              }/tI          j%        tM          tN                              }0|	D ]l}1tc          ||1|          }te          ||1|          }||-d|1j3         <   ||.d|1j3         <   |/tI          j+        |          z  }/|0tI          j+        |          z  }0m|/|0z   }2|/|0|2d}3ti          |          }4d|4vr&tI          j%        tM          tN                              n|4d         d|4vr&tI          j%        tM          tN                              n|4d         d|4vr&tI          j%        tM          tN                              n|4d         d|4vr&tI          j%        tM          tN                              n|4d         d}5||$z   |+z   |2z   tI          j+        |5d                   z   |z   tI          j+        |5d                   z   tI          j+        |5d                   z   }6tI          j+        |5d                   |z   }7|7|6z   }8tk          |8          }9i d|d|d|d|%d|+d|3d|5d|d|d| d|!d|(d |)d!|-d"|.d#|4d$|||||tN          |||6|7|8|9d%}:tm                      };| j         j        j        d&k    rto          |;           |;j8        d         }<ts          d'          |<_:        ts          d'          |<_;        ts          d(          |<_<        ts          d)          |<_=        d*}=t|          j?        @                    |=          rB|;A                    |=ts          d+          ,           |;jB        d-         }>t          jD        |>_E        |;j8        d         }<|<jF        }?|?jB        d         }@t          jD        |@_E        |@G                                }A|AA                    |=ts          d.          ,           |;H                    d/          }Bt          jD        |B_E        |;I                    d0|jJ                    |;I                    d1|jK                    |;I                    d2t          jM                    N                    d3                      |;H                    d4d56           |;I                                }Cd|CG                    d7          _O        |CG                    | d8           |;I                                }Cd|CG                    d9          _O        |CG                    |d:d;           |;H                    d<d56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }Ed?|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |tM          tN                              }t          |tM          tN                              }t          |tM          tN                              }d@|fdA|fdB|fg}Ht          |D|H           t          |D           |;H                    dCd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|-                                           t          |D           |;H                    dEd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|-                                           t          |D           |;H                    dFdG6           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdH|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        dI|d         fdJ|d          fdK|dL         fg}It          |D|I           t          |D           |;H                    dMd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D| -                                           t          |D           |;H                    dNd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|!-                                           t          |D           |;H                    dOdG6           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        dI|%d         fdJ|%d          fdK|%dP         fg}Jt          |D|J           t          |D           |;H                    dQd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|&-                                           t          |D           |;H                    dRd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|'-                                           t          |D           |;H                    dSdG6           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdH|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        dI|,d         fdJ|,d          fdK|,d         fg}Kt          |D|K           t          |D           |;H                    dTd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|--                                           t          |D           |;H                    dUd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |D|.-                                           t          |D           |;H                    dVdG6           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdD|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        dI|3d         fdJ|3d          fdK|3dW         fg}Lt          |D|L           t          |D           |;H                    dXd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdY|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |5d         tM          tN                              }Mt          |5d         tM          tN                              }Nt          |5d         tM          tN                              }Ot          |5d         tM          tN                              }PdZ|Mfd[|Nfd\|Ofd]|Pfg}Qt          |D|Q           t          |D           |;H                    d^d56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }Ed_|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        t          |tM          tN                              }Rt          |tM          tN                              }Sd`|Rfda|Sfg}Tt          |D|T           t          |D           |;H                    dbd56           |;P                    d5tM          tN                    d5z   =          }Dd>|D_Q        |DjR        d         jS        }EdY|Ed         _T        t          tN                    D ]\  }F}G|G|E|Fd5z            _T        dc|6fdd|7fde|8fg}Ut          |D|U           t          |D           |;H                    dfd56           |;I                                }Cd|CG                    dg          _O        |CG                    |9dhdi           |9djz  }V|;I                                }Cd|CG                    dk          _O        |CG                    |Vdhdl           |;H                    dmd56           t|          j?        Y                    t          j[        dn          }Wt}          j\        |Wdo           t          tN          |8|W          \  }X}Y|;I                    dp           |;A                    |Xts          dq          ,           |;jB        d-         }>t          jD        |>_E        |;A                    |Yts          dq          ,           |;jB        d-         }>t          jD        |>_E        t|          j?        Y                    t          j[        drds|jJ         dt|jK         du          }Zt}          j\        t|          j?        ^                    |Z          do           |;_                    |Z           t          |Zdv          5 }[t          |[b                                dwx          }\dy|jJ         dt|jK         du|\dz<   |\cd d d            S # 1 swxY w Y   d S # t          $ rJ}t          d{t+          |                      t          d|t+          |           d}~          cY d }~S d }~ww xY w)Nu'   Usuário não autenticado ou sem tenant)id)r   projeto)ambientez+calculotermica/resultados_cargatermica.htmlT)r   r   error   )hlv)total_carga_termicatotal_carga_insolacaototal_parede_calculo)r   r   total_vidro_calculo)r   r   total_porta_calculotelhado_)r   r   total_telhado_calculocarga_sensivel_pessoascarga_latente_pessoascarga_iluminacaocarga_equipamentos)r   r   r   r   r   r   cargas_totais_paredescargas_totais_vidrosr   cargas_totais_telhadoscargas_totais_ambientecargas_termocargas_insolacaocargas_termo_vidroscargas_insolacao_vidrosr   r   cargas_termo_telhadoscargas_insolacao_telhadoscargas_ambientevazao_infiltracao)vazao_renovacaovazao_total_ar_exteriorcalor_sensivel_ar_exteriorcalor_latente_ar_exteriorr   altitudedensidade_arsomatorio_carga_sensivel_totalsomatorio_carga_latente_totalr    carga_termica_total_ambiente_maxtestegffffff?gzGa'@g
ףp= @z5/var/www/html/cag/static/relatorio/grf_graph_logo.png   )r   g      ?u(   Relatório de Cálculo de Carga Térmicaz	Projeto: z
Ambiente: zData: z%d/%m/%Yu   Informações Básicasr   )levelz
Altitude: z mzDensidade do Ar: z.4fu    kg/m³u   Vazões de Ar)r   colsz
Table Gridu   Tipo de Vazãou   Vazão de Infiltraçãou   Vazão de Renovaçãou   Vazão Total de Ar Exterioru-   Cargas Térmicas das Paredes por Orientaçãou   Orientaçãou2   Cargas de Insolação das Paredes por OrientaçãozTotais das Cargas das ParedesrU   Tipou   Total Carga Térmicau   Total Carga InsolaçãozTotal Geralr   u,   Cargas Térmicas dos Vidros por Orientaçãou1   Cargas de Insolação dos Vidros por OrientaçãozTotais das Cargas dos Vidrosr   u,   Cargas Térmicas das Portas por Orientaçãou1   Cargas de Insolação das Portas por OrientaçãozTotais das Cargas das Portasu   Cargas Térmicas dos Telhadosu"   Cargas de Insolação dos TelhadoszTotais das Cargas dos Telhadosr   zCargas do AmbientezTipo de Cargau   Carga Sensível PessoaszCarga Latente Pessoasu   Carga IluminaçãozCarga EquipamentoszCalor do Ar ExteriorzTipo de Caloru   Calor SensívelzCalor Latenteu   Somatório das Cargas Térmicasu   Somatório Carga Sensívelu   Somatório Carga Latenteu   Carga Térmica Totalu   Carga Térmica Total Máximau   Valor Máximo: r`   r   rL   u   Valor Máximo em TR: z TRu)   Gráficos de Variação da Carga Térmicatemp_graphs)exist_oku   Os gráficos abaixo mostram a variação da carga térmica total ao longo do dia. O primeiro gráfico apresenta os valores em Watts (W) e o segundo em Toneladas de Refrigeração (TR). Observe os picos de carga e a variação ao longo das horas do dia.
   
relatoriosrelatorio_calculo__z.docxrbzGapplication/vnd.openxmlformats-officedocument.wordprocessingml.document)content_typez'attachment; filename=relatorio_calculo_zContent-DispositionzErro detalhado: u   Erro ao gerar relatório: i  )status)euseris_authenticatedtenantr	   r   
set_schemaschema_namer   r   r   r   r   objectsfilterr   r   r   r   FileNotFoundErrorr   errorr   r
   temperatura_internar   r+   r(   	area_piso
pe_direitor)   numero_pessoastaxa_renovacaor*   r&   r'   umidade_absoluta_internarv   zeroslenHORARIOSORIENTACOESr   r   arrayr   itemsr    r   getr$   r#   r   r%   maxr   rH   r4   r   left_marginright_margin
page_widthpage_heightrz   r{   existsadd_picturer6   r   r=   r>   r?   r8   add_headingr7   nome_projetonome_ambienter   nowstrftimer   	add_tablerj   r   r   rt   rs   r   r   r   r|   r   
MEDIA_ROOTmakedirsr   dirnamesaveopenr   read	Exceptionprint)]request
projeto_idambiente_idr   r   termicosparedesvidrosportastelhadostemperaturas_externasumidade_absoluta_externacalor_latente_aguaer   r   r   r   r   r   r   r   r   r   total_carga_termica_paredestotal_carga_insolacao_paredesparede
orientacaocarga_termicacarga_insolacaor   r   r   r   total_carga_termica_vidrostotal_carga_insolacao_vidrosr   r   cargas_termo_portascargas_insolacao_portastotal_carga_termica_portastotal_carga_insolacao_portasportar   cargas_totais_portasr   r   total_carga_termica_telhadostotal_carga_insolacao_telhadostelhador   r   r   r   r   r   r   r   contextor@   rB   	logo_pathlast_paragraphr?   footer_parar   rn   pr   header_cellsr   horavazoestotais_paredetotais_vidrototais_portastotais_telhadocarga_sensivelcarga_latenter   r   
cargas_ambcalor_sensivel_valorescalor_latente_valores
calores_ar
somatoriostr_maxtemp_dirr   r   output_pathdoc_fileresponses]                                                                                                rG   gerar_relatorio_completorH     s.   E	O|, 	TGL4G 	T()RSSSgl1=>>>#G
;;;$X+wOOO$]XFFF.'''::%%x%88%%x%88?))8)<<	Rpq{R|R|O!#;=O=O  	 	 	N7CFF+++'#P"$S S        	 ':'.'7'C7##,X66 :(:LhNabb5h6MxOfgg"B 3X5LhNe#
 #
 &I+-@BY&
 &
" %G#$-"%
 %
 %
!  ')hs8}}&=&=#(*X(?(?% 		D 		DF) D D
 =j&RZ\f g g"A&*"U"U+rx/F/FF+-/1J1JJ-0=
_-4C J11D  ;=ZZ#>%B$8!
 !
 8NjZ`bj7k7k44%'Xc(mm%<%<"')xH'>'>$)<)B)B)D)D 	B 	B%J&"(=*A*AA&&+B+H+H+J+J 	F 	F'J(BH_,E,EE((8;WW#=%A#6 
  
 !"$%'Xc(mm%<%<"')xH'>'>$ 		J 		JE) J J
 <ZPXZd e e"@
"S"S2E2I2I*VXV^_bck_l_lVmVm2n2nqsqy  {H  rI  rI  3I#J/6M6Q6QR\^`^fgjksgtgt^u^u6v6vy{  zB  CR  zS  zS  7S'
3*bh}.E.EE*,0I0II,,J 9;WW $>%A#6 
  
 !#$&!')xH'>'>$)+#h--)@)@& 	H 	HG::wPXYYM>z7T\]]O=J!"9WZ"9"9:AP%&=&=&=>(BH],C,CC(*bh.G.GG** <?] ]#?%C%:"
 "
 <HEEAYapApApbhs8}}&=&=&=  wF  G_  w`@W_n@n@nRXc(mm%<%<%<  uD  E\  u];MUd;d;dX 7 7 7jy  {M  kN=QYh=h=h"(3x=="9"9"9n}  S  oT	"
 "
 !   "" H+,DEFF	G
 '' H+,>?@@A H+,@ABBC 	' H+,CDEE%& 	&
 (EGe'e$+./K+L+L(
w

 $%:
 #$8	

 "#6
 %&<
 %&<
 L
  0
 "#6
 &'>
 "#=
 $%A
 $%:
 ()B
  !
"  !2#
$  /'>*D)B  (.L-J,H0P9
 
 
@ jj <*g55$$$ ,q/$Skk%c{{#E]]$Tll L	7>>)$$ 	AOOIVAYYO777 ^B/N'9'@N$ ,q/'* 2 9!!##	555  JKK,3 	<g&:<<===?x'=??@@@H8<>>#:#::#F#FHHIII 	0:::'+		,$			X///""".2		%&&+			\..../// 	q11113x==1+<=="z!}*/Q ** 	* 	*GAt%)L1"" )):CMMJJ&HFF"./FH"V"V '(9:$o6*,CD
 	uf%%%U 	GqQQQ 13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""ul0022333U 	LTUVVV13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u.4466777U 	7qAAA13x==1+<=="z!}*%Q ** 	* 	*GAt%)L1"" $%:;P%QR&(=>U(VW12HIJ
 	um,,,U 	FaPPP13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u17799:::U 	KSTUUU13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u5;;==>>>U 	6a@@@13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%9:O%PQ&(<=T(UV01FGH
 	ul+++U 	FaPPP13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u17799:::U 	KSTUUU13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u5;;==>>>U 	6a@@@13x==1+<=="z!}*%Q ** 	* 	*GAt%)L1"" $%9:O%PQ&(<=T(UV01FGH
 	um,,,U 	7qAAA13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u399;;<<<U 	<AFFF13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1""u7==??@@@U 	8BBB13x==1+<=="z!}*-Q ** 	* 	*GAt%)L1"" $%;<Q%RS&(>?V(WX23JKL
 	un---U 	,A66613x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" &&<=U&VX[\dXeXeff$%;<S%TVYZbVcVcdd'(>?Q(RTWX`TaTabb)*@AU*VX[\dXeXeff '7$m4!#34!#56	

 	uj)))U 	.a88813x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" "..H#h--!X!X ,-FH V V  6734


 	uj)))U 	9CCC13x==1+<=="z!}*.Q ** 	* 	*GAt%)L1"" *+IJ')FG#%AB

 	uj)))U 	6a@@@,0		#$$)			5====>>> 2D826		)**/			V$$$$%%% 	C1MMM 7<< 3]CC
Ht,,,, '9('
 '
#m 	 s 	t 	t 	t
 	F2JJ777+#5#< VBZZ888+#5#<  gll8#6 iW5I i iHLb i i ik k
BGOOK004@@@@ +t$$ 	#HMMOO-vx x xH /MX_Xl  /M  /Mow  pF  /M  /M  /MH*+		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  O O O)Q))***AQAA#NNNNNNNNNOs   &Ai C&Ai D$ #Ai $
E/.6E*$E/%Ai *E//AbAi h;Aii Ai iAiiAi iAiiAi i
Aj.i$?Aj)j#Aj.j)Aj.)F)Orz   r   django.confr   django.contribr   django.contrib.auth.decoratorsr   	django.dbr   django.httpr   r	   django.shortcutsr
   r   docxr   docx.sharedr   r   docx.enum.textr   docx.enum.tabler   docx.enum.sectionr   
matplotlibrk   matplotlib.pyplotpyplotri   numpyrv   ctermica.modelsr   paredes.modelsr   portas.modelsr   projeto.modelsr   telhados.modelsr   termicos.modelsr   vidros.modelsr   cargasparedesr   r   r   cargasvidrosr   cargasportasr   r    r!   cargastelhadosr"   r#   r$   cargastermicosr%   r&   r'   r(   r)   r*   r+   r   r   r0   rH   r   r   r   r   rH  rM   rI   rG   <module>rd     sI   				                   # # # # # # 9 9 9 9 9 9             ; ; ; ; ; ; ; ; 6 6 6 6 6 6 6 6       " " " " " " " " - - - - - - . . . . . . ( ( ( ( ( (     
u              $ $ $ $ $ $ ! ! ! ! ! !       " " " " " " # # # # # # ) ) ) ) ) )       y y y y y y y y y y 0 0 0 0 0 0 n n n n n n n n n n v v v v v v v v v v                  100B B B % $ $ $ $ $ $ $ - - - - - -: : :<@' @' @'D%6 %6 %6N1 1 1 1   F	O F	O F	O F	O F	OrI   