Ë
    Ûvžj•4  ã                   ó|  — d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZ d ZdZdZdZ G d„ d«      Z G d	„ d
«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de#«      Z$y)é    N)Úget_default)Úaxis_to_vecsÚcopy_locationÚcopy_topods_shapeÚidentity_locationÚlineÚ	loc_to_tqÚloc_to_vecsÚmake_compoundÚmul_locationsÚrectÚ	tq_to_loc)ÚColorÚmake_uniqueé   é   c                   óL   — e Zd Z	 	 	 	 	 	 	 	 	 d	d„Zd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)Ú	OcpObjectNc                 ó†  — |€|€t        d«      ‚d | _        || _        || _        || _        || _        || _        | j                  |	|
«       || _        || _	        t        |t        «      r0| j                  D �cg c]  }t        |«      ‘Œ c}| _	        || _        y |�t        | j                  «      | _	        || _        y c c}w )Nz"Either obj or ref must be provided)Ú
ValueErrorÚidÚobjÚkindÚrefÚcache_idÚnameÚ
set_statesÚlocÚcolorÚ
isinstanceÚlistr   Úwidth)Úselfr   r   r   r   r   r   r   r"   Ú
show_facesÚ
show_edgesÚcs               úk/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/ocp_tessellate/cad_objects.pyÚ__init__zOcpObject.__init__   s´   € ð ˆ;˜3˜;ÜÐAÓBÐBàˆŒØˆŒØˆŒ	ØˆŒØ ˆŒØˆŒ	Ø�‰˜
 JÔ/ØˆŒØˆŒ
Ü�eœTÔ"Ø,0¯JªJÓ7©J qœ% �(¨JÑ7ˆDŒJð ˆ�
ð ÐÜ˜tŸz™zÓ*ˆDŒJØˆ�
ùò 8s   Á8B>c                 óR  — | j                   €d| j                  › �}n#d| j                   j                  j                  › �}d|z  › d| j                  › d| j
                  › d|› d| j                  › dt        | j                  «      › d	| j                  €d
› d�S | j                  d d › d�S )Nzref=zclass=Ú zOcpObject name='z' kind=z, z, color=z, loc=z, cache_id=Ú é
   z...)
r   r   Ú	__class__Ú__name__r   r   r   r	   r   r   )r#   ÚindÚobj_repls      r'   ÚdumpzOcpObject.dump=   s¿   € Ø�8‰8ÐØ˜dŸh™h˜ZÐ(‰Hà §¡× 2Ñ 2× ;Ñ ;Ð<Ð=ˆHð �3‰wˆiÐ'¨¯	©	 {°'¸$¿)¹)¸ÀBØˆjð Ø—Z‘Z�L ¤y°·±Ó':Ð&;ð <Ø"Ÿm™mÐ3˜ÐLÈCðQð	
ð :>¿¹ÀsÈÐ9KÐLÈCðQð	
ó    c                 ó"   — | j                  «       S ©N©r1   ©r#   s    r'   Ú__repr__zOcpObject.__repr__J   ó   € Ø�y‰y‹{Ðr2   c                 ó(  — t        | j                  t        | j                  «      | j                  | j
                  | j                  t        | j                  «      t        | j                  «      | j                  | j                  | j                  «
      S r4   )r   r   r   r   r   r   r   r   r   r   r   r"   Ústate_facesÚstate_edgesr6   s    r'   ÚcopyzOcpObject.copyM   sh   € ÜØ�I‰IÜ˜dŸh™hÓ'Ø�H‰HØ�M‰MØ�I‰IÜ˜$Ÿ(™(Ó#Ü�$—*‘*ÓØ�J‰JØ×ÑØ×Ñó
ð 	
r2   c                 ó\   — |rt         nt        | _        |rt         | _        y t        | _        y r4   )ÚSELECTEDÚ
UNSELECTEDr:   r;   )r#   r$   r%   s      r'   r   zOcpObject.set_states[   s   € Ù'1�8´zˆÔÙ'1œ8ˆÕ´zˆÕr2   c                 óf   — | j                   dv r| j                  | j                  gS t        t        gS )N)ÚsolidÚface)r   r:   r;   ÚEMPTYr>   r6   s    r'   Úto_statezOcpObject.to_state_   s1   € Ø�9‰9Ð)Ñ)Ø×$Ñ$ d×&6Ñ&6Ð7Ð7äœ8Ð$Ð$r2   c                 ó4  — |› d| j                   › �| _        d }|€| j                  €d }n-|€| j                  }n| j                  €|}n|| j                  z  }| j                  dk(  r:| j                  | j
                  dœ}|| j                  | j                  dœ}d| _        | j                  dv rÃt        | j                  || j                     |¬«      | j                  d| j                  | j                   d	| j                  i| j                  «       | j                  j                  | j                  j                  || j                  €d nt        | j                  «      | j                  dk(  d d d
œfS | j                  dv �r|| j                  dk(  r|n|}	t        | j                   t"        «      s| j                   g| _         |	| j                   | j                   | j                  «      \  }
}t        | j                  t"        t$        f«      r$| j                  D �cg c]  }|j                  ‘Œ }}n| j                  j                  }t        | j                  | j                   d ¬«      | j                  | j                  dk(  rdnd| j                   |
| j                  «       || j                  €d nt        | j                  «      |dœf}| j                  dk(  r| j                  |d   d<   |S | j                  |d   d<   |S t'        d| j                  › d�«      ‚c c}w )NÚ/Ú	imageface)ÚdataÚformat)Úimager"   ÚheightrB   )rA   rB   Úshell)r   Úshaper   Úshapesr   )r   ÚtypeÚsubtyper   rM   Ústater   ÚalphaÚtexturer   Ú
renderbackÚaccuracyÚbb)ÚedgeÚvertexrX   rW   ÚedgesÚvertices)r   rO   r   rM   rQ   r   r   rV   r   r"   ÚsizezKind z not implemented)r   r   r   r   rJ   Ú
image_typer"   rK   Údictr   rD   r   Ú	web_colorÚar	   r    r   r!   ÚtupleÚNotImplementedError)r#   ÚpathÚ	instancesr   Údiscretize_edgesÚconvert_verticesrS   Úcombined_locrJ   ÚconvertÚvaluesrV   r&   r   Úresults                  r'   ÚcollectzOcpObject.collecte   s›  € Ø�F˜!˜DŸI™I˜;Ð'ˆŒØˆàˆ;˜4Ÿ8™8Ð+Ø‰LØˆ[ØŸ8™8‰LØ�X‰XÐØ‰Là §¡™>ˆLà�9‰9˜Ò#Ø!ŸZ™Z°4·?±?ÑCˆEØ %°·
±
ÀdÇkÁkÑRˆGØˆDŒIà�9‰9Ð2Ñ2Ü˜4Ÿ7™7¨)°D·H±HÑ*=À<ÔPØ—g‘gØ ØŸ9™9ØŸ	™	Ø §¡Ð*ØŸ™›ØŸ™×-Ñ-ØŸ™Ÿ™Ø"Ø#Ÿx™xÐ/‘t´Y¸t¿x¹xÓ5HØ"Ÿi™i¨6Ñ1Ø ØñSð ð ð  �Y‰YÐ,Ò,Ø*.¯)©)°xÒ*?Ñ&ÐEUˆGÜ˜dŸh™h¬Ô-Ø ŸH™H˜:�”Ù  §¡¨4¯9©9°d·g±gÓ>‰JˆF�Bä˜$Ÿ*™*¤t¬U mÔ4Ø.2¯jªjÓ9©j¨˜Ÿ›¨j�Ñ9àŸ
™
×,Ñ,�ä˜TŸW™W¨D¯H©H¸$Ô?Ø—g‘gØ#'§9¡9°Ò#6™¸JØŸ	™	ØØŸ™›ØØ#Ÿx™xÐ/‘t´Y¸t¿x¹xÓ5HØñ	Bð 	ˆFð �y‰y˜FÒ"Ø%)§Z¡Z��q‘	˜'Ñ"ð ˆMð %)§J¡J��q‘	˜&Ñ!ØˆMô &¨¨d¯i©i¨[Ð8HÐ&IÓJÐJùò+ :s   ÈL)	NNNÚObjectNNNTT©r   )
r.   Ú
__module__Ú__qualname__r(   r1   r7   r<   r   rD   rj   © r2   r'   r   r      sD   „ ð ØØØØØØØØóó>
òò
òBò%ó?Kr2   r   c                   ó\   — e Zd Zdd„Zdd„Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
dd	„Zd
„ Z	 dd„Zy)ÚOcpGroupNc                 óR   — d | _         |€g n|| _        || _        d| _        || _        y )NÚgroup)r   Úobjectsr   r   r   )r#   Úobjsr   r   s       r'   r(   zOcpGroup.__init__¨   s+   € ØˆŒØ!˜\‘r¨tˆŒØˆŒ	ØˆŒ	Øˆ�r2   c                 óÄ   — d|z  › d| j                   › dt        | j                  «      › d�}| j                  D ]  }||j	                  |dz   «      dz   z  }Œ |d|z  › d�z   S )Nr*   z
OcpGroup('z', loc=Ú
é   Ú))r   r	   r   rt   r1   )r#   r/   ri   r   s       r'   r1   zOcpGroup.dump¯   sk   € Ø˜‘G�9˜J t§y¡y k°¼À4Ç8Á8Ó9LÐ8MÈRÐPˆØ—<”<ˆCØ�c—h‘h˜s Q™wÓ'¨$Ñ.Ñ.‰Fð  à˜3˜s™7˜) 1˜Ñ%Ð%r2   c                 ó"   — | j                  «       S r4   r5   r6   s    r'   r7   zOcpGroup.__repr__µ   r8   r2   c                 ó,   — t        | j                  «      S r4   )Úlenrt   r6   s    r'   ÚlengthzOcpGroup.length¸   s   € ä�4—<‘<Ó Ð r2   c                 óH   — |D ]  }| j                   j                  |«       Œ y r4   )rt   Úappend)r#   ru   r   s      r'   ÚaddzOcpGroup.add¼   s   € ÛˆCØ�L‰L×Ñ Õ$ñ r2   c                 óÒ   — | j                   dkD  rRt        | j                  D �cg c]  }|j                  ‘Œ c}«      }t	        | j                  |«      D ]  \  }}||_        Œ | S c c}w ©Nr   )r}   r   rt   r   Úzip)r#   r   Únamesr   s       r'   Úmake_unique_nameszOcpGroup.make_unique_namesÀ   sY   € Ø�;‰;˜Š?Ü°T·\²\Ó B±\¨c §£°\Ñ BÓCˆEÜ  §¡¨uÖ5‘	��TØ�•ð 6àˆùò !Cs   £A$c                 ó�   — | j                   dk(  r6| j                  d   }t        | j                  |j                  «      |_        |S | S )Nr   r   )r}   rt   r   r   ©r#   ri   s     r'   ÚcleanupzOcpGroup.cleanupÇ   s;   € Ø�;‰;˜!ÒØ—\‘\ !‘_ˆFÜ& t§x¡x°·±Ó<ˆFŒJØˆMàˆr2   c                 ó   — |xs d}i }t        | j                  «      D ]m  \  }}t        |t        «      r2|j	                  g |¢|‘­«      j                  «       D ]
  \  }}|||<   Œ ŒH|j	                  «       |t        |j                  «      <   Œo |S )Nro   )Ú	enumeratert   r    rq   rD   ÚitemsÚstrr   )r#   Úparentsri   Úir   ÚkÚvs          r'   rD   zOcpGroup.to_stateÏ   s„   € Ø’-˜RˆØˆÜ §¡Ö-‰FˆAˆsÜ˜#œxÔ(ØŸL™L¨¨7¨°A©Ó7×=Ñ=Ö?‘D�A�qØ !�F˜1’Iñ @ð '*§l¡l£n�”s˜3Ÿ6™6“{Ò#ð .ð ˆr2   c                 ó   ‡— ˆfd„Š ‰| «      S )Nc                 óp   •— d}| j                   D ]#  }t        |t        «      r| ‰|«      z  }Œ|dz  }Œ% |S )Nr   r   )rt   r    rq   )ÚpgÚcountÚpr&   s      €r'   r&   z OcpGroup.count_shapes.<locals>.cÛ   s=   ø€ ØˆEØ—Z”Z�Ü˜a¤Ô*Ø™Q˜q›T‘M‘Eà˜Q‘J‘Eð	  ð
 ˆLr2   ro   )r#   r&   s    @r'   Úcount_shapeszOcpGroup.count_shapesÚ   s   ø€ ô	ñ �‹wˆr2   c                 ó  — |› d| j                   › �| _        |€| j                  €d }n-|€| j                  }n| j                  €|}n|| j                  z  }t        g | j                  €d nt	        | j                  «      | j                   | j                  dœ}g | j                  dœ}| j
                  D ]L  }	|	j                  | j                  ||||«      \  }
}|d   j                  |«       |d   j                  |
«       ŒN ||fS )NrF   )ÚversionÚpartsr   r   r   )r™   r   r™   )r   r   r   ÚPROTOCOL_VERSIONr	   rt   rj   r   )r#   rb   rc   r   rd   re   rf   ri   Úmapr   ÚmappingÚmeshs               r'   rj   zOcpGroup.collectæ   sþ   € ð �F˜!˜DŸI™I˜;Ð'ˆŒàˆ;˜4Ÿ8™8Ð+Ø‰LØˆ[ØŸ8™8‰LØ�X‰XÐØ‰Là §¡™>ˆLô (ØØŸ8™8Ð+‘4´¸4¿8¹8Ó1DØ—I‘IØ—'‘'ñ
ˆð  $§'¡'Ñ*ˆà—<”<ˆCØŸK™KØ—‘˜ LÐ2BÐDTó‰MˆG�Tð �7‰O×"Ñ" 4Ô(Ø�‰L×Ñ Õ(ð  ð �Fˆ{Ðr2   )NÚGroupNrl   r4   )NNN)r.   rm   rn   r(   r1   r7   Úpropertyr}   r€   r…   rˆ   rD   r–   rj   ro   r2   r'   rq   rq   §   sJ   „ óó&òð ñ!ó ð!ò%òòó	ò
ð RVôr2   rq   c                   ó   — e Zd Zd„ Zdd„Zy)ÚOcpInstancesGroupc                 ó    — || _         || _        y r4   )Úocpgrprc   )r#   rc   r£   s      r'   r(   zOcpInstancesGroup.__init__  s   € ØˆŒØ"ˆ�r2   Nc                 óÌ   — |€| j                   }t        |t        «      r$|j                  D ]  }| j	                  ||«       Œ y |j
                  �|xj
                  |z  c_        y y r4   )r£   r    rq   rt   Úapply_offsetr   )r#   Úoffsetr   Úos       r'   r¥   zOcpInstancesGroup.apply_offset  sW   € Øˆ;Ø—+‘+ˆCÜ�cœ8Ô$Ø—[”[�Ø×!Ñ! &¨!Õ,ñ !ð �w‰wÐ"Ø—’˜6Ñ!–ð #r2   r4   )r.   rm   rn   r(   r¥   ro   r2   r'   r¡   r¡     s   „ ò#ô"r2   r¡   c                   ó"   — e Zd Z	 	 	 	 dd„Zd„ Zy)Ú
OcpWrapperNc	                 óŒ   — || _         || _        || _        || _        |€
t	        «       n|| _        || _        || _        || _        y r4   )	ru   r   r   r   r   r   r"   r%   r$   )	r#   ru   r   r   r   r   r"   r%   r$   s	            r'   r(   zOcpWrapper.__init__  sF   € ð ˆŒ	ØˆŒ	ØˆŒ	ØˆŒ
Ø*-¨+Ô$Ô&¸3ˆŒØˆŒ
Ø$ˆŒØ$ˆ�r2   c           
      óÈ   — t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  ¬«      S )N)r   r   r   r"   r%   r$   )	r   r   ru   r   r   r   r"   r%   r$   r6   s    r'   Úto_ocpzOcpWrapper.to_ocp-  sG   € ÜØ�I‰IØ�I‰IØ—‘Ø—‘Ø—*‘*Ø—*‘*Ø—‘Ø—‘ô	
ð 		
r2   )NNTT)r.   rm   rn   r(   r¬   ro   r2   r'   r©   r©     s   „ ð ØØØó%ó(

r2   r©   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú	CoordAxisc                 ó  •— |€t        d«      }t        ||«      \  }}}}	t        ||||	z  z   «      }
dt        j                  |dz  «      t        j
                  dz  z  dz  z   }||z  |	z  }|d|z
  dz  z  |z  }|d|z
  dz  z  |z  }t        |||	z  z   ||z   |z
  «      t        |||	z  z   ||z   |z   «      t        |||	z  z   ||z   |z
  «      t        |||	z  z   ||z   |z   «      t        ||z   |z
  ||z   |z   «      t        ||z   |z
  ||z   |z   «      t        ||z   |z
  ||z   |z   «      t        ||z   |z
  ||z   |z
  «      t        ||z   |z   ||z   |z   «      t        ||z   |z   ||z   |z
  «      g
}t        ‰| �  |
g|z   d||d¬	«       y )
NÚblackgš™™™™™é?g333333ã?é   é   r   rx   rW   ©r"   )r   r   r   ÚmathÚatanÚpiÚsuperr(   )r#   r   ÚoriginÚz_dirr   r[   r§   ÚxÚyÚzrW   ÚfÚdzÚdxÚdyr_   r-   s                   €r'   r(   zCoordAxis.__init__;  sÈ  ø€ Øˆ=Ü˜'“NˆEÜ! &¨%Ó0‰
ˆˆ1ˆa�Ü�A�q˜4 !™8‘|Ó$ˆØ”$—)‘)˜D 3™JÓ'¬4¯7©7°Q©;Ñ7¸!Ñ;Ñ;ˆØ�A‰X˜‰\ˆØ�a˜!‘e˜q‘[Ñ! AÑ%ˆØ�a˜!‘e˜q‘[Ñ! AÑ%ˆä��T˜A‘X‘˜q 2™v¨™{Ó+Ü��T˜A‘X‘˜q 2™v¨™{Ó+Ü��T˜A‘X‘˜q 2™v¨™{Ó+Ü��T˜A‘X‘˜q 2™v¨™{Ó+Ü��R‘˜"‘˜a "™f r™kÓ*Ü��R‘˜"‘˜a "™f r™kÓ*Ü��R‘˜"‘˜a "™f r™kÓ*Ü��R‘˜"‘˜a "™f r™kÓ*Ü��R‘˜"‘˜a "™f r™kÓ*Ü��R‘˜"‘˜a "™f r™kÓ*ð
ˆô 	‰Ñ˜$˜ !™ V¨T°5ÀÐÕBr2   r‚   ©r.   rm   rn   r(   Ú__classcell__©r-   s   @r'   r®   r®   :  s   ø„ ÷Cñ Cr2   r®   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚCoordSystemc                 ó  •— t        |||«      \  }}}}	t        ||||z  z   «      }
t        ||||z  z   «      }t        ||||	z  z   «      }t        d«      t        d«      t        d«      g}t        ‰| �  |
||gd||d¬«       y )NÚredÚgreenÚbluerW   r±   r³   )r
   r   r   r·   r(   )r#   r   r¸   Úx_dirr¹   r[   r§   rº   r»   r¼   Úx_edgeÚy_edgeÚz_edgeÚcolorsr-   s                 €r'   r(   zCoordSystem.__init__U  sŒ   ø€ Ü  ¨°Ó6‰
ˆˆ1ˆa�Ü�a˜˜T A™X™Ó&ˆÜ�a˜˜T A™X™Ó&ˆÜ�a˜˜T A™X™Ó&ˆä˜“,¤ g£´°f³Ð>ˆÜ‰Ñ˜& &¨&Ð1°6¸4ÀÈqÐÕQr2   )r   rÁ   rÃ   s   @r'   rÅ   rÅ   T  s   ø„ ÷Rñ Rr2   rÅ   c                   ó2   ‡ — e Zd Z	 	 	 	 dˆ fd„	Zˆ fd„Zˆ xZS )Ú	ImageFacec                 óä  •— t        j                  |«      \  | _        | _        |d   }| j                  |d   z
  }t	        |t
        t        f«      r||f}| j                  |d   z  }| j                  |d   z  }	||d   z  }
||d   z  }t        ||	«      }t        |d«      r|j                  n|}t        |dz  |
z
  |	dz  |z
  dfd«      }|�||z  n|}t        ‰| �1  |gd|t        d«      d|¬	«       t        |d
«      5 }t        j                   |j#                  «       «      j%                  d«      | _        |j)                  d«      d   | _        d d d «       || _        |	| _        y # 1 sw Y   ŒxY w)Nr   r   Úwrappedr±   )r   r   r   r   rG   ÚwhiteT)r%   r   Úrbzutf-8Ú.éÿÿÿÿ)Ú	imagesizeÚgetÚimage_widthÚimage_heightr    ÚintÚfloatr   ÚhasattrrÒ   r   r·   r(   r   ÚopenÚbase64Ú	b64encodeÚreadÚdecoderJ   Úsplitr\   r"   rK   )r#   Ú
image_pathÚscaleÚorigin_pixelsÚlocationr   rº   r»   ÚwsÚhsÚxsÚysÚplaner   r§   r½   r-   s                   €r'   r(   zImageFace.__init__`  st  ø€ ô /8¯m©m¸JÓ.GÑ+ˆÔ˜$Ô+Ø˜!ÑˆØ×Ñ ¨aÑ 0Ñ0ˆä�eœc¤5˜\Ô*Ø˜E�NˆEà×Ñ  a¡Ñ(ˆØ×Ñ  q¡Ñ)ˆØ��q‘‰\ˆØ��q‘‰\ˆä�R˜“ˆÜ")¨(°IÔ">ˆh×ÒÀHˆÜ�r˜A‘v ‘{ B¨¡F¨R¡K°Ð3°\ÓBˆØ˜ˆc�AŠg¨aˆä‰ÑØˆG�[ $¬¨g«À4ÈSð 	ô 	
ô �*˜dÔ# qÜ×)Ñ)¨!¯&©&«(Ó3×:Ñ:¸7ÓCˆDŒJØ(×.Ñ.¨sÓ3°BÑ7ˆDŒO÷ $ð ˆŒ
Øˆ�÷ $Ð#ús   Ã>AE&Å&E/c                 óð   •— t         ‰| �  «       }| j                  |_        | j                  |_        | j                  |_        | j
                  |_        | j                  |_        | j                  |_        |S r4   )r·   r¬   rJ   r\   rÙ   rÚ   r"   rK   )r#   ri   r-   s     €r'   r¬   zImageFace.to_ocp„  s]   ø€ Ü‘‘Ó!ˆØ—z‘zˆŒØ ŸO™OˆÔØ!×-Ñ-ˆÔØ"×/Ñ/ˆÔØ—z‘zˆŒØŸ™ˆŒØˆr2   )g      ð?)r   r   NrÐ   )r.   rm   rn   r(   r¬   rÂ   rÃ   s   @r'   rÐ   rÐ   _  s!   ø„ ð ØØØõ"÷Hð r2   rÐ   c                   ó(   ‡ — e Zd Z	 	 	 	 dˆ fd„	Zˆ xZS )ÚOCP_Partc                 ó^   •— |€t        t        d«      «      }t        ‰| �  |gd||||¬«       y )NÚdefault_colorrA   )r$   r%   )r   r   r·   r(   )r#   rM   r   r   r$   r%   r-   s         €r'   r(   zOCP_Part.__init__�  s:   ø€ ð ˆ=Üœ+ oÓ6Ó7ˆEä‰ÑØˆG�W˜d E°jÈZð 	õ 	
r2   )ÚPartNTTrÁ   rÃ   s   @r'   rï   rï   �  s   ø„ ð ØØØ÷
ñ 
r2   rï   c                   ó(   ‡ — e Zd Z	 	 	 	 dˆ fd„	Zˆ xZS )Ú	OCP_Facesc                 ó\   •— |€t        d«      }t        |«      }t        ‰| �  |||||«       y )NÚViolet)r   r   r·   r(   )r#   Úfacesr   r   r$   r%   r   r-   s          €r'   r(   zOCP_Faces.__init__¡  s2   ø€ ð ˆ=Ü˜(“OˆEÜ˜EÓ"ˆÜ‰Ñ˜˜d E¨:°zÕBr2   )ÚFacesNTTrÁ   rÃ   s   @r'   rô   rô      s   ø„ ð ØØØ÷Cñ Cr2   rô   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú	OCP_Edgesc                 óV   •— |€t        d«      }t        ‰| �	  |d|||¬«       d| _        y )NÚMediumOrchidrW   r³   r±   ©r   r·   r(   r"   )r#   rY   r   r   r"   r-   s        €r'   r(   zOCP_Edges.__init__°  s1   ø€ Øˆ=Ü˜.Ó)ˆEÜ‰Ñ˜ ¨¨e¸5ÐÔAØˆ�
r2   )ÚEdgesNr   rÁ   rÃ   s   @r'   rú   rú   ¯  ó   ø„ ÷ñ r2   rú   c                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )ÚOCP_Verticesc                 óV   •— |€t        d«      }t        ‰| �	  |d|||¬«       d| _        y )Nrü   rX   r³   r²   rý   )r#   rZ   r   r   r[   r-   s        €r'   r(   zOCP_Vertices.__init__¸  s1   ø€ Øˆ=Ü˜.Ó)ˆEÜ‰Ñ˜ 8¨T°5ÀÐÔEØˆ�
r2   )ÚVerticesNr   rÁ   rÃ   s   @r'   r  r  ·  rÿ   r2   r  c                   ó8   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚOCP_PartGroupc                 ó\   •— t         ‰| �  |«       || _        || _        || _        d| _        y ©Nr   )r·   r(   ru   r   r   Úindex)r#   rt   r   r   r-   s       €r'   r(   zOCP_PartGroup.__init__À  s,   ø€ Ü‰Ñ˜Ô!ØˆŒ	ØˆŒØˆŒ	Øˆ�
r2   c                 ó   — d| _         | S r  )r  r6   s    r'   Ú__iter__zOCP_PartGroup.__iter__Ç  s   € ØˆŒ
Øˆr2   c                 ó²   — | j                   t        | j                  «      k  r0| j                  | j                      }| xj                   dz  c_         |S t        ‚r‚   )r  r|   ru   ÚStopIterationr‡   s     r'   Ú__next__zOCP_PartGroup.__next__Ë  s@   € Ø�:‰:œ˜DŸI™I›Ò&Ø—Y‘Y˜tŸz™zÑ*ˆFØ�JŠJ˜!‰O�JØˆMäÐr2   c                 ó    — | j                   |   S r4   )ru   )r#   rŽ   s     r'   Ú__getitem__zOCP_PartGroup.__getitem__Ó  s   € Ø�y‰y˜‰|Ðr2   c                 ó,   — t        | j                  «      S r4   )r|   ru   r6   s    r'   Ú__len__zOCP_PartGroup.__len__Ö  s   € Ü�4—9‘9‹~Ðr2   )rž   N)	r.   rm   rn   r(   r
  r  r  r  rÂ   rÃ   s   @r'   r  r  ¿  s   ø„ õòò òör2   r  )%rß   r´   r×   Úocp_tessellate.defaultsr   Úocp_tessellate.ocp_utilsr   r   r   r   r   r	   r
   r   r   r   r   Úocp_tessellate.utilsr   r   r?   r>   rC   rš   r   rq   r¡   r©   r®   rÅ   rÐ   rï   rô   rú   r  r!   r  ro   r2   r'   Ú<module>r     s×   ðÛ Û ã å /÷÷ ÷ ñ ÷ 4à€
Ø€Ø	€àÐ ÷GKñ GK÷T]ñ ]÷@"ñ "÷  
ñ  
ôFC�
ô Cô4R�*ô Rô-�
ô -ô`
ˆzô 
ô"C�ô Cô�
ô ô�:ô ô�Dõ r2   