
    ,jZ0                     0   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZmZ d dlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ ddl0m1Z1m2Z2 dZ3 G d d          Z4dS )    )new_event_loopset_event_looprun_coroutine_threadsafeAbstractEventLoop)Future)Optional)Thread)chain)open_new_tab)uuid1)
get_server)Server)vtkclienttramevuetify3)SinglePageWithDrawerLayout   )Shape)styleShowable	ShapeLike_split_showables)vtkRenderervtkRenderWindowvtkRenderWindowInteractor	vtkProp3D)vtkOrientationMarkerWidget)vtkAxesActor)!vtkInteractorStyleTrackballCamera)instance_ofBiDictz<position:absolute; left:0; top:0; width:100vw; height:100vh;c                   
   e Zd ZU eed<   eed<   eed<   ej        ed<   e	e
ef         ed<   e	e
eedf         f         ed<   eed<   eed	<   eed
<   ee
         ed<   eeee         ee         eee                  ee         f                  ed<   dZdZeed<   d Zd)defdZdefdZde
fdZdddeez  ee         z  dee
         fdZd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$de%ez  fd#Z&d$ Z'd% Z(d&e)fd'Z*d&ee
         fd(Z+dS )*Figureserverwinrenviewshapes.actorsloopthreademptyactivelastNF_initializedc                 \    | j         st                              |           | _         | j         S N)	_instanceobject__new__)clsargskwargss      F/DATA/AppData/hermes/venv/lib/python3.11/site-packages/cadquery/fig.pyr5   zFigure.__new__<   s'    } 	0"NN3//CM}    F  portc           	      h
     j         rd S t                       _        t           j                   t	                      }t                      }|                                \  }}|                    ||           |                    |           |	                                 t                      }|                    t                                 |                    |           |                    ddd           |                                 t!                      }|                    d           t%                      }|                    |           |                    dddd           |                    d           |                    |           |                    |           |                                 |                                 | _        | _        | _        | _        t=                       _        t=                       _         d  _!        tE          dd	
          }	|	 _#         j#        j$         _$         j$        %                    dg            tM          |	d           _'         j'        5 }
tQ          j)        d           |
j*        +                    d           |
j,        -                                 |
j.        5  d}t_          j0         fdddd|           t_          j0         fdddd|           t_          j0         fdddd|           t_          j0         fdddd|           t_          j0         fdddd|           t_          j0         fdddd|           t_          j0         fd ddd!|           d d d            n# 1 swxY w Y   |
j1        5  t_          j2        dd"#          5  tg          j4        |dd$%           _5        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |
j6        5  to          j8        dg f j9        d&f j:        d&f'           _;        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	j$        <                                 t                       _         fd(}t{          |d)           _>         j>        ?                                 |	?                    dd*|dd+          }|r @                    |           d _         d _A        d  _B        t          d,|            d S )-Nr   r   g?g        g      ?g?g?z	CQ-servervue3)client_typer*   F)show_drawerzbody { margin: 0; }z	CQ viewerzdisplay: block;c                  ,                                      S r2   )_fitselfs   r9   <lambda>z!Figure.__init__.<locals>.<lambda>       $))++ r:   Tcompactzmdi-crop-free)clickflatdensityiconr   c                  2                          ddd          S Nr   r   r   )r   r   r   r   r   r   _viewrC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>       $**Y	9"M"M r:   zmdi-axis-arrowc                  2                          ddd          S NrN   )r   r   r   rO   rP   rC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>   rR   r:   zmdi-axis-x-arrowc                  2                          ddd          S NrN   r   r   r   rO   rP   rC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>   rR   r:   zmdi-axis-y-arrowc                  2                          ddd          S NrN   rO   rW   rP   rC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>   rR   r:   zmdi-axis-z-arrowc                  ,                                      S r2   )_poprC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>   rF   r:   z mdi-file-document-remove-outlinec                  .                          g           S r2   )_clearrC   s   r9   rE   z!Figure.__init__.<locals>.<lambda>   s    $++b// r:   zmdi-delete-outlinezpa-0 fill-height)fluidclassesd   )interactive_ratiointeractive_qualityz[$event])sourcesvisibility_changeactives_changec                  b    t           j                    j                                         d S r2   )r   r+   run_foreverrC   s   r9   	_run_loopz"Figure.__init__.<locals>._run_loop   s-    49%%%I!!#####r:   )targetdaemon	coroutine)r,   	exec_moder<   open_browsershow_connection_infozhttp://localhost:)Dr0   r   r+   r   r   r   GetScreenSizeSetSizeAddRendererOffScreenRenderingOnr   SetInteractorStyler    SetRenderWindowSetBackgroundGradientBackgroundOnr   SetDragabler   SetOrientationMarkerSetViewportSetZoomSetInteractorSetCurrentRenderer	EnabledOnInteractiveOffaxesorient_widgetr&   r'   r"   r)   r*   r.   r   r%   state
setdefaultr   layoutr   Styletitleset_textfooterhidetoolbarv3VBtncontent
VContainervtk_widgetsVtkRemoteViewr(   drawerr   GitTreeonVisibilityonSelectiontreeflushr	   r,   start_runr-   r/   r   )rD   r<   rendererr&   whinterr   r   r%   r   BSTYLErh   coros   `             r9   __init__zFigure.__init__C   s    	F"$$	ty!!! ==  ""1Aq!!!  """)++  !B!D!DEEEc""" 	q!Q'''%%''' ~~244**4000!!#sC555c"""##E***((222!!!$$&&&	*hhhh KV<<< [&

h+++ 1UKKK[ O	FL.///L!!+...M    : :*----%(     MMMM%)     MMMM%+     MMMM%+     MMMM%+     ----%;     1111%-    i: : : : : : : : : : : : : : :x   ](:     !, 9qc! ! !DI                               !M%rN'+'8*&E$($4j#A  	              UO	 O	 O	 O	 O	 O	 O	 O	 O	 O	 O	 O	 O	 O	 O	b 	"$$		$ 	$ 	$ 	$ 	$ Id;;;||!!&  
 
  	IIdOOO ! 
	 	///00000s   AQ/CN$Q/$N(	(Q/+N(	,
Q/6PO6*P6O::P=O:>PQ/P	Q/P	
Q/-QQ/Q	Q/Q	 Q//Q36Q3returnc                 ,    t          || j                  S r2   )r   r+   )rD   r   s     r9   r   zFigure._run   s    'di888r:   namec                 P      fd}                       |                       d S )Nc                  r   K   j                                         j                                          d S r2   )r   dirtyr   )r   rD   s   r9   _zFigure._update_state.<locals>._   s7      JT"""Jr:   )r   )rD   r   r   s   `` r9   _update_statezFigure._update_state   s=    	 	 	 	 	 	
 			!!##r:   )r   	showablesc                    t          t                                }t          |          \  }}}}t          |fi |}	t          |fi |}
g }|D ]V}d|vrd|d<   t          |fi |}| j        |<   |D ]} j                            |           |                    |           Wt          ||
          D ]1} j                            |           |	                    |           2|r  j        j        |	   |j	        |	  |s S ||
|r|	nd|f _
         fd}                      |                        j        r                                  d _         j        j        	                    |dd|r|nt!          |d                   j         dt%          |d                   d	d
                                d           t)          |           j        |<    S )z
        Show objects.
        
markersizer   Nc                  >   K    j                                          d S r2   )r(   updaterC   s   r9   _showzFigure.show.<locals>._show.  s!      Ir:   F0r   z at x)idparentvisibler   r*   )strr   r   r   r)   r'   AddActorextendr
   appendr/   r   r-   fitr   r*   type__name__r   r   tuple)rD   r   r   r8   uuidr)   vecslocspropsptsaxs
new_actorssr*   actorpropr   s   `                r9   showzFigure.show   sj    577|| %5Y$?$?!dED##F##D##F## 
 	& 	&A6))'(|$1''''F !DK ) )!!%((((f%%%%%%% 	$ 	$DHd###d#### 	$DHs##Js##  	K S"7##4?		 	 	 	 	 			%%'' : 	HHJJJDJ 	
  #'H44T)A,-?-?-HbbbQZ[\Q]N^N^bbb	 	
 	
 	
 	8$$$!*--Dr:   c                 n   K   | j                                          | j                                         d S r2   )r'   ResetCamerar(   r   rC   s    r9   rB   zFigure._fitG  s4      	r:   c                 T    |                      |                                            | S )z1
        Update view to fit all objects.
        )r   rB   rC   s    r9   r   z
Figure.fitK  #    
 			$))++r:   c                    K   | j                                         } |j        |   |j        |   |j        |  | j                                          | j                                         d S r2   )r'   GetActiveCamera	SetViewUpSetFocalPointSetPositionr   r(   r   )rD   focposupcams        r9   rQ   zFigure._viewT  su      h&&((r3	r:   c                 Z    |                      |                     ddd                     | S rM   r   rQ   rC   s    r9   isoz
Figure.iso`  )    		$**Y	9==>>>r:   c                 Z    |                      |                     ddd                     | S rY   r   rC   s    r9   r   z	Figure.upf  r   r:   c                 Z    |                      |                     ddd                     | S rT   r   rC   s    r9   frontzFigure.frontn  r   r:   c                 Z    |                      |                     ddd                     | S rV   r   rC   s    r9   sidezFigure.sidet  r   r:   c                 ~  K   t          |          dk    r^| j                                         | j                                         | j                                         g | j        _        d | _        |D ]}t          |t                    rdt          | j        j        |                   }|D ]A}| j                            |          D ]}| j                            |           | j        |= Bn_| j                                        D ]E\  }}||v r<| j                            |          D ]}| j                            |           |g} nFg }| j        j        D ]!}|d         |vr|                    |           "|| j        _        |                     d           | j                                         d S )Nr   r   r*   )lenr'   RemoveAllViewPropsr*   clearr)   r   r.   r!   r   r   invpopRemoveActoritemsr   r   r(   r   )	rD   r)   r   uuidsr   aactsel	new_states	            r9   r]   zFigure._clearz  s     v;;!H'')))KK "DJDK 	* 	*A1i(( dkoa011!  D![__T22 0 0,,Q//// 	 #'+"3"3"5"5  JD$Dyy"&+//$"7"7 5 5B H004444 "& ! Ij' ) )d85(($$R((( )DJ8$$$	r:   c                     d| _         |                     |                     |                    }|                                 | S )zZ
        Clear specified objects. If no arguments are passed, clears all objects.
        N)r/   r   r]   result)rD   r)   futures      r9   r   zFigure.clear  s:     	4;;v..//r:   c                 T  K   | j         | j        j        d         d         | _         | j         | j        v r| j        | j                  D ]}| j                            |           | j                            | j                    | j                            | j                    t          | j        j                  D ]L\  }}|d         | j         k    r6| j        j                            |           |                     d            nMd | _         | j	        
                                 d S )Nr   r*   )r.   r   r*   r'   r   r   r)   	enumerater   r(   r   )rD   actir   s       r9   r[   zFigure._pop  s     ;*+B/5DK;$+%%{4;/ * *$$S))))KOODK((( KOODK((( #4:#455  2d8t{**J%))!,,,&&x000E +
 DK	r:   c                 T    |                      |                                            | S )z.
        Clear the selected showable.
        )r   r[   rC   s    r9   r   z
Figure.pop  r   r:   eventc                     | j         |d                  }|D ]}|                    |d                    | j                                         d S )Nr   r   )r*   SetVisibilityr(   r   )rD   r   r*   r   s       r9   r   zFigure.onVisibility  sW    U4[) 	0 	0CeI.////	r:   c                      |d         | _         d S )Nr   )r.   )rD   r   s     r9   r   zFigure.onSelection  s    Ahr:   )r;   ),r   
__module____qualname__r   __annotations__r   r   r   r   r"   r   r   r   r   r   r	   boolr   listr3   r0   r5   intr   r   r   r   r   r   rB   r   rQ   r   r   r   r   r]   r   r   r[   r   dictr   r    r:   r9   r$   r$   '   s        NNN		

####3	>""""3in--....
NNNKKKSM
OT)_htI.GiX	
    IL$  i1 i1S i1 i1 i1 i1V9F 9 9 9 9#     #K K Ky(4	?:K smK K K KZ    
 
 
        , , ,\
UY. 
 
 
 
  2  $    c      r:   r$   N)5asyncior   r   r   r   concurrent.futuresr   typingr   	threadingr	   	itertoolsr
   
webbrowserr   r   r   	trame.appr   trame.app.corer   trame.widgetsr   r   r   r   r   r   trame.ui.vuetify3r    r   visr   r   r   r   vtkmodules.vtkRenderingCorer   r   r   r    vtkmodules.vtkInteractionWidgetsr   !vtkmodules.vtkRenderingAnnotationr   vtkmodules.vtkInteractionStyler    utilsr!   r"   FULL_SCREENr$   r   r:   r9   <module>r     s              & % % % % %                   # # # # # #                   ! ! ! ! ! ! K K K K K K K K K K K K 8 8 8 8 8 8       = = = = = = = = = = = =            H G G G G G : : : : : : L L L L L L & & & & & & & &Lz z z z z z z z z zr:   