§
    ¡)ýfö,  ã                   ób   — d dl mZ d dlmZ d„ Zd„ Zd„ Zd dlmZm	Z	  G d„ de¦  «        Z
e
fZd	S )
é    )ÚOperator©ÚVectorc                 óÐ  — | d         d         | d         d         | d         d         | d         d         | d         d         | d         d         f\  }}}}}}t          d¦  «        D ]\}| |         d         }||k     r|}||k    r|}| |         d         }||k     r|}||k    r|}| |         d         }||k     r|}||k    r|}Œ]t          |||f¦  «        t          |||f¦  «        fS )Né   r   é   é   )Úranger   )	Úbb_worldÚleftÚrightÚfrontÚbackÚdownÚupÚiÚvals	            ú_/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/object_align.pyÚ$worldspace_bounds_from_object_boundsr   	   s  € ð 	�Œ�AŒØ�Œ�AŒØ�Œ�AŒØ�Œ�AŒØ�Œ�AŒØ�Œ�AŒð*Ñ&€Dˆ%�˜˜d Bõ �1‰XŒXð ð ˆð �qŒk˜!ŒnˆØ�Š:ˆ:ØˆDà�Š;ˆ;ØˆEð �qŒk˜!ŒnˆØ�Š;ˆ;ØˆEà�Š:ˆ:ØˆDð �qŒk˜!ŒnˆØ�Š:ˆ:ØˆDà�Š8ˆ8ØˆBøå�D˜% Ð$Ñ%Ô%¥v¨u°d¸DÐ.AÑ'BÔ'BÐCÐCó    c                 óZ  — |j                              ¦   «         }|                     | ¦  «        }|                     ¦   «         }|j        }||r|d         j        nt          d¦  «        z  }|d         |d         |d         |d         |d         |d         f\  }}}	}
}}|D ]T}||j        z  }|d         }||k     r|}||k    r|}|d         }||	k     r|}	||
k    r|}
|d         }||k     r|}||k    r|}ŒU|                     ¦   «          t          ||	|f¦  «        t          ||
|f¦  «        fS )Néÿÿÿÿ©ç        r   r   r   r   r	   )Úmatrix_worldÚcopyÚevaluated_getÚto_meshÚverticesÚcor   Úto_mesh_clear)Ú	depsgraphÚobjr   Úob_evalÚmeÚvertsr   r   r   r   r   r   r   ÚvÚvcos                  r   Ú"worldspace_bounds_from_object_datar)   3   sp  € àÔ#×(Ò(Ñ*Ô*€Lð ×Ò 	Ñ*Ô*€GØ	�ŠÑ	Ô	€BØŒK€Eà
¨%ÐL˜% œ)œ,˜,µV¸OÑ5LÔ5LÑ
M€Cð 	ˆAŒØˆAŒØˆAŒØˆAŒØˆAŒØˆAŒð*Ñ&€Dˆ%�˜˜d Bð ð ð ˆØ˜QœTÑ!ˆð �!ŒfˆØ�Š:ˆ:ØˆDà�Š;ˆ;ØˆEð �!ŒfˆØ�Š;ˆ;ØˆEà�Š:ˆ:ØˆDð �!ŒfˆØ�Š:ˆ:ØˆDà�Š8ˆ8ØˆBøà×ÒÑÔÐå�4˜ Ð#Ñ$Ô$¥f¨e°T¸4Ð-@Ñ&AÔ&AÐAÐAr   c                 óÒ
  ‡,— |                       ¦   «         }| j        }|j        j        }	| j                             ¦   «          g d¢}
g d¢}d}g }| j        D ]E}|j                             ¦   «         Š,ˆ,fd„|j	        D ¦   «         }| 
                    ||f¦  «         ŒF|sdS |D �]¼\  }}|r|j        dk    rt          ||¦  «        }nt          |¦  «        }|d         }|d         }|| j        k    rx|d         |d         z   dz  }|d         |d         z   dz  }|d	         |d	         z   dz  }|d         |d         z
  dz  }|d         |d         z
  dz  }|d	         |d	         z
  dz  }|rFd}|d         |
d<   |d         |
d<   |d	         |
d	<   |d         |d<   |d         |d<   |d	         |d	<   �Œ|d         |
d         k     r|d         |
d<   |d         |
d         k     r|d         |
d<   |d	         |
d	         k    r|d	         |
d	<   |d         |d         k    r|d         |d<   |d         |d         k    r|d         |d<   |d	         |d	         k     r|d	         |d	<   �Œ¾|
d         |d         z   dz  }|
d         |d         z   dz  }|
d	         |d	         z   dz  }|D �]È\  }}|j                             ¦   «         Š,ˆ,fd
„|j	        D ¦   «         }|r|j        dk    rt          ||¦  «        }nt          |¦  «        }|d         }|d         }|d         |d         z   dz  }|d         |d         z   dz  }|d	         |d	         z   dz  }|d         }|d         } |d	         }!|d         }"|d         }#|d	         }$|j        }%|r |dk    r*|dk    r|%d         |"z
  |z
  }&n8|dk    r|%d         |z
  |z   }&n#|dk    r|%d         |"z
  }&n|dk    r|%d         |z
  }&|dk    r|%d         |z
  }&|dk    r|&}'n)|dk    r|&|	d         z   }'n|dk    r|&|z   }'n|dk    r|&|z   }'|'|j        d<   |r |dk    r*|dk    r|%d         |#z
  |z
  }(n8|dk    r|%d         | z
  |z   }(n#|dk    r|%d         |#z
  }(n|dk    r|%d         | z
  }(|dk    r|%d         |z
  }(|dk    r|(})n)|dk    r|(|	d         z   })n|dk    r|(|z   })n|dk    r|(|z   })|)|j        d<   |r |dk    r*|dk    r|%d	         |$z
  |z
  }*n8|dk    r|%d	         |!z
  |z   }*n#|dk    r|%d	         |$z
  }*n|dk    r|%d	         |!z
  }*|dk    r|%d	         |z
  }*|dk    r|*}+n)|dk    r|*|	d	         z   }+n|dk    r|*|z   }+n|dk    r|*|z   }+|+|j        d	<   �ŒÊdS )Nr   Tc                 ó4   •— g | ]}‰t          |¦  «        z  ‘ŒS © r   ©Ú.0r'   r   s     €r   ú
<listcomp>z!align_objects.<locals>.<listcomp>|   s$   ø€ ÐDÐDÐD°�L¥6¨!¡9¤9Ñ,ÐDÐDÐDr   FÚMESHr   r   g       @r	   c                 óD   •— g | ]}‰t          |d d …         ¦  «        z  ‘ŒS )Nr   r-   s     €r   r/   z!align_objects.<locals>.<listcomp>Â   s,   ø€ ÐGÐGÐG°A�L¥6¨!¨A¨A¨A¬$¡<¤<Ñ/ÐGÐGÐGr   ÚOPT_4ÚOPT_1ÚOPT_3ÚOPT_2)Úevaluated_depsgraph_getÚsceneÚcursorÚlocationÚ
view_layerÚupdateÚselected_objectsr   r   Ú	bound_boxÚappendÚtyper)   r   Úactive_object)-ÚcontextÚalign_xÚalign_yÚalign_zÚ
align_modeÚrelative_toÚ
bb_qualityr"   r7   r8   ÚLeft_Front_Up_SELÚRight_Back_Down_SELÚ
flag_firstÚobjectsr#   r   ÚGBBÚLeft_Front_UpÚRight_Back_DownÚcenter_active_xÚcenter_active_yÚcenter_active_zÚsize_active_xÚsize_active_yÚsize_active_zÚcenter_sel_xÚcenter_sel_yÚcenter_sel_zÚcenter_xÚcenter_yÚcenter_zÚ
positive_xÚ
positive_yÚ
positive_zÚ
negative_xÚ
negative_yÚ
negative_zÚobj_locÚobj_xÚloc_xÚobj_yÚloc_yÚobj_zÚloc_zr   s-                                               @r   Úalign_objectsrh   h   s   ø€ à×/Ò/Ñ1Ô1€IØŒM€EàŒ\Ô"€Fð Ô×ÒÑÔÐà'˜˜ÐØ)˜/˜/Ðà€Jà€GàÔ'ð (ð (ˆØÔ'×,Ò,Ñ.Ô.ˆØDÐDÐDÐD°c´mÐDÑDÔDˆØ�Š˜˜X�Ñ'Ô'Ð'Ð'àð Øˆuà ð 6<ñ 6<‰ˆˆXàð 	A˜#œ( fÒ,Ð,Ý4°YÀÑDÔDˆCˆCå6°xÑ@Ô@ˆCà˜AœˆØ˜aœ&ˆð �'Ô'Ò'Ð'à,¨QÔ/°/À!Ô2DÑDÈÑKˆOØ,¨QÔ/°/À!Ô2DÑDÈÑKˆOØ,¨QÔ/°/À!Ô2DÑDÈÑKˆOà,¨QÔ/°-ÀÔ2BÑBÀcÑIˆMØ,¨QÔ/°-ÀÔ2BÑBÀcÑIˆMØ*¨1Ô-°ÀÔ0BÑBÀcÑIˆMð ð 	<ØˆJà#0°Ô#3Ð˜aÑ Ø#0°Ô#3Ð˜aÑ Ø#0°Ô#3Ð˜aÑ à%4°QÔ%7Ð Ñ"Ø%4°QÔ%7Ð Ñ"Ø%4°QÔ%7Ð Ñ"Ñ"ð ˜QÔÐ"3°AÔ"6Ò6Ð6Ø'4°QÔ'7Ð! !Ñ$à˜QÔÐ"3°AÔ"6Ò6Ð6Ø'4°QÔ'7Ð! !Ñ$à˜QÔÐ"3°AÔ"6Ò6Ð6Ø'4°QÔ'7Ð! !Ñ$ð ˜qÔ!Ð$7¸Ô$:Ò:Ð:Ø)8¸Ô);Ð# AÑ&à˜qÔ!Ð$7¸Ô$:Ò:Ð:Ø)8¸Ô);Ð# AÑ&à˜qÔ!Ð$7¸Ô$:Ò:Ð:Ø)8¸Ô);Ð# AÑ&ùà% aÔ(Ð+>¸qÔ+AÑAÀSÑH€LØ% aÔ(Ð+>¸qÔ+AÑAÀSÑH€LØ% aÔ(Ð+>¸qÔ+AÑAÀSÑH€Lð !ð D$ñ D$‰ˆˆXØÔ'×,Ò,Ñ.Ô.ˆØGÐGÐGÐG¸¼ÐGÑGÔGˆàð 	A˜#œ( fÒ,Ð,Ý4°YÀÑDÔDˆCˆCå6°xÑ@Ô@ˆCà˜AœˆØ˜aœ&ˆà! !Ô$ °qÔ'9Ñ9¸SÑ@ˆØ! !Ô$ °qÔ'9Ñ9¸SÑ@ˆØ! !Ô$ °qÔ'9Ñ9¸SÑ@ˆà$ QÔ'ˆ
Ø$ QÔ'ˆ
Ø" 1Ô%ˆ
à" 1Ô%ˆ
Ø" 1Ô%ˆ
Ø$ QÔ'ˆ
à”,ˆàð #	$ð ˜gÒ%Ð%Ø Ò(Ð(Ø# AœJ¨Ñ3°mÑC�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3°mÑC�Eøð  Ò(Ð(Ø# AœJ¨Ñ3�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3�Eà˜WÒ$Ð$Ø œ
 XÑ-�ð ˜gÒ%Ð%Ø��à Ò'Ð'Ø  q¤	Ñ)��à Ò'Ð'Ø Ñ,��à Ò'Ð'Ø Ñ/�à#ˆCŒL˜‰Oàð "	$ð ˜gÒ%Ð%Ø Ò(Ð(Ø# AœJ¨Ñ3°mÑC�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3°mÑC�Eøð  Ò(Ð(Ø# AœJ¨Ñ3�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3�Eà˜WÒ$Ð$Ø œ
 XÑ-�ð ˜gÒ%Ð%Ø��à Ò'Ð'Ø  q¤	Ñ)��à Ò'Ð'Ø Ñ,��à Ò'Ð'Ø Ñ/�à#ˆCŒL˜‰Oàð !	$à˜gÒ%Ð%Ø Ò(Ð(Ø# AœJ¨Ñ3°mÑC�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3°mÑC�Eøð  Ò(Ð(Ø# AœJ¨Ñ3�E�Eà 7Ò*Ð*Ø# AœJ¨Ñ3�Eà˜WÒ$Ð$Ø œ
 XÑ-�ð ˜gÒ%Ð%Ø��à Ò'Ð'Ø  q¤	Ñ)��à Ò'Ð'Ø Ñ,��à Ò'Ð'Ø Ñ/�à#ˆCŒL˜‰Oùàˆ4r   )ÚBoolPropertyÚEnumPropertyc                   óÐ   — e Zd ZU dZdZdZddhZ eddd¬	¦  «        ed
<    e	dddd¬¦  «        ed<    e	dddd¬¦  «        ed<    e	ddddh¬¦  «        ed<   e
d„ ¦   «         Zd„ ZdS )ÚAlignObjectszAlign objectszobject.alignzAlign ObjectsÚREGISTERÚUNDOzHigh Qualityz}Enables high quality but slow calculation of the bounding box for perfect results on complex shape meshes with rotation/scaleT)ÚnameÚdescriptionÚdefaultrG   z
Align Modez#Side of object to use for alignment))r3   zNegative SidesÚ )r5   ÚCentersrr   )r4   zPositive Sidesrr   r5   )ro   rp   Úitemsrq   rE   zRelative TozReference location to align to))r3   zScene OriginzIUse the scene origin as the position for the selected objects to align to)r5   z	3D CursorzFUse the 3D cursor as the position for the selected objects to align to)r4   Ú	SelectionzMUse the selected objects as the position for the selected objects to align to)r2   ÚActivezJUse the active object as the position for the selected objects to align tor2   rF   ÚAlignzAlign to axis))ÚXrx   rr   )ÚYry   rr   )ÚZrz   rr   Ú	ENUM_FLAG)ro   rp   rt   ÚoptionsÚ
align_axisc                 ó   — |j         dk    S )NÚOBJECT)Úmode)ÚclsrA   s     r   ÚpollzAlignObjects.poll~  s   € àŒ|˜xÒ'Ð'r   c           	      ó¢   — | j         }t          |d|v d|v d|v | j        | j        | j        ¦  «        }|s|                      dhd¦  «         dhS dhS )Nrx   ry   rz   ÚWARNINGz"No objects with bound-box selectedÚ	CANCELLEDÚFINISHED)r}   rh   rE   rF   rG   Úreport)ÚselfrA   r}   Úrets       r   ÚexecutezAlignObjects.execute‚  st   € Ø”_ˆ
ÝØØ�:ÐØ�:ÐØ�:ÐØŒOØÔØŒOñ
ô 
ˆð ð 	 Ø�KŠK˜˜Ð%IÑJÔJÐJØ�=Ð à�<Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	bl_idnameÚbl_labelÚ
bl_optionsri   Ú__annotations__rj   Úclassmethodr‚   rŠ   r,   r   r   rl   rl   O  s+  € € € € € € ØÐØ€IØ€HØ˜fÐ%€Jà�Øð/ð ðñ ô ð ð ñ ð �ØØ9ð
ð
 ð	ñ 	ô 	ð 	ð 	ñ 	ð �ØØ4ð
ð ð
ñ 
ô 
ð 
ð 
ñ 
ð �ØØ#ð
ð
 �ð	ñ 	ô 	ð 	ð 	ñ 	ð ð(ð (ñ „[ð(ð ð  ð  ð  ð  r   rl   N)Ú	bpy.typesr   Ú	mathutilsr   r   r)   rh   Ú	bpy.propsri   rj   rl   Úclassesr,   r   r   ú<module>r˜      sÏ   ðð
 Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð'Dð 'Dð 'DðT2Bð 2Bð 2Bðj^ð ^ð ^ðBð ð ð ð ð ð ð ðC ð C ð C ð C ð C �8ñ C ô C ð C ðN ð€€€r   