§
    t�’j =  ã                  ó`   — d dl mZ d dlZd dlmZ  ej        e¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚPathc                  óV   — e Zd Ze	 	 	 	 	 	 ddd„¦   «         Ze	 	 	 	 dd d„¦   «         ZdS )!ÚDrawingCadBlueprintMixinÚ ú1:100é,  ú#080d1aFÚ	file_pathr   Údrawing_titleÚstrÚdrawing_codeÚscaleÚdpiÚintÚ	facecolorÚis_pdf_modeÚboolÚreturnúbytes | strc                ó„  ‡%— ddl }|                     d¦  «         ddl}ddl}	ddlm}
 ddl m} t          | ¦  «        } | j        }|p	d| j	        › �}|p#d| j	        dd…          
                    ¦   «         › �}|dk    }|rd	nd}|rd
nd}|rdnd}|rdnd}|rdnd}|rdnd}|rdnd}|rdnd}|
                     d||¬¦  «        }|                     g d¢¦  «        }|                     |¦  «         |                     dd¦  «         |                     dd¦  «         |                     d|dd¬¦  «         |                     |                     dd d!d"|d#¬$¦  «        ¦  «         |                     |                     d%d&d'd"|d(¬$¦  «        ¦  «         d)\  }}d*|z
  d+}}|                     |                     ||f||d||d,¬-¦  «        ¦  «         |                     |d*g|d.z   |d.z   g|d(¬/¦  «         |                     |d*g|d0z   |d0z   g|d(¬/¦  «         |                     |d1z   |d1z   g||d.z   g|d(¬/¦  «         |                     |dz   |d2z   d3|d4d5d6¬7¦  «         |                     |dz   |d8z   d9|dd:…         › �|d;d5d6¬7¦  «         |                     |dz   |d+z   d<|d=d6¬>¦  «         |                     |d?z   |d8z   d@|ddA…         › �|dBd5dC¬7¦  «         |                     |d?z   |d+z   dD|› dE�|d=dC¬>¦  «         |                     ¦   «         Š%t-          ˆ%fdF„dGD ¦   «         ¦  «        �r¥|                     dHdIgdJdJgdKdLd(¬¦  «         |                     |                     dMdNdOd|rdPndQ|d#¬-¦  «        ¦  «         |                     |                     dRdSdTd||d,d¬U¦  «        ¦  «         |                     dVdWgd1dVg|d#¬/¦  «         |                     dVdWgdXdYg|d#¬/¦  «         |                     dZd[gd1dVg|d#¬/¦  «         |                     dZd[gdXdYg|d#¬/¦  «         t/          d\dZd+¦  «        D ] }|                     ||gd]d^gd_d`da¬b¦  «         Œ!|                     dcdIdd|ded5df¬g¦  «         |                     dcdhdi|djdf¬k¦  «         |                     dldmdnt3          do|dp¬q¦  «        ¬r¦  «         |                     dcdsdt|djd5df¬g¦  «         �n
t-          ˆ%fdu„dvD ¦   «         ¦  «        rë|                     d0d'gdOdOgdKdLd`¬¦  «         g dw¢}g dx¢} |                     || |dy¬/¦  «         |                     |                     dzd0d0d|rd{nd|d_d,¬-¦  «        ¦  «         t/          dOdJd¦  «        D ].}!|                     |!|!d;z   g|!d`z  dTz   |!d`z  d}z   gd~d¬/¦  «         Œ/|                     dcdId€|ded5df¬g¦  «         |                     dcdhd�|djdf¬k¦  «         �n|                     d‚d[gdƒdƒgdKdLd(¬¦  «         |                     d‚d[gd„d„gdKdLd(¬¦  «         d…D ]›}"|                     |"|"gd\d†gdKdLd(¬¦  «         d‡D ]x}#|                     |                     |"dˆz
  |#dˆz
  fd‰d‰d|rd{nd|d_d,¬-¦  «        ¦  «         |                     |                     |"dŠz
  |#dŠz
  fd‹d‹d|rdŒnd�d~d,¬-¦  «        ¦  «         ŒyŒœ|                     |                     dŽd�dAd|rdPndQ|dpd�¬‘¦  «        ¦  «         |                     |                     d’d�dAd|rdPndQ|dpd�¬‘¦  «        ¦  «         |                     dld“d”t3          do|dp¬q¦  «        ¬r¦  «         |                     dcd•d–|d—d5df¬g¦  «         |                     dld˜d™t3          do|dp¬q¦  «        ¬r¦  «         |                     d+dšd›|d—d5dfd2¬œ¦  «         |                     dcd�dž|dŸd5df¬g¦  «         |                     dcd d¡|d;df¬k¦  «         |	                     ¦   «         }$|rU|
                     |$d¢||                     ¦   «         d£¬¤¦  «         |
                     |¦  «         |$                     ¦   «         S |
                     |$d¥||                     ¦   «         d£¬¤¦  «         |
                     |¦  «         |                     |$                     ¦   «         ¦  «                              d¦¦  «        S )§z]Render a full-detail, 8x ultra-high-resolution CAD engineering drawing (9600x6000 @ 300 DPI).r   NÚAgg)Úpatchesõ   Báº£n váº½: zDWG-é   Úwhiter
   z#050811z#fafafaz#38bdf8z#0f172az#131e33z#e2e8f0z#0b1329z#f1f5f9z#f8fafcz#0284c7z#94a3b8z#64748b)é    é   )Úfigsizer   r   )ç{®Gáz”?r    ç¸…ëQ¸î?r!   i   iô  Tz--g      à?)ÚcolorÚ	linestyleÚ	linewidth)r   r   i  iÖ  Fé   )ÚfillÚ	edgecolorr$   )r   r   iø  iÌ  é   )é@  én   i  r   g      ø?)r&   r   r'   r$   éK   )r"   r$   é(   é    éZ   zDSCons ENTERPRISE AEC CADé   Úboldz
sans-serif)r"   ÚfontsizeÚ
fontweightÚfamilyé7   u
   Dá»° Ã�N: r   é
   u2   Háº NG Má»¤C: Máº¶T Báº°NG & Káº¾T Cáº¤U THI CÃ”NGg      !@)r"   r1   r3   é¯   u   MÃƒ BV: é   g      #@Ú	monospaceu   Tá»¶ Lá»†: u    | NÄ‚M: 2026c              3  ó    •K  — | ]}|‰v V — Œ	d S ©N© ©Ú.0ÚkÚfn_lowers     €úCC:\Projects\DSCons\app\modules\takeoff\application\cad_blueprint.pyú	<genexpr>zIDrawingCadBlueprintMixin.render_high_res_cad_blueprint.<locals>.<genexpr>ƒ   s'   øè è € ÐQÐQ ˆq�Hˆ}ÐQÐQÐQÐQÐQÐQó    )u   cá»‘ngÚcongu	   báº¿n kemÚculvertéP   i¸  éú   z#dc2626z-.)éx   r-   i  é´   z#0c4a6ez#e0f2fe)r-   éÈ   rI   éd   )r&   r   r'   r$   r#   rG   éF   iT  é|  é�  éÂ  é‚   é¥   iO  z#10b981gš™™™™™é?ú:)r"   r$   r#   é  u:   Máº¶T Cáº®T Káº¾T Cáº¤U Cá»�NG Há»˜P BÃŠ TÃ”NG Cá»�T THÃ‰Pé   Úcenter)r"   r1   r2   Úhai¤  uF   Kháº©u Ä‘á»™ BxH = 2.0m x 2.0m, BÃª tÃ´ng M300 Ä‘Ã¡ 1x2, ThÃ©p CB300-Vg      %@)r"   r1   rU   r   )rG   ér  )rM   rV   z<->g333333ó?)Ú
arrowstyler"   Úlw)ÚxyÚxytextÚ
arrowpropsiz  zB = 2.800 mmc              3  ó    •K  — | ]}|‰v V — Œ	d S r:   r;   r<   s     €r@   rA   zIDrawingCadBlueprintMixin.render_high_res_cad_blueprint.<locals>.<genexpr>Ê   s'   øè è € Ð[Ð[ 1��h�Ð[Ð[Ð[Ð[Ð[Ð[rB   )u   kÃ¨Úkeu	   Ä‘a Ä‘á»™zda dou   kÃªnhÚde)é2   é–   rF   rL   rN   )rH   éð   r)   r)   rH   g      @)rO   éÒ   z#064e3bz#dcfce7él   z#f59e0bé   u.   Máº¶T Cáº®T NGANG THÃ‚N KÃˆ & Dáº¦M CHÃ‚N KHAYuL   LÃ¡t mÃ¡i táº¥m BT Ä‘Ãºc sáºµn M250, Dáº§m chÃ¢n khay M250, Váº£i Ä‘á»‹a ARTr_   r	   é¾   )r.   r6   rR   iY  é®  ih  )re   r	   é   é,   é   é   z#b45309z#fef3c7)éD   i#  i€  gffffffæ?)r&   r   r'   r$   Úalpha)rk   éµ   )r.   rL   )rf   rL   i†  u(   L = 27.000 mm (Trá»¥c 1 Ä‘áº¿n Trá»¥c 5)é   )é   re   )ro   r	   éõ   zB = 6.000 mm)r"   r1   r2   rU   Úrotationi½  uN   Máº¶T Báº°NG Ä�á»ŠNH Vá»Š Ä�Ã€I MÃ“NG, Cá»˜T & GIáº°NG MÃ“NG (Tá»¶ Lá»† 1:100)g      +@i¦  uD   BÃª tÃ´ng mÃ³ng M250 Ä‘Ã¡ 1x2, ThÃ©p CB300-V, VÃ¡n khuÃ´n phá»§ phimÚpdfÚnone)Úformatr   r   r'   ÚPNGzutf-8)!Ú
matplotlibÚuseÚbase64ÚioÚmatplotlib.pyplotÚpyplotr   r   ÚnameÚstemÚupperÚfigureÚadd_axesÚset_facecolorÚset_xlimÚset_ylimÚgridÚ	add_patchÚ	RectangleÚplotÚtextÚlowerÚanyÚrangeÚannotateÚdictÚBytesIOÚsavefigÚget_facecolorÚcloseÚgetvalueÚ	b64encodeÚdecode)&r   r   r   r   r   r   r   rv   rx   ry   Úpltr   ÚfilenameÚtitleÚcodeÚis_darkÚbg_colorÚpanel_colorÚborder_colorÚ
grid_colorÚtitle_bgÚtext_priÚtext_accentÚ
text_mutedÚfigÚaxÚtb_wÚtb_hÚtb_xÚtb_yÚrxÚxsÚysÚtxÚxÚyÚbufr?   s&                                        @r@   Úrender_high_res_cad_blueprintz6DrawingCadBlueprintMixin.render_high_res_cad_blueprint
   s®  ø€ ð 	ÐÐÐà�Š�uÑÔÐØˆˆˆØˆ	ˆ	ˆ	à'Ð'Ð'Ð'Ð'Ð'Ø&Ð&Ð&Ð&Ð&Ð&å˜‘O”Oˆ	Ø”>ˆØÐ@Ð!@°	´Ð!@Ð!@ˆØÐCÐC i¤n°S°b°SÔ&9×&?Ò&?Ñ&AÔ&AÐCÐCˆà˜wÒ&ˆØ 'Ð4�9�9¨WˆØ#*Ð9�i�i°	ˆØ$+Ð:�y�y°ˆØ")Ð8�Y�Y¨yˆ
Ø 'Ð6�9�9¨YˆØ 'Ð6�9�9¨YˆØ#*Ð9�i�i°	ˆØ")Ð8�Y�Y¨yˆ
ð �jŠj °XÀ3ˆjÑGÔGˆØ�\Š\Ð2Ð2Ð2Ñ3Ô3ˆØ
×Ò˜Ñ%Ô%Ð%Ø
�Š�A�sÑÔÐØ
�Š�A�sÑÔÐØ
�Š�˜J°$À#ˆÑFÔFÐFð 	�ŠØ×ÒØ˜#˜s¨¸,ÐRSð ñ ô ñ	
ô 	
ð 	
ð
 	�ŠØ×ÒØ˜#˜s¨¸*ÐPQð ñ ô ñ	
ô 	
ð 	
ð ‰
ˆˆdØ˜4‘Z ˆdˆØ
�ŠØ×ÒØ�t�ØØØØ"Ø&Øð ñ ô ñ
	
ô 
	
ð 
	
ð 	�Š��s�˜d R™i¨°©Ð3¸:ÐQRˆÑSÔSÐSØ
�Š��s�˜d R™i¨°©Ð3¸:ÐQRˆÑSÔSÐSØ
�ŠØ�C‰Z˜ ™Ð$ t¨T°B©YÐ&7¸zÐUVð 	ñ 	
ô 	
ð 	
ð 	�ŠØ�2‰IØ�2‰IØ'ØØØØð 	ñ 	
ô 	
ð 	
ð 	�ŠØ�2‰IØ�2‰IØ%˜˜s ˜sœÐ%Ð%ØØØØð 	ñ 	
ô 	
ð 	
ð 	�ŠØ�2‰IØ�2‰IØ@ØØØð 	ñ 	
ô 	
ð 	
ð 	�ŠØ�3‰JØ�2‰IØ"�t˜C˜R˜C”yÐ"Ð"ØØØØð 	ñ 	
ô 	
ð 	
ð 	�ŠØ�3‰JØ�2‰IØ.˜%Ð.Ð.Ð.ØØØð 	ñ 	
ô 	
ð 	
ð —>’>Ñ#Ô#ˆÝÐQÐQÐQÐQÐ&PÐQÑQÔQÑQÔQñ `	à�GŠG�R˜�I  S˜z°ÀdÐVWˆGÑXÔXÐXà�LŠLØ×!Ò!ØØØØØ+2ÐA˜i˜i¸	Ø)Øð "ñ ô ñ
ô 
ð 
ð �LŠLØ×!Ò!ØØØØØ)Ø)Ø!Ø"ð "ñ 	ô 	ñô ð ð �GŠG�S˜"�I  S˜z°ÈˆGÑJÔJÐJØ�GŠG�S˜"�I  S˜z°ÈˆGÑJÔJÐJØ�GŠG�S˜#�J  c 
°+ÈˆGÑKÔKÐKØ�GŠG�S˜#�J  c 
°+ÈˆGÑKÔKÐKå˜C  bÑ)Ô)ð ð �Ø—’Ø˜�H˜s C˜j°	ÀSÐTWð ñ ô ð ð ð �GŠGØØØLØ!ØØ!Øð ñ ô ð ð �GŠGØØØXØ ØØð ñ ô ð ð �KŠKØØØ!Ý¨5¸ÈÐLÑLÔLð	 ñ ô ð ð �GŠGØØØØ!ØØ!Øð ñ ô ð ñ õ Ð[Ð[Ð[Ð[Ð(ZÐ[Ñ[Ô[Ñ[Ô[ð Y	à�GŠGØ�S�	˜C ˜:¨YÀ$ÐRUð ñ ô ð ð *Ð)Ð)ˆBØ*Ð*Ð*ˆBØ�GŠG�B˜ +¸ˆGÑ=Ô=Ð=à�LŠLØ×!Ò!ØØØØØ+2ÐA˜i˜i¸	Ø'Ø!ð "ñ ô ñ
ô 
ð 
õ ˜C  bÑ)Ô)ð ð �Ø—’Ø˜˜b™�MØ˜#‘X ‘^ R¨#¡X°¡^Ð4Ø#Øð	 ñ ô ð ð ð �GŠGØØØ@Ø!ØØ!Øð ñ ô ð ð �GŠGØØØ^Ø ØØð ñ ô ð ñ ð �GŠG�R˜�I  S˜z°ÀdÐVWˆGÑXÔXÐXØ�GŠG�R˜�I  S˜z°ÀdÐVWˆGÑXÔXÐXØ-ð ð �Ø—’Ø˜�F˜S #˜J¨iÀ4ÐSTð ñ ô ð ð $ð ð �AØ—L’LØ×)Ò)Ø ™V Q¨¡VÐ,ØØØ!%Ø3:Ð&I i iÀ	Ø&/Ø&)ð *ñ ô ñ
ô 
ð 
ð —L’LØ×)Ò)Ø ™U A¨¡E˜NØØØ!%Ø3:Ð&I i iÀ	Ø&/Ø&)ð *ñ ô ñ
ô 
ð 
ð 
ðð0 �LŠLØ×!Ò!ØØØØØ+2ÐA˜i˜i¸	Ø)Ø!Øð "ñ 	ô 	ñô ð ð �LŠLØ×!Ò!ØØØØØ+2ÐA˜i˜i¸	Ø)Ø!Øð "ñ 	ô 	ñô ð ð �KŠKØØØ!Ý¨5¸ÈÐLÑLÔLð	 ñ ô ð ð �GŠGØØØ:Ø!ØØ!Øð ñ ô ð ð �KŠKØØØ Ý¨5¸ÈÐLÑLÔLð	 ñ ô ð ð �GŠGØØØØ!ØØ!ØØð ñ 	ô 	ð 	ð �GŠGØØØ`Ø!ØØ!Øð ñ ô ð ð �GŠGØØØVØ ØØð ñ ô ð ð �jŠj‰lŒlˆØð 	DØ�KŠKØØØØ×+Ò+Ñ-Ô-Ø ð ñ ô ð ð �IŠI�c‰NŒNˆNØ—<’<‘>”>Ð!à�KŠKØØØØ×+Ò+Ñ-Ô-Ø ð ñ ô ð ð �IŠI�c‰NŒNˆNØ×#Ò# C§L¢L¡N¤NÑ3Ô3×:Ò:¸7ÑCÔCÐCrB   NÚ	landscapeÚprint_readyÚoutput_pdf_pathúPath | NoneÚorientationÚcolor_schemeÚbytesc                ó¨  — ddl }| j                             ¦   «         }|                     ¦   «         dk    r|                     dddd¦  «        }n|                     dddd¦  «        }|dk    rdnd}|d	v r§t                               | d
| j        › �d| j        dd…                              ¦   «         › �||d¬¦  «        }	|rY|j         	                    dd¬¦  «         t          |d¦  «        5 }
|
                     |	¦  «         ddd¦  «         n# 1 swxY w Y   |	S 	 ddl }|                     ¦   «         dk    r|                     dddd¦  «        }n|                     dddd¦  «        }|dk    rÑ| 
                    t          | ¦  «        ¦  «        }| 
                    ¦   «         }t          t          |¦  «        ¦  «        D ]?}|                     |j        |j        ¬¦  «        }|                     |j        ||¦  «         Œ@|                     d¬¦  «        }	|                     ¦   «          |                     ¦   «          nˆ| 
                    ¦   «         }|                     |j        |j        ¬¦  «        }|                     |j        t          | ¦  «        ¬¦  «         |                     d¬¦  «        }	|                     ¦   «          |rY|j         	                    dd¬¦  «         t          |d¦  «        5 }
|
                     |	¦  «         ddd¦  «         n# 1 swxY w Y   |	S # t.          $ r!}t0                               d|¦  «         ‚ d}~ww xY w)z[Export a CAD drawing (DXF, DWG, PDF, or Image) to a high-resolution A3 PDF (420mm x 297mm).r   NÚportraitg…ëQ¸OŠ@g33333š’@r±   r   z#0b0f19)z.dwgz.dxfr   zCAD-r   T)r   r   r   r   r   r   )ÚparentsÚexist_okÚwbz.pdf)ÚwidthÚheight)Údeflate)r–   z0[TAKEOFF] Failed exporting drawing to A3 PDF: %s)ÚpymupdfÚsuffixr‰   ÚRectÚDrawingTakeoffServicer¯   r}   r~   ÚparentÚmkdirÚopenÚwriter   r‹   ÚlenÚnew_pager¼   r½   Úshow_pdf_pageÚrectÚtobytesr‘   Úinsert_imageÚ	ExceptionÚloggerÚerror)r   r²   r´   rµ   r   r¿   ÚextÚtarget_rectr   Ú	pdf_bytesÚfÚsrc_docÚout_docÚpage_idxÚout_pageÚerrs                   r@   Úexport_drawing_to_a3_pdfz1DrawingCadBlueprintMixin.export_drawing_to_a3_pdf{  sÛ  € ð 	ˆˆˆàÔ×$Ò$Ñ&Ô&ˆà×ÒÑÔ *Ò,Ð,Ø!Ÿ,š, q¨!¨V°WÑ=Ô=ˆKˆKà!Ÿ,š, q¨!¨W°fÑ=Ô=ˆKà+¨}Ò<Ð<�G�GÀ)ˆ	àÐ"Ð"Ð"Ý-×KÒKØ#Ø=¨Y¬^Ð=Ð=ØA I¤N°3°B°3Ô$7×$=Ò$=Ñ$?Ô$?ÐAÐAØØ#Ø ð Lñ ô ˆIð ð 'ØÔ&×,Ò,°TÀDÐ,ÑIÔIÐIÝ˜/¨4Ñ0Ô0ð '°AØ—G’G˜IÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'àÐð!	ØˆNˆNˆNà× Ò Ñ"Ô" jÒ0Ð0Ø%Ÿlšl¨1¨a°¸ÑAÔA��à%Ÿlšl¨1¨a°¸&ÑAÔA�Ø�fŠ}ˆ}Ø!Ÿ,š,¥s¨9¡~¤~Ñ6Ô6�Ø!Ÿ,š,™.œ.�Ý %¥c¨'¡l¤lÑ 3Ô 3ð Mð M�HØ&×/Ò/Ø)Ô/¸Ô8Jð  0ñ  ô  �Hð ×*Ò*¨8¬=¸'À8ÑLÔLÐLÐLØ#ŸOšO°D˜OÑ9Ô9�	Ø—’‘”�Ø—’‘”��à!Ÿ,š,™.œ.�Ø"×+Ò+Ø%Ô+°KÔ4Fð ,ñ ô �ð ×%Ò% h¤m½cÀ)¹n¼nÐ%ÑMÔMÐMØ#ŸOšO°D˜OÑ9Ô9�	Ø—’‘”�Øð 'ØÔ&×,Ò,°TÀDÐ,ÑIÔIÐIÝ˜/¨4Ñ0Ô0ð '°AØ—G’G˜IÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'àÐøÝð 	ð 	ð 	Ý�LŠLÐKÈSÑQÔQÐQØøøøøð	øøøsO   Ã-DÄDÄDÄGL& Ë7LÌL& ÌLÌL& Ì LÌ!L& Ì&
MÌ0MÍM)r   r   r   r	   r
   F)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )Nr°   r±   r	   )r   r   r²   r³   r´   r   rµ   r   r   r   r   r¶   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr¯   rÙ   r;   rB   r@   r   r   	   s�   € € € € € Øð  ØØØØ"Ø!ðnDð nDð nDð nDñ „\ðnDð` ð (,Ø&Ø)ØðBð Bð Bð Bñ „\ðBð Bð BrB   r   )	Ú
__future__r   ÚloggingÚpathlibr   Ú	getLoggerrÚ   rÎ   r   r;   rB   r@   ú<module>râ      s€   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ðuð uð uð uð uñ uô uð uð uð urB   