
    {g}                        S SK r S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJrJr  S S	KJr  S S
KJrJr  S SKJr  S SKJr  S SKJr  S SKr\R8                  " S5        S SKJr  S SK r!S SK"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)  S SK*J+r+  S SK,J-r-  S SK.J/r/  SSK0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9  SSK:J;r;J<r<  SSK=J>r>J?r?J@r@JArAJBrBJCrCJDrD  / SQrE/ SQrFS SKJrJGrG  S SKJr  S rHS  rIS! rJS" rKS# rLS$ rM\S% 5       rNg)&    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_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                 
   SnU R                    GHp  nUR                  nUR                  (       a  UR                  S   OUR                  5       nUR	                  U5      n[        S5      UR                  l        [        SSS5      UR                  R                  l
        [        R                  Ul        UR	                  SU-   5        UR                  nUR                  (       a  UR                  S   OUR                  5       nUR	                  U5      n[        S5      UR                  l        [        SSS5      UR                  R                  l
        [        R                  Ul        UR	                  SU-   5        GMs     g)ui   
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sizer/   colorrgbr   CENTER	alignmentfooter)	docwatermark_textsectionr4   paragraph_header
run_headerr>   paragraph_footer
run_footers	            >/var/www/html/cag/calculotermica/relatorio_completo_projeto.pyinserir_marca_daguarG   ?   s2    EN<<393D3D6,,Q/&J^J^J`%--n=
!"v
$,S#s$;
!%7%>%>" 	  .!89 393D3D6,,Q/&J^J^J`%--n=
!"v
$,S#s$;
!%7%>%>" 	  .!89+      c           	         U Vs/ s H  oDS-  PM	     nnSU S3nSU S3n[         R                  " SS9  [         R                  " XSSS	9  [         R                  " S
SS9  [         R                  " S5        [         R
                  " S5        [         R                  " S5        [         R                  " SS9  [        U5       H3  u  p[         R                  " U[        U	5      [        U	5      S S3SSS9  M5     [        R                  " U5      n
X   nX
   n[         R                  " SSSUS SU S3SSSS9  [         R                  " / SQS 9  [        R                   R#                  X&5      n[         R$                  " US!S"S#9  [         R&                  " 5         [         R                  " SS9  [         R                  " XS$SS	9  [         R                  " S%SS9  [         R                  " S5        [         R
                  " S&5        [         R                  " S5        [         R                  " SS9  [        U5       H   u  p[         R                  " XU	S S'3SSS9  M"     [        R                  " U5      nX^   nX   n[         R                  " SSSUS S(U S3SSSS9  [         R                  " / SQS 9  [        R                   R#                  X'5      n[         R$                  " US!S"S#9  [         R&                  " 5         UU4$ s  snf ))um   
Cria gráficos de carga térmica em W e TR para um ambiente específico,
gerando nomes de arquivos únicos.
i  graph_w_z.png	graph_tr_)      )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 valor máximo de .2fu    W é atingido às .rL   )rX   fontsizewrap)r   gQ?r   r   )recti,  tight)dpibbox_incheszr-ou'   Variação da Carga Térmica Total (TR)u   Carga Térmica (TR)TRu    TR é atingido às )plt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ambiente_idwcarga_trgraph_w_filenamegraph_tr_filename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                     rF   create_load_graphsr   \   sz    #??">QD">H? "+d3#K=5 JJwHHXUaHII6B?JJzJJ#$HHTNJJ67E!Hq#a0X(K 8))89K.;K&JKKT
k#..A*QObt
 /*77<<
=LKK#7;IIK JJwHHX!4II7R@JJzJJ$%HHTNJJ(#!C|X> $99X&L)L(KKKT
l3//CK=PQRbt
 /*GGLL?MKK3G<IIK&&q @s   K>c                    U R                    HF  n[        S5      UR                  S   l        UR                  SS  H  n[        S5      Ul        M     MH     U R                    H  nUR                   H  nUR                  S   nUR
                  n[        S5      Ul        [        S5      Ul        [        R                  Ul        UR                   H.  n[        S5      UR                  l        SUR                  l        M0     M     M     U R                   S   R                  S   R                  S   R                   H  nS	UR                  l        M     U R                    H(  n[        S
5      Ul        [$        R&                  Ul        M*     g)uD   
Formata uma tabela do Word (largura, fonte, centralização etc.).
g      @r   r   Ng      ?rO      ArialTg333333?)rowsr   cellswidthr5   paragraph_formatr   space_beforespace_afterr   r<   r=   runsr8   r9   nameboldheightr   AT_LEASTheight_rule)tablerowcell	paragraphr   runs         rF   format_tabler      s0    zz#C[		!IIabMDDJ "  zzIID*I(99,.qE)+-a5("4";";I ~~ "1 ' &   zz!}""1%00388 9 zzC[
,55 rH   c                 <   U H  nU R                  5       R                  n[        US   5      US   l        [	        US   5       HQ  u  pE[        U[        [        R                  45      (       a  US S3X4S-      l        M<  [        U5      X4S-      l        MS     M     g)u^   
Adiciona linhas a uma tabela, onde data é uma lista de tuplas: (rótulo, array_de_valores).
r   r   rZ    WN)	add_rowr   strrl   rk   
isinstancerm   rn   float64)r   datarow_data	row_cellsr   values         rF   add_table_rowsr      s     MMO))	,	!!(1+.HA%%!455).s2&6	A##&)%j	A##	 / rH   c                 *   [        U [        [        [        R                  45      (       a  [        U 5      /U-  $ [        U [        R
                  5      (       a  U R                  5       $ [        U [        5      (       a  [        U 5      U:X  a  U $ S/U-  $ )z
Garante que um valor seja um array de tamanho 'length'.
Caso seja escalar ou array parcial, transforma em list do tamanho adequado.
        )	r   rm   intrn   r   ndarraytolistlistlen)r   lengths     rF   ensure_arrayr      ss    
 %%bjj122e~&&	E2::	&	&||~	E4	 	 SZ6%9uV|rH   c                    U R                  USS9  UR                  5       (       d  U R                  S5        gU R                  S[	        U5      S9nSUl        UR                  S   R                  n[        U5       H  u  pxXU   l	        M     U HO  n	UR                  5       R                  n
[        U5       H#  u  p{[        XS	5      n[        U5      X   l	        M%     MQ     [        U5        g)
u   
Cria uma tabela no documento Word para um queryset, exibindo
apenas os campos especificados em 'fields' com rótulos 'headers'.
rO   levelzNenhum dado cadastrado.Nr   r   cols
Table Gridr   zN/A)add_headingexistsr6   	add_tabler   styler   r   rk   rl   r   getattrr   r   )r?   rf   querysetfieldsheadersr   header_cellsr   r4   objr   fieldvalors                rF   add_table_from_querysetr      s    
 OOEO#??34MMqs6{M3EEK ::a=&&Lw'	%Q ( MMO))	!&)HAC.E #E
IL *  rH   c           	      -    U R                   R                  (       a  U R                   R                  (       d  [        S5      $ [        R
                  " U R                   R                  R                  5        [        [        US9n[        R                  R                  US9R                  S5      nUR                  5       (       d(  [        R                  " U S5        [!        U SU/ SS.5      $  [#        U5      u  pEn[+        5       nU R                   R                  R                  S
:X  a  [-        U5        UR.                  S   n	[1        S5      U	l        [1        S5      U	l        [1        S5      U	l        [1        S5      U	l        [:        R<                  UR?                  SS5      l         [:        R<                  URC                  SURD                   35      l         [:        R<                  URC                  S[F        RH                  " 5       RK                  S5       35      l         Sn
[L        RN                  R                  U
5      (       a;  URQ                  U
[1        S5      S9  [:        R<                  URR                  S   l         U	RT                  nURR                  S   n[:        R<                  Ul         URW                  5       n[L        RN                  R                  U
5      (       a  URQ                  U
[1        S5      S9  URY                  5         [[        U5       GHn  u  p[        [\        US9n[^        R                  R                  US9n[`        R                  R                  US9n[b        R                  R                  US9n[d        R                  R                  US9nURf                  nURh                  b  URh                  OSn[k        U5      n[m        URn                  URp                  5      n[s        URt                  URv                  5      n[y        URn                  URp                  URt                  URv                  5      n[{        UUUU5      n[}        UUUUR~                  US9n0 n0 n[        R                  " [        [        5      5      n[        R                  " [        [        5      5      n U Hf  n![         HY  n"[        UU!UU"5      n#[        U!U"5      n$U[        R                  " U#5      -  nU [        R                  " U$5      -  n U#UU"'   U$UU"'   M[     Mh     UU -   n%UU U%S.n&[        UUU5      u  n'n([        R                  " [        [        5      5      n)[        R                  " [        [        5      5      n*U'R                  5        H  u  n"n+U)[        R                  " U+5      -  n)M!     U(R                  5        H  u  n"n+U*[        R                  " U+5      -  n*M!     U)U*-   n,U)U*U,S.n-0 n.0 n/[        R                  " [        [        5      5      n0[        R                  " [        [        5      5      n1[        [b        US9n[         HY  n"[        UUUU"5      n#[        UU"5      n$U0[        R                  " U#5      -  n0U1[        R                  " U$5      -  n1U#U.U"'   U$U/U"'   M[     U0U1-   n2U0U1U2S.n30 n40 n5[        R                  " [        [        5      5      n6[        R                  " [        [        5      5      n7U Hs  n8[        UU8U5      n9[        UU8U5      n:U6[        R                  " U95      -  n6U7[        R                  " U:5      -  n7U9U4SU8R                   3'   U:U5SU8R                   3'   Mu     U6U7-   n;U6U7U;S.n<[        U5      n=[        U=R                  SS 5      [        [        5      5      n>[        U=R                  S!S 5      [        [        5      5      n?[        U=R                  S"S 5      [        [        5      5      n@[        U=R                  S#S 5      [        [        5      5      nAU>U?U@UAS$.nBU%U,-   U2-   U;-   [        R                  " U>5      -   [        R                  " U5      -   [        R                  " U@5      -   [        R                  " UA5      -   nC[        R                  " U?5      [        R                  " U5      -   nDUCUD-   nE[        UE5      nFUFS%-  nGUR?                  S&UR                   3S'S(9  URC                  S)U S*35        URC                  S+US, S-35        UR?                  S.S/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS2UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        U[        [        5      5      nL[        U[        [        5      5      nM[        U[        [        5      5      nNS3UL4S4UM4S5UN4/nO[        WHUO5        [        UH5        UR?                  S6S/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        UR                  5       5      5        [        UH5        UR?                  S8S/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        UR                  5       5      5        [        UH5        UR?                  S9SS(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     S;U&S<   4S=U&S>   4S?U&S@   4/nP[        WHUP5        [        UH5        UR?                  SAS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U'R                  5       5      5        [        UH5        UR?                  SBS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U(R                  5       5      5        [        UH5        UR?                  SCSS(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     S;U-S<   4S=U-S>   4S?U-SD   4/nQ[        WHUQ5        [        UH5        UR?                  SES/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U.R                  5       5      5        [        UH5        UR?                  SFS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS7UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U/R                  5       5      5        [        UH5        UR?                  SGSS(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     S;U3S<   4S=U3S>   4S?U3SH   4/nR[        WHUR5        [        UH5        UR?                  SIS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nISJUIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U4R                  5       5      5        [        UH5        UR?                  SKS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nISJUIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     [        WH[        U5R                  5       5      5        [        UH5        UR?                  SLSS(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     S;U<S<   4S=U<S>   4S?U<SM   4/nS[        WHUS5        [        UH5        UR?                  SNS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     SOU>4SPU?4SQW@4SRWA4/nT[        WHUT5        [        UH5        UR?                  SSS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     ST[        U[        [        5      5      4SU[        U[        [        5      5      4/nU[        WHUU5        [        UH5        UR?                  SVS/S(9  UR                  S'[        [        5      S'-   S09nHS1UHlU        UHR                  S   R                  nIS:UIS   lX        [[        [        5       H  u  nJnKUKWIUJS'-      lX        M     SWWC4SXWD4SYWE4/nV[        WHUV5        [        UH5        URC                  SZWFS[ S\35        URC                  S]WGS[ S^35        UR?                  S_S/S(9  [L        RN                  R                  [        R                  S`5      nW[L        R                  " UWSSa9  [        [        UEUWUR                  5      u  nXnYURQ                  UX[1        Sb5      S9  [:        R<                  URR                  S   l         URQ                  UY[1        Sb5      S9  [:        R<                  URR                  S   l         U[        U5      S'-
  :  d  GM^  URY                  5         GMq     ScURD                   Sd3nZ[L        RN                  R                  [        R                  SeUZ5      n[[L        R                  " [L        RN                  R                  U[5      SSa9  UR                  U[5        [        U[Sf5       n\[        U\R                  5       SgSh9n]SiUZ 3U]Sj'   U]sS	S	S	5        $ ! [$         a;  n[        R&                  " U [)        U5      5        [!        U SUUSS.5      s S	nA$ S	nAff = f! , (       d  f       g	= f! [         a7  n[        Sk[)        U5       35        [        Sl[)        U5       3SmSn9s S	nA$ S	nAff = f)oux   
Gera um único relatório Word contendo todos os ambientes do projeto,
incluindo quebra de página para cada ambiente.
u'   Usuário não autenticado ou sem tenant)id)projetor   u/   Este projeto não possui ambientes cadastrados.z+calculotermica/resultados_cargatermica.htmlT)r   	ambienteserroNtester   gffffff?gzGa'@g
ףp= @u(   Relatório de Cálculo de Carga Térmicaz	Projeto: zData: z%d/%m/%Yz5/var/www/html/cag/static/relatorio/grf_graph_logo.png   )r   g      ?)ambiente)hlv)total_carga_termicatotal_carga_insolacaototal_parede_calculo)r   r   total_vidro_calculo)r   r   total_portas_calculozTelhado )r   r   total_telhado_calculocarga_sensivel_pessoasr   carga_latente_pessoascarga_iluminacaocarga_equipamentos)r   r   r   r   g     z@z
Ambiente: r   r   z
Altitude: z mzDensidade do Ar: z.4fu    kg/m³u   Vazões de Ar (m³/h)rO   r   r   u   Tipo de Vazãou   Vazão Infiltraçãou   Vazão Renovaçãou   Vazão Total Exterioru1   Cargas Térmicas das Paredes por Orientação (W)u   Orientaçãou%   Cargas de Insolação das Paredes (W)z!Totais das Cargas das Paredes (W)Tipou   Total Carga Térmicar   u   Total Carga Insolaçãor   zTotal Geralr   u   Cargas Térmicas dos Vidros (W)u$   Cargas de Insolação dos Vidros (W)z Totais das Cargas dos Vidros (W)r   u   Cargas Térmicas das Portas (W)u$   Cargas de Insolação das Portas (W)zTotais das Portas (W)r   u!   Cargas Térmicas dos Telhados (W)r   u&   Cargas de Insolação dos Telhados (W)zTotais dos Telhados (W)r   zCargas Internas do Ambiente (W)u   Carga Sensível PessoaszCarga Latente Pessoasu   Carga IluminaçãozCarga EquipamentoszCalor do Ar Exterior (W)u   Calor SensívelzCalor Latenteu#   Somatório das Cargas Térmicas (W)u   Somatório Carga Sensívelu   Somatório Carga Latenteu   Carga Térmica Totalu   Carga Térmica Máxima: rZ   r   u%   Em Toneladas de Refrigeração (TR): z TRu)   Gráficos de Variação de Carga Térmicatemp_graphs)exist_ok	   relatorio_calculo_z.docx
relatoriosrbzGapplication/vnd.openxmlformats-officedocument.wordprocessingml.document)content_typezattachment; filename=zContent-DispositionzErro detalhado: u   Erro ao gerar relatório: i  )status)huseris_authenticatedtenantr	   r   
set_schemaschema_namer   r   r   objectsfilterorder_byr   r   warningr
   r   FileNotFoundErrorerrorr   r   rG   r3   r   left_marginright_margin
page_widthpage_heightr   r<   r   r=   r6   nome_projetor   nowstrftimerr   rs   add_picturer5   r>   r7   add_page_breakrk   r   r   r   r   r   temperatura_internaaltituder*   r'   	area_piso
pe_direitor(   numero_pessoastaxa_renovacaor)   r%   r&   umidade_absoluta_internarn   zerosr   HORARIOSORIENTACOESr   r   arrayr   itemsr    r   r#   r"   r   r$   r   getmaxnome_ambienter   r   r   r   rl   r   r   r   rt   r   
MEDIA_ROOTmakedirsr   dirnamesaveopenr   read	Exceptionprint)^request
projeto_idr   r   temperaturas_externasumidade_absoluta_externacalor_latente_aguaer?   rA   	logo_pathr>   footer_pararE   idxr   termicosparedesvidrosportatelhadosr   r   densidade_arvazao_infiltracaovazao_renovacaovazao_total_ar_exteriorcalor_sensivel_ar_exteriorcalor_latente_ar_exteriorcargas_termocargas_insolacaototal_carga_termica_paredestotal_carga_insolacao_paredesparede
orientacaocarga_termicacarga_insolacaor   cargas_totais_paredescargas_termo_vidroscargas_insolacao_vidrostotal_carga_termica_vidrostotal_carga_insolacao_vidrosvalr   cargas_totais_vidroscargas_termo_portascargas_insolacao_portastotal_carga_termica_portastotal_carga_insolacao_portasr   cargas_totais_portascargas_termo_telhadoscargas_insolacao_telhadostotal_carga_termica_telhadostotal_carga_insolacao_telhadostelhadocarga_termica_telhcarga_insolacao_telhr   cargas_totais_telhadoscargas_ambientec_sensivel_pessoasc_latente_pessoasc_iluminacaoc_equipamentoscargas_totais_ambientesomatorio_carga_sensivel_totalsomatorio_carga_latente_totalrx    carga_termica_total_ambiente_maxtr_maxr   r   r   horav_infilv_renovv_totalvazoes_dataparede_data
vidro_dataportas_datatelhado_dataamb_dataar_data	soma_datatemp_dirr   r   nome_arquivooutput_pathdoc_fileresponses^                                                                                                 rF   gerar_relatorio_todos_ambientesrY     s   }O||,,GLL4G4G()RSSgll11==>#G
;$$++G+<EEdK	!!W&WX'#P"S  	Rpq{R|O!=O j
 <<**g5$ ,,q/$Sk%c{#E]$Tl TfSlSlBAFPJ\JcJcIg&:&:%;<=GVhVoVoF8<<>#:#::#F"GHIS L	77>>)$$OOIVAYO7+=+D+DCNN2( ''* 2 9 9 ((*
77>>)$$""9F3K"@ 	 'y1MC(JHnn++X+>G]]))8)<FMM((((;E--x-@H #+">">+2+;+;+Gw''QH0:L !>h>P>PRZReRe f9(:Q:QS[SjSjkO&F""##''''	'# *M%#'	*& )K'(11&)% L!*,((3x=*A',.HHS],C)!"-J$A"FHj%M 'F
'O 0288M3JJ/1RXXo5NN1/<L,3B$Z0 #. " $?A^#^ 'B)F(<%! <RFH<8!8 *,#h-)@&+-88CM+B(#6#<#<#>
C*bhhsm;* $?#:#@#@#B
C,=, $C #=?["['A)E':$  #%&(#)+#h-)@&+-88CM+B(%eh?E)
 <x! #A:# +bhh}.EE*,0II,2?#J/6E'
3 * $>@\#\  (B)E(<$  %'!(*%+-88CM+B(-/XXc(m-D*#%C&" (H($ -9K0LL,."((;O2PP.AS%&=>EY)HWZZL*AB $ %ACa$a!'C)G)>&" @IO!-o.A.ABZ\_.`befnbo!p!-o.A.ABY[^._befnbo!p!-o.A.ABTVY.Zcfgocp!qL!-o.A.ABVX[.\cfgocp!qN +=):$0&4	&" %#$$% && +,	-
 345 &' () + *+234 * ,JLi+i(/23O/P,5>F
 OOj)?)?(@AOK 
8*B78 1,s1C7KL OO31O=MMqs8}QM?E&EK ::a=..L#3LO $X.4)-QqS!& / ##4c(mDG"?CMBG"#:CMJG'1%w/('2K
 5+. OOOWXOYMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$|'9'9';"<=OOC1OMMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$'7'='='?"@AOO?qOIMMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / ()>?T)UV*,ABY,Z[ 56L MNK
 5+. OO=QOGMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$':'@'@'B"CDOOB!OLMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$'>'D'D'F"GHOO>aOHMMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / ()=>S)TU*,@AX,YZ 45J KLJ
 5*- OO=QOGMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$':'@'@'B"CDOOB!OLMMqs8}QM?E&EK ::a=..L#1LO $X.4)-QqS!& /5$'>'D'D'F"GHOO31O=MMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / ()=>S)TU*,@AX,YZ 45K LMK
 5+. OO?qOIMMqs8}QM?E&EK ::a=..L#,LO $X.4)-QqS!& /5$'<'B'B'D"EFOODAONMMqs8}QM?E&EK ::a=..L#,LO $X.4)-QqS!& /5$'@'F'F'H"IJOO5QO?MMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / ()?@U)VW*,BCZ,[\ 67N OPL
 5,/ OO=QOGMMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / +,>?(*;<%|4%~6	H 5(+ OO6aO@MMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / #L1KSQY]$[\ <0I3x=#YZG 5'* OOAOKMMqs8}QM?E&EK ::a=..L#)LO $X.4)-QqS!& / ./MN+-JK')EFI
 5), *+KC*PPRS 7s|3G
 OOGqOQww||H$7$7GHKK40*<,	+'L- OOLq	O:+=+D+DCNN2(OOMO;+=+D+DCNN2( S^a''""$K 2P ,G,@,@+AGggll8#6#6lS
BGGOOK04@ +t$#fH 1Fl^.TH*+ %$} ! 	NN7CF+'#P"&S  	| %$  O Q)*8QA#NNOs   A AZ# B*AZ# /AY
 =AQ9AZ# U;B#AZ# X"AZY 	AZ# Y

AZY0AZ
ZAZZAZ# Z
AZZAZ# Z
AZ ZAZ# Z AZ# Z#
A[$Z-,A[[A[$[A[$)Orr   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   
matplotlibusematplotlib.pyplotpyplotrc   numpyrn   ctermica.modelsr   paredes.modelsr   portas.modelsr   projeto.modelsr   telhados.modelsr   termicos.modelsr   vidros.modelsr   cargasparedesr   r   r   cargasvidrosr   cargasportasr   r    r!   cargastelhadosr"   r#   cargastermicosr$   r%   r&   r'   r(   r)   r*   r   r   r/   rG   r   r   r   r   r   rY   rH   rF   <module>rw     s    	    # 9   ; 6  " - . (  
u    $ !  " # )  
 1 n n   1 % -::>'B6<16 BO BOrH   