Ë
     �j¥h  ã                   ó>  — d Z ddlZddlZddlZddlZddlZddlZddlZ	ddl
Z
ddlmZmZmZ ddlmZmZ ddlZddlmZmZmZmZmZmZ dZdZdZd	Zd
Zej>                  Zej@                  Z d„ Z!d„ Z"d„ Z#dd„Z$d„ Z%d„ Z&d„ Z'dd„Z(d„ Z)d„ Z*d„ Z+d„ Z,e-dk(  r e,«        yy)ur  Pass 9: í˜•ê°•(ã„·í˜•ê°• ì±„ë„�)ì�„ 'ê·œê²© ë‹¨ë©´ + ë�„ë©´ ì˜†ë©´ë�„/í�‰ë©´ë�„ ì‹¤ì œ ìœ¤ê³½' ìœ¼ë¡œ ë§Œë“ ë‹¤.

ì™œ ë³„ë�„ íŒ¨ìŠ¤ì�¸ê°€(í˜•ìƒ� ì¢…ë¥˜ì�˜ ë¬¸ì œ):
  íŒ�ìž¬ëŠ” ë�„ë©´ì�˜ 2D ì™¸ê³½ì„  = ë¶€ìž¬ ë‹¨ë©´ì�´ë¯€ë¡œ ê·¸ëŒ€ë¡œ ì••ì¶œí•˜ë©´ ë§žë‹¤.
  í˜•ê°•ì�€ ë�„ë©´ì—� 'ì˜†ì—�ì„œ ë³¸ ëª¨ìŠµ'ë§Œ ê·¸ë ¤ì ¸ ìžˆì–´ ê·¸ê±¸ ê·¸ëŒ€ë¡œ ì••ì¶œí•˜ë©´ í†µì§œ íŒ�ì�´ ë‚˜ì˜¨ë‹¤.
  ê·¸ëž˜ì„œ ë‹¨ë©´ì�€ ê·œê²© í‘œê¸°(CHANNEL SS275 250*90*T9)ì—�ì„œ ë§Œë“¤ê³ ,
  ê¸¸ì�´Â·ë��ë‹¨ ì‚¬ì„ ì»·Â·ë…¸ì¹˜ëŠ” ì˜†ë©´ë�„(ë†’ì�´ 250)ì�˜ ì‹¤ì œ í��ê³¡ì„ ì—�ì„œ, í�‰ë©´ ìœ¤ê³½ì�€ í�‰ë©´ë�„(ë†’ì�´ 90)ì—�ì„œ ê°€ì ¸ì˜¨ë‹¤.

[2026-08-15 ìž¬ì œìž‘ â€” CEO ê²°í•¨ì§€ì � ë°˜ì˜�]
  ì�´ì „ íŒ�ì�€ 'ì§�ì„  í”„ë¦¬ì¦˜'ì�´ì—ˆë‹¤(ë��ë‹¨ ì‚¬ì„ ì»·Â·ìž¥ê³µ ì „ë¶€ ëˆ„ë�½).
  ì›�ì�¸: ì˜†ë©´ë�„ë¥¼ bbox(ê°€ë¡œxì„¸ë¡œ) ë¡œë§Œ ì�½ì–´ 'ê¸¸ì�´ ìˆ«ìž�' í•˜ë‚˜ë§Œ ì“°ê³  ìœ¤ê³½ì�„ ë²„ë ¸ê¸° ë•Œë¬¸.
  ìˆ˜ì •: ì˜†ë©´ë�„/í�‰ë©´ë�„ì�˜ ì„ ë¶„ì�„ í�´ë¦¬ê³¤í™”(shapely polygonize)í•´ ì‹¤ì œ ìœ¤ê³½ì�„ ë³µì›�í•˜ê³ ,
        ì„¸ ë°©í–¥ í”„ë¦¬ì¦˜ì�˜ ë¶ˆë¦¬ì–¸ êµ�ì§‘í•©ìœ¼ë¡œ ëª¸ì²´ë¥¼ ë§Œë“ ë‹¤.
          ì˜†ë©´ ìœ¤ê³½(x-z) ì••ì¶œ  âˆ©  ã„·ìž� ë‹¨ë©´(y-z) ì••ì¶œ  âˆ©  í�‰ë©´ ìœ¤ê³½(x-y) ì••ì¶œ
        êµ�ì§‘í•© ë°©ì‹�ì�„ ì“°ëŠ” ì�´ìœ : ìŠ¤ìœ•/ì»· ìˆœì„œì—� ì�˜ì¡´í•˜ì§€ ì•Šì•„ ì˜¤ëª©í•œ ë…¸ì¹˜Â·ì–‘ë‹¨ ì‚¬ì„ ì—� ê²¬ê³ í•˜ë‹¤.
  êµ¬ë©�: ì˜†ë©´ë�„ ì•ˆì�˜ ë‚´ë¶€ë£¨í”„Â·ì›� -> ì›¨ë¸Œ(250ë©´) ê´€í†µ(Yë°©í–¥)
        í�‰ë©´ë�„ ì•ˆì�˜ ë‚´ë¶€ë£¨í”„Â·ì›� -> í”Œëžœì§€(90ë©´) ê´€í†µ(Zë°©í–¥)
  ì½”ì�¸ì‹œë�˜íŠ¸ ë©´(ê²¹ì¹˜ëŠ” í�‰ë©´)ì�€ OCC ë¶ˆë¦¬ì–¸ì�´ ê¹¨ì§€ëŠ” ì£¼ì›�ì�¸ì�´ë�¼ ëª¨ë“  í”„ë¦¬ì¦˜ì�„ ë¶€ìž¬ ë°–ìœ¼ë¡œ
  Â±5mm ì—¬ìœ ë¥¼ ë‘�ê³  ë§Œë“ ë‹¤(ìˆ«ìž� ë§žì¶”ê¸°ê°€ ì•„ë‹ˆë�¼ ë¶ˆë¦¬ì–¸ ì•ˆì •í™” ëª©ì �).
é    N)Ú
LineStringÚPolygonÚPoint)Úunary_unionÚ
polygonize)ÚSCRÚFABÚ
load_indexÚbuild_segmentsÚ
componentsÚdist_to_boxg      @iÜ  g      @g      N@g      9@c           	      ó>   — d|df||f||f|| |z
  f|| |z
  f|| fd| fgS )uV   ã„·ìž� ë‹¨ë©´ (ì›¨ë¸ŒëŠ” y=0~t, ì—´ë¦° ìª½ì�€ +y). í�­ B(ì›¨ë¸Œ->í”Œëžœì§€ë��), ì¶¤ D.)r   r   r   © )ÚDÚBÚts      úpass9_channel.pyÚchannel_profiler   -   s=   € à�Q˜�F˜Q ˜F Q¨ F¨Q°°!±¨H°q¸!¸A¹#°hÀÀAÀÈÈAÈÐOÐOó    c                 óž  — | d   dk(  rt        | d   | d   g«      S | d   \  }}}}}||k  r|dz  }t        dt        t        ||z
  «      dz  «      «      }t	        j
                  t	        j                  |||«      «      }t        t        t        ||t	        j                  |«      z  z   ||t	        j                  |«      z  z   «      «      «      S )	NÚkindÚLÚp0Úp1Úarcih  é   é   )r   ÚmaxÚintÚabsÚnpÚradiansÚlinspaceÚlistÚzipÚcosÚsin)ÚsÚcxÚcyÚrÚa0Úa1Únr   s           r   Ú	seg_to_lsr/   3   s»   € Øˆ�y�CÒÜ˜1˜T™7 A d¡GÐ,Ó-Ð-Ø˜%™Ñ€BˆˆAˆr�2Ø	ˆR‚xØ
ˆc‰	ˆÜˆAŒs”3�r˜"‘u“:˜a‘<Ó Ó!€AÜ
�
‰
”2—;‘;˜r 2 qÓ)Ó*€AÜ”dœ3˜r A¤b§f¡f¨Q£i¡KÑ/°°a¼¿¹¸q»	±kÑ1AÓBÓCÓDÐDr   c                 ó(  — ddl }t        | «      }	 |j                  «       }|D ]"  }||d   xx   dz  cc<   ||d   xx   dz  cc<   Œ$ |D �cg c]  }||d      dk\  sŒ||d      dk\  sŒ|‘Œ }}t        |«      t        |«      k(  r|S |}|s|S Œ~c c}w )u¸   ë��ì�´ ì–´ë””ì—�ë�„ ì•ˆ ë¶™ëŠ” ê°€ì§€(ì¹˜ìˆ˜ í™”ì‚´í‘œÂ·ì§€ì‹œì„  ê¼¬ë¦¬)ë¥¼ ë°˜ë³µí•´ì„œ ê±·ì–´ë‚¸ë‹¤.
       build_part/pass6 ì�˜ ê²€ì¦�ë�œ degree-1 ê°€ì§€ì¹˜ê¸°ì™€ ê°™ì�€ ì²˜ë¦¬ë‹¤.r   NÚaé   Úbé   )Úcollectionsr$   ÚCounterÚlen)Úseglistr5   ÚsubÚdegr(   Úkeeps         r   Úpruner<   >   s­   € ó Ü
ˆw‹-€CØ
Ø×!Ñ!Ó#ˆÛˆAØ��#‘‹K˜1Ñ‹K˜c ! C¡&›k¨QÑ.œkð áÓH™3�a # a¨¡f¡+°Ó"2°s¸1¸S¹6±{ÀaÓ7G’˜3ˆÐHÜˆt‹9œ˜C›Ò ØˆJØˆÙØˆJð ùò Is   ÁBÁBÁ)Bc                 ó<  — t        | «      }t        |«      dk  rt        | «      }|D �cg c]  }t        |«      ‘Œ }}t        t	        t        |«      «      «      }|r³t        |«      }|j                  dk(  rt        |j                  d„ ¬«      }d}|r/|j                  \  }	}
}}||	z
  |d   dz  kD  xr ||
z
  |d   dz  kD  }|rLt        |j                  j                  «      |j                  D �cg c]  }t        |j                  «      ‘Œ c}fS t        |D �cg c]  }|j                  |«      ‘Œ c}«      }|j                  rd	g fS |j                  dk(  rt        |j                  «      n|g}|D ��cg c]  }|j                  D ]  }t        |«      ‘Œ Œ  }}}|rŸt        |d
„ ¬«      j                  |«      j!                  d«      }|j                  dk(  rt        |j                  d„ ¬«      }t        |j                  j                  «      |j                  D �cg c]  }t        |j                  «      ‘Œ c}fS t        |d„ ¬«      }t        |j                  «      j                  | «      j!                  d«      }|j                  rd	g fS |j                  dk(  rt        |j                  d„ ¬«      }t        |j                  j                  «      |j                  D �cg c]  }t        |j                  «      ‘Œ c}fS c c}w c c}w c c}w c c}}w c c}w c c}w )uº  ì„ ë¶„ ë­‰ì¹˜ -> (ì™¸ê³½ ë§�, ë‚´ë¶€ ê°œêµ¬ë¶€ ë§�ë“¤). ë©´ìœ¼ë¡œ ë…¹ì—¬ì„œ ë½‘ëŠ”ë‹¤.

    ì™œ 'ê°€ìž¥ í�° ë‹«ížŒ ë£¨í”„' ë°©ì‹�ì�„ ì•ˆ ì“°ë‚˜:
      ì˜†ë©´ë�„ì—�ëŠ” í”Œëžœì§€ ë��ì„ ì�´ ë¶€ìž¬ ì „ ê¸¸ì�´ì—� ê±¸ì³� ì•ˆìª½ìœ¼ë¡œ 9mm ë“¤ì–´ì™€ ê·¸ì–´ì ¸ ìžˆë‹¤.
      ê·¸ëž˜ì„œ ë£¨í”„ íƒ�ìƒ‰ì�„ í•˜ë©´ 'ê°€ìš´ë�° ë� ' ê°€ ê°€ìž¥ í�° ë£¨í”„ë¡œ ìž¡ížˆê³  ì§„ì§œ ì™¸ê³½ì�„ ë†“ì¹œë‹¤.
      ì„ ë¶„ì�„ ì „ë¶€ ë©´ìœ¼ë¡œ ë§Œë“¤ì–´ í•©ì¹˜ë©´(union) ê·¸ í”Œëžœì§€ì„ ì�€ ë‚´ë¶€ ê²½ê³„ë�¼ ì €ì ˆë¡œ ì‚¬ë�¼ì§„ë‹¤.

    ë…¸ì¹˜ ëª¨ì„œë¦¬ì—�ì„œëŠ” ì›¨ë¸Œì„ ê³¼ í”Œëžœì§€ì„ ì�´ ì„œë¡œ ë§Œë‚˜ì§€ ì•Šì•„ í”Œëžœì§€ ë‘�ê»˜(9mm) ì •ë�„ì�˜ í‹ˆì�´
    ë‚¨ì•„ ìžˆë‹¤(0004-020). ê·¸ëž˜ì„œ í�´ë¦¬ê³¤í™”ê°€ ì•„ì˜ˆ ì•ˆ ë�  ë•Œë§Œ, ê·¸ í‹ˆ í�¬ê¸°ë¥¼ ê¸°ì¤€ìœ¼ë¡œ
    ì„ ì�„ eps(=í”Œëžœì§€ ë‘�ê»˜ ìˆ˜ì¤€) ë§Œí�¼ ë¶€í’€ë ¤ ë‹¤ë¦¬ë¥¼ ë†“ê³  ì•ˆìª½ ë©´ì�„ ë�˜ì‚´ë¦°ë‹¤.
    (ìž„ê³„ê°’ íŠœë‹�ì�´ ì•„ë‹ˆë�¼, ë�„ë©´ì�´ ê·¸ë ‡ê²Œ ê·¸ë ¤ì ¸ ìžˆë‹¤ëŠ” ë¬¼ë¦¬ì � ì›�ì�¸ì—� ëŒ€í•œ ì²˜ë¦¬ë‹¤.)
    é   ÚMultiPolygonc                 ó   — | j                   S ©N©Úarea©Úps    r   Ú<lambda>zdissolve.<locals>.<lambda>d   s   € ¨1¯6ª6r   ©ÚkeyTr   g
×£p=
ï?r2   Nc                 ó   — | j                   S rA   rB   rD   s    r   rF   zdissolve.<locals>.<lambda>s   s   €  q§v¢vr   ç333333ã?c                 ó   — | j                   S rA   rB   rD   s    r   rF   zdissolve.<locals>.<lambda>u   ó   € ¨q¯vªvr   c                 ó   — | j                   S rA   rB   rD   s    r   rF   zdissolve.<locals>.<lambda>w   s   €  §¢r   c                 ó   — | j                   S rA   rB   rD   s    r   rF   zdissolve.<locals>.<lambda>|   rL   r   )r<   r7   r$   r/   r   r   Ú	geom_typer   ÚgeomsÚboundsÚexteriorÚcoordsÚ	interiorsÚbufferÚis_emptyr   Úsimplify)r8   ÚwantÚepsr9   r(   ÚlssÚpolysÚuÚokÚx0Úy0Úx1Úy1r+   ÚlÚribÚcandsÚgÚringsÚregÚshells                        r   Údissolveri   O   s•  € ô �‹.€CÜ
ˆ3ƒx�!‚|Ü�7‹mˆÙ!$Ó
%¡˜AŒ9�Q�< €CÐ
%Ü”œK¨Ó,Ó-Ó.€EÙÜ˜ÓˆØ�;‰;˜.Ò(Ü�A—G‘GÑ!1Ô2ˆAØˆÙØŸX™X‰NˆB��B˜Ø�R‘%˜4 ™7 4™<Ñ'ÒB¨R°©U°d¸1±g¸d±lÑ,BˆBÙÜ˜Ÿ
™
×)Ñ)Ó*ÀQÇ[Â[Ó,QÁ[À¬T°!·(±(­^À[Ñ,QÐQÐQô ©cÓ2©c¨�q—x‘x •}¨cÑ2Ó
3€CØ
‡|‚|Ø�RˆxˆØ"Ÿ}™}°Ò>ŒD�—‘ŒOÀSÀE€EÙ!&Ô<¡˜A°·´¨1ŒW�Q�Z°ˆZ €EÑ<ÙÜ�%Ñ-Ô.×5Ñ5°cÓ:×CÑCÀCÓHˆØ�=‰=˜NÒ*Ü�c—i‘iÑ%5Ô6ˆCÜ�C—L‘L×'Ñ'Ó(À3Ç=Â=Ó*QÁ=¸a¬4°·±­>À=Ñ*QÐQÐQÜˆEÑ'Ô(€AÜ�A—J‘JÓ×&Ñ&¨ tÓ,×5Ñ5°cÓ:€EØ‡~‚~Ø�RˆxˆØ‡�˜.Ò(Ü�E—K‘KÑ%5Ô6ˆÜ�—‘×%Ñ%Ó&ÀÇÂÓ(QÁ¸A¬¨a¯h©h­ÀÑ(QÐQÐQùò= &ùò -Rùò 3ùó =ùò
 +Rùò )Rs#   ©K?Ã/LÄL	Å3#LÈLËLc                 ó<  — t        j                  | «      }t        t        j                  |d d …df   «      «      t        t        j                  |d d …df   «      «      t        |d d …df   j	                  «       «      t        |d d …df   j	                  «       «      fS )Nr   r2   )r!   ÚarrayÚfloatÚptpÚmin)Úringr1   s     r   Úring_whrp   €   sw   € Ü
�‰�‹€AÜ”—‘˜š!˜Q˜$™“Ó!¤5¬¯©°²!°Q°$±«Ó#9¼5ÀÂ1ÀaÀ4ÁÇÁÃÓ;OÔQVÐWXÒYZÐ\]ÐY]ÑW^×WbÑWbÓWdÓQeÐeÐer   c                 óL   — 	 t        | «      j                  S # t        $ r Y yw xY w)Ng        )r   rC   Ú	Exception)ro   s    r   Ú	poly_arears   …   s)   € ðÜ�t‹}×!Ñ!Ð!øÜò Ùðús   ‚ —	#¢#c           
      óþ   — | D �cg c]!  }t        j                   ||d   |d   «      Ž ‘Œ# }}|d   |d   z
  j                  dkD  r|j                  |d   «       t         j                  j                  |d¬«      S c c}w )Nr   r2   éÿÿÿÿgH¯¼šò×z>F)ÚforConstruction)ÚcqÚVectorÚLengthÚappendÚWireÚmakePolygon)Úpts2Úto3rE   Úvs       r   Úwire3r€   �   su   € Ù.2Ó3©d¨Œ�‰‘C˜˜!™˜a ™d“OÒ	$¨d€AÐ3Ø	ˆ!‰ˆQˆr‰U‰
×Ñ˜TÒ!Ø	�‰��1‘ŒÜ�7‰7×Ñ˜q°%ÐÓ8Ð8ùò 	4s   …&A:c           	      óþ   — t        | |«      }|D �cg c]  }t        ||«      ‘Œ }}t        j                  d«      j                  t        j                  j                  ||t        j                  |Ž «      g«      S c c}w )NÚXY)r€   rw   Ú	WorkplaneÚ	newObjectÚSolidÚextrudeLinearrx   )ro   r~   Ú	directionÚinnerÚwr+   Úiws          r   Úprismr‹   ”   sm   € Üˆd�CÓ€AÙ!&Ó	'¡˜AŒ%��3�- €BÐ	'Ü�<‰<˜Ó×'Ñ'Ü	�‰×	Ñ	  2¤r§y¡y°)Ð'<Ó	=Ð>ó@ð @ùò 
(s   ‘A:c                 ó   — | t          |fS rA   ©ÚPAD)ÚxÚzs     r   Ú_xzr‘   œ   s   € Ø”ˆt�Qˆ<Ðr   c                 ó   — | |t          fS rA   r�   )r�   Úys     r   Ú_xyr”   ¡   s   € Øˆq”3�$ˆ<Ðr   c                 ó   — t          | |fS rA   r�   )r“   r�   s     r   Ú_yzr–   ¦   s   € ÜˆD�!�Qˆ<Ðr   c                  óT(  ‡‡b‡c‡d‡e‡f‡g‡h‡i‡j‡k‡l‡m‡n— t         j                  dd  D � cg c]  } | j                  d«      rŒ| ‘Œ }} dt         j                  v }dt         j                  v Šdˆdfd„}t        «       \  }}t	        |«      Šmt        ‰md¬«      Šct        dt        ‰c«      z  «       |d   D �cg c]  }|d	   t        kD  sŒ|d
   |d   |d	   f‘Œ }}|d   D �cg c]  }|d	   t        k  sŒ|d
   |d   |d	   f‘Œ }}t        j                  }	g }
|d   D ]Q  }|	j                  |d	   j                  dd«      «      }|sŒ*|
j                  |j                  «       |d
   |d   f«       ŒS g }t        j!                  «       D �]=  \  }\  }}}}}|r||vrŒg }|
D ���cg c]  \  }}}||k(  sŒ||f‘Œ }}}}|s|j                  t#        |dd¬«      «       ŒUt$        j'                  |«      xs |d   \  ŠiŠjt)        ˆiˆjfd„t+        ‰c«      D «       «      }d }|D ][  \  }}|t,        kD  r nM‰c|   Št/        ‰d   |z
  «      t0        kD  s‰d   |dz  k  rŒ:t3        ˆfd„|
D «       «      }|d   |k7  rŒW||f} n |s6|j                  t#        |ddt,        |fz  ¬«      «       t        d|z  «       �Œ,|\  }}‰c|   }|d   Šlt        d|z  «       t        d|d   |d   |fz  «       |d   D �cg c]  }‰m|   ‘Œ	 }}g } t+        ‰c«      D ]’  \  }!}"|!|k(  rŒ|"d   }#‰ld   |#d   k  r!‰ld   |#d   k  r|#d
   ‰ld
   k  r|#d   ‰ld   k  sŒ>t3        |"d   |"d   «      dkD  st5        |"d   |"d   «      dk  rŒi||"d   D �cg c]  }‰m|   ‘Œ	 c}z  }| j                  |!«       Œ” | rt        d t        | «      z  «       t7        ||d   |d   f¬!«      \  }$}%|$€*|j                  t#        |dd"¬«      «       t        d#«       �Œtt9        |$«      \  }&}'Šn}(t;        |&d«      })t        d$t        |$«      |&|'|)t        |%«      fz  «       t/        |'|z
  «      t0        kD  r$|j                  t#        |dd%|'|fz  ¬«      «       �Œît=        |$«      }*g }+|%D ](  },t?        |,«      t@        kD  sŒ|+j                  |,d&f«       Œ* t+        ‰c«      D ]Í  \  }!}"|!|k(  rŒ|"d   }#‰ld   |#d   k  r!‰ld   |#d   k  r|#d
   ‰ld
   k  r|#d   ‰ld   k  sŒ>|!| v rŒCt7        |"d   D �cg c]  }‰m|   ‘Œ	 c}d'¬(«      \  }-}.|-r|-gng tC        |.«      z   D ]Q  },t?        |,«      t@        kD  sŒ|*jE                  t=        |,«      jG                  «       «      sŒ?|+j                  |,d)f«       ŒS ŒÏ g }/|D ]^  \  }0}1},‰ld   |0cxk  r‰ld
   k  rn n‰ld   |1cxk  r‰ld   k  sn Œ/|*jE                  tI        |0|1«      «      sŒK|/j                  |0|1|,f«       Œ` d g g }4}3}2i Šbt+        ‰c«      D ]­  \  }!}"t/        |"d   |z
  «      t0        kD  s|"d   |d   d*z  k  s|"d   |d   d+z  kD  rŒ;|"d   d   ‰ld
   d,z   k  r|"d   d
   ‰ld   d,z
  kD  sŒ^t/        |"d   d   ‰ld   z
  «      }5|5d-kD  rŒ{‰bjK                  t;        |"d   d   d.z  «      g «      j                  |!«       Œ¯ d }6‰b�rt)        ‰bˆbˆcˆlfd/„¬0«      }7t        |7«      dkD  r8|j                  d1t        |7«      d2jM                  ˆbˆcfd3„|7D «       «      fz  «       ‰b|7d      }8|8D �!�cg c]  }!‰c|!   d   D ]  }‰m|   ‘Œ	 Œ }9}!}t7        |9t5        ˆcfd4„|8D «       «      |f¬!«      \  }:};|:s|j                  d5«       t        d6«       t3        ˆcfd7„|8D «       «      }<t5        ˆcfd8„|8D «       «      }=t3        ˆcfd9„|8D «       «      }>t5        ˆcfd:„|8D «       «      }?|<|>|=|?fŠf|<|>|?|>z
  |=|<z
  f\  }@ŠkŠgŠh|:r t9        |:«      \  }A}B}C}Dt?        |:«      t5        |A|Bz  d«      z  }Et        d;|A|B|Et        |8«      ‰h‰gfz  «       |C‰nd<z   k  xr CAz   ‰n|&z   d<z
  k\  }F|FrEd<k  st/        B|z
  «      t0        kD  r|j                  d=ABEfz  «       d }:n
|>ŠkA|?|>z
  cŠhŠg|:rt=        |:«      nd }6	 t3        ˆcfd?„|8D «       «      }>t5        ˆcfd@„|8D «       «      }?ˆfˆhˆmfdA„}G |G|>|z   «      }H |G|?|z
  «      }I|HrIsdBŠenIrHsd>ŠendBŠe|j                  dC«       t        dDH›dEI›dF‰e›�«       ˆeˆgˆkˆnfdG„}Jg }3|;D ]7  },t?        |,«      t@        kD  sŒ|3j                  |,D �cg c]  } J|Ž ‘Œ	 c}«       Œ9 t+        ‰c«      D ]Û  \  }!}"|!|8v rŒ|"d   }#‰fd   |#d   k  r!‰fd   |#d   k  r|#d
   ‰fd
   k  r|#d   ‰fd   k  sŒ=t7        ‰c|!   d   D �cg c]  }‰m|   ‘Œ	 c}d'¬(«      \  }-}.|-r|-gng tC        |.«      z   D ]b  },t?        |,«      t@        kD  sŒ|6�)|6jE                  t=        |,«      jG                  «       «      sŒA|3j                  |,D �cg c]  } J|Ž ‘Œ	 c}«       Œd ŒÝ g }4|D ]l  \  }0}1},‰fd   |0cxk  r‰fd
   k  rn n‰fd   |1cxk  r‰fd   k  sn Œ/|6�|6jE                  tI        |0|1«      «      sŒM J|0|1«      \  }K}L|4j                  |K|L|,f«       Œn |:r|:D �cg c]  } J|Ž ‘Œ	 c}nd }2n|j                  dH|z  «       dI„ }M |M|/|+D �,�Ncg c]  \  },}N|,‘Œ	 c}N},«      }/|4r	 M|4|3«      }4t)        |/D �ch c]  }|d
   dJk\  sŒt;        |d
   d
z  «      ’Œ c}«      }O|Or|j                  dKOz  «       t        dLt        |+«      |+D �,�Ncg c]#  \  },}NtO        dM„ t9        |,«      d d
 D «       «      ‘Œ% c}N},t        |/«      t)        |/D �ch c]  }t;        |d
   d
z  «      ’Œ c}«      fz  «       t        dNt        |3«      |3D �,cg c]   },tO        dO„ t9        |,«      d d
 D «       «      ‘Œ" c},t        |4«      t)        |4D �ch c]  }t;        |d
   d
z  «      ’Œ c}«      fz  «       |$D ��cg c]  \  }}|‰nz
  ||(z
  f‘Œ }P}}	 tQ        tS        |||«      tT        |)d
tV        z  z   ddf«      }Q ||QdP«       |QjY                  tQ        PtZ        d|d
tV        z  z   df«      «      }Q ||QdQ«       |2r6QjY                  tQ        |2t\        dd|d
tV        z  z   f«      «      }Q ||QdR«       t+        |+«      D ]\  \  }R\  },}SQj_                  tQ        |,D ��cg c]  \  }}|‰nz
  ||(z
  f‘Œ c}}tZ        d|d
tV        z  z   df«      «      }Q ||QdSRz  «       Œ^ |/D ]Û  \  }0}1}TQj_                  ta        jb                  dT«      je                  t`        jf                  ji                  t`        jj                  jm                  |Tta        jn                  |0‰nz
  tV         |1|(z
  «      ta        jn                  ddd«      «      g ta        jn                  d|d
tV        z  z   d«      «      g«      «      }Q ||QdU|Td
z  z  «       ŒÝ t+        |3«      D ]>  \  }R},Qj_                  tQ        |,t\        dd|d
tV        z  z   f«      «      }Q ||QdV|Rz  «       Œ@ |4D ]×  \  }K}L}TQj_                  ta        jb                  dT«      je                  t`        jf                  ji                  t`        jj                  jm                  |Tta        jn                  |K|LtV         «      ta        jn                  ddd«      «      g ta        jn                  dd|d
tV        z  z   «      «      g«      «      }Q ||QdW|Td
z  |Kfz  «       ŒÙ 	 tt        d[|j                  d\d]«      z  z   }Vt`        jv                  jy                  Q|Vd^d_¬`«       t{        j|                  |V«      }|j                  |j€                  d    «       |j‚                  s*|j                  t#        |dda¬«      «       t        db«       �Œ‹t        j„                  dc|j‡                  d\«      d   d]z   |j‡                  d\«      d
   z   z  z   }Wtˆ        ddz   |Wz   }XtŠ        jŒ                  j�                  |X«      r2|s0|j                  t#        |ddeWz  ¬«      «       t        df|Wz  «       �Œ(|jy                  X«       |j�                  D �Ycg c]  }Yt;        t“        |Y«      d
«      ‘Œ }Z}Yt        |+«      t        |/«      z   }[t        |3«      t        |4«      z   }\t•        j–                  P«      }]t•        j˜                  t•        jš                  |]|]d d g«      d¬g«      }^t�        tŸ        dh„ |^D «       «      «      }_t        diWt        |j                   «      |j‚                  |Z|[|\|_fz  «       |D ]  }`t        dj|`z  «       Œ |j                  t#        d�i dk|“dldm“dnt        j¢                  doz   Wz   “dp|“dqZ“drt�        t        |j                   «      «      “dst¥        |j‚                  «      “dtt        |/«      t        |4«      z   “dut        |+«      t        |3«      z   “dv[“dw\“dx_“dyt        |$«      dz
  “dzd{“d||“d}|)“d~d||)fz  “d€|2rd�nd‚“dƒ|“d„d…|z   “Ž«       t§        j¨                  |t«        tt        d†z   dd‡¬ˆ«      dBd¬‰«       �Œ@ t§        j¨                  |t«        tt        d†z   dd‡¬ˆ«      dBd¬‰«       tŸ        dŠ„ |D «       «      }at        d‹|at        |«      |az
  fz  «       |D ]?  },t        |,dl   dmk(  rdŒ|,dk   |,dq   |,d}   |,dv   |,dw   |,dx   fz  nd�|,dk   dŽ›d|,d�   ›�«       ŒA y c c} w c c}w c c}w c c}}}w c c}w c c}w c c}w c c}}!w c c}w c c}w c c}w c c}w c c}N},w c c}w c c}N},w c c}w c c},w c c}w c c}}w c c}}w # tp        $ rQ}U|j                  t#        |ddXts        U«      d dY z  ¬«      «       t        dZts        |U«      d dY z  «       Y d }U~U�Œ d }U~Uww xY wc c}Yw )‘Nr2   z--z--forcez--debugc                 óê   •— ‰sy t         dz   }t        j                  j                  | |dd¬«       t	        j
                  |«      }t        d||j                  t        |j                  «      fz  «       y )Nz	\_dbg.stlçš™™™™™¹?©Ú	toleranceÚangularTolerancez'     [dbg] %-28s watertight=%s faces=%d)
r   rw   Ú	exportersÚexportÚtrimeshÚloadÚprintÚis_watertightr7   Úfaces)r‰   ÚtagÚfÚmmÚdebugs       €r   Úchkzmain.<locals>.chk¯   sc   ø€ ÙØÜ�,ÑˆÜ
�‰×Ñ˜A˜q¨CÀ#ÐÔFÜ�\‰\˜!‹_ˆÜÐ7¸3À×@PÑ@PÔRUÐVX×V^ÑV^ÓR_Ð:`Ñ`Õar   )Úmin_segu   ë�©ì–´ë¦¬ %dê°œÚcirclesr   r4   r>   ÚtextsÚ Ú Úskipu+   ë�„ë©´ì—�ì„œ ë�„ë²ˆ í…�ìŠ¤íŠ¸ë¥¼ ëª» ì°¾ì�Œ)ÚpnÚstatusÚwhyr   c              3   óH   •K  — | ]  \  }}t        ‰‰|d    «      |f–— Œ y­w©ÚbboxN©r   )Ú.0ÚciÚcÚpxÚpys      €€r   Ú	<genexpr>zmain.<locals>.<genexpr>Ñ   s*   øè ø€ ÐZÑIYÁÀÀAœ B¨¨A¨f©IÓ6¸Ô;ÑIYùs   ƒ"Úhr‰   g333333ó?c              3   óJ   •K  — | ]  \  }}}t        ||‰d    «      |f–— Œ y­wr³   rµ   )r¶   rE   r�   r“   r¸   s       €r   r»   zmain.<locals>.<genexpr>Ù   s*   øè ø€ ÐRÉ¹g¸aÀÀAœ Q¨¨1¨V©9Ó5°qÔ9Éùs   ƒ #uX   ì½œì•„ì›ƒ %dmm ì•ˆì—�ì„œ ë†’ì�´ %.0fmm(ë‹¨ë©´ ì¶¤) ì�¸ ì˜†ë©´ë�„ ë�©ì–´ë¦¬ë¥¼ ëª» ì°¾ì�Œu$     [SKIP] %s â€” ì˜†ë©´ë�„ ëª» ì°¾ì�Œr´   z
===== %s =====u7     ì˜†ë©´ë�„ ë�©ì–´ë¦¬ %.1f x %.1f mm (ì½œì•„ì›ƒ %.0fmm)Úidxsç      ð?g      Y@u&     ìœ¤ê³½ì—� í•©ì¹œ ì§�ì„  ì¡°ê°� %dê°œ)rX   u+   ì˜†ë©´ë�„ì—�ì„œ ë‹«ížŒ ìœ¤ê³½ì�„ ëª» ë§Œë“¦u     [SKIP] ì˜†ë©´ ìœ¤ê³½ ì‹¤íŒ¨uL     ì˜†ë©´ ìœ¤ê³½ %dì �  %.1f x %.1f mm -> ê¸¸ì�´ %.1f, ë‚´ë¶€ ê°œêµ¬ë¶€ %dê°œu8   ì˜†ë©´ ìœ¤ê³½ ë†’ì�´ %.1f ê°€ ë‹¨ë©´ ì¶¤ %.0f ì™€ ë‹¤ë¦„ÚArJ   )rY   r   gš™™™™™é?g      ô?é<   iÄ	  é2   c                 óD   •— t        ‰‰|    d      d   d   ‰d   z
  «      S )Nr   r´   r2   ©r    )ÚkÚbandsÚcompsÚsbs    €€€r   rF   zmain.<locals>.<lambda>0  s-   ø€ ¬s°5¸¸q¹À!¹Ñ3EÀfÑ3MÈaÑ3PÐSUÐVWÑSXÑ3XÔ/Yr   rG   uY   í�‰ë©´ë�„ í›„ë³´ ë� ê°€ %dê°œ(y=%s) â€” ì˜†ë©´ë�„ì—� ê°€ìž¥ ê°€ê¹Œìš´ ë� ë§Œ ì±„íƒ�í–ˆë‹¤z, c              3   óF   •K  — | ]  }d ‰‰|   d      d   d   z  –— Œ y­w)z%.0fr   r´   r2   Nr   )r¶   rÅ   rÆ   rÇ   s     €€r   r»   zmain.<locals>.<genexpr>3  s9   øè ø€ ð 8GÙAE¸Að 9?ÀÀuÈQÁxÐPQÁ{ÑASÐTZÑA[Ð\]ÑA^Õ8^ÙAEùs   ƒ!c              3   ó.   •K  — | ]  }‰|   d    –— Œ y­w)r‰   Nr   ©r¶   ÚcjrÇ   s     €r   r»   zmain.<locals>.<genexpr>7  s   øè ø€ Ð5SÉsÈ°e¸B±iÀµnÉsùs   ƒuc   í�‰ë©´ë�„ ë�©ì–´ë¦¬ì—�ì„œ ë‹«ížŒ ìœ¤ê³½ì�„ ëª» ë§Œë“¦ â€” í�‰ë©´ ì ˆë‹¨Â·í”Œëžœì§€ êµ¬ë©� ë¯¸ë°˜ì˜�u     í�‰ë©´ ìœ¤ê³½ ì‹¤íŒ¨c              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­w)r´   r   Nr   rË   s     €r   r»   zmain.<locals>.<genexpr>=  ó    øè ø€ Ð9±S¨r�e˜B‘i Ñ'¨Õ*±Sùó   ƒc              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­w)r´   r4   Nr   rË   s     €r   r»   zmain.<locals>.<genexpr>>  rÎ   rÏ   c              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­w©r´   r2   Nr   rË   s     €r   r»   zmain.<locals>.<genexpr>?  rÎ   rÏ   c              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­w©r´   r>   Nr   rË   s     €r   r»   zmain.<locals>.<genexpr>@  rÎ   rÏ   uZ     í�‰ë©´ ìœ¤ê³½ %.1f x %.1f mm (ì¶©ì‹¤ë�„ %.2f), ë�©ì–´ë¦¬ %dê°œ í•©ì¹¨ (bbox %.1f x %.1f)ç      à?uœ   í�‰ë©´ ìœ¤ê³½(%.1fx%.1f, ì¶©ì‹¤ë�„ %.2f)ì�´ ë¶€ìž¬ ê¸¸ì�´êµ¬ê°„ì�„ ë‹¤ ë�®ì§€ ëª»í•¨ â€” í�‰ë©´ ë°©í–¥ ì ˆë‹¨ì�€ ì �ìš©í•˜ì§€ ì•Šê³  êµ¬ë©� ìœ„ì¹˜ë§Œ ë°˜ì˜�Tc              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­wrÒ   r   rË   s     €r   r»   zmain.<locals>.<genexpr>V  ó    øè ø€ Ð=¹°2˜% ™) FÑ+¨AÕ.¹ùrÏ   c              3   ó4   •K  — | ]  }‰|   d    d   –— Œ y­wrÔ   r   rË   s     €r   r»   zmain.<locals>.<genexpr>W  r×   rÏ   c                 ó2   •‡ — t        ˆˆˆ fd„‰D «       «      S )Nc              3   ób  •K  — | ]¦  }|d    dk(  xr˜ t        |d   d   ‰z
  «      dk  xr t        |d   d   ‰z
  «      dk  xrf ‰d   dz
  t        |d   d   |d   d   «      k  xrC t        |d   d   |d   d   «      ‰d   dz   k  xr  t        |d   d   |d   d   z
  «      ‰dz  kD  –— Œ¨ y	­w)
r   r   r   r2   g      ø?r   r   r4   g333333Ó?N)r    rn   r   )r¶   ÚqÚpbÚpwÚyys     €€€r   r»   z/main.<locals>.long_h_line_at.<locals>.<genexpr>[  sø   øè ø€ ð Vñ QUÈ1ð	  ! ™y¨CÑ/ò  G´C¸¸$¹À¹
À2¹Ó4FÈÑ4Lò  GÜ#& q¨¡w¨q¡z°"¡}Ó#5¸Ñ#;ò Gà#% a¡5¨¡7¬c°!°D±'¸!±*¸aÀ¹gÀa¹jÓ.IÑ#Iò Gô $' q¨¡w¨q¡z°1°T±7¸1±:Ó#>À"ÀQÁ%ÈÁ'Ñ#Iò Gô $' q¨¡w¨q¡z°!°D±'¸!±*Ñ'<Ó#=ÀÀ3ÁÑ#Fó	 Gñ QUùs   ƒB,B/)Úany)rÞ   rÜ   rÝ   Úsegss   `€€€r   Úlong_h_line_atzmain.<locals>.long_h_line_atY  s%   ù€ äõ Vñ QUó	Vó Vð Vr   Fu½   í�‰ë©´ë�„ì—�ì„œ ì›¨ë¸Œ(250ë©´)ê°€ ìœ„/ì•„ëž˜ ì–´ëŠ� ìª½ì�¸ì§€ ì„ ìœ¼ë¡œ íŒ�ë³„ ì•ˆ ë�¨ â€” ì•„ëž˜ìª½ì�„ ì›¨ë¸Œë¡œ ê°€ì •. í”Œëžœì§€ êµ¬ë©�ì�˜ í�­ë°©í–¥ ìœ„ì¹˜ê°€ ì¢Œìš° ë°˜ì „ì�¼ ìˆ˜ ìžˆì�Œu(     í�‰ë©´ë�„ ì›¨ë¸Œìª½ íŒ�ë³„: ì•„ëž˜ì„ =u    ìœ„ì„ =z	 -> flip=c                 ó4   •— | ‰z
  }‰r‰|‰z
  z
  n|‰z
  }||fS )uç  í�‰ë©´ë�„ ë�„ë©´ì¢Œí‘œ -> ë¶€ìž¬ ë¡œì»¬ (X ê¸¸ì�´, Y í�­).

                    ê¸¸ì�´ë°©í–¥ ì›�ì �ì�€ ì˜†ë©´ë�„ì™€ ê°™ì�€ ë�„ë©´ ì ˆëŒ€ì¢Œí‘œ(sx0)ë¥¼ ì“´ë‹¤.
                    ë‘� ë·°ëŠ” ë�„ë©´ì—�ì„œ ì�´ë¯¸ ê°™ì�€ x ìœ„ì¹˜ì—� ì •ë ¬ë�¼ ê·¸ë ¤ì ¸ ìžˆê³ ,
                    í�‰ë©´ë�„ê°€ ì–‘ë��ìœ¼ë¡œ t(9mm)ì”© ë�” ë‚˜ê°€ ë³´ì�´ëŠ” ê²ƒì�€ ê·¸ë¦¬ê¸°ìš© ì—¬ë¶„ì�¼ ë¿�ì�´ë‹¤.
                    (ê°� ë·°ì�˜ ìµœì†Œxë�¼ë¦¬ ë§žì¶”ë©´ êµ¬ë©�ì�´ ê·¸ 9mm ë§Œí�¼ ë°€ë¦°ë‹¤)
                    r   )r�   r“   ÚlxÚlyÚflipÚphÚpyoÚsx0s       €€€€r   ÚP2Lzmain.<locals>.P2Ll  s,   ø€ ð ˜S™�BÙ-1˜"  C¡š.¸¸C¹�BØ˜r˜6�Mr   u^   í�‰ë©´ë�„(ë†’ì�´ %.0fmm) ë�©ì–´ë¦¬ë¥¼ ëª» ì°¾ì�Œ â€” í�‰ë©´ ì ˆë‹¨Â·í”Œëžœì§€ êµ¬ë©� ë¯¸ë°˜ì˜�c                 óê   ‡— |D �cg c]   }t        |«      t        kD  sŒt        |«      ‘Œ" }}g }| D ]:  }t        |d   |d   «      Št	        ˆfd„|D «       «      rŒ*|j                  |«       Œ< |S c c}w )Nr   r2   c              3   ó^   •K  — | ]$  }|j                  d «      j                  ‰«      –— Œ& y­w)rÕ   N)rU   Úcontains)r¶   ÚppÚpts     €r   r»   z+main.<locals>.not_inside.<locals>.<genexpr>™  s%   øè ø€ ÐC¹U°r�r—y‘y “~×.Ñ.¨r×2¹Uùs   ƒ*-)rs   Ú
MIN_HOLE_Ar   r   rß   rz   )ÚcircsÚloopsr+   r[   Úoutr¸   rî   s         @r   Ú
not_insidezmain.<locals>.not_inside”  sr   ø€ Ù).ÓL© A´)¸A³,ÄÓ2K”W˜Q•Z¨ˆEÐLØˆCÛ�Ü˜1˜Q™4  1¡Ó&�ÜÓC¹UÓCÔCØØ—
‘
˜1•ð	 ð
 ˆJùò Ms
   †A0žA0é   uÄ   ì›¨ë¸Œì�˜ í�° ì›� %s mm ë¥¼ ê´€í†µ êµ¬ë©�ìœ¼ë¡œ ë°˜ì˜�í–ˆë‹¤ â€” ë�„ë©´ì—� ì‹­ìž� ì¤‘ì‹¬ì„ ê³¼ í•¨ê»˜ ê·¸ë ¤ì ¸ ìžˆì–´ ì‹¤ì œ êµ¬ë©�ìœ¼ë¡œ íŒ�ë‹¨í–ˆìœ¼ë‚˜, ì§€ì‹œìš© ì›�ì�¼ ê°€ëŠ¥ì„± í™•ì�¸ í•„ìš”u:     ì›¨ë¸Œ(250ë©´) ì»·: ë‚´ë¶€ë£¨í”„ %dê°œ %s / ì›� %dê°œ %sc              3   ó4   K  — | ]  }t        |d «      –— Œ y­w©r2   N©Úround©r¶   r   s     r   r»   zmain.<locals>.<genexpr>§  ó   è ø€ Ð&K¹N°q¤u¨Q°§{¹Nùó   ‚u<     í”Œëžœì§€(90ë©´) ì»·: ë‚´ë¶€ë£¨í”„ %dê°œ %s / ì›� %dê°œ %sc              3   ó4   K  — | ]  }t        |d «      –— Œ y­wrö   r÷   rù   s     r   r»   zmain.<locals>.<genexpr>ª  rú   rû   u   ë‹¨ë©´ ì••ì¶œu   ì˜†ë©´ êµ�ì§‘í•©u   í�‰ë©´ êµ�ì§‘í•©u   ì›¨ë¸Œ ë‚´ë¶€ë£¨í”„ì»· %dr‚   u   ì›¨ë¸Œ ì›�ì»· d%.0fu   í”Œëžœì§€ ë‚´ë¶€ë£¨í”„ì»· %du   í”Œëžœì§€ ì›�ì»· d%.0f @%.0fu   ë¶ˆë¦¬ì–¸ ì‹¤íŒ¨: %séx   u     [SKIP] ë¶ˆë¦¬ì–¸ ì‹¤íŒ¨: %sz
\_p_%s.stlÚ-Ú_gš™™™™™©?r™   rš   u   watertight ì•„ë‹˜u     -> watertight ì‹¤íŒ¨z%s.objÚ\u(   ì�´ë¯¸ ì¡´ìž¬ %s â€” ë�®ì–´ì“°ê¸° ê¸ˆì§€u     [SKIP] ì�´ë¯¸ ì¡´ìž¬ %s)Úaxisc              3   ó^   K  — | ]%  \  }}t        |«      d kD  rt        |«      d kD  rd–— Œ' y­w)r¿   r2   NrÄ   )r¶   ÚdxÚdys      r   r»   zmain.<locals>.<genexpr>á  s/   è ø€ ð <©™f˜b "Ü˜r›7 Sš=¬S°«W°sª]ô ©ùs   ‚+-uS     OBJ -> %s  faces=%d watertight=%s bbox=%s  ì›¨ë¸Œì»·%d í”Œëžœì§€ì»·%d ì‚¬ì„ ë³€%du     [CEOí™•ì�¸] %sr¯   r°   r]   ÚfileÚ/ÚthkÚextentsr£   Ú
watertightÚnholesÚninnerÚnwebÚnflangeÚndiagÚ
nvert_sider   u   ì±„ë„�í˜•ê°•ÚspecÚlengthÚ
length_srcuR   ë�„ë©´ ì˜†ë©´ë�„(ë†’ì�´ %.0fmm = ë‹¨ë©´ ì¶¤) ì‹¤ì œ í��ê³¡ì„  ì‹¤ì¸¡ ê¸¸ì�´ %.1fmmÚprofileuF   ì˜†ë©´ ìœ¤ê³½(x-z) âˆ© ã„·ë‹¨ë©´(y-z) âˆ© í�‰ë©´ ìœ¤ê³½(x-y) êµ�ì§‘í•©uH   ì˜†ë©´ ìœ¤ê³½(x-z) âˆ© ã„·ë‹¨ë©´(y-z) êµ�ì§‘í•©(í�‰ë©´ ìœ¤ê³½ ë¯¸ì �ìš©)ÚceoÚevidenceu   VLMíŒ�ë�…: z\channel_result.jsonzutf-8)Úencoding)Úensure_asciiÚindentc              3   ó2   K  — | ]  }|d    dk(  sŒd–— Œ y­w)r°   r]   r2   Nr   )r¶   r+   s     r   r»   zmain.<locals>.<genexpr>ö  s   è ø€ Ð8™�A A h¡K°4Ó$7Œa™ùs   ‚�u4   
===== í˜•ê°• ìš”ì•½: ì±„íƒ� %d / ê±´ë„ˆëœ€ %d =====uD     [OK]   %-18s %s  ê¸¸ì�´ %s  ì›¨ë¸Œì»·%d í”Œëžœì§€ì»·%d ì‚¬ì„ ë³€%dz	  [SKIP] Ú18r±   r   )VÚsysÚargvÚ
startswithr
   r   r   r¡   r7   ÚBUBBLE_RÚproductÚPNÚsearchÚreplacerz   ÚgroupÚSPECÚitemsÚdictÚSPEC_ATÚgetÚsortedÚ	enumerateÚCAND_MMr    Ú	DEPTH_TOLrn   r   ri   rp   rø   r   rs   rï   r$   rì   Úrepresentative_pointr   Ú
setdefaultÚjoinÚtupler‹   r   r–   rŽ   Ú	intersectr‘   r”   Úcutrw   rƒ   r„   r…   r†   r{   Ú
makeCirclerx   rr   Ústrr   r�   rž   rŸ   r    Úapply_translationrQ   r¢   Ú
OBJ_PREFIXÚsplitr	   ÚosÚpathÚexistsr  rl   r!   rk   ÚdiffÚvstackr   Úsumr£   ÚFAB_RELÚboolÚjsonÚdumpÚopen)or1   ÚonlyÚforcer¨   Úd1Úd2r¸   ÚbubblesÚ
small_circr   Úcalloutsr   ÚmÚresultsr¯   Úrawr   r   r   Únote_ceorE   r�   r“   ÚatÚnearÚpickÚddr·   ÚownerÚscÚiÚssideÚ	merged_inrÌ   Úc2r3   ÚsouterÚsinnerÚswÚshÚsy0r   ÚsidePÚweb_cutsr+   Úo2Úi2Úweb_circr)   r*   Ú	plan_ringÚflg_cutsÚflg_circr  ÚplanPÚkeysÚuseÚpsegÚpouterÚpinnerÚwx0Úwx1Úwy0Úwy1ÚpxoÚow_Úoh_ÚoxoÚoyoÚfillÚcoversrá   ÚlowÚhighré   rã   rä   ró   rÿ   ÚbigÚ	side_ringÚbodyÚ_iÚ_srcÚrrÚexÚstlÚfnÚdstr   Úextr  ÚnflgÚsaÚdvr  r(   ÚnokrÆ   rÇ   r§   rå   rÜ   ræ   rÝ   r¹   rº   rç   rÈ   rà   rè   so         `                                                                                           @@@@@@@@@@@@@r   Úmainr‡  ª   só  ÿý€ Ü—x‘x  ‘|Ó>‘|�!¨1¯<©<¸Õ+=ŠA�|€DÐ>ØœŸ™Ð!€EØœŸ™Ð!€Eôbô ‹\�F€BˆÜ˜"Ó€DÜ�t QÔ'€EÜ	Ð
œc %›jÑ
(Ô)à+-¨iª=ÓL©= a¸A¸a¹DÄ8»O��!‘�a˜‘d˜A˜a™DÒ!¨=€GÐLØ.0°ªmÓP©m¨¸qÀ¹tÄxÓ?O�1�Q‘4˜˜1™˜q ™tÒ$¨m€JÐPä	�‰€BØ€HØ�Œ[ˆØ�I‰I�a˜‘d—l‘l 3¨Ó+Ó,ˆÚØ�O‰O˜QŸW™W›Y¨¨!©¨a°©dÐ3Õ4ð ð
 €GÜ$(§J¡J§LÑ ˆÑ ˆS�$˜˜1˜aÙ�B˜d‘NØØˆÙ$,Õ8¡H™˜˜A˜q°°R³ˆq�!Šf HˆÒ8ÙØ�N‰Nœ4 2¨fÐ:gÔhÔiØÜ—‘˜R“Ò) B q¡E‰ˆˆBô ÔZÌÐSXÔIYÓZÓ[ˆØˆÛ‰FˆB�Ø”GŠ|ÙØ�b‘	ˆAÜ�1�S‘6˜A‘:‹¤Ò*¨a°©f°q¸3±wÒ.>ØÜÓRÉÓRÓRˆEØ�Q‰x˜2Š~ØØ˜�8ˆDÙð ñ Ø�N‰Nœ4 2¨fØ$~Ü'.° lñ%3ô4ô 5ô Ð8¸2Ñ=Ô>ÁØ‰ˆˆBØ�2‰YˆØ�‰ZˆÜÐ  2Ñ%Ô&ÜÐGÈ2ÈcÉ7ÐTVÐWZÑT[Ð]_ÐJ`Ñ`Ôað
 #% V¢*Ó-¡*˜Q��a“ *ˆÐ-Øˆ	Ü Ö&‰FˆB�Ø�RŠxØØ�6‘
ˆAØ�q‘E˜Q˜q™T’M b¨¡e¨q°©t¢m¸¸!¹ÀÀ1ÁºÈ!ÈAÉ$ÐRTÐUVÑRWÊ-ØÜ�2�c‘7˜B˜s™GÓ$ sÒ*¬c°"°S±'¸2¸c¹7Ó.CÀeÒ.KØØ r¨&¢zÓ2¡z !�d˜1“g zÑ2Ñ2ˆEØ×Ñ˜RÕ ð 'ñ ÜÐ:¼SÀ»^ÑKÔLÜ! %¨r°#©w¸¸3¹Ð.@ÔA‰ˆ�Øˆ>Ø�N‰Nœ4 2¨fÐ:gÔhÔiÜÐ1Ô2±HÜ" 6›?ÑˆˆB��SÜ�"�a‹LˆÜÐ\Ü�V“˜b " a¬¨V«Ð5ñ6ô 	7äˆr�A‰v‹;œÒ"Ø�N‰Nœ4 2¨fØ$^ÐbdÐfgÐahÑ$hôjô káÜ˜“ˆð ˆÛˆAÜ˜‹|œjÓ(Ø—‘  C Õ)ð ô   Ö&‰FˆB�Ø�RŠxØØ�6‘
ˆAØ�q‘E˜Q˜q™T’M b¨¡e¨q°©t¢m¸¸!¹ÀÀ1ÁºÈ!ÈAÉ$ÐRTÐUVÑRWÊ-ØØ�Y‰ØÜ°°6²
Ó;±
¨1˜t A›w°
Ñ;ÀÔE‰FˆB�Ù �r‘d b¬D°«HÔ4�Ü˜Q“<¤*Ó,°·±ÄÈÃ
×@_Ñ@_Ó@aÕ1bØ—O‘O Q¨ HÕ-ñ 5ð 'ð ˆÛ#‰IˆB��AØ�q‘E˜RÔ( 2 a¡5Õ(¨R°©U°bÔ-A¸B¸q¹EÔ-AØØ�~‰~œe B¨›mÕ,Ø—‘  R¨ Õ,ð	 $ð )-¨b°"˜X�8ˆ	ØˆÜ Ö&‰FˆB�Ü�2�c‘7˜Q‘;Ó¤)Ò+¨r°#©w¸¸C¹À¹Ò/DÈÈ3ÉÐRTÐUXÑRYÐZ^ÑR^ÒH^ØØ�v‘J˜q‘M B q¡E¨"¡HÒ,°°F±¸A±ÀÀAÁÀrÁÒ1IØÜ�R˜‘Z ‘] R¨¡UÑ*Ó+ˆBØ�DŠyØØ×ÑœU 2 f¡:¨a¡=°Ñ#3Ó4°bÓ9×@Ñ@ÀÕDð 'ð ˆÚÜ˜%Õ%YÔZˆDÜ�4‹y˜1Š}Ø—‘Ð {Ü#& t£9¨d¯i©iô 8GÙAEó8Gó /Gð #Hñ!Hô Ið ˜˜Q™‘.ˆCÙ&)ÔE¡c °5¸±9¸VÔ3D¨a�D˜“GÐ3D�G cˆDÑEÜ% d´#Ó5SÉsÓ5SÓ2SÐUVÐ1WÔX‰NˆF�FÙØ—‘ð  !Fô  GÜÐ.Ô/ô Ó9±SÓ9Ó9ˆCÜÓ9±SÓ9Ó9ˆCÜÓ9±SÓ9Ó9ˆCÜÓ9±SÓ9Ó9ˆCØ�s˜C Ð%ˆBØ" C¨¨S©°#°c±'Ð9ÑˆC��b˜"ÙÜ%,¨V£_Ñ"��S˜#˜sÜ  Ó(¬3¨s°3©w¸«?Ñ:�ÜÐrØ˜c 4¬¨S«°2°rÐ:ñ;ô <ð   s¡Ñ*ÒM°°s±¸cÀB¹hÈ¹nÑ1L�Ù ¨¢¬s°3¸±7«|¼iÒ/GØ—O‘Oð %jØmpÐruÐw{Ðl|ñ%}ô ~à!‘Fà�CØ  # c¡'�F�B˜Ù'-”G˜F”O°4ˆEØô Ó=¹Ó=Ó=�ÜÓ=¹Ó=Ó=�öVñ % S¨1¡WÓ-�Ù% c¨A¡gÓ.�Ù™tØ ‘DÙ¡#Ø‘Dà �DØ—O‘Oð %Nô OåÒ[^Ò`dÑfjÐkÔl÷
"ð �Û�AÜ  “|¤jÓ0Ø Ÿ™¹!Ó(<¹!°Q©¨aª¸!Ñ(<Õ=ð  ô (¨Ö.‘F�B˜Ø˜S‘yØ Ø˜6™
�AØ˜q™E Q q¡TšM¨b°©e°q¸±tªmÀÀ!ÁÈÈ1ÉÂÐRSÐTUÑRVÐZ\Ð]^ÑZ_ÒR_Ø Ü%¸¸b¹	À&Ò8IÓ&JÑ8I°1 t¨A£wÐ8IÑ&JÐPSÔT‘F�B˜Ù&(˜r™d¨b´D¸³HÔ<˜Ü$ Q›<¬*Ó4¸%¸-È5Ï>É>ÔZaÐbcÓZd×ZyÑZyÓZ{ÕK|Ø$ŸO™O¹aÓ,@¹a¸©S°!ªW¸aÑ,@ÕAñ =ð /ð �Û!+‘I�B˜˜AØ˜q™E RÔ0¨2¨a©5Õ0°R¸±U¸bÔ5IÀBÀqÁEÔ5IØ ØÐ(°·±ÄÀbÈ"ÃÔ1NØ Ù   R›[‘F�B˜Ø—O‘O R¨¨Q KÕ0ð ",ñ :@©fÓ5©f¨™S !šW¨fÒ5ÀT‘	à�O‰OÐ|ð  @Añ  Aô  Bò	ñ ˜h±xÔ(@±x©t¨q°!ª°xÒ(@ÓAˆÙÙ! (¨HÓ5ˆHä©XÓD©X¨¸¸1¹À»”e˜A˜a™D ™F•m¨XÑDÓEˆÙØ�O‰Oð }ð @CñCô Dô 	ÐJÜ�X“ÑX`Ô aÑX`ÑPTÐPQÐST¤Ñ&K¼GÀA»JÀrÈ¹NÓ&KÕ!KÐX`Ò aÜ�X“¤¹xÓ'H¹x¸!¬¨a°©d°1©f­¸xÑ'HÓ IðKñKô 	Lô 	ÐLÜ�X“ÑU]Ó ^ÑU]ÐPQ¤Ñ&K¼GÀA»JÀrÈ¹NÓ&KÕ!KÐU]Ñ ^Ü�X“¤¹xÓ'H¹x¸!¬¨a°©d°1©f­¸xÑ'HÓ IðKñKô 	Lñ
 5;Ô;±F©D¨A¨q�a˜#‘g˜q 3™wÒ'°Fˆ	Ñ;ð	MÜœ¨¨A¨qÓ1´3¸¸Q¼s¹U¹ÀAÀqÐ8IÓJˆDÙ��oÔ&Ø—>‘>¤%¨	´3¸¸AÀÄ#Á¹IÀqÐ8IÓ"JÓKˆDÙ�Ð(Ô)ÙØ—~‘~¤e¨I´s¸QÀÀ1ÀqÌÁuÁ9Ð<MÓ&NÓO�Ù�DÐ,Ô-ä!*¨8Ö!4‘�‘I�Q˜Ø—x‘x¤ÁaÔ&HÁa¹d¸aÀ¨¨C©°°S±Ò'9ÀaÒ&HÌ#ÐPQÐSTÐWXÔY\ÑW\ÑS\Ð^_ÐO`Ó aÓb�Ù�DÐ5¸Ñ:Õ;ð "5ó '‘
��B˜Ø—x‘x¤§¡¨TÓ 2× <Ñ <¼b¿h¹h×>TÑ>TÜ—G‘G×&Ñ& r¬2¯9©9°R¸#±XÄ¸tÀRÈ#ÁXÓ+NÔPR×PYÑPYÐZ[Ð]^Ð`aÓPbÓcØœŸ	™	 ! Q¨¬3©¡Y°Ó2ó?4ð >5ó !6ó 7�ñ �DÐ/°2°a±4Ñ8Õ9ð	 'ô # 8Ö,‘��AØ—x‘x¤ a¬¨q°!°Q¸¼3¹±YÐ.?Ó @ÓA�Ù�DÐ8¸2Ñ=Õ>ð -ó '‘
��B˜Ø—x‘x¤§¡¨TÓ 2× <Ñ <¼b¿h¹h×>TÑ>TÜ—G‘G×&Ñ& r¬2¯9©9°R¸¼c¸TÓ+BÄBÇIÁIÈaÐQRÐTUÓDVÓWØœŸ	™	 ! Q¨¨A¬c©E©	Ó2ó?4ð >5ó !6ó 7�ñ �DÐ8¸B¸q¹DÀ"¸:ÑEÕFñ	 'ô �] R§Z¡Z°°SÓ%9Ñ9Ñ:ˆÜ
�‰×Ñ˜D #°ÈÐÔLÜ�L‰L˜ÓˆØ	×Ñ˜QŸX™X a™[˜LÔ)Ø�ŠØ�N‰Nœ4 2¨fÐ:MÔNÔOÜÐ*Ô+©Xä×Ñ (¨b¯h©h°s«m¸AÑ.>ÀÑ.DÀrÇxÁxÐPSÃ}ÐUVÑGWÑ.WÑ"XÑXˆÜ�D‰j˜2‰oˆÜ�7‰7�>‰>˜#Ô¡uØ�N‰Nœ4 2¨fÐ:dÐgiÑ:iÔjÔkÜÐ-°Ñ2Ô3±XØ	�‰�ŒØ+,¯9ª9Ó5©9 aŒu”U˜1“X˜qÕ!¨9ˆÐ5Ü�8‹}œs 8›}Ñ,ˆÜ�8‹}œs 8›}Ñ,ˆä�X‰X�iÓ ˆÜ�W‰W”R—Y‘Y  B r¨ F˜|Ó,°1Ô5ˆÜ”Cñ <©ó <ó <ó =ˆäÐcØ”S˜Ÿ™“\ 1§?¡?°C¸¸tÀUÐKñLô 	MãˆAÜÐ$ qÑ(Õ)ð à�‰”tò 	8Ùð	8Ùð	8Ü%,§_¡_°SÑ%8¸Ò%;ð	8ÙABð	8ÙLOð	8ä”c˜!Ÿ'™'“lÔ#ð	8ä04°Q·_±_Ô0Eð	8ô �x“=¤ X£Ò.ð	8ô 8;¸8³}ÄSÈÃ]Ò7Rð	8ñ ð		8ñ  $ð		8ñ ,1ð		8ô >AÀ»[Èº]ð		8ñ
  ð	8ñ
 '*ð	8ñ
 34ð	8ð lÐopÐrsÐntÒtð	8ñ ajÑ\Øcøð	8ñ ð	8ð $1°3Ò#6ð	8ô 		9ô 	�	‰	�'œ4¤Ð&=Ñ =¸sÈWÔUØ$¨Q÷	0ðW	 %1ô\	 	‡I�Iˆg”tœCÐ"9Ñ9¸3ÈÔQØ ¨õ,ä
Ñ8™Ó8Ó
8€CÜ	Ð
AÀSÌ#ÈgË,ÐWZÑJZÐD[Ñ
[Ô\ÛˆÜà�8‘ Ò$ð VØ�D‘'˜1˜Y™<¨¨8©°a¸±iÀÀ9ÁÈqÐQXÉzÐZò[à$À!ÀDÄ'È1ÈUÊ8Ð+Tõ	Wñ ùò[
 ?ùò  MùÚPùô 9ùòD .ùò 3ùò@ <ùó@ FùòJ )=ùò 'Kùò -Aùò 6ùó )Aùò Eùó !bùÚ'Hùâ ^ùÚ'Hùó <ùó 'Iøô  ò 	MØ�N‰Nœ4 2¨fÐ:PÔSVÐWYÓSZÐ[_Ð\_ÐS`Ñ:`ÔaÔbÜÐ1´C¸³G¸D¸S°MÑAÔBÅHûð	Müò$ 6sæ   ¤AM»AMÂ-AM"Â?AM"ÃAM'Ã*AM'ÆAM,
Æ(AM,
Ë$AM3Í0AM8
Ó?AM=ÜANä4ANæ ANèANê+ANëANìAN"
ìAN"
í(AN'îAN-ï%AN2ð	AN7ð4AN<ñC	AOôAOô)H5AOÁCAP%ÁOAOÁO	AP"ÁOAAPÁPAP"Ú__main__)NgÍÌÌÌÌÌ@)r   ).Ú__doc__r@  r8  Úrer  ÚmathÚnumpyr!   Úcadqueryrw   rŸ   Úshapely.geometryr   r   r   Úshapely.opsr   r   r  Úshape_commonr   r	   r
   r   r   r   r,  r+  rŽ   r  rï   r$  r'  r   r/   r<   ri   rp   rs   r€   r‹   r‘   r”   r–   r‡  Ú__name__r   r   r   Ú<module>r’     s¸   ðñ÷( × Ó Û Û Û ß 7Ñ 7ß /ã ß V× Và€	Ø
€Ø	€Ø€Ø€
ð ‡|�|€ð �/‰/€òPòEòó".Ròbfò
ò9ó@òò
ò
òQWðh
 ˆzÒÙ…Fð r   