From 751bff1ddc84adc34437911c71bde898a0db4e63 Mon Sep 17 00:00:00 2001 From: Rentlau Date: Wed, 4 Nov 2015 20:19:08 +0100 Subject: [PATCH] Release of 2015-11-04 : Modification and addition: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creation of TAB : Wire 2D and 3D parametric functions panel. A set of predefined functions is available via a combo box. With possible saving of your parametric functions into a file in the home directory. Creation of TAB : Sweeping Move of Section Sweep from "Object" TAB into "Sweeping" TAB: into "Object" TAB : Compute the common parts between selected shapes. - Select at least two objects and click. Highlight common parts by showing the common shape in red and setting half- transparency on original parts (the original objects are not modified). Original code from HighlightCommon.FCMacro https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro Authors = 2015 Javier Martinez Garcia into "Object" TAB : Compute the difference parts between selected shapes. - Select two objects and click. Compute the difference between two shapes. Additions are marked red, removals are marked green. Both original parts will be half transparent. The volume of the additions and removals are printed in the console. Original code from HighlightDifference.FCMacro https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro Authors = 2015 GaĆ«l Ecorchard (Galou) into "Axis 1/2" TAB : Axis=(Points): Create a "best fit" line from a set of points using Singular Value Decomposition.. - First select several Points - Then push this button The 3 eigenvectors are generated. Orange one is the best fit line. --- WorkFeature/Doc/WF_releasesDocumentation.pdf | Bin 2037080 -> 2622076 bytes WorkFeature/Icons/WF_4pointsCube.svg | 308 +- WorkFeature/Icons/WF_Beam.svg | 37 +- WorkFeature/Icons/WF_Common.svg | 986 +++ WorkFeature/Icons/WF_Difference.svg | 998 +++ WorkFeature/Icons/WF_FCCamera_02.svg | 152 +- WorkFeature/Icons/WF_NpointsLine.svg | 562 ++ WorkFeature/Icons/WF_Sweep.svg | 454 ++ WorkFeature/Icons/WF_isCommon.svg | 998 +++ WorkFeature/Ressources/Parametric2D.dat | 23 + WorkFeature/Ressources/Parametric3D.dat | 20 + WorkFeature/Ui/WFGui_2015.py | 3309 ++++++++ WorkFeature/Ui/WFGui_2015.ui | 6899 +++++++++++++++++ .../Ui/WF_ObjParCurve2DEditGui_2015.py | 193 + .../Ui/WF_ObjParCurve2DEditGui_2015.ui | 282 + .../Ui/WF_ObjParCurve3DEditGui_2015.py | 244 + .../Ui/WF_ObjParCurve3DEditGui_2015.ui | 344 + WorkFeature/Ui/__init__.py | 0 WorkFeature/{ => Ui}/sh_ui2pySide | 4 +- WorkFeature/WFGui_2015.py | 3864 +++++---- WorkFeature/WF_2015.py | 670 +- WorkFeature/WF_ObjParCurve2DEditGui_2015.py | 193 + WorkFeature/WF_ObjParCurve3DEditGui_2015.py | 244 + WorkFeature/WF_ObjParCurveEdit_2015.py | 388 + WorkFeature/WF_ObjParCurve_2015.py | 545 ++ WorkFeature/WF_ObjRot_2015.py | 147 +- WorkFeature/WF_Utils_2015.py | 238 + start_WF.py | 18 + 28 files changed, 20000 insertions(+), 2120 deletions(-) create mode 100644 WorkFeature/Icons/WF_Common.svg create mode 100644 WorkFeature/Icons/WF_Difference.svg create mode 100644 WorkFeature/Icons/WF_NpointsLine.svg create mode 100644 WorkFeature/Icons/WF_Sweep.svg create mode 100644 WorkFeature/Icons/WF_isCommon.svg create mode 100644 WorkFeature/Ressources/Parametric2D.dat create mode 100644 WorkFeature/Ressources/Parametric3D.dat create mode 100644 WorkFeature/Ui/WFGui_2015.py create mode 100644 WorkFeature/Ui/WFGui_2015.ui create mode 100644 WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py create mode 100644 WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui create mode 100644 WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py create mode 100644 WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui create mode 100644 WorkFeature/Ui/__init__.py rename WorkFeature/{ => Ui}/sh_ui2pySide (59%) mode change 100755 => 100644 create mode 100644 WorkFeature/WF_ObjParCurve2DEditGui_2015.py create mode 100644 WorkFeature/WF_ObjParCurve3DEditGui_2015.py create mode 100644 WorkFeature/WF_ObjParCurveEdit_2015.py create mode 100644 WorkFeature/WF_ObjParCurve_2015.py create mode 100644 WorkFeature/WF_Utils_2015.py create mode 100644 start_WF.py diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf index b2d1763ac6b16240f830f7b939bc965f983a1f35..7eae71bdbecd96de92b435a8d19fe0e2646bcad6 100644 GIT binary patch delta 649408 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⁣_ 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 j^pj`#q58ZBug^ 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 Z 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

_Us4tt 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≠EIl%JJ^tZ`J{+hv6?iew{+W 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≈=hkN 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%0AUAw5|4_3Op?fV;s%s z14Ct}jQ8>Nd`MmF@^OhG*&y%KO2dr?=%{ih0(Y&7xx0KXjAS7U{P%pdJUhv(?3*X71uTRY$88tj5mvyudHbJyj?d<<_s8Ntn3~I9frNNKz#>?MTqsj6h}WfAh%X| zqb0Uc7#13qJ2nINupHwYpE1?b=5oJAdvUk5XzqpEcbS)gojnY#ItbxWx9k^`)*Oj9 z{v8i|)uhhF^jR8~+No-9|xq88O?w7>Q z#}<}jA+JWyeNhO(4(`e^RUj8GJH_!tsgaAIsM`o!S^hLkYaLGwP7a|i%Ye7e8X;(K-RuP+4u z1gv?JS<3jW#>{c-e)7DM%?0rC)pHXou1o6;PAs?6vFQ~d*b^?+y-3I6%5$?H%QLbGIC8jr8QM)2{Dlj;Kx6oL;jCX@O=Oe5qt&leL#* zi6J7-HB!O31KZ9Pu&pRNxn8NFNyWXIrEI9lh!1{Om7&1sJ3y^@YV8cGiuZf3THLh6 z@YKrUwy9b}f2=a!fgCd0s8HPtd4tE4IH?XjLXMS0sVbqi`DoRvCTL`}#jLYkh=q73Ifrw~GE5kvf)tCaI22ZQ!nCKt9i3o_C8BYj(r zEz9>uiVS*9_48FIHp|X0eo$673>`5xuc56-7v|{O!uLmXG-AX(AJc(#W+#kd=5{ZI zpPO(o!%R#xeal){+34HDdF7!JmZmOYV%m=nv&DK~DrFN8dV2-|KG5dN9!dgMHAr0% zL)H^B$eZ-wiG&)f6J{&%@x#&NBOjSAC3mZnU`uj~aV178^EAVA3#FNoQ!wz8b^|X8 zo5ra|(-zcCoEo0H$hxo7H{bDO)eg>Fy9qEoM0I3bt{7@;M+nio6cHDvlE7QXQjPouh5<#=mNMFIN zpgZUKF8f3n3y-sOy_zltj4E07M$O03a?dVgfUMJc1Aq-cM3aaCCh5a*j6A z9g{;uuS1_#Cd7X;Oef_K6=zVo8oj`>z>_e@)iG+Y6?ghtcVcjEx0F8*k!NHz1Q+1p z2d^H~O6^aY6}TOKxvrY)$6?|Y&h|*p1}BoGj3=tYQtaUN$H5?t4M0Mf*K;SmDY1@M zh_{T0G(oAA{IQH{QR|lK}ZzLMFVmtwN=n^%6xy_yWk+zIh`7v3nW4C>#R zbv%k4-34b61=O5zhF;#cIT_@gJYzC^aJcA| z)lPTRR_&3mm#a+ZNs{-}$O3lx%X*6s)z|a01qGf&^3(6flv^HYL56Zj@!3|*Lkl9dTTwRO4I-AK?0{c@`_DjAdBI{2$I0yEgxgZK+T{VU%qE`I7>qA(Z< zBmf!wNgpkX^FyN*s3A;|z1FRaaLH|M_u>1Dyz&K?;3$44ew^t_ol8B#ZQLZ&J zKA;@pVg)!6n|O;Bs(x8pI6gh+ElVcrNaM$h?X=~j5tg-ThP1qKV=lOBX5dwQFe7q! zKm%2>vYs6?(BHAg_8y#Lu2XVSH>>gTU=ff>?bFv33$R?Mari#gcOo4Vrovhbkxkk& zaK&^~x@R6{7Z>6pNo*BA+U7da(qI&tq`G0s5l62^KjO51r1G?E%|Sc^H`E&~W24Me z@iESNe_|UA1R_fWpG8NzZxjr9L zR>g%A@hNJJj*S%5PFCz@ltn1ixb1*9B`826?n)O7kfY7D3)*blS~S-?)p4MvN9X3@ z92$&?1Dtpehjwz5v5mnk=8O&;_gC!*ZZt&2I|Y@xNP9XGkYM{Q;IM`L@G4XJ-h99H z;~Ym^pT^I%*;wNl+J#ki+h3bFgoL-I08f^j5sF4j+=%OQEIVGij&fd{wHW|jf69MG z9}>O;+2|{4d&s$4?)S0ZIX7xl=lF^_tzfjGsjK$H)~DS|lWKmWvmLEhT(luIGbi|% zbjk)sSyKJkG-2;eBJI)vf0Ra|B51Tq`LWiE61w#iuzR*w#!EJO0BnBL_6VX;uGi;E zAylQ8R~AxooKZFDIi$NSZuQqG>+~?>-b=5jZR4qN#Z8TeG&2M~s}m#@eKk=Xcmp~d zJoam)Y$7#`jFvx<0O zHPxS=otNpP=#Q-6UsGZ=cCZRiFqSo?4Ro(y0}14Fs4AA!J?S%waK=uHAMv4T5WeZ@ z%yyMFV6+snx}>PKQ=cnND7A`FNgT?OwwsyQv3<8J)!?JVX?pJY^5E(m6o&G}y5YNV z2{c~7PmoYi;M_+pn=nE>a7@PmBAD<>+jVS*t_9Dh+u=w@@Q9+2d4Yo6%b7O}D)4m zvFv1xO`>}|hgpoq>*Q*x+G>RJES0R~Saj!PuNfy(JOI2YFPgfXwaDG@ARK2y&O4S- zA_<%t5 z3k2q~-D>sLU#@V^p@h_{^VB4+VJ)CXXzQ`^Z<<5Tg zlZ=|1JZ+3V4jLKcjg7M>@);uw&H%-145<Ts{9<5D&c^$Tm8|Kro8ge$nrZcec+zvu*RW| zOnex_=E$4wMIp-pU)j;%1pf3CvAz3N${YC20{&>gFKcO=bX!&a@^7mMi4wMYBfYh= z6;D+>8+1}Dmu-$0jwE?PwJuu$JK>6G%{$#cn-k73iMN#&EP32abnGkza z{njK~RHm~zN;-WkJ@iriE2J9Oy|Al?XDmzvmTT=t#haTH-T6QborN4@y0t=pNR=IN zrP0y_OSRRoQ_MwF&KpsOmhsK8eART3mw&!;W6R1KCi<@SZWE!hemMAO8wmQPH8pYN z0SQ#i4+jhSVC4bk?HL5|TMinTqHp8A&Zn-^Uvz9wf8u&VZ?c|$s@hHCTyVm0E`lR)s&PB!25CsK6mH&;Hvd7s>T?-gb_ zTKQ3Q^0KXT zpBnmKxifn-#Z=~|SRcL@FkdSzj+`yqePN)BM)PUAuY{-ESDBeN*G{qo2>JmQQ(*WW z9F=Fj2!+jAjxvGxm+8;sYeHjKO3bU{6zi(;UC6Yv+Q(D^dR3*Dl$5b)g9Oq(Ckskz zSG|6Q1!TqGh?xyam(O@&pG=}XVkoX$I#Y~eM8>d9 zw%xDxE%}KAf)qrW%x&m?)AUt`JYn;kWT6onUvZSyPYPs0<_v0 zQ3e>Ol~tULHAXMY44-62{?*6+O4}Z8mn~1)q_-_Ap^|O)NKiOxO0sXxm^f5hEVhK} z0S9$ent1^>`d+K=_a8bHrX7))d!}7b+yfE<@s0=_dCpA9 z;zD~$*4)Lxp&j#}sh)gT^G_s)+{2wS=Wu6XCX~-<`2J3+7@uxV6+bjK_!?)LlqOW^ zLUASVSfC$)co)OFO?Xgeplw5T~*Tx?|x|7c^H2A#BPN$om41*Ub*OfU(@W>+9b}gWJ zMys_cw(bbio0qub34wQb=Cuons`He28a`$F2}dLtubKu_MedVdJV|;b%uvTB%KvTN z*79;(;7RG@pGa~^l#n@%Q3}T9^7luQEcj+_U+PL0Y~&A&EGab&Gs=9-@Ro{b_)AX{ zu}jL%C7m!elG$qS52>u0>sObQr{{LDCp~eE-AL_suDfsvg6*nlP6;5g9#&j)otG7I zd=*t|xYqt_RG{3B3P~^_qEB=tdl&6~4Q%K=#4JX0^S9u|bhv2{MhKH}Ppp`$@^N7*e=w!*|F+>+sF^gA z5Nkl3y7vJL<0+aphdJe;l3g@Kf`ni`Mlh-l{c zWCEF7Fzj@U9#cdFO#{+I29dlMfzjjo7!qQFk(f?FYA|K)1)qt>bA52;C$aj4gtfGB60ID$MKE)$HFphc#0g>g{BEGH{26Sw`dUozz_;cwzd~ zQ5JY9Y$dI;2s!KITPj9A>tvsBFb2tcn9jlEtfSTC$NbXmM9S}v@)v$0u@&++JfScR zylpkbrZ*#pS7AVLJ*G#FyY9#F_Qq=WJcvy+cEKQ~0P%_LKG zKN#~gO|9Irhwo`FzbSR<49Pvn5k6AhI`v1T`KsQiE;MppmaQk*`+0JLk2h`tzIBa2 zl$aeG_S?Suw3<>er(b7{K}*sCLW%Qv#-O6TbAoKtEHHhq?a2fr9!b1)JMmXZN!SW4 z2HnmGkZ+WMdst^k+p2q|Y#+MT`HKIwf9-R{E5WswXJ zU~@ComU}T|n_e}*{pD*r-p76}A zsWWAdH)DH0krKvJ3^O0_hymJZ&?VWXLCYD#u_I2Q&@4P;N;ISC>(0VJ=qDQt8t5=R z4jSZUU^CFW4s?3K_r9ULPT%hZ)0cojwLa&sIIqZMn-b$Lk(i})XhB{j=%KOEHM|^l zqYxMpl0p7lbjjKmZ8n|^<10$Up>{>8)WixfX^P$b(+Zp~YCkq}ez}!>c<(;fnk4$h zSVPVK5`{NX5!(L@kNuAbL_;Nh?s!)D5AjC z`{(u+E$9Z3Vsa- zfc#^7(`-sfMrrWKNRvGs)%~nGs>sCkm0>n_!PN>jPem1)G;NzS)eJ{~m^z7~MQWgG z__`GzVgwXvxyUbJ=V|s51o)H8%HiJ5zMufM;H6?^`x*^d|i;X=5t5v)k;O zO4`UK&4+d|aA6mJGm9S1BqMZ7J5ivuOnhnW$F-i`u*2R{iI{T2loi{W{T81i1^=eZ zACME6OE-om%@+KHqLTK^hmWy?fi~64*RKcI{cN{WV)&DZ_V4>dr3&uyf;<^(UUi@I z*1>BNjqIm8=mQ~gx%BasN^{^+kV-)ZK5(q3lK&~ z9dkbfvvxNvW?8xfml=++<~y=+R~zLqJwu+4TpM#!)BO1A`_Z&@0|>SDP}`G%Yizv( z;su)q-GOyyF(bp8HDT7+;<|8!J?~j!RPs(ECoT~B;whb)vUpHNL>VG_Wv2UOS?(x8 zk4CKT(V%i!&M!I$MvpLLFW<~0YD}uxrj})NXV)VLR5AgB3d)U(j0Q$%@eSInPW&U5 zbBP|eN)LAl`5yx2tv%)*M*ZE_G}KP>1SLc9DW~Kyy;TWXI)g1G1em=Wn>Jwnh}yBM zr$|Uemvo4tqI(>+P2vQSy7v)>_~!l5pPL6vnRWiL=ioUi`Awn>Xay-A1@svXGAg0G zXDQiUIF_N}fmD@+m}GRp_{Ecyn{v`a(tZ1eEu?PXU%u zq8JHT5aZ)2)ih!5=Qpy3=$7iw_vbkE5g?G6)Et1CoIE6jK6{3Y#eXx&!Zz!k zzXge<0EfEML9B`H8nNd@mg!=|PV?G93t{(h7Xq)=&+KmyPy~^<<5djw;Q@d}`^KFr?d0tGu=v0~XxXgGIbK|r8R!uag3!|+T(_Dn+Z z_klPE{&nfGg!Gw&9OCm|?*A(VSMVKut8QJ>`JalLXC8@GDn^Xos1!O1Nt-6C3tAix zi`DeW?fHH@j~i%Vy|=i~(ZYBmiXTBRrgoa-AL0h)71-p?F0hFn@LW^@EoR5Y^8NS3 zjGd3BzC(&X`BtdZ)zOj>twu4f!^fsUQmlzE$1C{3jsYa3{7D1h>SChvlLs}f z8#d4GI2U(iDWGYF@ddBv4`QvIr9yi7i z9VN=9KyZ*&lCG+|49(niLhtn#L>&nL`ZKtFeO|Zf?a{3X@P;Bs!GY0r=Y2-GUn>JB zRv)4>k&vMV#F2{DeaQT~`B_&nUtWH{G*^db1 zqyR>zyb=0_E-&!?ez7rNQgLpYrx*SR`tEy1%7p=SGXRcAht6!2nhr}oxyTu4;1rAB zJrClSW!h_)X_BB+y@Be`({6ugiht6d%;^lUJ{~r8ohf!SYVw$>;KdZxIy#)QLVl*( zz(TO?+THmQCMk)sU^W=5XqfR{U8Z#TsJ6~AqwOO_M;d2}j!;E$Aj+64Mc9y^mH5&N z_tGZ=0~cf`kk5DIPmhWI29{7MOn)?V-;M|lX}T7+@wWlsH`;nj=QM6a&jM)}V~4C9 zbomxe_x>_Zw7u+Awu&RR{cq$3Vu9@jhm(k^Bw4?5-;-2yS4~DNKR4Lj=sxYLpGerB z(dWVriUZ7LcYDDU6A9M&a-s|9i#$LxRdM#zj)X>Ro0{aEX6Vx8JESekk(3=~hRRRR zo{qBH?oZTQ{Y3hRykuPPTSfiS)qk^|aRQ+LgndM&ga2T^0^N$Fe@M1vyZmz?$>O?i zYr=rhzQ#=wxpO?eMU;*Tm{dX$3|X>*Dj)%c=Bw%*_ZO=q>R%iyVtxy zm;}tv@}xo}^r`ZqN4qx7j-1a)u2g*eCFH4cekD|#FP#P4WXqBYB6ihpWW7*q{w;lf zjXz^z=f9H|&|Q3F5-MqtS@9qAj`cKlazzR!Jx>?|N5u~WDF;h8LJ|H2#W%2z+T_;0 zb7^;f^(a}7eh&P}n(hN&6kHm8zawq+z_88Ph}eyuTiy--G;{Y>$We;Dx|MY|uRB>5dqfWoc(2v-g(pWUBzGzudJTr8}aJt=Yue~au$HDi+8 z*w&k;)7(H}_0~9s1Vb{|BuUvJ1FJ=D#L*)6nkL*M%wa(HH9`MCEI=v4 zOJNadb~f_?6PkjfzQwlV+!Zwv8f4|b#*t^%XX&s$(O})tPb_`uqV8ObMCjv%^L*_Q zWg}yL&PJmtXQBTLJe9<3oP zw^S>aaCebc&D70K+ZppqgV$C(pc`*a$3 zsRfACeTUU>IGs8|*O8UaHo0?Kyd@eD{5%r(--gCL4=4>TG94iJNRd&0Csr)rTx{tv z>}fmWTz*tFf2?g?=O6~PvJ4A25$;7oc9mj4p8;}@tH0vyX*$_aBw%DoDi?OR;?#|XUBgU`EUSrerB zA?kIwD!IL_fG~w_6dvb*bNS{_)~m%nJVKuoCc#UtM~{+am7x#hR_+VFhi8JAX#4X& z@K%}%B$zEYbktWa=o<>;7n9+pHC)|oBNxn8tKqhkD2asQav5pr%$T6la*zk?&Z-$= z;l9f?Y|;SNpG+@U*vUUTIS-WRO4iufWJp*DKQR_Nzn|`ub_(aP{g||Nv=CNI-n>G5 z$ADd1cP?Y8ovfVgntSvgBbfNM`N$wDcV`3S`LypwdPkE@HF+U~6VBpCUGkk+B3!1* zRKqd51DjbsGO)YeVN>#=YFqQEV(n5z4qt0crrS@X2kPZ??Y+>K*U@g)fg|tS>%aiZ zcQUE=lWyZ4mWmS^nN^tq?Glv;%k2I;`e?s=PL9nJ_t<~2cE98f!7c0$CL&7jdRZ8H zj4LHKf-uIq5_bBdKl3yi&j*gfx2OBsYVTV^xopc_d!>e}+U{*jXY$a^mREqc^QF-- zOd02u92WO2=Fa>X3l1>~$*hyQ2c4~6eJp6F5qy0^xf5{%xS#RQzYXxXUJtnm^g66{F^$K6(@uK^5Ncr&X zfp?I973jN%lOjdwc@!AdwMaE|aGyjd^(T^94i(Vo8!Y5*g_zB}Fv6xDkNges{z7^J zhlB(f(Dh5RKjvI@^YoNjL5Ahwjl5;XCdHGntLLpgUgTT~xz!U?I=3QtJKBViFr_au z##iK1L|Ag6rf;;)E6(M*a;yeC61oPAi=mT}--7HPVvRYgpMM65&?hAS7!Ah1@}l(*ttkA#rmEu`=`v z>Faw+eEw&TP=2|oI?FwOx6C-Bp$2G{Jq9HNC-6UD)+Qz84c(NRkrJ`Thgi569aK>2 zjRmccD!a}P<`v~QknKlC6LCm5=?08EQF*|v%%;f2vCfFR|1^73Y$H{1fCRogo2FD| zG}L0aL#WF@TRu?@Z815(GKY=!WrTnDM5qfB;2wq($;fdKZSBU9v@HKb@*1YXp5MSbuk7NB7z@HkTN@pADT zVsA!(!FsIqNr8g0n;k>tAV%Jm%KJojqYZlsic*M35GZkiSAADc6pFQbPxBZr?7dyh zkx$I#>(fKB2bQpeO;l#@cQayXBL(mzEw@0Um+^#(mY|Q+wW1LhnN^w zH{`?W{?#Pvejk9rnMac72_hv99Bf7lV#LmCUVL zOq6ANFtpGz2E9)Fht%!@A=e`0K;c?xuK&_Q&e5@u?`wRQDEdhb}+H zBZg8-;F0|%j_J`+=gPa_`ysLaB2;dOW-RtMH$=B*1A|vzAi0Aj!~5hs#t2}xN^^kE zxmjNsWTc#f`$NjFapS6&E=HncYLYAK zw_=IH=+?p^c@lF!H9$U(bxLOlUy-~xV?W=2f23M}#zrF4dQarL?rQx6t+Hj$d5Rse za+UFcsqv2JiOYHef5W+5`3qg~sdH*1#Kt?(pMINh9x!-l1DV>Jh&hE z7ApA+nF4YP^0Xc2Xb%@k)n?FDEP@#}eGr4>%S9x@Y5GhY9Fvd-E7Vks#vE6PSt z27>c#J;XsNEE&t1$~^uNrOfNY9`A(tSmCI^m#(Z<$UZBMQlq5oHLqw)zs(cE=Tj!! zT^MO&*!W9f4S40!Vm2Bw)|UfOhWHCvg}rlbv;Y8r6Jgqy>Y3UA8JrtWe1cJ|MO~Is z;Vp>B*+PcParzGnC#^wTpuA?Q05JOq9&pOGx4-W1FMOa)q5C{}6!*K3(l&cvoZ zeQidaAY|O?h@+@fSaTe=0}DPmxQ4ua{we1{?U4rSxo1d;Nya&LXlHz3e()6b?se$r zzY{dS)b^^!j9QcQwJ8cZ4z+A%L%|69oJ`HuUqn`3-pM`0x~$A!&Bcz1!9}Gl=0nk{ zO@GUv18#;czm&@Ke3rCp%kzslIR{q(lLm+7#nO&fhSP69J(^ZqgcSZVMgFD1L+PMu z?P44X#8f5kl)&sqf~(+V8PtUK5TG7 zyQWf1QT(Q!(C(#Rgck?X0s2b}%SL+UtW;-J9$0g8c+xIP2bcSP*N@kC`gaKQpHkVb zpKv-xM-Z+HZ91dE_Ne(qNN2Xo0v#J;@FZNo(5!Rj}zuf5T6;u{o_v<_R53M`D z*b=OprGy)Pp16PU#x~}_`(M1hbyyrr_aHpDySqyW?vTNPLvYui!Ciw5?ruYn1b24{ z!QCB#OA>-R36>p5?)%<*cfaqS-#*)2Pj^jqO?jO% z7jK|v8eB7+oG6x?1M6s+6Dw5I4YmHu9AR{!)~S*($895-R=k`AyHLGerLi5!RapKE zOp}0LPL0q^t+4JV%B5EUBdLOx+B#2A4*NY~ZZ_Xd=4rVpo(`@QcvGe6;WqNU&Dm1!L2NCx>R;rnX5cNNeEm5>Y{ zHqGP&5_ih;E_2thYLEyDe?<9{!~!L1n}q1Y^6U3QpVH0m z9~s9aPk@fwUskUc$1fniy0n{**y+XlPZV`rzBfEkyz_=Nv@I@s&#c(zntgvR8)tZ{ z#(%X|ViIb4ORTBabta`g=HLCDg#9|JeaX7FsL&vrOZ~j z2-;;NDkb~K5&Ny^?89xJ?uT9Nu-Y;zoQ_yQV#i`CFH}tDY;U@n@WVVAiLjy{JoCHRGLR}r_WH=$6(3v7B8 z24kT6z{_NR8`^VMjajeMN5nt(*IyZ zp=~m{M618#jQ?rQle)HNC!)pwKV`B0!>q!)5`NSYzHPJoU|G^Z=Wi$nRGySYGhcRx zha59oZcqXOm&+1|;YbJQJoZ2QWp<-KBCIp22rbhKnx~sek)~GZ^k1k35VGLiy@4Vz zykFYJ@G-vPs7)N7kZv3ULbm1jf{SO6BYliytC~tN9WK95GQF{h^3dG+$a)}S6nnsM zED{ohPjCy7T%GxTL z#8%I`E0%N*lRxeMIK;owRoWsl)-8N%5A?EX*A$X8h3c?)s0IL7)eZ;doll>qq)o6r z#6cXxLv(>*3Vrq3ko$iiGgx4GLy6*dUO2ePTb|w=16N1Gy6+9i_pGmvS0Bj_qDKyn zST4Eci7@|8JGKz`NLYN)bGbMD2_l_d!@pNg*d6TX)vmL4=RK{xl-Of8Kz1%%-u$-9 zIyg@)@4h%WkMi+zDi2c>J`Rpm?#JTU!YH(pf!2nQkHn{}Yks3U%h^s)%E)b_=Oo%ipsNb2W_dzR_cnY52e_vXO@ zOXKN;ZeEVDvF=veEkKjh7#=MM%0}@&kXc1+AOE3vUt)rhA-VxbL|*D4KiW&dFqznk=ujqvTn=MJ*3+ZnaJfl+xm?Vxs` zfKH!uRl+B_hU^`OWOw8JD;a3X{3Ml9kc;YVAL5MWM9pb*_1kWZu<)4{Y}v8E#u;xR z63&PhsHsZ|CSMx%o11Lv3RyMyx|sHl1TW4K8%wy8wRkuBMQLwutt#rB8I@jg*S^aw z`vi-;Yfo2dILGF&g?D~3Q3ndr{0MigYd`Puc14K*Y}cZQoL_oGo%rGdZ%CKaDFrwa zWiF7feP(*X*dq5Y@$(-+`5)FV8*V81ESm*nM}^X&+T;~Ifk9Kxfb-*!B6t)6AVyr)9wJeAVtMQ!byKiVaN9}B&RuB6=$Y=`ek-bs zepf%(B+FawxMg-t0u@aYC&=~hM>7iP zBvP?^U-vR~AVO*uNbW;ieHlyzZ*bPPxnA;jzM{|SlN_HN6(twDQPuaps658x3BM-z zjbFD59Kl(!V%x3tds3Gi(Zp&M7(h^LTIZ%cp2iFcPmsvqBR7M4e=f#*(}8?TJD-lW zebBU~BJm)}^Wqmkjs1I9(SL_(F{DC!Kp%Mg{rpd_5R2HShY#~bweT4(kz*36Sc zJ!$(`Smf<5K*(alL$_XXVK@`bX)s`~&q!1UGiISL;G45QA2~wRAG7@rw40r9I5P z*%v&5q}L2jAc+GLKLyrYqeV%haehWVn$6DO5egDKag=+8_&$$GEBLB;`rwu4S>BTz z=1rLYVbem4Lq5dXfZJ8OJ=c$-J6|P~rK?or{_yN!vNLrqEF)R*x}~8B-&^HytfPmc zFXfDSnb%sz!);TrL9h(b&$;aR?$-sRs*b<3qsk1QlAAMC3Y?&kjPyaCi=gpb7v}%& z+RWEj$RN2htX`1vy{dWPDA%)+7}(D5%c4rUm^mlhawBpA5t;8Le)fx-IALLHgX2$5n5^xag7-BQwNv*=tV!Vhb1NZx1t)RnP)kHoZG4sf3^9`5vv;!kBn%=hjP4Hw zvk$KG+uGdpJ69go{f6EWkF*QNZ(-<0%D`J(JB?^Q&)Fcj%XgM3ghM4;dJA@BSSv|uWE>b{lOiAaC@ zfe&6L{(gx$`nWWK;d&8RQ7Mx-N{yYY3QOqP%E6mh(0FuDDqCjq^4QH~}SF6v>s~^yqAnXzCB&`{4-_QR617Bgz5nWTb&oUjPt8R?|00gd2 zIp&oHxqC|yUeP*41&-Uj|;D9>KNjb9x28Aj99#s2A^RM;b~?`g z^Ol|U5>GH7Tdv*|v?r10zWu6iJDa+bB%GyijjL#!FCX%7@cQQmI*84pvwy!q{|@*c z{HEQKZle>vUfe`UT~|f-)@IwpeFu@^fB!(oJJ#6x#LIg9pe~;zYs>S6dwU(v!@@NR zWL$;D^SZQs;em!YG9t0^jgaZG!>R9|J&*Akh0o06Q0i_#+w~C51B*n62Gkc9J>-`c z^%v%2nsxW{1yfM@6AcTcWgh3itSZf7#fw<$X@w3mkv29f>)b{qjR%Mg5_=bQiBV#v?|5kV>GO0UmW(Yv(Ne`1tVp(%uywKqfONv)q?RoUGU) zlV;{4agvHP?-906#g)vQIg^?MjzINDZUy2f#%&X-ehp1 z7Ih~&yh_wbd(N-7k%Fd}hV>q2e}C?0Y`d4g?R$$fx5dZ~Cs!DaSlP3(Jp-g!+! zqM`9)CUg&UrMJX&xS5~Z`)YZD9mVAJgnxSO->durm>ZInCz5nD$t#i!C2b?BAXg|kx=HgMDutDV_W|6Yt;HxWJbgD0G^6pz-sXtPm;f&?8 z-W?LrT9lTVWuKqNmpkujJ=Z~PUVlT?x3iy`zowocxf(~C#plsqhpRpK$lfJ1EV^&KG@J*}`P~i=+*|9H z;q0imRQ0q98v?Cs^>f>N9l%B06PkH;tv6Q;SI^Hr6{PBzLtH}o$NQ4k5DRewPZL|< zZ}MYsG=!!5+5qqCYUK=ug4$91G^<9Hg`fJ!&R?RQzqrzr(Qp!_4q6AF!h;z!zEkTY zOGknJzntVmuE!ySY57D~z(A%oq^8e8@xs04$#2BF*R{j{O7uU-budI3{Ryh!46Z!# zM7Z!UgDF$2EtqBIuDQw^6ZP_&RYVk?l&o<;a>@z7Z$Eagk4&$zZo}_K{kBA$D4H)M zZ_^A%|!n>v09BMviK1i^JJJps_5No&M9NnW6-j(DAMk{ru6>O&6QvK zhXN79iRlkj7Ka1-7z=fm2lw98p;vLON=oW)K`a{;I}D5s&;JI7 z{U`8mF(H8>{yC{<22+PUK=8?1wvDsbT{|5?Lm-622MoG9a*+Iw|6}<7qhM!{OX|#} z9rv>E=)Vf~f2jb^c8pBZM|2zQTvmb#TUL2MG{{ZZMFk2mrKxEWL&o)><}zSq9;>&g z!gh^_)Yiexo)o^&Qg7mygE%Fng`jU)pP1o4WlkIKR)CaB?MxmqEu?=kBvF5Sga_`G^x$pi3CCRo)FO9 zi%mm-hbjSGZ??I;sCE)n&=Gpy#ox{qn{KsRBmVO(?%)@$6S8+ zVj!HXgnn`ZQ8b!(&`KmSX3(k)4Ltp-5))F}w=G>!jQu@YNqoVU=q&{EJl=?&A!wXEJudCvl8+N#?pfA)R+XKAyPghl!6v*k~-Q%_rqkKQ0@|48aX_=vhg?F6@o0!?0XgIlho$SIb{+L zb;j$PJ~@Sy>moM10j;CW=*aSse+_s(EOm&P`BsOcM>@gYU6y9AYWfxqgV0sUxqg+4 z>?h_1Qw5FGUPg)LLlEpHN2CIehg?JK2ob&=WhtXOL;c9Q_(vq_n5rrv-jnKRVp`4b zAWf#rm#`E13*L2hVLvE}?PWqWD_B43qYIKstrZs5CU$#A0YSYbN<6X*L0*kR{y8qG z!;z`xS8t#hm>56b6D6+-P3;K1+_V+)K7V$^zIHf7e>`<>RHqU+NYkTHP^KcibRj## zkzcy+%xIB&z_Dp#4{W&ZF>SccEL=RfC!!iWA|t- zGDjGVLwk(^ln2Egvsl)+B-DQ;-EMo~O!-!9c+#YTM(*0Hom7D@ZJU1fox2~_rTE%n+<6C|u=V5PBwUX?Uv$mIvU_Cs?sIug-=Z1`Syfh5 zz4Dzg;MZf8@(8GKS(K;AYW)^r>NZ=Win9H zx~!3(G5cIXlYdMq^lmB8U%X1}BMEZrM+$2mz>xF8VY@C)KgfoHbfL1>zN%TmsqQD{Ivfw%4+18p6UpIM(1;4#!6^ z((H+NfOXZj#%WP|C)T zC_6obtz}u1OA-^wgNnv^9DENp8FIF*wUt?utTLmSi!!$31($2Oza%lz#rs;{GV-zJ z6>XvQN$htQSZ+b48*lCmFI2SF{6-yzsgGx4eFMj!2#3Yx7jzdze*NnPV-*x3p1zA| zRA#w*Wx18C(u5^)4axLJ%wAVOoLlTAgZ%H?3D=0EG5cjlwAnMFc$ymXjmHcEuwT;e zz0>o!?FB$IYGFJTE#r4l0V+ZS$QfVU=;#b0`cx01xj59_b+o#7Zb{cul6QfNmQUhBgQ!P*xE43<4s3>3$y%b!%<~>;HHB(lSe5Lr3L}A9^NM~f@w!tUo ztBtUo_Ud${;ekxPs&)jHuS{#0HJf^}1cJm6X!)&PM`O=DOK1b0O0;_4<@g(AbDR3% zsaKq^%X11qup2zA3Q37m>=+e$F>{1QjDD3khbQ_H@i;!Awr{JfeqI<~N1bF`;uxQ` zMKUdGUQm(6E%9>~+pK92eBuSKE9o(wQlp$H#-hGK=v=AX$7fkdkt9@!FTgv&p80Y1 zATOLdf*kr;6-%8rjdiX>i|6%{7s|TfwIPOO27SY8p>mlAXUzHdT<2uh`rw8=WvrC( zBEJ%X-ZO;aq~t^GcW=b8yJg*9^y_OAlcg&y4z+x}*1kw(>4U(88V$kQu$s~_ry5?` zFV5w7aqDinO1qTBb3_vFxg6SY)aVr|K}p0`Hq@DQex(|_KqR_!MQGXLByZ&Wz_0M1 zRkvAE5+EvXOflqYUoNA&TI#JLYHi5Ea!I~OeDUp*sVEQF(kLq2(s?_eewDU2Tm4}P z338m)zNf=H-^|SOUx1Hl{Drjru4fVZH=xJ@xfCY#64l&|XLS`qU%tKW_?by0Hx06! zh@8H@hS+D%`ThM*w8s}cPvFsLkZS*yi_0>E_P;UTAs{bLvhseXd^!C&iHpFuUYn}> z!cxeScKPB>ImAHsv~Pc3EPeX%_Az#x#Y!u@5DF8ILFxoQo!YjFSZRHgZ^#v)U)E5E zsG{t}*JOGIRUjXtjblDW8=V+$rQY~harv>$M{rJJD$24um<;3;Y(-UU(gQ4W{ z@92pgYtPzs!X?r!JxBan{I<5ZBZKF7@~53yvXN1T8}h%txkW+3kE&l*&KOBMI(lJ^ zmR4WurCHXfeCCWn-4jPZ6ZdM*!DXzltIxL4{)G1pqm~*;{tL)&e5NuYw5qR$h+SA*QjbVtF$B0eC zu%{EuT;LoqPJsvu##g`YwcLp(mJb1J%EcD2jo)XHp&;~di*=^M4stw zzu)-??BoPmg8l+m>}0l<&3@4R*hKu@huzv+hVv0d;0zjY<|+1LB_AFC`N(hIaP?n7 z!1Ke$DiT46@ni29+y4ebB8~`#V~W9IiV;6OAs&c>;|xgYLL_`_KODSo?bqwR*A>2x z&%Yc5=Y~QgVkF&0`<>^X=h*}^AtdoL{C|XAk3D8i`0Tvz4hxkX7s%d&`s9#-*Ogq5 zT9*AI_W9UTzY!3N0EteS*~g;M#rcvWkeGW=VJ7@segPnZ1FRxONCAD|0iJq5U}Zjs z=)41ZP_HXy6aOVF&4gF|dCI^4 za6aJ(PLL)fcz)jd3A+cGw+;r_gu>oK8Lkby-bShZQ;px1d3v7T@q+`P5b^LPfbhtu z?3ki|syfO}GhzSvak$|^(?ED#{?G)tefU_>?8AZ8+p$lP5P{br<6x>VY#f$vsFtR& z+~R-VAOGY(hG@XkviB1J#Jf=>3hSR5gdJQXhl$G~P$$9PJ`UMXPx_B-^|9xjDbW4^ z7?Dm)C`6bMRQ7J*)o5*s6Cy5i-8Xxb5$4(vX3nQ4#Pj6XfGVe$Jt*hD>qZFxpO5N2T0L&YSSjdn`L4^n@^&!;BOMw=)aS z1Hi3AJ%gm&$=rhsyn>t>F_nf*$ROngY*!cdqKXvW{2ZUe~G2YAx|Eqm&kAZdoR1W!yr*1}tj8sT%o57oD*u?Zd{+`{F z|9m8+29@wBM`nO1D!VA~IshCXibzbqu*W^4@DH~RERA9oEsiFS!R3GruixaRneYLt zq+yfL_vt$gkp9D+58q|?LS`N_M-Q$kA^?C0ycz%p_MlI@2$N@Vf;NOMjxY+(v3y`1Hep(07(Z? z*~c;{qfpr=P}v_RgYEHS-;vT@jr=p!^FA=7m%FTcewP5!LFX}#B@=|c=y-gS;sW6y zecXctD~do#`ySGy&~ZS>38SKjWHi*`|7f1`t|mxZbNP02jG%HrlIvtV>jtYpA(GQ* z{swY?o)kc|M_6$3Cr4EF+zI~IU@-~I7tpIuc@pBDK!~<348NJbhUfs$W$ZtVN6B&v zG1vF+8$u)g0>CL$so9w4XPd0TS(L^xmNDF^{`v|Wy&M*J7xcD0tut%9(BUPLM zw3(g!-r*EaGJ*_dIZa{{%ZBfUUA@F*EEY4qxBPNB9EyHd?MA;Y9h7EmXu~&>%q5D; zIPey;U@sMFdmI@Cjxt+W%^o*S$Ty8qUtP-!%qLnu+avi{7lo0uH6Cle1u%r*cB=ZkvJZ0C2A2xZ+&xJeB8E!07_U#=#(a+H-l?kVpN8u) z4hZ{k^aXI+h29&?O%W3Wknn~l+K&wasCQT9CVY9V%b5Lwk}|CRH#;tdmzv8 z-vfAKD)om+_xRdF1dA;bl7X`MGNO!tDG_bMey9ax1@S_? zO&PGTx*>$Rv8hHZGozw857Re|;6)jlkWu4N$|gizFxkhT;CBn_faEw9-AO;vfs=v;k&^Dwo$s++@ts@gFncJ<_B%0{n0JPCf&7 zZ+}o#o??I~R;)QdQywh(!BW#g+d79Zm-c12n9OpQf9I;N zrg+nZd84fDn|0OAq}LYb8km#m>k+KZYB8?wx^s8q?^Y+Ujzq}?(ckAE8JxWV=1pqi z7|_UL?XWRGWql?1L1`pBb}PHe-ibjfwQc!9W#D>4ZH|Z;gs5_eFI&lAM2spT-t55l zQUnndVW}f@;Uzw&$87u5;tfmiyMnM(Yi_BS6Q-;yE zl%TQi!~-Cbf+ECUx(tl*OTYPHC(!QKt?B7~$dWSBc|A=9aIyF_8EJv=ZI<9v*e!HD zWRIN9`owz468nR@$1WL}H`H7D4HnuZRNFWlN23K@OU0VmV3}e~Lq6O2;Oq($fN9k% zCjZxtMZ4YN?ckH|7L*R5P&TNn&;VTp0AbRip#mVR07QM?d%Du8&3Bkx+KDv=woXWh zS?GRld_T}hgr}GG(UZm#(~K5Zp%X0%+nyYdd=k7ULzh1U;Ii(@VOcrBG$hag2KR<(i7*~ ztmP6j3Mka?r?|aKTlhNXF2*SdKT2ru^k-vuR#85Zx4X~)c6m?nlE``l3K-v_y$L9f zsQL*E6ME{e2vZT&Z<8)0pw%#6A=n)ql!`CFZy-p(GKpmy0`r}Z5Sk&o#+)xZ1h%2Pz&IJEIo}M+s=nL=ZNi0Y_xoLS zONdHZlW7yV#om{U3A+X4iGrL?LU}18Q_0E`9ARIxYUq~8Fdzb;L{@xQv=kR!In8VG zHh|R6Yz;|j)&$k1T{<-ziuq<82)kbzGk;6YPHF4p5*F$wmxof0tjMoF|nLy(vU3@2G#WwD|k&N4NWit?NZ+|P29<({M z07{dZY+$o0(4a?%B5>k=-+dVDBPo2CEs7-=Oa#N<)0N8$bqWs|RM2*HG5zCH`#zHN zJpAJ6)S^rBkQF@u(G4w(oTO>p6&0p$5nHf7y_NLp7r^*=$3m;TjPaGPTQUgR#aKiR zM`K`LZTBorOk2S2XbjqwbxV03#*5EzQ%oN}MKuTGL zsg!_@sEGg`xeSX*Ll7q^!*HGFWrD7P^U=eGh6`ZcDco#?)~~Y=cuOd1d5yEwsr>Co zuo#U^8t@Qj?Eoe zP^y5`lGYs=R5h?@%rB^x2PLiD5MPNAaG20~QUlb!?zg(jM~piJXP<+L_eu(3hy=HAdHrRc>2HzQiymU#9q2^$ac#=yDlLwI$n=%6&i%4o3sJ@ z&5Ml&Y5lMF@KHW=kaHwP=3TT=bXkM*vL5pCCQG1<2Si~ozn7>6+7kMAur-`$Hc$2R4o-jHn02DL~9MZoqI%5^cDG3m)j$Kq4g4A_w{=w)V z*q;by0v@A7oV9e%SAm5oo=nx4>o1bST=qOZBrkqAmg}ho1x$L+60$dqeZ1f#vBnZI z6nKB}S)GDlgv?6Zda8fk}OEI#t>qGHJ&GpvmP-iJYUc}Ks?WlP8JJ2R##C?EAHpq|IomG5gaEEzHUtM zWid*ZF)jZo^e%M$>iws;s#4q$l9S7lL;J!CcKa5>OKb(y91EJ(f?FT5-hq_JS7^$; zp`)${7%D5hZ_WT2AkzeSrj}oTxAmnXI$7*-pP3gc4mzR5dWvOBjbc%-Q0cR!l;i4l9a7C+`Hp3AW< z=vg(;dQx%1vNat(FEkOB-5sfisM{=O-b@GEO$cwqs~v^s!_WH1)aWCtu)MRWvQ3t} z1>|vP)r98v_KDS6(ie)c$eJn3F~V!BSN7pgBkQn4O1!Rh;kV(v2PMRt@f$wuNXnlB z9ie}IZR5MnO(UHZitXv`85WP=F6iv^zM{1qj2JnKQZcdHze@GNC!qH&ncBJ%dye#y zkipsVY(MoNb~_u8q;5Gy#(9eR3y@(wTE12TCbN*Qx?C7Z@EYYh768kxn*IJ%W+=hknb_?5dRhL-(jm?vjx zu`=C;A~1;WDj1F}PD4XO21hQcaqE^W-tI!M^v_i*xNvky$Q@UyL2W%a^Ksg$O>T` zHu_e@z9Cugk;8Y^$n`C3DwWNe3K>sqg^pE=AV^C77?|x4!5!5j72KNzK_?Wg2-y}v z9a-&q&~JaPv-vM8_5u?TXz_Zmj6XoY2Su~7%4wU01Ivp7+ z#-64n``A{I9Q{cLu2J9P7r=V=B`>W3?W?(V|?7;2~|KaX*HH z{uEl9+mWvcjCM+uo-;=7VMD9W@+MfoEFZsq`W|g9*ZA&&`GkCX8Po}eT^hUTJQ_8O zmqpf(=Hl*1H)w`iJ^_8xezqd_TKwpJw$NOLK1F`BV#7~kVVom8=GalX{;pJ% zj?wP!{ZO0-b;sGXBS+)`69Q~CKE`npb_JHR)cMNTI)sZ&?fwV-J%;UXDW<;neolGl z4Zi>$g6eMlKxjzmha*h_>|z>iM2Qd>$c176`&69Jx7c@@AQTVA3$F6pxv1#4B-!%9 zHDB7>lxdocpIOhLziwaDeben*AjhzAf=_WmpO$%HHfr)}gcpc0{T^O})MF;yX_BZ@5U-m|+f^E6C0b?9ytE(^DmH za6_+)mz7v(2#0^zttyL-+zx&(4uSOe7_V$q_gSITE1{EzNnO|Xt)uy|n-TNs_>K>^ z?#VaQ9Xj93D;@1E>%Jjp7tmfqZ{c400e|?Zx~4>JyVD4o#VdaNP_|I(H$&m8XgrLFl6bNF>MkKHse|0I3T`v3K2c|KE+r7>nT~Hc< z-4s7ujOIaW!D(la#hG{WJjiC;C%nnK-a@$q#ULzi#x`XY;>?apH|$L<7)YBhyrFm| z0&+F6`2q5l^JZ_yYZMD~9-T4S;Ywj6RN@G%b>CSi!;htj-8OFGd+`=h9pOkqvs{yX zUj+ZG?XQI08KJ=*P($K`9pr@dcxFBj^HjpoI)UPa7T9F6Tsf877+@|ghZ-)@Ve&%| zr`g&IQrS;y+uq8TL_tK3ChYGrjV+Kl?PyF5TwX;xNIdKLg0P(Wxt~E$@aIiW3~Wu? zbz!x9(-z9zt+M?5_l_aC#;n>Kf{mOX0)K{7xZg$ zxv+oK#oU>^A7zscd2MF-kg6bCj)jpG0m{{%8TsD*7W85Sx}S{ic(^*UwnqThPtG*b zwj(b1B1#CR%=VOhH^Fp-8Cz8heogC`1W8YdOMpSoicX&mugT9ow^uc-*`=p~vD1B8 zpDgDbFVg;tPEwh=+2F%jE~>-+d0bHNMYw7b>}Os@y4MlPu~W^rCT2t6lrG#&43L49 z{W*4sg;bB(*MkOl#uiN^C<+|@7ywqH)9Fb&{ke^Txdje=l(4!^x5SQZR#5OJe;>7Y zn@3`|mm(X3@@}eY`9~lE%bv8_u!w+m3<4vef!~)eD*~jSO5$_+)efwLi!rKb!lqmG z&9?Msqwm}$N!wb&v|W|u$;>B~2SA!g*}-JOns*%5w(b*$v^?onDl(lPI-0J^QOX^< zAJXVfu*f1p#BlY|;x;z(1%C9fk@B^8e`~R1*83jTPI1!1LAM-)QTVhhu#}KHj%ij| z>o%1AaqUr>4L1LO4)m|jF}TWiD>BhsR_L_aX%)J2|0mZxXHkL(PWyjmBj9Hv>@L0+i;rF8*|vptd@DFC5{EX5-Rix71!1C5St|zvey_H zTI)Z2m^I-+#ohygc1wKi#&IgZbeZe8Qly@;fkW8Kwk##1G|V)nV#wl@zqS>%vQMtS zsG!e^aOIm@@Z$9`Lk+g&M{A|tn^BL`To0IvQa|ym*B>IrJNjLU1r)t-qmx=FD!0Af z_q4@aA5HnUH7gB+hGebRK6@6Gjhe9LcRMO3f}O%abr9--1rx##hJk^G zgZ&Rj7z&HZDS$%^a?ToMLe9x4yK+sJsL|Bs-%eS>OvBV4{+_<=RCH9GTzT!sisYpmHAra0wt4k8`3@=gOb`C%4! zk9GA>QBeqnEr^-xfr(X@r?@yorzAyPS=m0SP*$aKrrA+f(@L4?Et_)IZI&-X5sMwW zfat72$-b7Ejcy={)3!-3iDohPqAmCmo~PTAM@=H>!xhrKUSV=34M(vT-a*{gupT z_0i&T(gJpD$_mmR3)KiwhZr$@*yL5|{Nf{8sdI&x7YdmJFLx(@HTYvK|O%)Hu}7nG{srhZ=IB5{XV^i)oI`qS!D=nvW~Z;BA=H{9t9g)u2h~`_OS)2sMd(K zve=vFSql6Z$xj))3z1oQMM~8&AAZ?lfZ!PV@h(d&t#XtmWo4?euf^VH-md%iTzQT(5k!r5kVp>3g#d@8}70GhdDPxFjTN21;CH1Na!Bk8--}W+*i%Ph>%X55gs`r{#yoE;*o{%B zQt(pX9*~POz`vBNsLsI~3N#q?v6MDnl5mhuDL!`!M%UN83oHgrY2NFenyfw<3x3*X z@UI63#IDqV-a`JTbT_0Dzk6yhCd8!Pzv4XoWQ0Uy;V%{GUC4bhMfKnP-}#&aM&Wi_ zZp8e!m>p-oPey~5v0{MvzkWIQ>Qx52<HBu(HnRVhu*EX33kbVp`@5*{xBrH)!xY@^e_`4`!&gHH2N?lzBFI(>5B7?ysG(bo82I1mSF#`v5 zs$!n*Mv13T@nRRNu)mAUC;I>C1^S=l_9?OaE(_s7%KRo*bJ)jHRP4wme|=9$B1=s7 z%3>9-vesDNLpOuIrc-^dp(DVaZV(YKH^o9zO%>lOcS~rh`_?BGlto*0CGCW%9Qhp~ zBD#yFVnemcPFzlKx;IaBpQgxTB?RuRhd+}{=KQ^e@_tt2rF{X6jJKX(DA<{HQ{`ng zVLwWGFS<1c_9_8@zk(2xC=L7H|-I?GXdjRutj^9kbU**CmcLMjXB{KBz-Q*_b0 zuFt{M3u=m+-ImIApu@~(Lm>gmlr^Nt1-Ljc3FaBkbugJmJlgW=kK{|)RQIZS>6+z; zt3MyinP#Rs^Pz+^*F2+t@v^%Q8bfrJ+FKd*Wm`6GJsD-YBWW99Y%#^82U?6a>c_*g z1Y}FB=q$6{4Ai-)Quqck%BtlU6n*+MY9jB#gdqz8H$~z-4Up9$k!!3Yfz)y=PO3XC z^0eV9xuglp9?$O*iyVDJol~Cfx0IrwE!91uK5<8(AwT1FMHL!2yqcfPPUAANe*F!9 z1J4|7Xo@zgt6`2oU4eeu1XF!y({W&p5K|HAb}7j)5V48)o8as$Nw6|X)BX4JG^2TP zUHSBd-1i^@BVKjlo6l1@)0D!`#mGxlNyfShm|my#=*pkCN~HY)3?r>IAuIo!`QoNO zx5zX?xTs|(^3Epis#8t-v*J;ARmgo+GUJhN7BlIc*HG9BFtV7j zGJ-HgtetT&xDED~iaX7?%5zjoY;j=XUsh0IBhBWcT}O2$ZBx%jx@+9Dmf(j@3ga); z<1T}e@tE6xm;c%s=B-#7yZ}m2dNotH*GH(mQ*Ii3`lsU7JTTc9R3D2+VQ@q4#F<(j250QW5nk81 zkYG!MpCW%Ud*GyvN4SA;Zn*$(mQ@{qVt9AhCHeGgURu+^+;&22KTn9~vAU@SL+xS8 zrO@96<%o^97-1sz>*QLU{Z2W8=1OSO+ zSs#+)iXISM1gjXn@&|pcTkM85f*8Lwz(d*Kdd76aANmV`3wTuH{F|DldWpJ}ei!RK z@&}B|cD%2I3Mn6gA=Y-k%lMz7Ks%u1MQ%+_&IvQv-Z7+gWI@k|IG5j`+d1juy zg3EOaP?26{sulQ^EK~c9M!-Cc$hE4qbWP;<2l=f*bVl-mN->(-&sTt_=nbW- zg$pHNU8=tTGOT#TKl_F*pfF#A`cj9SIRfdcvjSIM%v|Kmf}XRLDTc<0O$J*u!*+ON z44DS*Wd_WgG_3?T&B}-vxy>DM>qScK1Z7!a7$x8Ca0((v6fUDFNh47=jc)Tz1g!Zk zzlX@>%)G67u_Hy<+-cZUz3Q7~1k0HP)_GjeY_agHh#AUyt%yiPY6T591Tn`YKTH$W z^Prd;bk1_qfk=AyB4K5*i0pjCbC95{f0*Z^U3I4gu0ChC(iBfvWGvR?+VNGaVC^v$ z6cVeEcO>sDQP|8ogIf4pd;+DKn~CEBI2;T8zPYO}1Q@-LBm?hTIcTLkOP+qmG8JRA z-I%0{PbpE^vJl>!&z0wVP)R8)aw4897CCZ> zVYk9gS?62zwtDr7BO15RbW|O%>0Nqj$%`bagl)~qik90<>ew zry{$$vSA~jcWF;@@_B9pw)-f3bZJud%ui~5@5^33ZEl95ue4FHuY3 zt%t%sAj23=JVT%A$Qe0CM2w!4kFJ2e3$g%Yb(TMX9JSGcR*>~NWQ!WQsDflEzo($b>FvCF|2>E*AkUhU{6i(~ zH8S4Xnh;erifJy5TZ3OQM;LPmvPe8N_t|1RrK%j_E*~4g^WE%-5jUk$#@&QHsPL#k zCmsbH&Daew9|W+)2}yt}gfz!hkU`vZoo!NQS}x_yKT#|lW3G<}g+n<=RTJJqW-Ngz}jygoOK(8*_|k@lJGkKxypJpu!=e1}Qi3TnE!GgWS>J`Wp(*gO@$ zTTwqmI%nxAEor0#Ns#YwmK7IkhFw$)lg#QqY)v)A@39}DVZ6I!XUgYp?AS=hLfzd% zqN6O@jSWC=ZZIjWIpn;CFV^Mq*%s4ODWQ|L#_Hu;&!L^0mO&u-NFV>5L8y{W1JSus z7R4)X&M!p6)^BgZ(~qGTOFfgRZjoGCZG4Y^N_C7FHp%V^ls)@K)4#^BxVHg)^LG4L z%HFlFJTi+}m2GISE1`Ut?E;kBBL5A-u%yvdz|%>z2IovFp-|IOCp3G}vA|;~zxYJv zv^G~9K~EfS)3BBtQ6#Z2^APMVzN-DeB4;tDw^*9OLvEKH`3kR-O`|lw19Li z5+a~9TMM4F|7DMfU0S>9ma$9QW zv)yv3Y_gYFg7p?VjaIH+?>=e2aowzhzq_wQ7>D142;Rk5f zos=F+^zeM-S(&FX&c=KOXON_4YGD>#={r61tWE=snFC&PcaXaGz+UTKCs8&Jv88UY z<=N77qEpP93f=O!PkFVDPJB`;H3680mHiW85zh;$jqnj3EDhdlqR2@RXD2=iWsYX?f z4bOjQ>6pxv-Sd?B4kDuD)Q$E=bSd)z5%Y5QC#M~iA&(sc=H(>0s^;(uzMDgzOgKM=C7s>|TEvs; z>IV!0bcXdg#=se)B}7tIeEY^{Uv53MnP98t$b~l9qcb=6 zG9!2>p{%1bCT0ZJKL&4_Fc?3E0r?6$Y@G=apT}_vEqJg9;2ur_>#f3vkiyZ-(iR?4 z+Y1)f&8EW9<}pIOOK_b*iV183Y70mgjRW9=9k2Y2(JQ@ikKy&acE`fFd9-wEj`i1u zJrMJ@HLSB6Ty?zBbTy@U5YgWx-p!YIhR2evo?qhfuy81(qpW$9$C&mB${=&Q#e<^c z!psxI#)bp1W-uR;9+NbcyHE@sv{EZ5OJOLc)@N<$x!6uKIkm^mR=jSMpbQ1k+XPxG zw`FIGeXsNcEtC zK?F?;c-FNCy<09q zvC&i`YicKvbxq2WH98qr=s|7?f2HS2jS>=Pr#ugU!p92!2LFu2aZccJ|7*&o2O-vo zMo=!G??DI6$*yf5#kxMUB7y<%GIzDaiO)-NbWw+A=wCWWC~q<&Nx{!PN6=w&Lm$$d z;E{j{)L7jtplamMU8G=YyR+3~!x#|feFk~2UgZdyR#|rb@u1G0yhVjPYApAbWX7>z zrJVcZ7+Wh07hp6Dk|ZLTPb`dpishxHW4p(LgFTCT_j5z=Vb}N|cZddHEQn|ESE8!P zxl>h9H!4teoJjHhpHodX=YK=M?ZcNjui~0Yk@j~t+YZ9~L3qZ!$QVs^HYDS-v7(R{ zARvqDr7hQEFCpLAx*;g!A>F`Zu|N_Kl-#9u&B;9r&CANG7uRk_l#ln?Z*GEggHc<| z`SQ(5zmv>8(`n$NdFT35>ua*RG5?WaH4M*$MuhVF^Z%D~uL2R5!+FtZFeL>coq=^g ztc5nZ`FXn#Xgh=)&VaVkB^Dd3lPPl5!gsN_0Mfv_s;?mxIrn{aoeY?ad7_~2pe+9% zX>!YC;|Mk+&G(0fMY7;}p8guY&9Wz!PC1d&=Nt^h4MPA#TbE|r98jAj?I{l~5RI%4 zMx9^`$m@pHkY}C*`9o<%L7W`&-tIvN24R_r~LLM%o9c z7oOptVH(f^y+qu4KR)N$ar2JZh~AmE_8S(^Y@ZZs0c6XMC!+|kV`Y@eUg2V62Qt@v zrdAJlA=w~-jSCd79(tzY(Y!S~!t_1B!s}?ZVTLA%3HMdld6~{|2lbSyqw9U1c$iog zj5}Ez9QUM*2n=L5?Ev{=bs4j>SjuW9dM4-)f&{_9#HTd57Z3H!lp3O>A)f)3Z?8XrEnd@ZXxM8+kAD$4am+IuG6_BU^}$#NNIiIZTsNvqPLoQOsw5yKe!wuGRu z4X;M~OQMPy>7hQMJ`hJw(cm9H)nq`1Og^?mlb+elM8li`w#N>I-@^;$8eAUYeZsFg3Tf^Q2~xI zKUlN>hRm0D)FgTeWF`%|F<`h%oaLjbq=SMhmUXxpVg}_`-;)Go>ndm}2bapV9zLgd z;!h6n2-M^jZ;pQ)O=S$7*YQf@OUx`D6jdfQ5>pEah(_=;m1#Ax z_9Vp1P;8oOpP!Ql=iF4M7}>bN!L)Dl$yZp8cp>vS-%{T)SffC7?%p;P@$wIn5+_<0 z1V0*%5KiIeW(O3-5XCWWWJVQ0%g(2cRQ7QUxiBXhNrMv$(^qlvr_k`PwNdrTHn!q@ z;}ydo-#Au|0>7C=!UgbQ9_n*4C3oKD>P;t(kzog`<$KsW_m;}d)af=9D33Gp!Q1db zAUC=trF0U#p)E>n_^8(lXsikh{h7auuVcO&QT1u*I|z&EFG8ykL0v(xmFU9R1_L51 z0TrlGJvGu-%%%hB>okML0U@*gHz7h3H&M>id$eWVh7S=Bc8Qvr5@Zp4NIATyDE1O` zLgQFnSfhUtQLn#)pkOL+97?sZP(O9o(?xz5{TspbI&|PYX*n*rZpgCNjkR%2Z z0!^e*Zc8SRj+zvBC3Q3`Kb%B_^J!+}iS0oH?5Ov4greS#+}w}2+*$|~b34GG|DSju zAsp9lh85uz85n%=y885BdMn6o$ZKrxVBkx6ZC_tiLhBf0sTI8Tbdk)+QiO(O1$xt; zBsJ0W4YS}O6?)_y2nXaryB6a!XLR)_dCX`u4y34vAE9+CHRB~0I zE=9_Yb_^VBYsV7#r2`{XdqMVwKfQoVMYhTQVH|IdygFhE@35bOt8CVWl!2@3y88Q~ zASO{JwGeG+ydz#Z_FH}El*t>3%q&^((QQQ((Qqy%B@ou4S$Y=J6pZEsEKF|Jy zMn6*^A@HmoPS>(#F8dW|p;ISp=di08R*J?IxmYho@)-cLE1#@_#zR4fjG!oSpZi%A zV*FiZaz-~o8ci6#h6J5^R`pmo&GW$@CB`#|@bAe6ln!%aRq?+XbeUMZ2cvkLcnnsb zJk!h^lg;{imC?M3)#E8_f5M(g!-x_Nq32+~xaCmma`Sr!Tk$N=s_?iqm(XZU+Q`%* zUOeu47=Td#B4a7{A#!BhXIku=DtTQaRiB;{;+5~S!l5jH{y8T5yRM_V%;D5jAy@VP za_;D#&Gx(&$$4QjT~_w&W9GY&2bon%kiB$A;s+;EVrb-}dThbpsF3$EUdzjb2RR-! z_aP%ZOUR$`4S@Y2PX4f-+>v#fpz*;EOFBAmSGPHMp8rw!E9XsG6>zB)Z49m}y5G|; z1m$NMJz=}hJK)LyOgwOV04Dt3GqBicv>E(;rP*v3Oaf2pcZtqisg;=F{i{Ek7zQZD4dV=^I#J zTVCqP{=zL2y=%zUzHq`n>AjW7@q)#xA-IxAlNaL?IgH-0ndwTF@@<*7K+CBiI@G2H zjz72ltNUNU7vzo+im5nrmz2>GKr!>n>XKTc#6+14bUFv^Zk-!qvf9 z!(g$b^zjyYk1M};d^hnWFG9e6s#mw}xz^AEGHUKzK}#q)ij)0(jkZt_;rU>Y!z(2G zr$sgzId}@7LiKVXMtM`TgyBRNWok)xVug#_Ew`iwlbLsXER@dLFfnlulQ#Dy8aMQOjzlbxU_s?qJ>*D6s8u`^XJjS<$}j;i9^xF zX)>p?<}JMtcZFAahj_+A?s@A%8d_yA!cMJhs9$aQF`3sO{az&u{pYp0W~asVZZeT(x8pD8N9zOWqCOc$LPT+Of@5E9 z+x9KO-_Ojr4F_h)idW(oOQ;@0&zyR3BD>;wx}7rc%AM8l!4ac4={!03%k=^WUOiyGSU2Bm3L7>Za zzKig!w7$VgZ6^M=kwAD=mZ`~sEs~MWp3@+Dddo!b8uLYN!p!7x4`IY%Q7u_jGM&ba z3F22m>Feuz_kw2>j%%K|4P`mg|7%45GV6-UV@%$YsLVZ{mouZ;&WC@d&#Nro3Se)M zp#qVXl%)5i*W+PJ@SAu{$i|#un8@Jvcub04X9xfqMgs|qqzaB~Yl#2TjRis_>Pk^@ zDlrv{23}<84|A1Kdo^y(rGiZr=r}tiV7FnUQ>aTlC=~LH0>2Rn|K8m9aV@W{qrb1^5c%`0_?;}B`(Ol zs&9)3WU;OivxiY44WK+7vq8s{|B8?PN)U~5yBR;%?>UW_+E|CcsEFR&ZeAt_|6^-? zmA-d&A}(g9B*AK9YM*YItA2g!YCHefxePx-8g923j)tgp1VI1y8(bbj_;n1c0l zx0%?{3sKq>!#I}fn;g*#q`aM%nwh6TZ|&Urf}>}=qN77A-C$2$bJQ-O5b za!18!NZw3gu7t$H0wU&gMXhyFnM)y_#A#D6B>h<|T!T(fm&CW)_mmb@42xtS677?L z!_SNvB$aWweE8}nMH}Bia7@V06p$9ZKmo(8P zyXJT-2p0nKbM=$3q+g?c^z5OM4lye7e48Uq5X7Z1s7*z)_|$P z?|?-l6wD!SnSCoEIG7WJTl^*JPlyQ8x0kZKpuO9W|Mf~e<_5|^v`zp-?R14|bem)l z=;`X^f|<6HfQiB7`&%Aq=wNMNCO)ZP5`vZ;PLY~6RxhdY@3?36@1Pur!pT9wqPrKz zRGa2za5N(BiZ?hdQSmnf{0-+HGYU=eTiV6%rq~!gH8(fwwcpC!T0qVmrCosfvrgmR zxPquX_?c(2qp<*?(m48It42FUSFU&#z)DjQbAj!eu& z_;u5%9!Mp@O7kg{F%P8it3*c~Mrs+tGlgE0FjzIkenoht4x`z0#N(ZTP!)wDg1l(HxH*;u^ zuf$%|Dc~+E)qm>2r#ttZLEgsPfOP6p{6+XCQEOTqxu?l2-A>mepA0kHB71C5Nw2)t zue3|5d*ao4r&)#xLM-nE=-s zDk&YZOGUv(dUu>`?7i*xw96UqoRJMZd@rkajictUz4WYDzz-XM>9Xe^AZjPdfOKoI zyTr0aN+4|U8#UCmQ1fyo5HkdA`=#k@N>aKL&q4ES}uTpjDjdvEREg;9CUtPw$acroRXwY*5)5cnFfF z=g*1XI0)f9Ecy7v9~)JKw!=u#SN&$7mlH?XZUP~ZXQah~I5n?{9J6tZHZMs7Rk$ae zPC_~o5o(NU0@rzalY&?OOv}B7SL#1w5W@}RJqtQJJ^qwqBKyA}xu%y~(k;Ckg#Ru9 zw>Nq;<2+{|V?VlYguUc8(SD7-Fmb&MX~GDQkOV|rM&j8U$H81$_Fn@7uVa6QOQ5U=hboU$KHxn6aMQa7c9S_>e zjD3>40!)RWeFL*rWjloX`?GAh@T2IJU$wWqhD%OCF`mTi#75y7a{{i$0u##0+$^Wh zUiQZUrDz8|3FT8j=S z6#lHVPzQw8*h3O$x0My9Qh;KsoJG|~wmmSk{sCDz%jcJ0ZlO~sa`BZg^3zI2$<6dm z$;320dh)i=TtL3YfhbHdH8fKQi=W2xb|Ck2n1?a8aN9~1s1>cO)PTn--$6NX{y&5M zX+zQKcu72QG@qnwwH6@%p?$t_Bu!{n7?NR(_juN=c#nOmBdnO5L=5s{3{e^_OoD}g zC*TKq>VicipfXYQq;1wR!etEzxkp)=_iZ3AThIMK`ggq&g{{&9BqdhH?;xt)+8x9l zgZ<^3IIHh&Bjy)k^x125{t3Yk`-}gKrr3rneNut%Ev`ZzFl1Vx%&`Y>C!`HG`08C& z3Ga4f`-f-!Hlw!)QG;83Yy4e^Y*sm|qUo!Oh5QKQ8V!Goqxu;H6y;T_rr9*Fa%4Z# zmT%V$TS&wzpl?+XF1F-#O~#nzVbykQ3<^ZCd5d)b2-Lxo@Z8Dz+s5>Njn~zc@8q z+Bvm0ZXm@gig=eR4h#h9@Hd6)P2|67%|+QFZ}h~(qstiL$`V&sSaGz&Vy&k4x|;b8 zND1CzM`1>>fF>sqx4Hojwy^FO~r{kWH2Y4{ya0lY?0jw#tj$ zCJUN|QzlPqkg8aWHuyV89~%!FqjA?QG)lAik)#}I+bAcw3Xmj%X8NYiBrB2E-`eG| z9{oT&Qln-%Ezs69q=2|lDIuRbI64~VObFlUG=aXjVXm7PFLjT>p)fo|!!0A<4l$R! z2>Bf%WPRH3Pe^}_=;7ksm>nxtoSt-YHG_za@kKt7OV+uVrMQI zO4HaAx0ckCzU_kBp)Lg3Og`+Vw+%j}DB-~v-iV1<#6yQkjC}i|p&{(J zybyJSizdaF7HLzFn$5a5rcWnkxs?>uW2!V)=uq^8MjTldQPLKn8z+HI=^o+-Vf17~(BBPl72ZOCPy=lNG>qexPlZEUWd?v}ZHU zwJuyUKyF?EjxrQ|sFmN|sqYVgxPy zoZ!9LxdQ;>CojP)x8RPF_xOQoB+U`Y{l@+#$KpkZ&_P@LL^mLfaNqu0qJ${PpC_4s z%{+>mm_iH~r!%`Q2MrwZ*&7b}fadg9W>`8>CK}B&;b}F4X1hR_vBna;Kevh7VttSCMF;(l9o>`032T2cU*bC z=X+$WzO7zYFH^gTZ1RTT(eP9Z+nZ*$mGP+L`S$EVSGJ|%KP`;7R;ER{!p0UamgoO2 zTvL7tR}cSJUu-<`plxZ z+HkEoQl&+Rt-(4w6JJL25+M$MOE~FKLMp06KzqbiZmwA@w;uvJEO)laxbPFvANu#` zTyAdqw)(v9ppjtl>yWPrMuVV$>2*NaiMTB}p15X(5x^8#=YQ=&n)W_G$;xrNhwZS# zWJta|F8XeG4Hw!ew_v_pHL*rUlgrVaMacR!dDxM;u0qLk7;8L6cb|5meO6l>s8NT3m}h999ChRCj1 zSV$rc?7&qr4)nlR@=jQaZol$E!2AxH(bAMreJhnO6?(W+Pec3(MZD0vCB>s1CnalA zqul*mk=P=K0algRT8ySCTf>DCqUSp*u+WjjBgdofEaFZW_z6^R)nOxV#jg{1O;GCJ zxRAMZ!WsvCYp$J|&ty|TWk&(6t!$oF@rnNeB&tA)A zf}f9|l%&P;IjIrJ@yr|=cnXP^THzKY7-~7Ce7())h#r@5eg#ER3Zop6uJl;XJ8hs9 zn!YL~?4i0o@_83j;ubCMms4r(G*x``c@p0~9VHB5K5up4Vla7CX&QWdi zEaN)$*93qpj%A(Z7@&p|o{?g+CHq74M2|P)zk_iau->=x&sl&(-Na6N>R!EAAcyafHEs=$km@^tx?X0EMm_UTxbc?Mkz+@{cyO%Mc=`B6Vf zM1=^n5WTg-7xpub9FS8@(bqoyMGF!{*Z{M*b|>R5X9!-}Lme8@+*`&SAPEgS?_^=034$7?~wqpE=f9h!rzCOD3Tw>-n!UexoR<376A_C3BM%e zk_#k4NmQa#?~?^kNG%}i>wXoZQi` z=pQ|$W|q%q^9=uwm7BmHr+;(yr5Q&CWw}@svIM8qKSt&t(sr+@`X>avQMa+Nku#c4 zUm5qfDMFEk<$edv<%o4!WKfyql=r`*c$sUMn z>S(oPMf1$|3_xZN5WH=-hkyct}$B=c~oi1UqkA2_)muR7di7B#`mG0OP99 z_HXq6Sx^MbViX(Pf@%2%%G-L-F-;joLklng+_W$bCmSp#W!Ol_JfpUCw!C6gQCJh;)?ifNhO(M2M`1-redT98+o4Cdn|#0*R|*TPM{p5=TKg{Qyi86CmaeRP5e% zX#jonP?$a=0>h_`c0!DD`cFblkmYze%rXWTgWqzXe?=P#v+SD`h8?YX;fFK@n^{wv zYZu6@G)%%d4Yb6J+z2o^MnskU=7%~TqR}@p;`|zoO8(xypmz(ss+Qy|C=i)f<=lgj zHs2yx5q}iUa6#QkS()DY5VmtJ#6~9-Gc7m-E8?;n12YKz4X?hmYK#C(joLIY@mRA8 zPkl8J@f8vqca?m`@ibW{eY%Dnb%b_v0OO|Eu>;>I0w;gZyWMZR4lc-J6K5V~BJEol zwW2#u<%B>~@vTuS3NqJxJBS533>jD3_+7NCs3#j#;;qn<4n;4$vtJ=+fkjF1+*NOU;Uo*|Ji@B9 z9ub`xZ*3Fy zGCux+vIcKgBkZXfi1c9Ck_fsXTRb_HCS6#VQlaUVvQQvSc(y<4#5cB=H7MN%y#2Lu z;g^7^AZF@`)}C|zky|(GtYD^u!cqR$gx0wWa0tU0>a+hFBJ{HxT|st1u5OQic4AlH zy`_kf-zNhqZ)MSMqUd*!l}t~wFc!C5lJ2v&30VVqjl)xsD%c?et_{G%`g#^yLL>M=EmmF5RB^j-g6y+7bgI$zRJMYQ*thX)N!7@UA~ zz;-;@ET{1r-dLKtk~fJ%+!ZQJCVc#b56%_u$yq@`YOf)0N)x(N zJqJ9}53F+_K_>O|Ow8-mrs8KN-$7e(!7DQ_17-`M#8tH%c#&(EBCC*JuG7EI=(!O8 z`EuxVU5CvWme$TPWY%WnqE6{4VO73#Q=n_?c|nK4L5!`^C!|r2mB2P#zRYLQn0tsJ zr)tjDdW!fyfOth)45`8}2kYB=<_ArUonJyO(4Lo>Rd%c|B<;PNgwJF|=fP8ey%$z1 z)JSuP$|V>|`i8iGvO5W@I>1vT8!ffhYDkH!od!*V!V39$nKhLF+moCwTU0vt2VntQ zzb2Hg46AeU?|+$Aa0dl@gu~G|*kyiw7w0(+G{Immx{+e9lv^-f=0%+AoM05W)xHm| z%S+Z)PqSL1XCk#1G1iOJrJ$R`4;!j8kYs^&fhe=|o~|LRku6r`&@zUU7I=c7gUyI9 zxaVp~`wB6?DGN^4(4SXo;zaW%@$v5GxV*#X2?6O$+AHcWM&;O=7jk?UB^=`Y*w<|Y z)Mm&qcL$z>5OF@$6G^8N%VT+s@r4BB4X~r~%hR4ZGQrl{C$N%aj*1o9?{nTi$LGP@p4L*J~b0`7_a;S62r6-wq`7HDR(OLE4kumuQ1+@SPq`lQ5! zE^z7{Qk&iOd%oi2t2ULNOjC-wALn1Qc1QB9O!r?S9ks#l&a}~Q3%XuE@mUq372EH* z=udrF^GU+W?>i_r`}U*PSxQhqHQf_8;-Elca;TFDQSMTHV@*bbqOQr*k(sj z8}p=C=H(qh{8+!0YgH-p}Z{ z0~ZVh`PAAfeTldKuELjyOk!~kdYJq3&pi=eOn~LvGu!0>HFE6d=3DTTmZMgNjkE?> zG97PovAs7Kuxvx0l4dDdz=AGkC7YJ5R|+%l7C{wPU?#c~>WNKK*mtR8IgZP77Qa9( zaem>f~>#=UtNKM`qK{Ft!=5a7nOdvlo<-zI+x>R^io*zYtC61_g~YJQ7;M zUHlx3{~a_91oXc#I1?KYdC79leJ8)T?6HoE!Dj>~8b18xk+MZ@s7QC^_&zy>9X?r_ zkqzzMmkPAl4ab{zB--z2P~l-$j9q}-CH#{FKgxx<2d&8?Qi*!@?3Ttc;}3A*$~n3h zaHx~!hQ@p2R0ys-iq8{Ze^9HLDK?8bHfTU!gId582&8KW!qFFIzq&Bd43n#-g^BPR zjdZ$)>1DCgT<%ma;X#njN!-F+X!lI@snxv>Wk*_-Qk5u{pq$?PG27D}is)QN?qXeO zcVyJe_9bI!Sn1IK;?_lmbSB2<^5V{>LP!y3gmqTFdI#Jck#Xl$tY{Ls?w=yFC3?)( ztkMsxRe}0xx2Z|xWz<|VMDJ-TJSJ^T77iIMG)XsOn(15?tOJGR$I-Rijl5wAUtHiuP)NkHx725aNRm^byqw%` zm1Nx*oe7aKo+dp=#K9t{t_sm56W3DJG4HncAUiP5pPS~Oj4fPTe6{QU=FUtw`x{i& z=YBv7T`H!lZ^@h_8nWgXvpc&#Zg$5zCQ<_A317#vAObD}r_`)D6CDQQ_3xl2H#;np zD%3tq!_hZXNDrB|!*#@u@;*6G$XxQg4Yj6#HGbcGDveoqI^JR>BUy@?*Z+c)BbB^X zbW$Ce?m!ay!b&+dBhJf?pE5g;9ztfQwZcxW$O2J;4N_K$akfFj+^E)nmh6G2pg^u*#AmF&7WhNU=;m>}Xz z-5TlU{Q!x(=tN;wJT3Wn-LN@HbZ*C(7r639c28bMym%Bicr>f7pm|4npmdhYAmB_X zAQqdqPX6nDuBtq^8ghwUdeAoxE8l9H{8zeHm6bp*7JtY5@$REC4*`<8f z;8M~x7QPlc(?|K8vaQ9#N|A_r)5VRMIWSlcY$fg?Uh{WK91x!q-bM>7gQtRz6 zSfWP95ikR3BmExUZ7$fp&0W3|?U!@74|gtoK5=b}$)2~heV(^F-dLLXFkhPHF*4?O z-)E|Mhl>>Tdh|;Q?XBDUAhShF4QDWAKF3qpYe4GNP)lFpV|dGjF325t0G(Sk5xCyt z*br{h7>fYp>~tojkOx_uO|3UjcR_I;PG0M(WjnV#JdnaKgkRC_rI+N-*Cu-!yP9TN z@ci61d@IK9LHWpgpO%r<;Y1(fz1GIoBhlCu^z&U$a)l#uvVn;d;qnCL6K0gJ1H~5= zK2zBjt>&MNzYQuabx%K70%YNT`J%F-wykYkmElVttZ1+Nw3&B7SVxAFOJG!!NX2&v82z^f@GpEYcG=nI`}9#rsc1p^3~ai+o*`U5m|NvUHCsm6 zyF~I|8^AyEVIo;iVUJGPsR^M zW{LcytY8Z4(Pj!yVJ%_(A+4PWfKh4e=4migNfA`V$fBL_#tgZ)bJ4YVA~JJ#bJlk> zB6mh&q&XssrD*)jE?lp0qMmZSfh_ikRx@q)h<8E)y++?OC!HX#yRA6R*q2iQ1l1km zP>x}5Fcody>=Kb3S$CS}w?{6dx-At@g92yGE-tJeo8_s*f6BVp!VW3`8l2m!6*iiD zWWMIj9k~v%}ZygsI2)Ix8a_A{fSPRmYcC_|G}2RC$F7GfF$Y_&#xg9dHl0_ z>+}85Bh8IhnWb+RH|E&^Pt?46=W>{odYBYPf$ks1gO6~fCS0^jiAi$hud7FUO~C!i zkJOE3yQkR>9GoY|DRwVJ9*L&D>F$|`F6!fas!C>mcbNWT<)zPKy_wB= zVUs?I^7eu38vEDG69-!}{GSCIxW1foD3|y|6yIxEyL;X{_>+{t&k<-dHUhTR?{t#)@+5q z%Fxz{Lbu6gwa&#B60(!TmmwhzkR2#uiIOcgIKDFbiRF`NY@IvgZW_Bb_?R#*`O?=v z{^oJ~h%YPhG0;Uo_asQ5@ClBPF}x`qyl3uVx$W@D6VJy!GxleF=@M<*t?urIQv;;M zb570;%=UC*^rVI?{pHq{JnID8D$nN+7cE~+G%WUXeB>dVy(jBHMmM|Kv$RS;_>~TQ zBrwIcjsi`OY&?V|OPQohB0T+7@ewpMC!$SxKHN|eZ@9Xkr39&5tLFnRI?qd0Q^A^GCnU|g$?_rY4 zjH+Me%$xE_YxK6B+7#{`YM+ZW)eWf5f;qZYt3hmxL zI^OGy^f`Ma&}$zuEMy6GU?I;NKAE|L@JL|Slz;Eys?kX(6fCEGRIa;`I?o$E+f;6| zb}ZPI?#){^y0F^0({RF3}fE!fm{KrxwOl1Klp9vz<>$?phhSY!jS2!;cEI+PZ%V+r~A^nqB0RJ?K|K!1c z@LcV?W4>tM?#JW%UKZ{$*?sh*QHO;m(yu=uj78NBbLSAJko zmZ8VTqI>G`OW2fDw+Bw*GmTL8=Sser;L1yMTx6=0h~y5I6iIzuummgyE!ba|5Sfp9 zukz^fPepNa!KRc>VC6n7=FU{|TE|=`SQqae#Hy<7=O{H8FBaqlM)vo1kCdDSfO7|492@T5 zX^f+_3VJSoeXKr8c`zMULfbkB9)iLkL?-bm3zw{qqy2af94$>q0yaa!z_ffWe;MZ? zWWHv;Mi9*(Z?SfMr)<8oE}w}7hldtg9fwGn<+ancN)_?AI^^>ALx8i^TdI7E_kvn# zIgJ__Ua| zdqlR6-i83pIOFV-j67iX_9&&noiAmVPUvNghlWV5Us2jzv8_h!+<9HiNqw{>_2|8~ zRrfk+UkIELL3DPhQ4j)SlsSJ1h0s?&= zK)igUa{P^4eU~)&v#B)cq-LEGkHvWRK8K)L|uFl3HAzO^fDGB zv*w!?d(2c)1F0^J)w$L-k5YAA9^YgUO0X`8stNj)r|xfghWU`(E)vB~_=9jKj!x}D zvDB>K{{0%>>6DzVj|$>(NaBK@FyzE+rP8y0FRv%A#FBf>y^jqjTdeByO@|)4$myMs zv!38;9yj@k4exWO&9lcxrP&pdxaE0v7z=fPAzO41fz7_4Bcf_WdpkKh9vx3(FZbUz z1T$C+ctCWV41dz|mFF|s;&QF<3YUm|<3x`{x4a)EXOrmR>s{t}e9}Krxl8&r$z*8E zE6#A7OlLB_XP3;=KV5bCh={D-lyw(r%I@ooDbLASk{7Na?F-I(9qzvFm81?A{RA%) zCQ9w?CU;$D2-4cJ<~JhBw?uzbHms1`xlP}aMd6y>+N5=PrTna$xFPd@Ipko5L$l(4Zaq+5VIBA&cX2>;4j1=*OXtQ$A0$ za(%n0-(IHFK^7_^&5muCBhBm2*0nHe>7Uqoi0&MVK=%LId2A{-d#t*N?hYlq2i3oT zH@S6c87R{-nEGJUr+!q!aJc6jQAnj}#G9}~7p(CG647>NLL?H+&c3C3Kd{n3|1SZI zO*tzV0)GJZ124j25Ch~7BJU{QRP@-0v2@Yna?xW_h7X;SwU~(OX z=<>1l>&=bq{DV6m44GkDuVZxZ`G)Mt$>DAVj%;zfBM~huC&#HnWJ5X$NJaJ z`}#o7kAB$_Vmx_@8X8fY`g&1KcWNJT^IUjFtIXW}O?Z4~iRx;>DzA!PJ5i@42*eEc z(YzY!4Lv&oR6mR%T^Fn)Av{)6XJs6W9s?cZLksL5x)J!d=JJclne-n&5-hoqhsf7f zCjw{OG54DOI^=U+KV&u%KyHRXd|NEWm7Bt(MlDBOE%kO&9*MsE%d)}{nH{@+*&jO9 z{dB0hseIh0ew^rAVd`h#!3I%lxPjp)yYMGc(YD~#M)ng_(U;8$Gp_5?1nK%~hgZiF zjT~7l6JM6wNO7dL86s&WE)5+jZfbqejZ&&6k!t)i0N5&yu z%&T}OF+R!7r&M05k)zK)@2$_o96EH)V;-8QiO-Pfgzmuf2|czXGw#_e@D#piGfqGc zAJGt1d91fxP0EHdsc`tMX9n>|M6NQDY5632_}C;X^pLbZhprWJ3w`(b6^30T&!{(& zs7BA0#qop_>DI=%$>+zGQPD`4KMn$c*TU?Th7ZQIX7;4u_c zk^I07vw>Tc2NsL*vhV2(twc*320eEsN@)lg4p`did*Z$^cDpZKLcb|Ls#rc>;(RDv}Q?4DwXl~vZgCiV|(tk-SWPscVgZ#E&wdxi^^!AM( zRV)9|vDotJf5^;Hgw6PIAZYFRvQ@r%o%BK4T`$63P1PmswO1>B@}}MCJbGzyzjwD- z^z_(?aDVDp>{cZ06j{olgVdO$_^q7%Wx6_yj75TX@0=V_6!rWgB=Y* z@J9-7CY8q?iP(UL;4w(S3-B1ImZG&}qOYzyAG&OZ5Y_!u?~3V?-(Z77o6VM=?~DyZ zKA}`ye(L(9zPsVha;CifiDPDafN4zmqMKfQLf4mGt9(m0@}8$9jfm&E?@rGHNiWDI za~mRGK&V0wDX_0qXf&jTH75_&m`k@G{nnbV!Cg#y@9KmX(W8>1>T7gI4?tSXMVF`G zO=Au&7GY~We_UuSYf1L5Zu|!AIvk&nW8EN^4O9`c?5$~}mK#0*3 zA{YZgP?OWU&mGN)rTo`HFhSQdw4gI?M<@>HVYo) z{86qwZ}&nH%)OxqQt1cfUL9QI!>Yv`xnHexzgqN~64i^}l=kG+%g^%4*E|X8j&a+Y z21kEtK4p4c95UVwwrXi)qg*_d2u%R7{XS$t(A^cecV2YTR-E#CtZ5`=nVI!Btg9gX zz;y>s1&9`r>E0HtsGP#$#;jX9{8?&2UsvBo9}&kw&jZv19t_UIZ}k-?UsE4>Z$X;C zqXl2$NkO{EBh#9bkW}0LqvWxs4qx9Dp)N1{JBhX$#0?M9 z`a%wfrjr>TTqkeBaOc&*mhpsA(<^h!Mf&T?(y_cbn@Y+&-6X1(yMD&vuDuZM^%x`0 za<#lbE^TG}$tkIb*I9}P3+0^S*X`>3299XqbAExfWG*?Y5bGl`jcP0h#8f_VwMDt? z^)Kti$}`FOIU$ZSR_^PjgZnjdx+iR`00cviHTgM>+t;SWGc@(GGBji@g@^s0tmR1k z`f+ztvj|lt4VQnzAJJqovOfSJ&TnS??={k#6Zt6k?4$(E6Lzc@$bK zs#z!G+3`GxSG*=gRf~+wNaT$%yJpiDt8?M+hu=`4{c&*D1*f{`tZ)`So~zIT|4s3H zP>#B0u@8}{F+;96us0*FIFGIa6cRL2`P#P4CM7J!_>yQlIJd(Gh@?U}PTbUM#l{Eu ziF^mAKe{t&Y)lW^mfO~u1!M0RmHNmSrY3V&{poHVxFcF_@O;k*V2wQTCJurPt3sNN9$ z7n>3ZZd9hQ*UQ?ZN)`NW;p0XhA>Vm`D?1>FlAdKh$Q$$KE($RKTEDTThm!J+XZ;C*DkHWI`dKtW&afWfPaReX4Q!VYReW?aqU=!n*Riq z&zRiCL4BY;W_B%Ynu?^s3>Ob!tK1&=pu@G*V4}Nm&K!X$2|D$~&Pe-_v@k(K@w*an z`=haCJV%D1#Ze^rhbfnbmGg-cW^rrX85zbav5`M^Kz zEwnu?$`t4?g5uxX!r`ZsWrmb4T@I8t4(wavq-c(v+Bn1?W3td+J0QY4@Xv!W51=Qt z>RChv&_=(^b%z$GbAA^mnww=ke?b@b9~C9I5MX9joTue;L*Z>8(D417KG;NPLa6U& z4&_H2e|7x17_Jx4!?->IlA7>AkwB3i8$|HgqTOa_1*mUWsM^-S?}MHFYwS}P`@a=Y z`jvA{uf3<8=^RUE12)#l7)29bTom)^t`(1%#}81DuY-pLY}5F`SgBc?rYSK`_mK&o z6a5w{aPr+s2fMLt)+5KwoR!1O3q}9vIZe|8Ry1WQF?NV3Br%`wprFCrSC5gLra8dxV>0G8%?p+?V~F>W@pOEfk@0qo z47=H*C<~98?ocMgpjO%&;u|r$g}|0}GgVlb`@FFRxhxMJtR@ZCShfoh$NuXeaOF$D zu0s$XQ9Kq$A7yHu8&|;=G-$JJDW(L9+us*)txN7b6{Xrv)=ErhK zh)AYQ&=U6WO+HV1U;8m|uE_TL}jjK_pCFjTyd&^7LnKpd+iHaA!cO z-05MnH6i7`a8kzrkaMS;&S=N2!p5ulW_dArEd_k>)y9>KJ6@FgJmk6#^exwIe^%l8 zjFmZv@oD1Akz!z`Xgk&uZ3Vmk_yqiTzJsCJX}l4Mv$x^m>t6{d>h=%*Y3mC1{Qc?8 z7{~NXGZi3vFjBAV-SsTI=y;!9SQu-qsb6d6vjU5Ttir>1B(Mx8JwbmjEQCE!X02%% z@dD=Na(}*ifjkrn)@|Cj4LBXYpe(LOfNp)_IWIwO+Q45^cL^IxT6Q#bBfyyx7yCOG z({9L#Tcp{%e(M8^JPtJ>|LFzrdk#sRv#M?($0e5Th2W(2PThYi$LRs_xPAFoEBl2l zGqpTbCEJOfrbgBT!Zt`g;$qvF@^?W2l%cms5vF2q{zhCuDCTvDh-|A z`3ODU_t;Oh1q~4p)nU1+*~gL|aEgKnv-UP&Qsn;2G+@={aMQw`~{}+1qsFGtx?CdG?BCSj4<2@(#YzQ=zOfbZX`8 z2o*0WtYNCBMGi*hG{q%wu^}z8JqmZHIDQoiZ6FZLM9*Ct9MMcjLd178oT+h7BQ0HA z_ut^tWZ{fwn(GK==!7lae^g|hEVc#=b-F_1GvvT!j*eB6uG|yW7$q?Zrnl6d-nxr3 zkW>{rTepof86QHnjmzgy#=~hIJLm*$+m1&%fwhzeKvErXl9LASPHIHcI15JeTJIY9kc!tnC0U z*r|Jfy-mJV+#~%;mPB7JWyS z`sKuX8u_vu7S+ppL;4xmWHUdgVic<1DY}SRs%SxLH&M zxaT7|v8^uFj}+w@6{XpWxHSsXcmnYmtL+4GN2J0K@sGlSSL>Iz{qKvGD^7V;=>!fw zb03;y+TaO;Qf#>UL&cOv%UF7oo-x}gjj_D)knYCJeNvDw=vr8M>`)7(4q>oSl}Rpe z;tS%c#ao#=)QWjjI$Ff65hz-X*YE5G6u*CU>8RIOvZe09FHFkPN6U4g>M6dBD{oM^ zT$D$o+HRT^5?kr7M(pXNd1RGI;*=U?DlnJ)4WSb|LT}QXwQR)KI2XBBksvyQmtMkI z^TS3V&ZN0;*}*%((+up*`fms!;HG8ZBD#oy0QL}sP|d{59-gccmW;Iws4z8tIRJY+ zDxH^B%vm)E{Z;sCt){|D{-+h+b8Fy8;9 z%SXQ1KgYAlQ9dh&+=n-(r#j02h_Q_xg)Fu@8r=oYc`5@ z>6iGQ5z%$mX}5Sc>yFD$OGO??!d?vvMfLgr`N1c^i~R!Oj0T7Y%VqoTaz#dFc=uemQBS^K>dvy)F*3i zBuETD?muUo5UJ`NCQ)bQo$8-XzA9+ao}{YvsZw)6&ER)J^5u_-epu*_J9Hli$geT8 zmaUh5lbmLi%CW0@AXB@&kCHCZ~4Z`*N!bq@-(W$XjUDTZ~XcHeV7pKodki*dga>b55(=^x{B96L>NfRDl-G%RIECG(m=MWsK2~M5*?|} zGOe+6&*9+_-yUfi-x2xRbc{mKN!L-T7s>772P_Sg0{yW0KR!E~f%FUcnA)vszD$)T zFOR6zU!hyVJd5YSlEVE>^BnyOm289pk~pc)A=7f9KNnh`Dk} zyo6j`6Sx^wePK^tiA8wg$E;5%1zV;MBQH}zMq+N?_Bg>?3tuv9Bgs=wvnKlU8v6++ zr1W??Xo~Kb*nfAKuJza`j2x&bTpUU&kTKA!Qd3j|c_x1>1g0sJ?C@mMHALJBq>qR_ zcH~Pqmo4s^VbL6^Pj%$k%*kei(#M%SZbn6H{%FuU6=h9VprAph zvg{hdaOka(>8iGhkX0PWiCDGN6jmvFrBH%#24d}6a(VYR+I&Wa zRo-W~Z9no7Q_LAOKI-F1teMVrK@$*K>*z&=s&r`8ClQ>*uagWGejJluFDeS3j&}Ci zwmNTiZc}L^TbNc4n*j=HgRMLE-5Ta>I1~C;uOno|=SF>2He#_e;hfpu5I(!7sY$Do zI5e6X4x!I^E@(A|6UmqmLL?vP&}Y#bdXVvDMaI$gG=_GV3ze!62ycJN>9qjm5IR|P znG0zjEjdHChpZ?U$HXPI_>tEK&q#CD>T&!&$K}eLN>%}txh1lN=Hosea(9RD<#TCI z3=a%A;V!48#(pj!J(yR{XY@d?fv|07OZ&&+X3bKifFlx8IHxvF`nbS;p4ral zSP=BLa%>t-!RDpRD1_W#S;*&$tm!Zoq*vVxefmg-Jd3K1#?oeeD|Sr30i7CnU_OYt zS?_&Cf?xqe~(X(RxA1shWjLNOMu$n7JBhZY_aOYU8L zjx|?opTkgDZj&NqiFfImeG#rQxHUL$VD9Uc9ybI<4)!-R9!}yra4y)7>S%w}H$Fr0 z>Ijm?O{jyW8;JO)(c}zQyKMN1G=MEdnkJYH^$ONgUCYcTmHm3grCyv35KM2B1or!q zq**XJ7D_?Bc+kZ=^@;csqwxn0tjHL=3Tn?X=kbiDt2>B2tg)F&Y9c@W8bd%;yO;Pz ze^|-Fa=N;lr}$i@>%%3~uiAfj`{13KO;*QxthsuMqKf2T{RT-bF3F4&RG~PRoA=9k zOQ+Vla(*9^{j$G_ZkvT8(5|%_l2?$Jv}4#*8&=m|>@s#BBCdcRx~FAoi5RghqVA{y zH1OzFvzH)RYve@mOo@krqmNW;c~bCl+=28ce)-alib7C;Bp#SRb~u^ASZb~)IEutn zKG=#uZwVB;L9=@Hwzg~Fpn#4-t!g;fSyh=WC#?`hmHj-~cK$#thlHKMv~AfH zeY9jgzCf`RzA;t66*>8q@9TvxT&~E3|1?6wGL~`!^vPDp`Dy4)HgW!d*-h{TiW+sN z=h%8cCiJAV-u`n8DssFi-=x)qyg^yzL^z_Ra2JryVO)GMn{6Z(G{SW?LnDNKO2A^BBE>$eLrW9*=Fa$_(3bHT}g5f&|QcdgLl=+A7y z{&p1&LBH)tJ|>rq+enf{?q#jRLnh#ri08WbIR-tTjg41}M0wDVYG>+5!_iTTSDBdp zsobKBY8LCQ%!N<(&`iq$V`dCG&ox;|;0(i&+7sw4;EhptVJO+s(VwXU)jIjwLy=d; z2>uCJ?2D@U{mhlH-vG(ILI#a_#!kXy=ynQ$f@3+X)IO6BYlWz z!{u_kr=jHac~!)e6I9PBwT2_szP~qM@XqOnvOY(PNY8-HD0)k=xx?gxMSg=t$~(u< zl+q5awexetvn%WH^TWXjvrfVJ2}kCOY52W0A=?3rq{(wkFQWbuJujg4$|xIYL8@o; zNCvnqjKp({^v!lWrF9kcQEIl*8`-uOcJuGOADmI9VIFcjtV)fztxL{Z0LIW+gX47CO z-~+s2KD^f~duk=77`>EBa@KrcKi%E)?7zAH=6_GqM?lNezE{N__V+e;u`ngJNjb2{=T5MeV)!oQ<1oV9KG=h!+yFfSV=hmFayf=Gh4k$J!ws@S)pV%gnUe_d- zXMuY*^vfepAx1FdwrfCo!WR#cv)becnv*S9OM#B1T$YQ#Kz7EqZwS4PCYX!s*{U(K zDh*SyO_+Eg&>?g@q-JDvI?WT=uJr?Y>t;7!a_}uUF%R|S%QqwmiJOi64o6} zIt`N(aXkEy?EDncI3|PN`^(#OA2tllvhonMeSbzlt#1f7mAo@GddiRH!+=k)sqo%< zS$xOu!Wr{p)>(=}u6vnrv0*g0D9}FOt%$h~X>Ukj#{w|s*T;z_uw)CCEpe4SIe(vu zY-(FU4F1!g;0%=A{k5zMGco4(v|e5_6ac%dBf*iD7X9I1D$fC{;r{telD4w8tbqr#Sh#K^mzZ93dRuw`Y)IaT%$WYf#l#( zw@khIlxCz+4Z`=pTXcZ`yBIUD~X<@G>y_iDcl&M-7x+DVH~jn||On!Jd*sCrZz+sBnn z#{z*A{VQ!y3(heuwQ!LniGIAoA1MeytWs!*LE;BN%Z_D8gYehA4c3~ zg-MGhyCU3y6i-9QBQdkKoomT(Pc}1G?iz=`BWv=l&ex~0135c{e29ZL{zar+1RBaO z;{pa8zDpc5(95IW2ffAVtVhw5x9MPuBV~I#2#!}(pn+QA?j0jkPrWm4tL2ra|J_|g z(3@VEh<-jR`;hju59|Keg2woEFd)=))HyJ1-W+<5pFr#izq=C?dK z&#t+QvoX;D_fcU19+03{)n4%_BgJcII%`^?O+1PIs+cK_*Ld2^sust7#BB@b@3H`1 zQD$_~dR_GfPk3cu;z6cq9ql1KOI@s6OQhahXS|!)-wzj*25JuoWuHAbS4Jej|IW3f;jTs<6HmCVe`ad=Hg{ z%H3AuS8+N@ENOiAdy7&&smWK(WW^bf-`a2`PykQPbN=9Zt>ve6*X;)24Mz`$9)>nG z1b16`kqGLO@I4vzOog)@n>C9kM^;@5SfjlM*Ift;l7vRa*0N}f+aU}oVeFpl$}8;F zKLrWwoc&x(G@?nvhjmzGcW5QnG+IAd!^h18=htYBZ`8sIJ<0KUZ$~G<&~2}ewfAu- zoiNsC$0Ek+15=x?1M@>k&FQ=_2kceQ<|WSb8SDQV82GEqo4>~UDXV`&5D=u^ZYYJT z7^}x0$T*f;8S~u;X*GFXE~NW};BsA`h+==e`T_iLipIO#^t7NLtF12m!n3)gfUmq} zM>HoTqej_GgfSklWUw9s%mj}}L_ULvGUREGYr4ghL7LV_fxVM&2)uK;0HSu=*3LVU{7VY4hItMJVVRUlKk+yMV2 zYeI4_dR%y@;Srs9#7SfUF_osyZ~cL2WamsOBhOVK&x?(EF===Dj#A`HHKzUc zQ0d=vTd|X)O=-s%Re_Sbt7OzZY#2@$?p9J~`y_$7kDT-_>VOweFB)t;ztDR4ILcY| zxzZFuPR7u>nu<&_2E2Fx7)nP_cN^Msp{kW^C0 zh+r3TW#b0&qUl!Dn4~s#2Bu)al(AmHOCxFXwDnGO3nx7Wtufo|y)BY@(E3)gR$#zv z^7*huzjzdhcKZ}NED{{!sIdT6uNW;VZ;i_1MLbI6oh0YJZv9a*QUUI1T5?;KC^x z6VjyL_9k8b-i zL7Ey#F6{o-96KGsC<=ikJ3*f5t0Ou>w&ER%$~8(4%|bV&=6)T-*Yk^z=F?YR?Jq%o zAq8th&ew`sENWJ8RrCkZL;Fh#m0g%XCXjVtNyUs_|Ii?9HR9MTyCOAXjgE6au4V?N z#60Z47dDfouK-*A5U4T()r5QgJ&lRW9*?H05g#^!42sA+Rz2gN8lS&n${Ck%R6}xbHsZuzEL|*UE1%C!?03np6IT{iRRLcE_Z4QMxXkY^!$M zQBnRkgqY5al#9&E$1hrF3}Fr4>j{2 zD3lazi}alzPpUW~llSZgYMoIhGwoT&KB&C_B~iU6*WquJb*wiFxHQWB5INlwxWdLD zSi`*4O#m=~OAVA3>0)>+7zXoR*Ns_x^k}SpiMgmCTBcP&qi8bBD&9cL=Szi>HCD6=Y5_Z(Q@g(esEBYwpH>^a%k(C}%;$LoT zyT}320jvUj$TYsc3eqtBhERB7BEBLLFo?@I=ML}mitwPX@Aca*`{5*JpUHmTTTjSg z@(&WTX0V>j45X2Xi?Gs@iDNWnSj*CE<)PpgD!;#BBI{^AXFiUm)FsC<+bA$`FQ;em zdFML;oCmBql{wxJ{PnRDU=XIo`@`l2L%$&)z(~pQYBZ$_*s_GHY|+C6p>orwFrDNl z9pQx(e{|l=j-f#x*6m%vAdOgk<~RDv3eNAfWNVf-ImruUe=vV^*22ymvxkpcLVsav5uKnLs;5@Yt|qWU_|t?s{UV^@SYhE*{W+>&6^Vvc=?mZQ_SIh^ zK65sz_2q@cU`KLaWoVOMzi?ToegyJ@oEH%WA>+vy1n)>Pe1=1y7cNgP%LGZ(X5fl{ zwjsS=SUz4D|64{_?ErE5hQti~e`CiCCGV9M9HY}1Fz!iWo*Xu+MhZY=S}A@m>B(W! zA3K$joZ;`ZhGW;ckS5Zt5fCRW?PgBuDUEC}A|@3j3@!uH;94HfX4k>ZP0>jY>yfoD^ko${M>yptWjUKqv3nMQ2njH5*+I%#^SItHSJV{CObE`EamF zBIyR17z@+Aw#d2Ro`)qnyxeL7zN*Y}i)t4Z-p{|9Ph2*_3& zC007@7~v*bxV5^!!OSu*D@-IBwYB)aw+NP%m8ScKaM+;X>@1^O`y|G$)$A(O%$Gus z^RfG3v~ChV#wKl!hE;=JC9u$v9M@{2Wf?GG@f(er(Q`cB&n@qec87uTw)H5U9*`7(`JLM<9sQkumsYuzII} zfV^#2GfbX9^?52cQbxPm%b+VlxN0LmP_?bn5LftI|4ygu>gae*!^`ST10F0e{ikxvl%E9lOU$d=P-9zpFpA;FWl}}YT1X)-ow|3MPbd&2d)AnJmMx$&VZCqVd7P8q z5S1%1ndiOYNI?}1E>Lh)$UC#bkn5E8Gu`;k_h$Gn%fBIfZ&Y3^7(W;z#|p;pnkA!N zxxfZ|ah=9JIdk^u!DgV!*myN}ZN*n#c1Ypx>eu%Og{fBP7lLb^HN!JTXpI-A1lSlt zUTJ&G-scB~-pyk3551+M6X}JK<1f_M`Kt4oDy4vMLHG1o!v}X3B+DY+wZEjp?=B9w z0Q!dT`daC7VB8}(_aIUz)>M~^j4R!4aGM+aYu_C37tT7k1Fo@AlscA`Z(PEy=)=Aa z@oJrLzoT#bItu$Rp+(03AQ<@H$($!9*PLj5^|&HPJTqeOaYqw z;aKT80F42|bY#_eT7M8I+^N!9o?kYW!M?!fD*rI#NDeQal`D=n%!DNqhId7D2FY1oVk#U^KTu%U#2eU5OiWC#I#GKC9*PvutOz}LfT>z zxbrHGWUgJ2ibf%9V)RB@ef~H#mPJZdyaEdWYlmoC%8fF`GL$(?6=Joal$hvX9gINl zTJmgrsO_48Ms9BLn#?K16bb3)%t`^lSkmp!He-O`PT1Ye!28b`e^JVoUl z?)AKd)p#&}W9CJ;eH}F3yNFic;nm7#@q)M{LhGb%F@5?t+4if##r^jJ0YT)eqxnle z9S?2MDY@Se9>h;oShdxKRx!hBmzkw$&n`zwBVVSM(bL51J0%hgPP21xomEmuH@K@W z>Lv1>C$oUS=6?)LB{?US_e@L*Toemv}fNlEEcLtA# z@xCFT|7=(vW=bybFuFrW#HExtr4rulnM;^9rrFpAY}=;)xeKSQ>KnqRKiptI3PcZt zcQxiR1t*aqXcnpb5zO7)4cFqZSd2j=vep*YqU|r#x`>p`sJ&|6WO46ZIH}y<)pY&C z{WW;VxDdXyhwTSj2RyVAJ}!B3H3_#+r}N6~8?O;3@xqCn9bji4sr^t#eW*CfQ7flk zQRE=;UgyPZq&PtjlB}FFtG=FXdqN0zBW<}1@_Y<|OdaRf7f`p;%M+<~{!;WBaXx+3YpnIp^!3ym8v=>+_6 zT(hKj(WCTcmS`0p8Xlu2+T$*E=~t0TfY@bDFzs^e+hU09$+|{|%`;h%g$(!xG)rsM z8Vn~!3u^{Ndxq;~PM(u?6ql|q=jO@6nZAc$cyn}13@eWBlNBEw9hImjqOExzYrngn z$jUCoPb{OE$^8KNl_P=S&JjhGT9#}s*D=J<7p_OQDd)Aqf0#~q!EN(b%=xpb=W?dm zVycy_@PWWFYiNX>@q}>TrMYEDTIe9bV=jV`&C!%uM_p&{e&SJEv|i3P1Z3cxThQ!U zI79D3KhO4=#*>^?D=bz5zbbiqR$_FDGvc^H=2bm#NtApGCUE|lM?GL~@W_Ogd+__a zE@`Cni9fnM1|kSbHfF56F-l)taqZCqQyI_SY}(Stf=yIQkDikQ6p?@3HGf?FJpX#{ z@5FCQ2#x&i_>?q0^W8a}pXNXE5lF>apOEh(?k>sVx%TSW|MZvFx*IZ4Gvd|-V_Jj& z^5vBVS@dL+N~v4lb-2Gp^aYL4q0ne^rd7i>Yo_KzNkdo(hv~>9H}~eJu;GsE4U>6$ z9V55muxmpIj?~v1Pf~R*-To+-1lTPq7L70rr{0I4V#I8wZZ6|=;teL>a+h1S{VKrD z`BF4F?!)uO?vYSllx{da!?$tRyB7^XF4!9(Sb4h-Z?7aSaj6RQ!Ob1c(%PCzxs|l~T-d@A22W|H}KG?_T$?rP`%Oz^gJZJAnIb=QwN*V<3z} zlwJE972|{l)H>W@7Ug#|{X4k#C*1vqX})7=_i6jZqBM%$g_NUZgI^glgCH;o$DwRf ztcdu0Q?%V{!}6N>;st|P;=_}^55_;jO#8C8WFvi8`~GzNz%EB~dFeT+?55g5FsIM( zK2nqa6QthIOHy}^{T@)E#k()BP~Pm2RaGll+&_PC1nheOG*F9;1=DM|0OF?;qFaA2 z%6W3~IOwTeB6l*y9aHUCcxl|FwRRu7S31rKl?#gh%gncYp{BlYp!kY9WrOl+&puUy zahH@wux3WO%;2VGb;#~D3IM+4MSv|dSHH$NESrXZgxV%;fHfjRt0S10W-ji?E+3Uf ziz&{R-+$e%t!#!@9UR?1Le0YOPkFYz7`|knZN5$ufp=`TSEF|4T@$`CVA4t;op)rB zejeO54!(KhnW2_qZ}FDWRn1XxxtZ3kM%77gi>%uk-!(Mtkgv+L93UCSbq^o?x=UGY z4??XA?_i)R$S7M!vv^o0+J}hyhCY8hf;`TaKNenK8Bh{;UVksKtLen*jq+PRxGJIm51uVZ@KGbaf4Y-F_~c#d2eyJW7Fy+l6vv!n zsZdxT^ylCjCgnpl<2g?w!I%4VFY#TEJ<2ap>aO3RzeN9>Ap5DjJWqMA4WX7Rus7Wq zJ;ztIyHXuW-{5AobPfH#0|L{a*{A#Aul{E%pf4EVi`SbUhf_`3Wuoaq`EbhWNk%%a zZ2CYo0k3S9(&@CErM6(jlocEBSxgbakszCeemXtm%alRwA)5s@tI!t=k4lvm`mhd5 z1G}54%I0xFb%-rj>u&UN3l4!Nn&LZG@XcVypHf?r9J>_7jhf2OqTfA-d0!|4LLZx6 z0%)PZq@tc?$p;vDj5H!{EC##@j+!!_%!x@9#>s36fmog^fOW1cnkhevG_rXIOJY9t z)nY%xd0qPZ_|*ck6`vL9R%Q+v4SHz++r;qeJDr&EhYy9kzg8>=&gf(ZWf9tCnP_%d z^%V4IsnEKu?p2UYiOU}y4H~4iKF}$0!3YL62) z1#-(~sd(o|=k;Y$K#>giEX%v5ggYYY)*t9Z1d7l=BvGXDAaxU=EeZ5&!vqbn(JyM5 z2U68~@0;hXJ5I>qR!5mEp1pUoUTtl!iDq3JPj{d72eOps<;AS=M%j++Y~<2~?Xn#q zcoAIi&aL@a6LM<}F+;W~E$@jjL#8==n+`jLWFaup7&>7i z5>qT-hZ-rQL~D-j8`K2~uIinUy#HZ_+DzH}uxu)w#apb{f+|>dn#LM-zvIDSrlQZf zex>fFwrM)M3Pz%!5~i4*-$>Sch(EOoY%ViLp;4;DOKr_HB28khJ>sz{K0kZh%8-$- z_d<229~zJ{=hLRQw>b*?`OAP}`H>&JLoNXlMeQD>P}H$i&#dFdn6OQ$Tf?Tjv9nbA z_jpCqWvrG7((p^8COOCBjW&G|36x|TBF~+2wLux{49})EbA7-T(tL-`XC_Mgp30? z{_6yP=ehq1zMomv`3+&+f3S#-N6VMaXj)zwduLg?G&eJj=4HKlVIBlFXFs2eLCUBv za^u)N)QF2=<)pXy?R4^mua8C(;C%+ufSkuLEuV_Lp-sG$E+_ESVnKRD<@W|nMZ|Y= z#dYqsI$A>H26u4pF?vC@$_?8=2mXcCq>cW5);ZXJS)#AM!s13n`2G#nt(&*+!al)* zeO!oe6ZIDHZ8YY`=udxp_WTYBlR_BF3;ic{7^FgP?y@ST?(CKhEqnvuA7b6QaYOLN z5FV*j^8zVG-c@f0pM2XZ?!7hjtlF*p`l7kgi8?92HQ7je!iS5>4cyyK&uunJmkym| ze^bUjUt)<8fOvu5-w=9JY?V^^4FT^?ElN*l$=%#dB$4)>0dN|RhEi_)OnTz_>)esS z($V$O$@|U4?^{&cyR$F=DeJVoPH6S>=d9kAr8R2{60b`RT}Bd~ zA8LSQ3Urxk>~Tguu9KROG<`97FPCo4$?EJ1_zt%Z&+(=<9}l?#ArF#~PAR^iB=hvK z-@YS_tiH~B>o;(uCnuJPdDb{ev0;vqLwOkV#3oRAXQn01*nqYkU1d}+_shW75XAfU zPcX4yYlT6gEt`y$PAeL`IX-?)65P}`!)L&=JzjO}=GCF$o8}Y0ql9tCS9GDqJ(7AQ zFLVL3Cs3%UQ#nIp)aZEzmEx0D&Ig5>gO4<%s{)?T1f;z9(y#Fp}dvLO<9-T$ICLNht0Y$N#O0w z?8v3rx*p=k-X>4?1Fi*R9 zGkKJqsz=Y-n5VMFTutN@wjbROVof^Rzq!Z@5b4q%@~=W{x*HeXF#9+(>zWEvgNpSX z-YM8RXyLP&mG;jyoC14!;Ec2BFB7zRQR6T8#CJQ6eQtN)3|zWZ&G$|wvQ|^8yCZ?B zpYlb_QCBm|=qGNCC%H76Vh6}sTXx}~aU-4t7##luSUV@pgHFj_%mr(T`6KMLAk%O;4>=@0>aluYnPZM5pPrZ8GjC*N z-PKvS)itXWuleFksO#S1#nCN0z9Yg2^E&)|CZ!xrE@pNYS#d&$%06tS5hr)wov!p2 zUb%rp0%y@0*-O@ztGUs=l!SYOV;VDto=90h;00|+P?3V ztYkK2Z=@kQ+(q|xF!Vo|8_dP3P)`xr9DkS98n8Zbr_I5U`a#iK6-|%q=$-LhTfp2a z>>Gl7%?Rwpjv+!^9fv5v8x-MeM3wQ9b;oVH{+pt$WXY(nJuKo|I3HZD?#_-@@9iI~ z^JFD0%tO}9hUXp)Frhyz841)qHP2Y%FB7rEqQb$aG=tO~Rh`pwzxJ8rp$8{lj0#q} zaqc@5m^eg|Jd`2afp?;A!rsJJAQ?eG7gt&PxG5bXshqcc|Bdna4hA3P?zC*%ekFBX z{>Ky=hjId5kPHcF479!BrI%11K(j6DY_du)uex{XnqQh3z7jVPQ=xWr3S0Yimw>*N zhq~I%%v;1hU70II-1XEs@bT=qCVzy(-Jsbeg`Tpw+=I)vk0_C!qcNZ-0@_A9x9%Tk zJn#L0YJJ2&S{^c=8o3Q<^{0!Z3+3a*Ep6BVj0N{`ogZ#A=R5tK%`-&p&zlanQYSB^ zHF=FYwx-Ryr1|rOlv4bSKrjB#)_Kl}3;L5I!H4h*D;b~z6ud?S`zq?$iPr9h7v_Zr z(fek?&IOy!(i5%K^ItBGez}mXNol%s;&`s5(+vCA_L|M#xO4aB{ad%cuZ#|3^S97$ zqdp=2&gT`FV4R+mMc*#0bm2wI4hE}G>RqxoL-5aSfg3mBZ2sl}t1$cUWpeD*v|3st zf&Rg3Zj&dGMjZzetbMe5%_)tJI@W8S8fJ=@>Bmf`VsYDFR8;j6t}mbyh=h`!ctzFf zlx+{kM7do)bV;7AUMklWUpc$6T$%AEzC<&#Vzkk!>*mJWR1nMKK@~dQ5`rG~;H+b6 zgV_x$Aizb;7^%0-kcLw?!(?-0<5i(a4sJP~j>=r#UDYrR{9EikBs@oGvd2`$a|ct1 zDlVQu!GnDy)0MJV*}{*F4=s_JpJo^%XA~+w=Fm|NP94dQ>cMuYj&klwpIc5G2H8zo zRyFmV36)P9#Y+jZEWK52v!St&@G!%B=-;&$2K0QMBFuDvd?uY=*Wst2! zvAm~sz9FGTs+^P9-p5z;$0J1+Nsufl%_$+u7i4&?;W}SxHV#75f~!=U3hJpi!_*gE z8v}*k5OiHNCT(d^a6ug2!TL+;u48{4d6DMGUY*rk z_BR>)p3^^w0Dt%1$2t<5XHF{#A9u*YgM9M1)(?}4iA_IEstL$f6Ns0}s$?M#sLxl0(y{%wk9_5_n0R#v|?A2^1`8l9`9@U(p>><>q90^4( zAO_Joq+-_~T_tRr!n1u;kC%NqPDIUN2aBNY`ng#khGh0`XBR0}WCtG9tD%=r9THzi zkF~9p-W=nG)IJBnI$WseITEzPJ{&wd%`uAS6~J%!;FG}Pddt6#vO$cII*4=Z(yd;w z^6ss1`INQp*u_r7J7yJl%5Ro+y15rQew6!q*yh3KTc6?@y{_b-bp5tw);Vuk_`L0a z2xxP1ITzl7%cIs@qMu$6zsal!Q?ZM$#Cuvb`l0o&om7md2Sxd8J_N}_V6)H86@xG6;r`vw(<#S&;|}5Ae{yU zK8S9nF*}WTUCb7Jw%o{hIGU_;Asf;BNN=}OXb^&_oiVnQdYY5b=1xBhmfhsGy!W!+ z4yjSi3H&bmL+L6f;vK;3MYH>$(|m7jHXAR=>l$sY8#QxD>w$Dt+Pp1S00hV?FzB)z zs#tfCzd9{UnW~r^)DZxZy)>qg8)AJ9Yqg^O$+7#4{%J_SFzroe*d(L*VqW%iM`2Ay z7o(%9Q6>-4T3}o!JgzW!%FsvB!Pkg%tv83rq~d&?OLs(X2eK z$OCBrmkR%wb*gF!#GhKq!nG8zFp_I9%ckpTcvS<4wPYhK;=1uQ&Czeev1ww(NVWk5 zwia0r3t||q8-M&Wyh|HLNLCPtSbycr?%s?>11=RIz2NleHMQ8SAWpXcr>vVNYcCw8 z&STR;c**Sb9S(!PA)xrKAi468MnSf3yNM?2^g?J{tL1CVdXhQhNR0cA>+^{&B?*Bq zHu-68W_EPoPFy!>VB?uMj0s(GYivF$pE3HJ8oN**PN?+6htl`GSrGFf>nwNZ8Yt31 zxSe506kXry5%_h$`yN`E5{_u11N0bp4ff7cL{lw zOnQx`b=wPsY=ck6;>fkXfO|HsCbNJ(_x1gYld1j6z$krH-n>pHb(Qx&j}S;n{)2zx z@Q(Z-ma0h}B7PrlTra+Wru8ol;ygUIFXJX}4_$mX@Ed3WI{PUT2b)77k|k$QILV5O z{O4dR4La^EfqdJoB}mB@EP@P+Bw^fQ?HE$1<-jVRCH({Z`~7O<9|?bl{2oaPt3Pb% zHSIj;>a~GsE6T8?L2llx(z4d4q)hD36%8Cx(^?kDetY4FA*>X&WBayzSL80avf;beKNb$TD|qvi zqweW+yJ}Cns>XA*5Tq4RQI+m*2*N|CH2K(_Mp<|^&!rfCRmZOu9S4jt zvhG*BEHEuJURe&}iwJqjP4_gd4A{_kTu*~k-1^Wwk2IocSANr&ynPQ<8zXcVEsnfP z4--uDl5LS>&spQE?<&Shr6`Sf=iBF8-6T5eFIpsn>_#dD^=bTSsnrc^R}1(#tu*zk zIN60VX|?^4>q5{&Skgislzrs(%4Iks@W2(3p-Rt@$wAi3(^bYqj%g_i2?VJ8WndmRo~XAGZ}vO{D|+2~L_MY4d~Va+Taw4-`g>zqC)L?Hl(xk__EPwbteG zGPgkNkwnD~itnv{5ejw8d>S9uQl_`i$C1y>CVOGZ0gc9MYbuhfIie?5sH~435o8!i zs*O{-fgjht<*!b?THpaNQ!kJ9PDH{x zCrUjb+IV$&GVGS^uA-x|NS4&p?6Zf+`Tcgd!SSc5OLR0Wp)9b)(WYv=Dy?*oZ=ukE zs4B3O>894QKamiBUfjqzF7kgv)xk!yIlf_Y;r9Rp>pEI|F(!hQVibck9k=9ks zw$UpgC#`QvU^}FPrxkCVe*YVS<90>Kguq^JS-z0d&Cz6cVG1r~lQ}nfj?e6_m*!LT zUt|pEQXA%IaaJBU{8k#=q3%Y6h@AIAving#CoL@_({yZ~;cvNSZhJu6G$}1T!%Tk^ zn~@4j+ITeC@@#29)Lb5g;<|r#xrt7H6^D*dyCvgN|Gk!;o`#93_USt(b-NT=A7c$P zm64ulX?WW#QPtBO2-iUJony#&X3Em6&CrG^NP>H*a|$`Niqs=w$WZSqD_e+0cG6nqLu50vK@yhjXp>FVJsS2B_07@vT5d|C|@rC`fakZkmF1f!9!OgmVxwbG-$ zS144iRF8M+)({_i`I`>bGi9kkf}Lp-dRB(HU7wp>$n7fT%`#z|W^Q?zbbUw)B*r@C zItyO?TEtq^CJ+UEjE+gs>HF-pqVpsq_Osy>U9mAv6nZ$mH(FEx+_YKG&+?1YQb`S( z6iex8bo|6*H1A%>AcQ^Ru6{o9_RA@jF^FN~p<_dSUDJ)Kc(Vw^QV`RW!pLf6H;NSg zbkVJR6;|8Gi1_n#3_36pSEX#(o84Nkaq#O!-G^qh*g^&%=e5^w`T|9YDO$mltzj+G z3RTXXb5!cw*C~l`V z#W6@?$-RRyEY~|N_AQ(YetBfxF_bhS%e^miQ24ALU>v9vwW=}n$}dR9w5;77qYfYs ziBIc%kTQ(;mP`5S10QN@_Q9JkAsB)gD7S5MFQ2-SzL#IW)dJwt01|}v7Sx5|q0-rJ zJL1>RJic{L{$n<;?mZ>$+C%bl{V(s^k6iVU z;CcV6A@Hv!{a;B5{L3}{Un%}Q@UM2%zg9eaNPmpzA7ja-`uGnlDDi>g!tWvQ>&5?v zIPgnd{y!9t`u~Xg?trG2ZEsLPs!B%z1xzTRBh^j`LINlyw9o)?D4-yy_{DSX@!WggefPcl+V{s!CVS7$nmv2Xs=t{5{_KkX zCG!7f*!|5L2mYne@}FaZKM9D{R#XZmx#DK5to>xp+!U7y_iQh`r=LZ ziTo{2;8wfN^X=0I(+(U1W)4*U~q{NTS*!l(;pt6v=!A z;jxu{k^2do3D<=jd`jeu$4v{R_Y~2^455dYcfAom7;?Q0)tx5IWHM%68~G$B1MNtL zV$L#H>CERa7nb<8<~uN{CSqBn`7;4!&-qg>Vg5G09iWx*+weLfzG3Z@*!hwGBE-$=Q}d8T7Dv(;V2GaB*%0yf>o1XCg0C6$x6+rk8lu$ z;D0cj76l`rx_ax8NV^`70b;Pv(D`|6YTAr0I;ZtHZ3wbj9(*T4dM}Wd03a91U z(!8ON;uExev&|AumB3>Hf{(@K_IA+REG@t5xhLL!Q^k=Ujr8XRJpu&$#yX z%k(X?-8<&H4z;Eh1shcH+Q;PErQy}@Fx&C>8%vH?g%`GL#z-PsFA}f^rcC%u#cUS8 ziA~_B(7Y-)N0RV9`8>mkMW4N6v3w@{eWW}-fd>M+bKOGb+F+w? zn+k@x1oOaJPcxw<|RqW3@y&O5(2A88jfbMmOImQ?8?l4c6n&T@723D*~Hlx8%F9t}XZwsrT7 zxE3QpG0nzslHa={?ez9^5urB zC-MgJBlQ%=8#U$_1igNC9Q`<_g;u7VB z#N4C(rjJi^OHQJ#r#FjDPa!CLFnJgn_$I0)&zs+|kL^rUTUX7KSPmJu%hWYNyl3b* z%sUF=zW1}Vk>u&aX#_p25z!}Bx z;dA#6wjwP0p39OI<_|Z~s56~k&Wg?y7>2nL6JrnAV1?A#hD>PwE!zU08z`GjE9ih@ z2!6T#KE*b&=?FHv^t?ztUhjko%mzmR=USzpsf-p>q>!{jWZ7e|{ANU8hBmn(UU`x- zIm?i&`$e!e{h-crovQvtPo@e09&Q?)0b-VNG=Op&#w2Wd=HEdbLsw!d>lmf*AETdY zn-37lx=+R|{+b>iJ`x$k<$-Ra5JIPi2jSB#yez6a`%c{_oC1>*lvNQS47?1yB$j;L z%PZkeiV?KQe&OJ;nA;hAU@c=rXr-kT1;L1jpMTH=MC7@rkn+1~Ss4Op@%5$)^|zUL z6V-dGK$#f3hyq@5-_qn_@efuoylYG z=7t>L=F4C|z0b|N%m2LIKdna2v4Q@D#GS_nziM;awlFC}#sZp+%O0e6-}-1(H4_c( z{WvC7ukm_fwluQK0CPg!_{KropgBNu_5`mGTgSlZlU{cV_y_T6)btC*wiRVc$|Kq8 zg@l((ml9+u$}}vX;#06ehK*vxXA9Z=g=MBx0Wp71?qCGH>)7zVlE*%2OS2D>)-%Ay z)7muqgPt#4ij4^9o^4EUf@y&ZIBneH3H0hjHMYG#99OQ(D&rkZM(|lf0RLQW<)ylu zo8pT`F$HpJat+0Po-yV`buXa{0aGC9{-(oBV@zeeCmlCQ=aE?H!>?H&YqA8lP@0s& zd{y|)@c1VlY1ts>%QfRJkA2Afp)|H3&(fKF2Hk|oqnuS|T*^+26ugp$!W4v^GkKIs zA9N~$-725N5Cf7Ps>MgK0xN0+6J?M?mrW3ew7xibDB`;s1BTdmpedH$x71>I;Ri#e zd2EX;w~ej)8bSKaBoj%aFjjB;!_IZFP$zwOU@wF5K8EAl68+)wOwEuI4dZn2Jd70- z3N<#L^dM)5954Ll@9V3#<18lMw)5DBt;VR&+k(?{c+E1X;^jjTV7YA2LaGt6m|NM; zQsld8c2{nF6PkC-Q_AwXdM+e%JXYVh;wzFfj3q|zdcR*kOSxgjgU;< zC~>a1bAbAu@rYdwVDo8M2$6~68eFs!nb5WJ#Sot@Cy->F(X-r($MPP%+qrtPn7Qwm z^S<>MivM%iAgYY4$DEonN3j|WjIis+*L@45U0isR<-G4CY%{!lQrV9`HOJiUDHQtl zn;Bc*`;K-~?y~Iur<%!k8(-Hfn(evdx0?iPtP17%&QHY0q-PT~AGY)Kqa;uk0<6p}ERIg@HoP-y@wRU-o zM|_7Umtzq^Uh{P+KdTOoJ4v{igR-FV6M7GRFZ}9J(b-gKm6m>uSMoDY94T>C-9ai7 zt``huN#(l(aEP`e)w|qO;3MyKn<7!C+t4m{}U2^>u!RFung&y8Ek zE(+*+W|;XT!9@nKsGt6o9z9n(A$;YWL|--yM>HRguJ=V7*6P%~Gl*nv9iffx+%9#L zJX9oqms0h9V{OF0CBL(?!@QeQ+I{66a~ZX)`9`DHa625X_R28Pe#JeS^>aNfxPm-1 zS|qnjJqTG<9n%Ng@iI-MdK0mJmXg8oA%HE#$#VJA#aF8!pwo7yfA8vL$(5=a`?L3V zO^dq@bIB#5Db>&DDC9~dwXdZVSE7lny~2*ZI<7r0cD5G7TQa6x-l{g6im7F6!Z98b z&kpvw8z3O0gsX;YI}`Xsv69D)B6o{-J(VW5EuF5WdhmD2;%#FqR%VOQYQo*e0M2&8 zQuzwQPJIJ>TfKein$)6UY>;^Sr-CxxhslTw)ke6s!yhLOmCDW~(OF+h!$XU=pPR;c zl3{sGziRyW!DE+j@J16W9=<|iPX@}@Q}fN|Rm2$`x8aiOzH$W6diQ&3=P?n={kjH%-fFq#V{aqVR zKU**%%sJ0iHfP=!Wp&|Rh-@h0rUcj+_`k>t$}tx@?wRJyqACsgg1VkdnQb(K42iJ6 zhmct#>9QuO?rVMrISVN3kgbZIZ%?+ZKL~j_ z#b^+!GQ)}BF#Q~Wx-Z6Lp@mKI@WWJWBj@x}k6ZMQv4r&o8Dyu&tQFSou=AV(X=BOk z7qydXTMn z#j~X;%KD^z<*h3&%`m(_ zw-%)^2ZBtbnZ0=v8B*YzF=rz6sDFf+n4B=d*G4wMbS+OlsBOGHYJLnpacwy? zZAR~Kq6yAJs{kyHJV*}dj|fw~(kBjyd02{nkqhda1GFvH*`q&$)C^RxcltGIa9DBE zXR;R**Py`zPGD(W65CDcvE}^sr%%99Nsv2x>5nWtAn}7Zg$v&rz;kJ;K18ZPKzF?w zTOV$*#D-*rcqEMjIUzj_Z0nemOJE40BXfn>1$u~(bROz~UN-T(v$NQ93 z30;dox580AkE^R-nI1+dd6|0iCn@4K$R%~QYanpC1F>-*HZ`6*S*+x$;81xCqb;t1 zZNm3Nb9)HsNa<2#Td0Pj_I{^3teqJL+)ycU93DqsUH&RydnKPc_6e81L@$CXU|7Sp z=cb0)_azX|shXSVs|=;InMg7Mwxi8;4S>typVY(sb$$LAK1^=?bjWd?!fg;7^vv(499tB4$O z{=&NL((xTE>{tNxiu3&RwHp2e@5)Hj5_01XmHx<5Z^AQCQ7pewMJ{%Tm3!vrt0(1p zRBn>5nhkO#A!z#=G^D>EL3tRwa_u_dy-kW#hS*EjO9;h10j%NRZ+GF?QPE&{c9 zp8(Mrtnt`GgMGF4bc1wfLbFUh#EAfLr@hioZ-y6Rc*MoYr98D)zg!hge&beqZmgGk z)$sh3;-Q>yeKjM~nB;G$111M9iHm!h1R?-IQ6-&yPe@I;Z>QG!zbDJ+Ot$1InjNAV zs)0avAdp3Ki>wsak<~{c(pdgp|6B_jpCn+liP$2jM~+-a`;6Q}=_asPe6rdT=>gwf z`bmu=v$M6X->Hxk0zFHrztt!z6OgB-=ef;jG=f?zVPVML2j=35MPW_9C5O`2boDHU zMyM1QbY8ltqjwnYG*d|8E?iiRHE5pS#k{-biZRN$V#6{b`F$ugW9?qdDW2dVU|rA2 zyWzalfYJ7)uA}(or7t;3>T@S}T_wKe(Be8@UJo+)Rrg=73aeDLho4N^{P$@9|9v9= zt)>J26OZ}dXaVp))6xIs76AWKuliqY!D0B7@M$hpptLXc2ScIeN1d*HWb6DD)Wjek zw9?Gn*lj-?FLS70RZ>YAn_VR1FP)N`$b~URPoA~5semyh#h;JD=4S{9tC-Fal1XMZ zI{s6dmg63>79#kTYs)f{;rH*$6vj7`VbZtZX9O>OO*xmh zXI%UMpj|HhuHRo(nvl_MnxCC9svtAS*{?Q)72rKCt~(nOYWL-U5vl*Q)s?Jb9yR`G z)!DT*-2z@z57DL?RCZGLQGearg&hFS_cYM44TQGmiv~{ z`BceV?g;IKfmuL=vbTZ2HDZMXw^ePZ%XvjK(5oK?wmj;mnZr>r5RWIFykg=?48tF3 z(N9;)%a@g{V}6%-tV|gUE%KRW0b6WUo|OusG690gGV+(3XVjpziyU`0_O#zx!SV=s zFSV+yYJ8*$i_iw@uP8PaUuF3C9aWjY>g?v|8nVT)VaK!TdogGV#*M^{8`VF*s%E0#cm(Qo{I-|d>qC2XCha2M8gjzV?D$<`xv{Z)_sEAudgYh>WDT8`6m!5Q z3Xm`SkL&$!RRjJ(>(~)B+Mx1>vP5$+QZ6Jqo4nA=K2jZiq3+tW1A$_XilJjRbvpty|@?5?dN_ztIl`m=b*6nE)^NiR6pjrgi3c;xG@w? z?s)Wk>lXp8Q|XkZt8w6934ED(UN zhp0?u7|(QHml7EgBm{E>5tM7JanzI#j`D;PQ*uwmYgfFU?3Vas8B_6v8le}{o|RZU zC^&JX(m#PEs`stEo4@T5yp68u1+Yxl2!BLU@a>%I;HFhtd>celT1d@cTYAXp&h50? zSglMQv%@|zEqe=g%=6Ej$Ie^wVF}q$#vOAPw;!#MzG?O~x>=j^wTX`46d$+$u@Cs_jdicU%r3r)`z)(^?R zSaP6GihH`a*&Oe}oD9@W7k0&_cMDtM;JIIopY`X~#k!VAU#VNxbgR|l%FUOXxM6fQ zZr!TCfz~gmOeH@b5vb{XWvWYh#HM!uiUL0nay62?uZG#p#Y)VW&YVe973p{GZpgtH zk|IF~)Vb<}Q9Iy67LkSX$Q?Sqs)wWaNlCDWUk$=a-Nx;u?`sA=*=Dycw)2-2x;5rY zg#7!TCTO~Z5EDwvAe*q7GK5KA=3Ii*yy*vZb$o8$2kb$?>l=DlWU|EptGy$077bhi zKD9c=vCz{$7`kHS^I|2ZdFpNpo%0^@|C1eoKlxE@LO~pAsW3F#|9$@-OfTO7@L%;T zS>w6&wDC6{Y>55%=7ofjHSS768{D8tchhdavmc^Y-@~(^K!XC-u?@|#;BKded^RW0 zw^_t9i(s@npbAex$=!LtKa9}WLzLAn zH6GlKdM|rI`{t{LipOU(bbiw-?9dyMvWVOF-tL8@u6)g@czkV(9&roj=dy?{N&&$k zs0q94OO3XfSl{nQl%NKKak??5!dUVU-xedtVwOJ%7M`7OH!&Ou9h{b z-RN6pwytn`!KLy4q`-P)QVUqL3;Wu!MLhiIoR6KA{e!e03_n%x>uH&KO{d~d_mqH( zhQCI_@bKD6c|(y*tPGkks@TjS{=)h} zF8BYi0Q_ev{VR1gdP>-`ME@Axzm4t--#Z>ov{Ni^(uzM3PG;SEw{y3p;SBr41q_N2 z=n^$SYR`LU^DXKhe3^b5*ZRVlAa&lw=$BNDm93gSqxjzQ5nqC?v1(L!82_e>j;>7s z%pZ{0zVi4=h2%Xk3V|ekiS>NvUG8AKu+&#>A*i1%w+(voLem9|<1Wtx(^$m2sjR(M z-^;_?%07RGM0ELnzwjH613x9Z%w57AV^zF3(Zs?ICzqo3n^f5&?KW%A#6Hig7@f%y zXs8;#hU>VSU8eE0H*tOVgDn>LIMw7HPl46kxP8GWEv9dvSe7s4gszbEPVpD0DTn8g zsSP46ToTqNEh@fA9#Z2&xZ!&Qx2|-0xZVZxL+%(~JKS-j5NIy6LiNbWUD3VBoeO<( ze?FjAFu1`6voMFAk8l*cjcFCqi{tc^Jgc?|##X~(I!*+xm9>3;{S|)j`NKN-5(VRd z9}L?E-v|91A_~K!R#lA)yElI+6JI;@3mi}I`mI!=H}965JzOoS0JWBV>-o0HZSDjJ zOFn==gm#_1n;yv8^Y!8dwV0KjG=fn7RzzyM{wW^jMfhuKSch!2UBLQOV& z1OE9@8Phh!{yWpE=J{}cGjrun6mk=3S`=0<1)KZk@UDc1gEW7_+`W)c5qon>cmA3Y zwg^L%F>p2De!h^mLR@>2%9{Vc9}pb0%`4V&^RoA>c^_+3Q9k2STDMv+rk;fFCjgqw zJP!~NaYBkS?pxzZJ{dw|vSgR{_)JjM=Dt?tc$Q+1xU)5OgX^c?!Ow4+sTuMS-=lT& z2n&%mezJ|p(SeYfT&3+S(&~v9Cny!ctSh0*?Vnbkec$L;%yU>@<8YnsnB)&JorOA&@9Q~UDfnZPgU3T_u(Pd{jU5Nfx z`1hshzm>25!I=nQoA`h+z|4vKygdDs*j(I`8_voile3|R_5Pl}UuM z@Sl*8|BCqgr^No6mbAG81(IE|mHD7!t}Iu-oRSGdqf z;adqydZosg??ca#PYxZwjp82+CczG(&EBZ)Ov;T7Xp1- z&$rEZwxp)~waN9HOg^{$_I>c_@C@K}xcRQvFL{9i&FT$Zo@dn?V@`nNsU`IPyU;k)ep;*3Ok$n%xY!28k& zvP5UbVX>k?zJ!W2=7pkb2$Qp44>8MjF(<3$vFD&>%?_Uwg|X}m_X1=&{xpv-L7e%s zaijB-P3|;Vmt!M+pgU=P@yIZS zM*Mt1@NK9HlUr+V4mKzey2E^WZ~5;ANAS+>-oq<2+ni6czd3FzS(FOz#>dCqi2MhD zS-&w@46B#s%I_Ly4!Xm{4gVRjJi?dXIsV#c;OwxPzJydsXcS# z5pff-5nNCN8&-ToHR@MI(bp8Ig29c(9?gN(?aoXR(!KOBHPSeG>IloEWykhrM8foC zV1qOJj29}+SrX4WG(z@5Iwq%=Z5LSuq> z#Mo}b;p0>*qq(UVRIDp>bC@aL<%$h(P(uM6-&Ny25i(Ki&IwULLVcsDtMT3Hvp+Vufg9H1(UkaZ5Ono`-ef*vmwshH6z(SzF z_0|VEo8OZ7E*}oaJ1ksj)A5`Vx+fQ~5zO<4;VG+8uU_2T0QQJVpo4hZqpA3@hCeLO z4F%@$Q+_?z8pVBN%7$r^d8FEkT*ES(4MlYh*ZvqpV?B~B1fxLpI~&~e^7AS6=Pj8H z9%Ioj(@d^2cCkC-ahRkB+^3RWt{wgY&^nN~?A=G_cO`3&_I}tt_zjmy->cIH==t}5 zrLK4T-um9|{701sSw9$X^pktHzPJ5g5WX_*Q%?-07tBrF0*3?Xg{zV+vnPJL>F4#| zf3+vTn{?p_0FiM^;muvP4|(Tk|35x~|6hdvLKpZa&m9L=9B9nmG<~YUM76Vlu#NQX zX_@t&X}F#K%L(AZ?*!tm{vnulK!H0L&lCmz}AwaKCMNI#?$1 zLiMdlhXv`L&Px097xI6p+Hf9h5B_~CW!NhQJl0!mI=q;W=h{Iq7VqyG{I7T&e`?hK zlKyRVi?)@mZ7tfDQ|v0%peYB*V+C?JV9Hs=ylVzXA+n2@(Op3GDV%#+UG zPZ*bD*3BD#1a{S`uh22mRh+$t&`6XJbOP+^aY3F$Sp{-6Om*PDU25Iy$83M z-QZu5b$kax_~k#e4)aas&1-+?_f2fTIod6+4z5y_nfZeO_WIuHi!FhjV>=R$>Dwg@ z{GpR7<>yZc*>xijeA;90^u=vOXd_?8qlU4tFRHm2sb zROi5Z*^37+T_ytX_vH>xolTLG*g`}HOS zh!HloD~#2`LnVyX>P;{lLb|yM;B0fg9}M^^?gicQ8Y=y1`)EhFC!MPAqOR z+=XWjg%_?8f}ZosQdcy~jLUW9<*g7aZe@76cfDUb%(z!9;+3ym(|#Xljn5zQEH2HS z`evz+;Z#bc<*TG4tIX~JIj9g2xJNVgnC}mU&Pl&*_4xR_JK{nIiV(;3Q{DT*;s^xj z0?o?v1*H&u)hFwoUVB7no{V>F&MU{uYxJ3>`zyoQt|x?~UXgftZkfa>JF(}$y)@h3 zh(Pytb~cb=3JrSq$E9J5!hQyX~l^66%Mv`RVvBq`r7vcl}q%`TIVW#t*%_mt! z&{K8=X1s z8)=Lm>CP9+_PgQX7<8Au=^(1evg>(gY_;yRb+3>0qX}6V@Tpq92^N#1sWOHObr}tr z>xz>N9*T!GBB#zmfvf)Jv*ZQ*cF08Q)@p-G&^u_gEg=`hoG>yYwe!uS8Cp+6LR#Wv z9V4d#Z^)jNXW{D%>3Jr2Zt6zXO($3VLFfeU^LR!+Wm)m})J%@c-KtdlNNqnFDvMi) z;zUg6RuC^4@B}p>@S3I7%5|T;Jx`Z$NkttikTf(rkULWb=+EbM9=~K>RkSvA_+E@+ z+JVt$AMe%1P<>#pHyWQ zX;rIbN^T(@fIMvhe%{|2^5u@9PWD z1q^2Hl&Qk$+4aLI4dt?ij7{@UYZdeTc^S}#T$HqL;6@6n_lD_6H(6C~+-CfKfBZ8n z{yJ8+pX2q(h?F21hqxsxb>vBQ&;hb~_6%%~E8M~XU=1@o={Yoewd(}}wr)u{$xI`( za#FAU_ZrXC1z(YmH>eDOL zht%Exlb#R3NQ;1;SXoC4W{fSsZ=lFuYf*XI@}VM#z+uCv~>*$@cwj=(uc>b zT4NV++Ih(F`?Ig|*Ni%ENseu_$f4eC(*xjf+yyfkvhKl zv?29ao{>p~d6W9H_9{GL4?L2H2^tHO=cixDLgb8i`$JN$TVIkemUm0Bwtjm^KT9_) z$dzT3JIkgqlM;tKby+y(DRsvCWU(n!WY}h2->)q_4dKkPUkpPtuOMp*qy+aIk}(6y z9&#Jd7*j4K*9tyWT&V6jEI;k1*kCxtiu8cF~b6B&UPac%#d{E`uVVZDiz{TgI z2HivagBF}oS*CJT^K#B?xrLdCIK_EDFH*?l6Zsk|0Fn=ssaMFC_~l-=`gsoIbi?hT zcF$hxAGAIZ?e$dY1%xy=@>An4-70KhM&}F6>-&N+9;-WRcO=aChr!8S$<5PbTYH9xs?gjlrO{%V15dh-wfnl4xNPHGB!5sB<< zwD^dxD~`3XMqan+44apIq)LsMnwqmJau~es_|??w2SfCME{9+n+j@4nW__%E@iiT9 zAp^7Gdj4%0Xk;u`jBmfh-kWfWIiiH4!%%jnF}$l@K3Dpwq)+Gi-A^`d0;LTOrnwqo zDC)7R0+#8f+NLi7GsrbvlG;ey`R6=dbr~5K)A(ez>K=XK&j&BU3@U|@aEv-UF)R1< z87pw>W#8<+YVU{bbJZai8Wg@A`oVBc<8vd@v9kzXD3w+4q( zjrmP}KGPzGPl$h}0&lO{SF>|NZ?4fRqt+~_=1YL{SM|pcz@7m#fY#>SPG6<`%^zJK zKEwU~0=)80g#Jawi;Q(pWr^P+lJqOrM z;DBt&x7smjR*rSeL)TU_2Muh+F82FMwwZtmiBM<=1B@Y$OLUbp1MOBn@%q)}HG1NG zKTugi9XWILyRZ{-6)$0m-f_)5$V+Y1Xh*o!K%+E6qswma5+u0zQNk5<+klcV6s+8xq=Tx-^4sKa1s%b%U0cjG zI!#{?Wgquovkbi0y}1zQfSp2e&btB25=((a%Xh9T-lFAxWD>6QEw?#@`6zL5-xS*- zXf^Iu;spOHHU?S>$CV9&^Yb$m_h`m9@#H{;OG)B_tTI%bg>Uc_@i(CnxN4`>q5zrsI^ z%#(&&;ySW;H!7xRPf=X5to{=p!`SHo&}z0Pp)4<5$Bn&GQ=|hg8OB^avVwMfUM@jj zpRS$X3j9!#>EKcL1p#}z333bcFNU4ctt4N&6Y$?MSf><=q=`1=<8c#jtOjqRe|`la z;nFUa(_x28lH-Pf9l}XvyP~pF;OX@F-wHC*36?%Skc|asNPv&KGxMT&&5G535KH@a zG93T*u0a8MB#+gN7l@G=yYT#mlRe-*rzGm^nlhbVc)fD6$)yth!2=Lxmol{4NZ3+} zZi&&&h&M7%y?Vrb$%d+_xgoEw7hzSo$i6yn0`TGy-71?UwJ{|#g0DeKB^ny7tT*z8 z?YcAE2gmv}eZ3#Ox$MDNQFRv%%egd62lbbndY%4{MEBF!I3xNnEJ@+?XmS!ER7N|Wa*2NktUot+;ZLu8Plw4+o?m2;0 zatDQTm~uSG7H#1${5SiRNc}yBM&Cd~4!_8P}dEn_-0xpNi z#^L5Q;G1|Lt!nZGWm1u<79w|K0s=bFfyU+txltaA8p&wG@=WhXzO&{73Du3cW$@3c zFzj|x!o4Qv`5WNPKXD!JZzejV1@n{EFrX2NBneCp>A;<9yscDr5&-GdBVD z{iJtLEen`m?BzgonGB9eW!k&7eP~pp%R7$g60%{E7x_CX|9c>jd%BQWGrbgJG}$@a zXVkED7}L!Th{T)afAA;P4JSnM)ra1+E74-3(54IEJAI3H7^oX?8W~`neOZKhx-O zYV&c_*JO=(C#IdC8W zF8_y)l=Wz=W%r%Y2`rIa?VV1e)aD{dR|4g;KrNVEq!;B_P=-BZ6>-fY!Q&N zcs9=|^sGg3>C{DRztkPF3QhN$lR?;hM74tJ%y7PYRIjl-W#7|&nU+>H!u6oX6Z0I{ zTnKNm6SHsrI^&3+?;8A}@Fjh`u>lt+&vgo-=51esN=!SbLKTrF?dKAkS_~M%X86pQ zxk-593Q5mrHGQ7<0hXF_bUkBv5uo*Ub@7iy>A{BHqs#|S9EIS-7YjacCiP*@i@I&e zn|EgRb}zbJSNhIZXl|A?2{&VB41Q%C4SGW z*X3J3PTR{O_OW+dL*OGJk&%d&Ytg2Rk*0Sp+-t+OAIrEkwh)0GqO#vqc=8t`qUE{9 zZ^q1?HOr0H$&N-Edr5yr=nh02l*<*Xv0`-hVA5EU^Q;Di+B?*6HwG|8y2A-3Z}3wVXhT~;I99v*d7Qgxe6mtdZ=s5jwnvgVg4Jr4_2o*cpWvdLlZcXQD< zzDU=^<2uc^+C+eG1QJ;~Cidv)sDyAPqe!WmabaF&j@OrVwwVut`i5c2lDq_Dg<8_X z&v@%ZoSqGq=9BzVLU&(AI3=2D3evk7$gR7c)v35UW!o5Hsf@F%62!S4>QC&zgVRoH zAR4|s<^tuYynC&EJBho`L+gYL&R5*GV+0y5j2aOa_5hyoh3NXOdBNJIw6isGJdT&M zUc;BZqxytrLA57)`mg43pFpI#qly86m{iNv zJb7vnQ9wv--s+N9w3AZjnK&oYux?_&tIm8I)TeaP{v=&huiBFqZZ*alDH$^g#d+bZ z1nBi-Pr#W^+I7j}sPfD;!HyoqYf#K3d0qEGo>*D<;Q3Ge`MdkLl6%=C&y|Bk54k#S zH8pc-b%T1zEK=Wt2+dytD>ASlTAYRRBjGFt@ORMez^RJ>=P%qRKZjh7UYy1JAE6dP^c7z*sd{xo22TJq-iat|%qpkX+j)XwCt)5~=h zEaV4A)qbf5x(h~7s~SQ)o;w}zS_IvxHW4r0U)^d9EhvMgsO!jfpp|rbTk%Zcz$zoC#uNpzGsZMZFH8D;5#5;I-8~uzyCVeydlqFWNG#< zVqeK&V{WTC@s}965FK=^*9NlapyHHv!@qIH;P!9g{wGM|*q}_i;A(1&d8WMgnB#>Q z;F~6OsVY7%(YQt-oYzgeR!XuAd|_>i|9FZ!%*io5kL1;*{3$VrHBepdBybO`TT~yF zH^e`q4=V0T`N818I28uH;)aEAt~-Q;Txg{Gd7U$|10^}!Wz7L|Osq`5bGD!CNXFSi#hlLI)77~{&al;~J=r<2M zhiV)X;+#iVt=wxow;iP|YokE%BXABz2`Wv{cojNOM=k{-oq5j@tZ?CeVFyLj4Njy`GxEyEX?Kz(Sx5EO-Cx^Rh7C<6 zT*H*T>GyXh%5JnLX1LPMdmqxwKsC@z=EKoU311`Eo#*gs4>K;I7x|w93^i!;`thcZ zkYQM1yeD^GzUqY!r;gx&kJeCh&)@#<%*I|BCnGd{__1WvH@!8dmZQW%y+~ zWif9rv}KPF2iWM*+S!0E#>gkD+!F5t!s*#wSZC+*U4>&sb!A)l%flex!WfgrhL&-*6Qs1twdnrQ#hT|1^MqMLt+q@)#@B*uH5y$!ahY0Kz|&^=7n+a z@6eK8pq;;g>ih=YA-p&8fu*XN4v)EQe93t;JfaYD9xJCAkS&4E<*N;)b(6mirP=>I z%7=a{@OQwUe+vcr?F@;I5(<&qcW)hfvtXAV_qzC(@tU1VGwS_(`~FWk&A5$T5sA!m zNq2i7YKd?F>ylh(@9=?84=zP&<-mh^-N%|{S+D*M6b}4zc=*3&1pS8UKF`c_6ZHy} zkZDu*+M4%ERKWaO{9yx5+-7G~Ze-mKO=nogHfUY!omkoVfcu|-`x7V5>fhA&xc3lr z4y4-ijQe=vv448U|LhIGKWfzfEQxt{! zf^otW-j`>K_Jv#Y@<{uB`w4o>!QD^3?;M`x^a~9t`jwl5qjU%oQz3rRErozNO8vU> zI&LQT^T%#%^X?bGS?y(TkP@5|bHQz}_N4;{ORBg{z3!g?bvjzAT75fjWiN&`#PCt` zTR}3~*nIai-DrwCIG0l5f0XEIm~Yf(_A)!)_+e@idP+4J)9+V=w;^5gY#DX1Yz-XE zyNEEY7;T=$*~oLnk=WeBvAHDQjSeF&lExe0Q=pS|0ap6Fg$Y!>X=OTtS&hYW2afYZ zI9Y3(Y{O72t;p)f#%IZyMVucpPN{nEV;Zy#$@j}sg`#7^Toi0dMbR&Q$M=7J@KT#Z z-y@y}a4C;U>j@R*X6}UQpYGTpKB;Uo5z&s>-U$Qx1uRr*> z<~?m|EGxF=M)}?Mp=h6mq@tv~W?+a^wkC%Qi&v%p^X|H3q4-C-;rF@z}H9uRT?&ND!x&f^Q-ahrB5ix z2bsDf^!M3rh9t1fqAnc_bld+lEalVG)zV$rgD(!39l}`qy*ciJEEdB;O)T-iY3KQL zpF`Mf;i@oOJKwc>F-5hpTb`Bzah2=-9xXL~FM`9qR?^?dn8L6Gr?BQF|BfQBr#n?G zbc~Yr%z=20O_+)>(S)L(+-*=-r|bIsL9h*?aLjjRVUpLjFxzs66i!PnEX_s-5Rb0h z`Wv<$q4RYQu(B6>5DBXr9>;fQVptq&_;%HP@%C}lP@rxG0^!1EIrxl&<-ndI@3W() z04#ClgpkS$L97GHbrMvoT@Iq#G}$K zuUAvvUNJd&j671{Sh9~Pk3xY@prMsjF#y?G(-KX`{a46r^-O%cT!>$}BL;;a_!Ba& z)m8r0Q4xU}h%Rcf8mynSVye;)OM#fh{w=7?`@_A7?}DCzOpV^3FX#NkuCxYE-RwcV z?&A3@Jjq9JxWKDY2Yp|2#T;WY@KQM+Zih`e4Ezkj|9uQzZF~%z>L7c!r36bLf^Q~k zn>Oai{x(J6zdkeIC)j_{s{iQywQiR)m1&1oU3D6T610G&os)lq|8IG$;PA=m$W@)| zr?Z7G%PjTM;|7W+{Ov0zy)kFdS(^;3jO|NcXw>>}dCh4(>LCnoUl-4}fub+pIQ}){ z|L+(a;6FJ};7`QPUxQfxW}3l2K>q(GIO8S0Mb$cw^n7ypY3LkoRIpk-Q2Yd2oY7+$ zU<-_W`3Woin30Myu@Zh|$~8VAc}ziIoB&?n^Db^M%8iG@t1h?Q&pm_1( zt}PUI?+Jas_uXgjv(Mi9|IdG2CoHmN&8)1MH8amW&&d4@WPedE&DTf~PhT<*8s?Rj z&)LSNl}He#F3SN5O{qD+eBO8TN`*g!#zZmyr%&R;ck-b89}$^0_8$?2wUIQJO_{|i z7&?eHeM3cv@Eb`0b~?VVK(Wql580Dt`|;;DLw-F-phIq zU!=G^9Ld2j#2UhB>NRv6%`Wd=_>UsZch^*XD!WiC5q|b>c`&6xSIyG-*iL;~RvOQ6 zIBtC!HGPZY8mx#0F`A|cBMI{puM@F#?0cL}Wmd`shI0kAdC7OJDJv*N#c<<+G&J$< z^}{M-L##6Gtho>zm6|(+*`%jq%rsvcM8`q}d9u~&ZK!W@H-dM&z-8_QI67MT>Zxfi0 zb{>$P1=V0_m3Un%SPjFNU@dHfwN~SfZz5n%c)7cjBze(grY1UxSp}C;kDQVp3RhPH zv)2jogjO8v`USryvk*8CWNAvzGe472`9@a(uFj}_sz0xfguT(M2#H+R$kx<-u&t_0 zq}f=SvK9v6VvUGUiP$&VDrS8>{eD&#SrHL3wE(x$dg-XLOb<&Ux|d)pYiMM)j@We$ zn^e+2OG&PLU0mzHOwU?I$2|tOn#+~$1(i@oH{B5bdpvU3Q=Ysb2bU$pHV$G>^ZvMG zz5`b3plRN9rS`%dUyv3vF)IXe(8~MwzaYoT7Gro)t9apE@l0=Mt+=IbW9IL;ImKsA zQffWtBpzJD7wS^x9Nvq9tnXtlO}WalJ)^lM@Ez*P)|c8iC%E@YX(A{SEyV>KXsK-? z5%OPf1_lB)eNmm_oX+EcI;8Op@lW{QBb2WRhQCEQMu4NT>ECf`8miJNF(**7OR2Km z&0$G?m{5|l^Y4rO&wC1(Jb(@JG@Z@MFYh?BF=Fuusq#JREuc(brPk8_Kq&ab%7WZc z3;uI{*8g+%@;~?ai%9U_^9UvvU}cx0scf5cEKW8ChV*4WlRvdW{vslo>%5-zKaeZZ zks9aLVm5s;p!_XgEL)Zi>;@J5_-FBZMcm9Wzs8#snsH*GY_|Vn4#@w3Cla}3-(+e3 zd$Lo?)#%A@GzC6^uOc6WTV?*42Euvln9wl@jd9dTJL_ORPJz(<6s7vS!obyVFd6@E zQ*kslG&Ifycy6-gbHXC0x5c8pqkTHb)F$4AX;QGbE@8U_GevvMOx+7qGrQ?{$9<`= zj4OmcwunwdE${wQ^QoltW#S?pGjH7F_O$A~{rJyN9*Il5`{)d*yC(gDi#UWYsQP~D z-wPZs7|PR9J@36iz?hG6g~Y$)Remm#|BdF97kv=PQ*ZeOu+J_&NY#JcFc-5OZqS9~ zN5Jb%oICk(6R=tm%wAMMJ~H)qG-kO{QmvJ;E&M_ zz^v9N0~|Q2a9O>Y)`s*n+17IORQ9Hary{+Z0g zohi>vC`QqNidp+D(FLm(kYShG|C(0mB^^+orK^g#ydFUk5@yj91|49}zgWS)&k|w4 z#~u+|>hU9#wMeF(M$^AI)}kUG(o?P1M=7g(Ug_$?1=jPrmUylgqrD*1<-Q`@ueLzf zGbLc^h#j}v7yquYtgmT*7V$OIk%n2N-$GHS$ez=UnV0HY4^s~HYY|}(EtZ8r(s}m- zSt+AlVi!@{SayznyecGvLQKaSStDqeiw?}5|Ei}X_5POT#HvdKlsZ`x;$!3<^HDuj z-H>n1uq-6*>$k{uWyWcyH!9WZc{Cm-P%YkgXM$W}Lg>O#+fIa3{;W656W%0Q-!CgW zS7QD;*6n`XJr6|DA?r!2?4K%VF@WN2@<{lav~H3zgNPF;66kwGkiSlZL>Hz1sfI*R zkK7`p=}M9yP__LFA@!QNbP{`u%X$Hc!@nv+L&PETQPFT%S9zW33lrk)LKXebR*iI^pU z?kMOOCn85Lm?7{|E=Q%6pqgyv|F1as-@zz=x;(h=FM6#H5+$WJckL5|VXgMU<{;{A z&N1)bBd+Ca_@CLKU-F=@U+~{E#rc&m|1$ILjb};N%A~FSkHX&@$p0ZgwPEI%Aq4)R z(u&Ta809>7dQd#Rv*_r|)3>&dcM@grFxD08rJ@S)o#6V9(s+9YucV8jM@;p zQs=`==%wtRAO7`_|7|B)4aB%_V%K&xw69)KX%`eeqkSZI<5%9uBjJsbU#a^&USV#m zSP1o9>NV3W)_2(@%ryr8E7n2-r3sYgvTH7BZ1x^c-mo}ahd~RZGh2^JW?;GoRDGAq z5IjVlu3Lmk=3yFqKW!_zxsv%P5o}2y11FZE6Of|Q#r~3ol&Z<|9$V%?Vf00u%fve- zkRF%q#FUi=CzVNOh+RPm>7E-iwTI67k)&b-G>M=($11?fwT)A6)B_Jo1NmfgDkcQl z-xu?Ndp*Rkmbs;{tI76WU%5>0Ol38MPFq7`Q#Obj#VZ574$Lt$hoT;9;I&$c<~|~HZE?#sm=by?T6y9sOH8dnl-+t1 zhflha0=J@Hr#S(cwGkqaNabWZ(@D!q_~mwu09Ty8UT02q&$PknTG{4v2>)vaGJbS3 z^)%VJ{H40((OLH2XyJ67F^S0PDu*p&Wl@(bB>!?UGy!~aUJS$c(#oL!zG2ukjO?K2 zmhrf%p&0BpcJ_cIyPk!2yh;qyd6`d^fx7`!sa^O=tqy zuijq3N|j^QV|Mg>E^fllklts4&p}oUJ&#r#!wmAKnM}kPVY7P`FS)^4_)era)O#xi z=S%0!GftO67LQZ|BMzg)wD`{yQlUzxU$-xXsp-QX9;{WPGnc(cr=BEBv-)BSCPmun zXfjwECOeR;;5%|MgufEa8#0i45^E(9VLMYj&Rt^@V4@btbr$;T7LrJkFd$s`%&+Kr znLonv?2D;(-RB3RUzyiD;ZWizCY&1f-ljBV4_~U7WI4<;el?H!)oT|2=O9*tIk&OQ zjGAc^SGCEt)Xf|5k4abUD4j={Oum^emqqo*wBe(nq3e~pcl;BF`KF-_1ndcs!(N&^ zlJg1!k3493DZZmFA^+i8Q-FqcI8#O?U>T(x=gp)a%CF3CmF?Xy{Yfp1iZxqNR)I-? zc$GvY^rSoD;@C*j>PjO;^=yYEckk`U|B^#R(<=wUo4z;0qquOB^FMH8C*|(R*@-Mx zTgNwF{l7S9R^mBkB1gSiZ3kZZo&Fb&U`a;}IT$2!hpg+)HgMFPZD6uH+rR=S+rUkC zwt>CxOamX>nFe0HGa-C;8#zD*@E~96sH5wBvP!dStHNTg^Qgck*>TjR+zsv9^w__B zo>#ayD6L2Sf<)RFURww+u98grMteS3d*0>I+Qn0H%a!hYa2E>suY>=SP~ue#n!-~# zcUob*bj-mJ8!4VFlHtgo|C=6=|ItIN4*bzNXx0{A(*1vo4tEhmZ6Hl`Xm5WOqp0pQA%q*!#C(H)T zo@>RqExc`|=b2QqqPkq)k>cO(0FurzKy1TXX#_he?6v0;8%guDuTQS zZAdn1;z&u1%%)-TDK4@Nab;{R>>nTa_B%~Uah0AjhC^F05T?06bCyq?&~Ud=`qLKn zPWh2SmwjoH`krtO-cfA%Kw@^2gXgLA-nl%qjG#TeXfT+qGCL1A-&G0haU6emxh~>q{DT z?e-a>xh(<=gbC`6`gsnrk4_8I&=<#kN^(9AL1Zg}Tj`|3=de_~}QS;k;`2>#6qp@_wsp9_(4s37~+|Wwz@8+|faKe6Ovv^4YK+Ki*El+0 z`Sx@j8kN)*+AM%RFBSf*+FBup6UV~%RW+s&(oJSo;h@!OB2`-Zv9$fI%+3c*OCW3F zvQdSdW}2s)l))gxhv5Cec<0eAB{=Y^@+9*0ceJj0S;+^7i8*l$8=78rW^%gt;W)jC zMzxS{>3FQawpS>q5JC0MM^Y_oMGU80SzWj^P_D4J@^6tLjcz^Ws)$-<)t3Ng=}Ewl z;NXbmZ1rk1r;TNiTfQtMH0)SEhRKX*lGw~i+pre3HK^K{*b(~=7rcz z`ITEgdmsz@Y=S#Tdn+QYrq^9lk<{wJJMW5>JVRXuS=A|_uDlt1eK})gI~Wr}vk5gU z*Sirok@6^Xc^*Tx;&&ulR+0Jm%r7}+{wTqa+|F7B zJjZEjK7~%^@{#~qja+6OlMtP8W+CN7a_O11PtGHbyA7|o{EQp1B&)2Lp68Hg*%2YJ z2dD`M-)WOE7Up=->HFxpI~b5=cL_ZNQIxo*LQ+A2-MLk#PF?!UuX1`>51*bq?Hk2z zGzQ~@mZatMju3rKlFmz2$T4tx6(`8Au2W=K8hI3O9O)a9FLDDMD4pugR;K-RYp!22 ziz(4DErkrzUUX{{Mr~!WX<}hT_&O>#(XroO(u&Z6prnrlRAU}&T^t$>12jJ>l&gH~i=g*ICH&&^Y@(Bz$E`u($1)WlOQVXWnPxFBJc2-# z-MhSN(o($0Q|=Mzs+IN591f(?`Hkl;(3msStbxJT(XLyct5D@E)3TSsfP-k z>HF_jo;p@pcg7kDiH=0{TPM1)n@qjb?>1yRssHe_xu^;mrZhRe5><^YWvUzT8r6N9 z`hjen3^{I8xG9%ZUxg^?W@d;xn+zXx5B!>;6ufBmlkR>YP-g4Bx^c4ejNE^rIcqgK zb+TI2^~m@1!>2#Db_|MtWEb|_E+CRo8(U9(YlPR1N3FhI!YBVff5yL}gZxk8`)`uw z?<&s(R*142M6{OuM%#offSc^zF;NBB@*flf`J=K{twuB+yhV(gaY=pPUYW8bj;xW% z*-2$>TB0U|r)AnS}htRp6F&(#k+74czlA`VYbBb{={dl={s?xSPeyLS%_^|^;f%_V7utKk|L zo3&rjHgZ6<%=t?FwaeeTh2E2(Mveai#tAQKsB|9CvR3eCN)0AYn)TR~txB9LKNbTh zA)Ooo#vKrrC*Qw}=Pvq7$f@mIh#XsvfcWyjtOoR;LmnyTc$snd&LU|v%%^>vuS)BJ zKbe)kcSpsy>5YS=nauZ*IZJnjE2|Xa{c{2-Ri^hz12R>|l6`fCkt>eLV)781&y2q2 zEXgLkQXI6DG!A^LhZnXfnwM2W4y!MHbO)ZKu8Q=5=>1 zyrE7ye7ta+u@!GU;{DjV&{_FipCDJriPaGH8KLbs-iOd%u5?irA)TAmM;{%D40B!^ z)6Y^?{%kY=Tgrq>S^lt&i%0EYH476f)1Ao@pu_E}t|@8QNU?d0+Wj^f@={EmS_(sX z)#L~AGJoORTdv-y=?e1XEy9kSIW9%@6fd-J9?snS##e8jD_@U&!@SJc|63PBuFUv8 zcW#e^z4h#f)u~i_wz(~;@iZo5AEa>`GvLF+(>9Blrrt9ZN@rr*-;X*h5?;(n@_}J zNm1xC`rLf(>AK-JWT0OuTi&YCp9@(G8YwGlMxK4>X#`KP9|S2$%H^vhS32ubgpMSn z|1dh+c`(|XS^A^?-Kpp%edDh4L&hi9wk6-zxw;9Re7UU_siRurEFkz9x1=8O%{C?^ z&4@+n2gH!uRlGPbIkVo>_BYyoK=%E2Xq1H&aWaIHGQ~auzZ&>~6>8cZ1njIa$^Hb%J zoc4S1Ip6UMgTfW-ncm$~sSTK39 zy_JQ5Kw4W#Y*)B)!(hAN`(dskb0xp>GYNOd*Hn7~P|jAROUcwk)qHKn!4j6Ea)>-% zrsLz>i$GUoY80ROyvoz+x+rT0Wo4)Q)9>EC(u&9wk~!X{2Om|Xmbuuh2pB5W@##hz zc=}?UM5|85^tSPJ8fZxiIMn+k!1FcF2`%4hthnE0n?0&5nYYs1lvT3&XV(~}->$7b~+l%ts!!YCw?vJry zH+$ep%hu#)Q`&tEJ15On;DgwD3M9``#I)%IFJ_+^psXMJya+if4PzM1=m*1OCr$V8 z4Sc!RCRJ(Jp6lEOiX)l)cw;N|C#t_s{@4-`Ani*u388a*ysDGp!=4Oe16t`>I`Afk zr|T{WRcd)BgDI~o%4)~8s;c*oX^O^3_KuNsQ0a!ePg5kRDThpqix9i5X1O}<(o|tK z!7`nFV2)HqbJfU0(r@wbZxS4ZdEQcP+>Uyre6uX94v7O4Tch~S%6?ePPe+Y->1am8 zuENzzMsZ|y-5SGi^>0UrA1fT6kjEM7vzvQVXOJCi<<1wzkJ||XJ)+SIoiPa7&41c? zx+r6ok0)cnYc+SG!zp zydrx-$2cSUkk&JDPR=UWNRUB>Ik454KzZ#F z(|ydlpJiucs2*L>C(=ceG)+}I(_@Ps@@(o$&r};%4`{D_zEMuXiUt>ENb~E zIYgg;lT}y`kUoUQA~kB?bhL|=O{!tisqp>wU_#Id{`jjnzzA9Z>X9onUp6DBRh zv=+j$g+Spa?poV*FN1v!Rb&Ok80jhuUC#`iZ_5^2A#ZQ4&h{2t|2|dFDC*1zzpYN~ znvQCH!foTqRIsjlupAhg)_RchxsGjiQH?foA?ezbc{kFzsPf$6VmYTS`|XpFwwbyj zS0Ajt!ZREd8h{02CwI%a*2F;WM(C16B0JMycIZ5JUc=C;{x|@jWMvvaV6+*i1V%#Q z1xh*-QxSY6WK7sa`Y#)1--a81klk0K1iDWu1@h0wIW1bkxenWQ=j7ZBn4S8{o|(*h zVzSp?@kiQ*^HbZbQ@E^oOMx5d=39CUz}(b`G}5uykmvRb#YGO3%?;G&0LR9H7Y#q> zi}2Qo43(n{&!iPrD^2yqI@JeZGFK1@hGt&@c5}n{dcxkyD2hH`wi==n9z9>WxDu0j zC;cGa{krzWCVi?UBI03U-9fCef+yVkoO@BWQ zMcT}%5BkB^^LUm{@F|$)Gpl(xXW6qgctq${_QsfX25cJbOR<}$W2g;a4bVO9#){1c zB@72Td)k@VdtX!L}Q`^HkZ+I9{F-(~jYsnu_1( zAjE!ke92A89K)UA7&PYbq|PcdZ>iv+DN*so+o8N#_5*u!-%q)T z5nqCmz4W%q6&*lplT)ujSOo4k3D>^7C5wrQwFzAj;7BbJjd7 zah9qa`U0C=xM_+>`?O4SHxm)@r7tn?$Ah+EwOAL}r$ij}Ok81LU2wpZ@ivIBz(W#pv|QQcbB(_<^6zoIcRNsb^Fn zHBkVyj1gn)imMvC6#k8O{J?-f+qT!LQ}LqYS?2Z!pU>eqzXjS9(!-)AhBLJAiL4X^R=ujO?H;I2x7O#Kx0rVe z?RQLJOc&CeXt{AG^!Zq&M^cyhkmt1a8*S-fWG>^6_Xm;gBTsg~sy9{JJy9#Q`w-EF zY#BclafhF~?R!_Ll$zSEH3J@7zB+Ci4rVl9NHV*5f>ry#ku;=X z;~?E&m!7V2ex^=0VAi=>EX4Aw=STzV5q8YAY^p``iL>WE^@J*3_QZ%1^Fd`-2ibNE z2rv~(KkH>k^u)M&1A-^mvLla$FdxYaInzPTd5q{pfg>s%h&z8GG}!Mac4rAGN=Va~ zm+?Cu?K>xSwS=p|zUkom&WS!5a$5BVOtbpBpO-FUH2yeDsa^KmcDTiuUSC%%Mc?N5 z;K4L!)Y#Gjkpqp<>Q%iD)YKc0{rVEK_-t}>u#*tY(IMJ1148!F#N1tQ9eqDmJU=Mk2@_`SSFBBu;gx^A_UY9Zz??iDn!B*m%92p!Rv_n2l! zC?_olBO^5j4^?P{qciZl>E{we$Ht*C<1z!DbN0tmRu&;MI-S?9He2zq zjrWpA2xQxB7Mu6pG7d46sqz+x9s^>TiUdOK4}!N^{>W$Wt~D?DNbSew78k>j2U}_^ z-=}MS9hoGirg=EzXDqDVJ}LBVGR>mXqyJbAQ)U?MN_Ftqu-jLB7QX$nzqI2S`%c-H zC2K**sN5#2_icizww>O>>g=w)-^bH@i8nc9xMYmSySq+rKaqX6G0so&tsDys*KH8i zi-3F{0f$l?{n$gV)t+ZGx%r5Jz62TP5!cy04;_89>JWxm(domGj|#amNJ$*DK| z?vsSl@FK6bA1|WGc_=5ZHXpX1CU!9}y3!wd(F+1+hSo1n?6tLL4v8!bJdhVx9-g*i zKn`J_k8fr)3+JmdCcM6ny!uZ6A#cdkqy$&leS=4QC3obLKy$*Y}8U+L7p~y~1XI8VJ+wV*FEb5FESPa#ce(s}!Gytm=}y+CgKs z2wGwjtCBdBCGF5VzGnYQ%SP9PHFC+e)%47CBO&nb#-(qv|Id(%VpkJs)S) z+CZxm`8=w+Uf;xEyqQ%2|M0=*6u)Za7ph@JkC~5^3IakON5%L0T}5yGsFuOCLRkg$ znblCR|2FNxe>hs(AJE|6YBjQh?Yh%E^QLu9n$1Y~*Ze`h+dacAnv6^PE0!`DmClUp zGH+w+oB|=yniiWfj0K?!1Z4Dp2(hD$Y<|ALd7KiN9}H6xQfyunIG1EonmS-C5k9mo z7fwj%-EKY_BV9)>etFRJbDw83zeu>W|FeEmqS$5=ADiRCJb~p*k6MH6$~E3)yqe%^ zV>+sf=Wb@>mD`T}?^yhz0xxuw$2l#Q_@X=`lPmfpDhgYB&&eenK#+rxC=ihYFeb4j zYr5En4E=}*|KaCqIJoy%QviJ9E5kVh4Kt`6Iwz~;)_t+gAPL0J%=Jt*0TbfX{s;|I0Q=Sn!{mMJCr%5s&1;Zi_D`+}38}BEHj=*c z9#%)od3(2BHit%8<2Y2RHaiT`cLfn=e2g2BT^Dhh0L+J)l-e(T>&3)e3Cd!y`v2;zsT+?J-+tX!*4eF!$@m2DJOI_~G z=w4mrulkyds?zBKbX*h;iOjP{oAouK!}k@%#wbfC7`E#Se0MLYlD;wrjL89KMu1{! zcB!VdJugdSPU-XGPAovODPvaS@2$F=^vOKNi*?DwS9-9773mb&McmKPkok|oPG1b? zrfHA`)BT)-Fv9`-PYIWeplich0uxH?2o#;dzIrjJbytz;=k zN9^Vy-M!uo$*E4_qgpMl3AFb>`EgmGUc0?|juBtl(x-G2L{;^%6z?eVjdC-{48*5K zuPltkWC%j2IWeVhL#Xe*s1zEKp}j}bIJMyQrpd(Ve**r5-hJ6G=^MqsG&&wJK>*ni z&zJ-N^D|JBYYi6vac{2gM)I=lv~7*wyuBEGnqw<-Q)~~*`7GBdLNZ%xd6+bwH|$`!@Ep(E|2^e%T#Px9j{ndRp3Ud zoAq@}CAd#jdQnLkhbELSZ7G>wTDRhJ)K>aY_cbpydQ~?zH2WoReB2=VM=So5Jt7-y zBuixdKu?6Ptm2#Lege2Ddr;|UzY-gFaDUZu7t`85FBF1XL~E6-Jb!dWmOopv(S(Fa z;-cfq}lU#9#P*9kM-bTN&OM6(EwhrGBLD--2CjIb&VJpX{hmS^Pdj8z|2vCMkbQbUt7W?(lO9<9D9S!5`_LTqZ_WvJ;#J`Kx z3=6qTKi`C@BWjoJfMmGBNknohjw+hWwx0tn(i z_~=0X<30bi&nvOgys*&<`bu&>@6Y30Sb;o>nqw5?y5Fl?rY6-i=!UjJajC!m!?)*f(^j^x~fsG+-yXBZN(;snE2y5Czkfz zukSH;+uy#q(5o=-jLh6M?}p*+KPM3FjKGy=&j{AloDu~oHm7I0#u1w`WTc?9mX|P_ zj!3PrHo=$om(uWqTvV}8PITbF`t0GYAC6;5N-r!61Ym^W0s&94o-pzCdF^s*8Ngye z0Kr6k0HyhAS>*}2(zdOwD`Ng|GMV?KjoqoC4->-pU~H-J7)*3(ptga*d`4f|f8;Q% zE>jZg8zGkouC)`rKK_kniH3%eyr^FL%`;=~#8{dAP3@B8$3Hb4l?Ro3MWoY)d@(Rd zb##)4L1PX>bAPHJ1LRKz^kcA*g7qWcVwnS(cxS8Qy>wSD{fS)<0=giFw+}Ju7JAuc zcODRIQg&4XOEir;-$d$%GZMDGa3|RklXxE=I_09!tG7$%G&^NcSEk8kr<7>n6)cPH zO3d6^*!jqYWIf!gA5nZxRtZY|1BUbvtjTHLPsB|WnC6B$8Gf`j*jx1pskZUX&kEYSUObylZh`dR zx4d^0Xdm}&at!OTT2}O8l}XMJ!#QDoL&jaH9CXZK>#CI67&oiAYy88FHxc~R8JP9% zH6K13Ls}eVv~of=g@Ivxl~&@!5Pz)eIv}3rV?tE*!lh-Py!@*^h;EMBu;fa+o3X0t z$dr^-f&4>VzG=!GPpkWeP@!I-=DOwD!ZG+*y!#}LuxwQ>qQn8tL93&vsLC)ZKvc@s z*mesq`vB8vWXuRtp`p>w`Fhn{DxrXc#sN18W+uj52Q5JN)UUh;LdKvDR%z1rBlWac zy&b>;RkyFTx=#8j{k!dUQTg{h#W?dRm((9QqFd;;y?BdZ$h1*;C+B33sGvm2T0h+G zE*K!fR~-A~GEV6_1@P?TgUx;8?!HrN`9qBAg{1uLhEz76gma4`Bd)AXQN}?rz=>ZQ zddv~y0%PjWYh4XCs&y9!`{ZQBt(gNzM)tT=g)f=#VroyqaBjc_5?17#m6F=;q*$5){ha{khw*N}J_%t?uTSN@E8uYxzzK3ekLPWl|IC6gDJn!Y8zZ&lKMCV4BWL_OCDWF{}Z+&ih{-)UCqB*UrtoJ zD=97sG~6gCe~@hqb0x>6d_Z*|*82mNr3oN}sdqdA*xtq7kpPJBJ@BF@+}&RqkGEEs z8I#KaI<2Mud(^qEY)?E|N08wq}|L&3yJ1Ic2F`4=mfbP}GR2^4QV=#Y)DzHob z2tT%$=VHl5C!5(6s_DSIM+v8v?)cTy@dn+1{uJzw$spz<>dCx+2RN<7 zu6HFOATZEhuuK%@2{Su=Mgmh;N5{mZzQmE-5pTbRRgeJ4Vd}W(Sa&j{(M9VtID52N zk=l+LG<0rSMAoZjKA7{Du(rPVjfQK0mj%#7E@Hr5GQaF+L2dCwYr?|UH4a`3I2)nC zK82vh!##KsUn#de0~MtxX|@0d?Lw_D9G4LDJs*IAZNxc`yyOMV$w!L)YzHw%(mhy7N5p;P|EVT+HahK zUMKklMRxBOy`Ao*BoJ-`M5t%z&WNGeFMXg3sV>tf@8fXx;uB)!EfAV~(L;D~Zc_!3 z)@gchX5cjO#%E5A7zVCa#m+_S(!_~m@`tv`9l+8aj|U0RH;=UsQQHLlEz^J1>g$`Y zRC#N&sT-@d*8r5Iggc3*e(-_VB>MPHf1-27FRMJpQ(wh8C%AcWXk47h{^RFww0IpA z)ihy8g|(-$@b##hfG#c zGfYXCe}%uuKXTol`Rq%kgzE$P&05ER7a;~dcL+j@U1cRI8D04O)YtY;BL3(+%;aXR zfEPKp&qjWuJwl}+SWbm5LngLw@#DmdW5Dv|Z#1g5VCyImENIr-)?e1?f-Wd@dHCe{ z9mw3BZ1qAB_$@n8(rS{uVOulEw;^|b5@lD#TZS7VYF?M6d3mQ@4ZackXV?LsTEt>K z-s0Ka0Uk9b><2zN&-MYW4Maj#Gh!63G1HyJ``kvItz! zm&p2Wv>7mGX~eo1+E4nE5?1fbD=JtF2!nva{Nu!sWD(psX-8~vt0DeQ)wbi}IqR3I zsnk>aTV)}^yuZ^w(%>V$_MeC{zTqEzhBakmb27(sK!R@~`%=zh+AL#Dq} zA(6Rd+de?9{V|NKN3TV2tx~2D^ggfHTPoGbOU-@K@3!MN8fq`I=Kig}(ath+%F8mI z_~RX@(La8aXregp)by?GW!zoa(ENpR2hWuZ-lqUdMypyeUNrLQ7?+6Nf%`!~M=xrQ zTFLl9bEPs}u)zYa%8#LYAZ)l*ea^&aI~PT4v}#0Jv`Pa15x2Ye)5Zv0kFI3pp&ZOT z=)AIb_2FoHLT=N&3jGZh83$z$FzVp|@0ihJ4Uw4q%7M~)qQRO7Oa2$r^mVD3TS$Uf zcPGBRFB4GJ0XHGDej|p|V~6+Qs3~&Bvm)ic8`!@zRdJ`oKP}V4*;~TCtFL#+P4kxy zLY|}G#Ne@Ao>3OqPOlTkml)n1{Xs2gSNug4rSrvYanF|y)2a5S6Lx1|m|vTHjmeA} zGG1imNiOdZCgLaUC6zM`^YAixD%x-@w37oxlv~}E1}LZJ_UEx-p=4w;b>UwfD#uD# z={O`OCF{S>smy%3UE$|>;@bHV!c|JUE&iPj*lt`bIiBtmd4US+0F&$+3lQ$q$o`{wE`Etax{t zEHts_K8t$JKw&0j_49l>Q4Jg-!=Esh{&irVw*}Td4ETb){f&m;B^wV=`e>ZN>$>GH z;dS#@MMu?kGDo)t6luVm*v#r5KkA3WC)HatEYk)}o8&X!OOC7LnF3XW}nU^_b1$TNL@EA_lJCNH+E{iai~EK z-#spi9>urbtkJFyIn}kused>lscS;ujG~iZ{6<4fv|XLDi5AJHd;9+y?i*q8r~CR$ z34R$)_~`V}64|av1|%q>v2N9A=hwk+v<%oiR{$gF#x`???G=*ypROcH7Z1;f^U37T zzY6`2a=_=vcYptI%h$fZ>1#LiM|NVxUM;H3xp|wtV>>MNIL0A?Rn`Nk{9uXUuy_WP z!*Tl0HAQX)(FJ(90=sbChGuN+@grx~dR!F;p|VsvdA{auBF;{$&=a^{Qmpb+}SjWZoq54>b!abSv&e^%&ft-Gef0sPI;kx?6!@J_L}q{&#BIX9YR4e z@_-1VWXbtNSL+n(j=Em=A!2*`Tq`jQgKBIof)h#}(aakQ`#+d;_vIjmP&n-sX9yV; z+rN81>c6@gZeP8;DUuE7X2ET?wDrJIa7px&&a}02_T{>=$BlsJw0CfHdZ+qyMpKI3 zo&HvRu&pA`#PWVJe>XV&Uiia0>Y|F?`6nr19^+2WH$WImJXEcl{9|>e(?XOJsMCww zw8)4wIc`gX`O!$f624SHfpM*9t9_;7@q)>wqd!~@7K7pW3!Fx#@3Cf2l%~Mw|l6xFg)GaZfF#!$} zS*yP%ra13%DW#Yl49Ks@d9 z`O|aR=@WdRU7_aHSq;C8XIwv}$RtUP?>D)d(6!I9@gLTB58D=+IWT9EZC_y`Rbyr* zDvO>pZZjJXr&C4fJ2UgxCwKi4Yq%s^y@tpgw5QnBU1Pk($G%c+@xrw&qfuzoiE9-w zAS%5mtuhWQ;P!p4Nv$U9%m-%O1tZ>|UA`(FPHXrzUA)w0B1yL$mY)L@$>#}V(b{v} zGOGO$&3C`oEGacYpRLwm=1EsV91G!6bW2-mtV?o9WP+z|FI9%9?Z_JA%wR^a4;cg* zIia!WxzBup*-CK?w)T&viT%+k-Ms zkTk7qT>w10-f1Q3B-4+i3NDfc&Z;T_NyYu-U!T}u2++ zG)T^ay1Q;$)s#=+kLhq+=DVluI0};U-QoTfIC`boAW$7Q7=jJ8grN|-^up(7SmOCy%!cRZbKLr zi}_(wyH4wDy3~18_>DtfF}541VXB)4^322bY~f1M%1-# zXkW$a>I(OyC^!X;3g{er?3Us^dY+pMug$B12~rb&OveY=+bxHc-lq%~cf>5sd?{Em zhxH{!t{^>}ucbyoN+g7&X?c-|NBtFLglO%~;Bry_duvn_9NF=J^ek zwoZ9SwHm(xIr`{b>hakC&Lw_*s`n@PKJR*Gv-sfQUG7jp(gR?H%b}qK zuJg?1VlwKn)yAk!=Y`3)o?8sE&YK>fvPpAflZZ=KnA<7h%qW-bu_)(TUZEp^DB_f@ z$^EC9#&@dKETj+rfCWxT1*P--AM5@pYNRiLEytEFU!1B^Ya_z!Zo<~ za8j^0jTUG8dp{Pbv$hpn#8CPHzs`hz$uA*F?1CtPMQfwacos~$W=HXyx}L)Z`~=gO z6R&Mp!7X?oKnN~@km)8l=bm%t&G+8CneO_w)ULhDSFKv>uT@}Z(?d)V z>2pbLk305}TE7eFxstq=`K|@7x^j{Ip~B`+O)`5tMLgXL{yIQ|_51Y5 zgKT#}q*gl@D`&7}(af>zhq&*lj}gN{a@yuN~@)HSYiDxwqWTv(xb?75x0oO<6}s53mP>OjK6rgwICm4RkJ%|99?C$ zX=SUi7BEMJxFSff;bta<;ASfJ$6pA(Z z^DWMP%)#K*!6+>VfpsF(An(#&b&C2`A)C+2X}!2z5NQGsq5Lp6g3`SX^@cR1x551eF9d=OhyK@})(M(*+-$ECY6MX~(tPlea0!U&xm{|5C^uJOJYNaw)d7DNR3B zqMSuVbr`c~(Cy;uC{Ds1KN!Od2uRc@R4w_mRG=VID(AA{B{B0;I_DMXw|2_G^G>fD zOk`elg>(P+qN=YllwZ#1jj{?$az0f+%d36tlM97_cZvSHWskwgn;_h+XjEXB z#wQovr4&=F8i7`0zq+Ze+ymMsw|2aE>8|~k?5u;T4;ecBKNM4m?|>rtSA25Tsxhag zlPX1x4RBstdNzFfXncZLo!z0=lOYm_5oMFwASOi+bEk@O^Uv`GN&r>gHXokPD?Mk< zudSV`WP0|{G9U%G&}k}cuGd{8LR)Rat`#kKN$Mg3<{zDIfektTAc)&g$hEVI{`h@(<|dfRm&Dpo|eusw*PDZq$NsV|mJ#7W6T&o|Ws%6E43o zm43`RHAr`Sl~IuVeF84 z&zf$ysj{G)zqotPUEd8;TT!6+xgMN+^VryiRBPfALlssmj~@g)B8KtpJKdO#ytoU` zKPAYNOfeb*KOXo%XWaj50`<&^U}MN2O};$s{ZqptrMf69Ib&4jGHb-T#mpC#-HZ67 z^iHRZ{)wxy)e$B5mL=AXxj9LT2@c`*TDAs5%=0{b zwpPf7y%VaG%cm~VmdJO$$3aayKguJ?3zL;c7*nGXw24Q^37t5;K3PzXY^)~*>~<;a zfl4QQ5UTgnWQXLdj#syHtwH^UJ*N8?{Y0*v)@}`s0??&V>2;77Pv||_4M~^YC_3}I zf1@cwReUe|cA3^)%-gEPm=n|-{-N$Ok>@epm1;bu)hg8bwZuMwa?9}b#C8Al-!uf) zIcZS5QdQK1ueaM=`7#0qcKu;PD*1025tlbDi6Bypf@Vc^24lRSw#b@_|M#gn{Y4wG z(3eL~&vdt2W@#0zhOSfXh!ks$Cwn^<+zxjp1Z>>S=Z(J9cvPMNfWH8~!kz?WbbXAK zMd5MhT$9eMS5Rbg9L}@8;9M%y{2cdRfN_D;f6@yY6cE~2NIv1R^Z5732dyIcZ`oVL zT7%3^t6pY2cJc^@V)x%##5>A{!QoHS8pU}7q4oAU;Yl0$QY1lMZZsd7N$08Jcop%< zoHg_1UDKh$d!37eIT6{A8i)PMf#ht+@QY@Oosw^N!ufJSLu`H8GassV#d;=Jn~W{< zJ@uZY_I{72kx)GYyV$c!pEV364{zDZo*SfphPN0Jo=Wf>p&%frprJERkuy^7o5h&p z-*Xn@vU#FunX6%SF1>4Yx*5x&H4?Vnawrok)3SaYua0e z1c$&C%+ksvzO^~T*K+%L4<&zk8Tot!YYuPL3KW4e=;Gp;rZbLCYJ4L*kMbYZ zArO}aMG81%xvROig@4Xp8T_$j3r5K)e)F~ImMi!JpH2)<4`xFdkQT3OI30e%bSgfh zV`ul&QE94BME&5qsKZ4)A7l3T>blxRMX!bVm;P2g>h++EQYHKer{etNE}6Oauh&77 z6M6kaPa3mrFp~5^*wyYwXiG;*wyn*0IMBT@w5AQiwEZ&pz&U(AR{a%W zN0T!<_N_RK1qBd?ZlAewZoZQErq5oYJ#c&!&5mPBYl8|5WEIClS4%-3f}Wg{oJjhV z7X6^x*S4JXPi5|JWizoOVri1CeqrlWNc;4hjfnlp%I2v((C%{Rb*teuxnjI2(vWGN zttTj%4s(*puUcq&a5&P|2CQV2s3cIorq0o&Pa4kF)^NJ82G=s{bmGzDPvP}0`*X}U z;#wAbITg{q?m>qqI`7lU%Oh1lUuG*Un4}5AI1JwLqz==5EiXIpQqL#|C=*RpUP?4& z_+mcfZRm*3Y5r2;Ql)a}S-EbaRvVT154_NfGE4r_colA4-22HK-N!OJD!?2+jJ)Z6 zt1>-h=}(XCw>XtN-i3tYBZg*IR}eXaLbIq`izgo4Fi!uoKA}t@YGG<=^7g5q+uLy1 z6ovfxgR*|0OFn9;q-^P`GrI^!Yk9RX_4CE``CkKAkgeS}jUg2c7A7Z#(zt;1Y@u&u zWdZ!HdXp)wM{UvSj(1@IIOzBo2BYazIJ9WZ^(RK8kxLEs#;;lrjOqVNkPn8U7@poT z^IK3b&e*hE%erc$F)$c;xxAZSzp3mxGxmEcBi~YOF~Ig;qgGG(PyFzYlr#s#)*l1R zxbsPudfni@EE+#|qLxa1HO zT}&+40h5KhF$X6rUgLAO$v?Uhj33vocPN zN=YM}**beb%m>KsR|AK)45*n7BR?$6Yu1UA#nmEOH0;9f!vH~Kyi14Xx|EHF3t ziq1|nHGdQ%IsFBwZs`#1qnbFU#K8;oD1AKiBj$zCHY&SaOo!tpR2vhemt;_K+o5-{ z$3v2&%o8;bRO2Wy7{5yIcNVfA6$9>&ak!_7$=JUB*m3Xvurv=%7vaCg4T(eKAg$Jj z5lw>`RWmas3nOM&Hb@^Nv3we+V;s*Dv|W*uI_>hE4q#vp!*fLa-W8XR&ikyo%N$H~ zdJVPDd58@fW^b#{5esd<3T$qQIc%bh#?~m*%cyx6veV+wWT!w1F5YC1hFP`aynk`% zC@(z!!f-SQ{3fcFBTUfo<*6w)nS&mKo?d+^u~le_tO0`}*y=lcCubuR7P1v=Eg5Av zD?GxqJ7B1q8U2mep`^9YkRFoZCB$7_E{|tZ{#3c+k=th%oZk z&KRe(1=2w1@bMnw1o*S452kLL3)_k8);JcV_&`pWu*rUxjjz0Z4W5r*UR6oAAgQx( zMh6V{;Z53?X2+=$Z_vEYV#77t@_$D)nTdSP)b$hf7%cIPnBuZ&YX#~-DrYrz8)n=5w>}l}WciqB@F6FhXo|#J zL|CaJxcW8!$%Xagc99o@-I$Yrxj6qCrnS}5W6vS-^6M!3f`QLemB*N*ydqugh&L^2 zrk>1CuwM&`BoJ)3Lhbtqt^Y%}TmGYo!nr(?mN?N>O!D_1e^VHmaFRc&)uab}A=Aj( zFF<4`o!we1$n?8OM!&!d-Nn7j#lp;+jFB0eAQ@3E`uWCiY{!eQldM*D5pG(WZ5)Ts zOrj5&cEy4s2#Ic?wD06U%91~n5QE>vtnk9_?k_Bq5)7W$!RY~mD{`WuR%-`1dOIDQ z!gLuV+OW}u?~{6veog%{i&y2=Z!Xd@$TnrC>13neLg#`Y66t5=kIw%MOo*uHgLab> zkA$mp z{RN0=;ycZYk(Ifp?MqXyZj6G2GpYISsV54oJrealj54Edw2#6xX&oyze^FFz$}N!k zcsNSoWz`ynSE-Kv_>Z^K`NU~2(zUn9M&hhWD__jbV4W3eljhERjG_KH9iJ%V~Tt+RZwyX z9@x)}q8$5)a0Xd_{|pM3^2BQYYAcgXXH%G7SWB1npQbT&USUUx){oh!j z>)XMUGjm`S>|iV=ymI>5d4JPgGqKq$A<3BK|mr+qp5>_ds! z@@hMJu1y9q2_Z`{Uq;n7iI=Tvb|d$qWsHJC)039a8xk{N9fx0%*%hhv%<`=?{7IE%_so=A$=PE5?(XHP#SHE1M3c zhZUCcKB*Zj2ao^~zJDudm>SF$LHRUn6<%?T{W!ZRsn|oKts_)>cOzr$C#K#p(W*_W z?%1v~$jGo^M~F4Pv?=`A(YqxgL^7&=BPUKRl+RZx=%Ans^ol+(V-59dc+fR@KbHf zCs968KAeW?c!9K-#KX~;ZPacmb}Bx58Tr}0a?*x@sjJf+sXlIhau48A1pa+E8iHIA0FR=W5CfH_+PABiL^j?q~rC-6-K~M$0 zn}cvPu5bn(cUM5C(enQxI;T*qh{@Q~3v;7u{ek2p7F2mo9^ykgi&py2AhDUzr%pEi zAU(u^@FF^>LVe?uHAoT@(u{RRIJ ztu7c=7LO3YARY2xywxrGS{d&6$iM!*Jyn2royTFzA3W?e`24j&`+gE$|NY)5!Vqb5 zKIsx?NF-0eoFJ=hb^Aa}JdaRx`7{wakI4($T;@7f;gVW)*%l+9chmSu2e~NZ5U-mI z^%3DGlEEnaaxK1Vwo^Wx!p?G?c)_T%FAxF6054m!H%8C%6?BbKZ=!tmnZh@6N2WtQ z&C-m8jj3;C%H3047{1U~>AJW_{EZ3vlO=8(j8}_zjNdd2>ou0kLqZDgY#oCzFGJU1) z@_ME7+3NuN&EB8{2YXMO*%1GQZ;1p)mo=;jt4c?o;qccy7V|b2b=%Kh8V7qQ>&u%O zt==ZPF`L=v%{DVnyv9Z}xjVHNsG8P0)QJr|#Y&K?kYivMuID4wj55^X%b*KAL9J6w z^bW759)sYw@gI}3JVu)KCf4Q~JRAz@=ek)QUe%h5ZWq+Ti_G-*Ik=<7KWTSa@_AHw z%m{;9tE9F4C69UxIo8C*`Ws4!k8fv;T9$B>x?+bExRNpcO=o1{<-@e+0fCJIevn=X zF*tvgA=5O+{LD|?~5G*w| z_O&uc{^JQtDa|2JWvR*E1odDtQS$j6=xyDr7dOL=w zMTz-PW2Dimd}x)0(Is}^l-DiX_CUcXfCrrjnSQl}=B$H7KgWBI>qD+od!?7Z0L)jO z+}Y|5kE##EiNLi};PT%fFBl2=i%KMRXv0_V*X|bEiy_Zn6aHT6kPIE0An&0J0=fjV zxkmTqw9*SjHyC)HkO77wb&g|aQ`j(~{1DQ$Olm#wUxL1005q5`f&fB!OpJnuGg6o} zJM)ld)cnQcEut?D5MVDdFChlL?iTy%Y;e`t(wG>MSiP@g zuVnMQ_zg+b+Jp(qc+ve0`kJ(5f0XS~gu==fAFSN;R2>rZK~QDEU(kZH$HhbE$--i> zY$p6c@x)@On?r{M@J*-(qvA<*=~Q2S=hEjdZ+sMgT5osE{dJO`@sx@)q*$)nc{ zdbkUWk~eYWlXAn-U|&D2_$}%Uv|$W~L3a=gZYxOl+N?M{ihISsQBZoK-2xTe_vhqT zfJ;+ibS{_gjQ`jRupqDr*ER1x{3*6o2L%*c54nMNUhAVt9@iaPj%n5YoXejA=1tVk zmz27li7L;RYA|`q@!K%2#Z#?9>gv_>nM$CBqwX8IP#+6#9di?)3YDj;M}x+Kf(p_< z*DDBzQ{$V&Lu8(n998k7*4EZEf-gPWgT!%}sCOSzMrKFP@Q&kr{fsGJR8QuH$~JdP zZ(Ebdl7m_%{N6EIdNZ+!`>L*)UZHwevXjRmxm;Z>I`7ikWmnkeQ3jOv8eZ>Gxb!S! z{lp}MP5Fou%hrnBxd0M#g{?Hqb1qeB&~~Ywz`eHoG$cVO1xbBFUa&x(4LnMa&VH;A zT=*Pi0`*{P_HMwaU0gtgcl7C@jB#=cuw;P#Mswc~bq0T0p0#jj{5va_8iCuin)a89C`N3c?TO2rRN>v;D?r z-%i?N@wYnhk4OV+482EIS7;aFhM~i9lowfVv-4GRgj{H2zOi~~fBF?cUEr9!y;15M zYRQmG__vFXM(NWcdQlAr2Md|b#+v)OmPs&2QaUl5cx8OD1X~xN{1^ZF5E&$+7n#un zJCI1mqtULeXIkSnk1rz8ZgDM<=jOjtgF**XV@>P3;gpudD>;v28>ZV_Gyh*Wv)vrG z<$F;WS44bs@vjh`_y3bMmkm_F33H?_h9wK7;sl?g9KRu%o*Yvw&Bv@z0b>d3D zSnJx;H_AKZ_>j*1&u>w`&!+X5_&W7{W#EYJ3gJGbW!IixaDm+1A!)aRC0ARVaT=K^sa{eU(Wd%LDx&mr1`i2!fw z8*LQ@rVw{eHIVScT_ru3r(3zw5)*N2G?xtB(&5MqZGR^?Z9`+UyHwvd2!BN>OsUA; zp&lpv$4JOO>FNJpH$2W;+a<7j?4lSrxU@$Aa|U=)G7CO;=(pEE%?l zV_2&FVB`313tguU$9C)^SwT&_gUA@1_WP(M8llq~^Wc~`2UmHzS>vEnG)k_$j2)X6 zE8$a`PE9@8s9C`m<={Ic)NXV9RNJFOJBlP8wj~J-)k75<$j1BUasz_3L zt*<_1nwx>B8O;?}R?Cm}#8g+}Fv|4|-J8hY2t~CkDOoZEUJ-hPy~wbQS3$b4PXJ2p zvL_O-jcku1C~K(IpIfQFxsn_74C-ERznW7YHEmyxS6U0W@CT2{qEp9UY9*D+P+3ng zJ@1b%Eg#Izh^QI}DsMWSU&D-^|Ll@x-g9gbLf7ePzi-`Wc$8NB0WuI5;vg=qF;OC4 zsJ~IdP0T2NMCcBo_^dZ&wo7L-`eeY>bzA&2ATg^?Pd4%B!c!>Kk-J~1m?v%d9R^wo z7V{9JvqIxw!Z+|Pu6@4Q)s6;RmA{SL;ye0g8p_bGE5~jDrQ{~x1#ai8PV!HQJKd)Z zjoP`7+&#r{R^w3pN307|a?S8c(O%Wre~VtmATI{aTNA&P`yv6S5pKv!XY10}t4}Br zHMdkw|2bQawz}VzPw>kqJ{*N7=K6x>?D}P{Dh7nzXR#0rijB_l?d~ki5P8FYo>9_} zj)>Rnj;Y}^;9y8voYZW8B!Vcx$;6@(XpNu`7hLH+= zLVi4b#gqydL68jJmYCFX4fTejFMfN`Vj-?A!e~&gl(2iro|CxjFi@bg?(vw-Ylw$g zvi$Se4T?`+P+q>#JioLNI4351EB~ryEx=4s{4GElGg!&XT%d!QX&F8C+Rhp89zcHyq%dJqmfCZx~of(i)0VOpR^^G1+2ASCA zw^n9Ja-B!+qLj(!8g_+GIS{4K4Okr$XWl2eG7%`&aE6X=*_mGqP67>0zNk# z8~uJBJ{VV?_3aZ^4@n9a(!kri!xQ`|w)b@9YrGC)qp~sx#~QucG~D)|*#ipBC)YG>QA38ykGFMAB+~ zUXI^Gt<;fpB7@TcAwK+shvq++s53i!%u59J{T5fYVHy;&oR>H(^xEs_W%a3U z!MEq9fk87)Zw`L}%w-(x6IxV`Z8)W@CB{!QZY>J9?t=Oj?Dg_WyHgg0vTI1_n!)sR zee_{&4Z^BU7x1bb6s}?+6cZ60TzPXP(W@$-_@RvPu(zEdzPg4lGjDBH_jJD{EcsN9b$iJLUOt9ZfZ2 z4LX+<3@mGE#4dN#a);lwn{zqXlbXFs9WdPs2H&VXG3I{p*pAvg(dKJYl9BVQNWs&3 zHm1YC-gc*pHo+~juNzQsRhzm{0e%0Q)35{RQeFauL{^RB7x^-s>ehN*BjX)nXF@!Q zc~hAL`Mclm>m`3b{SydwdTxifnu3%c)%#_)5xN5DD)&&#>(v@1hb5|;VB*5m(HxH(AfA1x_Gs(TDt5$N@;L*jJNg9r+neTPTS=DoX zq;w7EqEaXj-&g*0?G<-<8Gm2FR)CH{C2RaZcFNa1Th4EnOa+EPN_fXosk-!^R`)5*L3PfNPLU9A&t;vlcp5h(TGSk6%wp2>KhSa9+$@tZ6w^#fDT2Xqshe;{e zJ)iLCdz1-{v?I7t5-2N490xc@4P@g~Qw!=+m1XLH5-D1B>1(E@v{SBWws;<|DOLyU zC29$iR1{`ihbfgMwso90x1GO!P&$H|$q*_}8vBei+K0Ap`dTTBYiq@Q@&=++x7yg= z*$=gY3iXV*{RP-r`?UnXfCmELphj{50PJsccMR5{*JeTxXE+oBqz2;;vA+P24PQ8X z+`+@13G$vXq3H>DoiDLrt?8_gDPK4O#4Zs0$jU=-l)Nj@*#zip0QLeE!fwYI87v4n zoX{QYOa)JIISqS6fjFcZtX#~uKE8o_%Gk9F<9ipEN6XpI2c^`Ag&&a2Zsi_ zs^Ep@vh-h}&&Jqb@e+}Wfk;l+xW*!}qy*oGp|bU0z)$$RhAlZeg{VmoQ^6g&L8k7J zIoQsi3(5gK7<;@JyuUx(3A!A51PW96_h%9;1c{R)CL%oR{fOIxCQu6xYDDMip$^pnU2UOPLHvLycyJ&g*qMM}0)&Ky z!G$gUCwHSl1}G4&(>F0J!q` zmD>2-HfYlR=}rq_KF7ZRBDb)D#ebv(Z6I^8D^X>jGrqH~HdwpCM`K<7T^-h=IrlF}TLk zs3S1ACNQ{Qo$b|kST7@|za07ZSI_z&(1z7z+w(gGJ!qh_C|Js#!ku@(&gA$YL})YW zK}8Tprl!w;7Cc-GC>`P~jzU34EA>~&JrvkkS0j|r@OpQ1k6>^^KiA28+6_?yqEOOl z{id6Lj#MB_7VMBmy$PiP~^1=GsZ->>0c?uQ1{#Wrv!e|+l z!03O-|5lGE>=jrdupS&H?A97|wk87Al>hU8|1cD=eg8+%Huz3(_F@Ds?j?5_WYLdu zuUp$i6SMbVnVMbUufE%>fSAIe(9mGi_OM+{kk>3f)YAaAe4yq@57e+_lK&{TL@&=G zv?`tv>ms%bZbiF8aGqo1K~&j^nZazeXCfj4@1TbAAL9VvfIviK#6MQ@VRrHXP(%4@ zrpMUg&T-jYQ`D+{)f-$VCQzOM1qd~!FNV!PUU2_*4xZhPoZ%OMmG#Ln(+WRuN7sVq z^_>82!t5`Anubo?pvX<2G7e!qH~>+>H*mZ%*jGDbu);%9T4L=P7|6J%{==ZYB-z%e zlo!Hm<;$!VZ6OIM(Ls(G#YaMu5YH;OW1(!m;ZkjaLlfp%3+LmCx4+^d2bd`krq-s{ z)vLTjz#gbC7*ncgtOq!0!S&3QRy%WP8-O|`Fyt_ST$AOtIU+@8kxXtk+j5n@UWZi4U`1ISzWI(w-x25 z!Lv?I-^6FJi6qfrn0%3Pm`uk3(x+HWGohfd*{bJPg%N;5-fzH7zpl#KV>Yx*{xYd< z8(fVMA!MJ6&0Jf32qJRtEEeCnA7%pu9#nOcoBEnej*15lcGRQFbK^lG0l9B+% zyGj9VSHXbM{;0n^p|ZjmoLoqD8ZkLo+)*!|TA&u}W5&vO7ATnFE%A-8z8es{2M!V< zS>QJzN-=PC&FBG$DY-#+2@9n6KK{`!lwi{K!6k@S;|AzE>&D^q;Rde{D1_$AKjf2cm1Rf7E|;}scjL)HVpJEr z;hl^5;PC>V=uuH~kyad1<0!s^yC5 zf(Ndw^|;?otu2IRjMKR`2bDmXo^tu7(#YoZFGgi`p0Ua61FFxm6g*~??fCH=gbb8 z?uWE_mt+0{_;fP-n3!?mLnCIwzwfa;tsr_d?QuAiFq+f+74u{;ujPik4HOFC=hK-|aQQC#$ghV1DDdVdyLkv%%8!Z* z6?y$X@rwCmAM*XE&pZYE zXa%&xfV1y_D+S1D8GfasBdZM5>bXXSBf!m~1*irueVxPZp0!UIvrGEIcYkN_(s3M( zL?4aU=)LEQf)AK$IXNZ3H%iTRT0P>WZMed(1O3)j)6yqn-$TKO^9uu3c2Tj3my(;uI^O;CZFf5Rgcf%)^N5R(sBY&##4Zx?hmw}z ze9TK|Pbzm?L&X6S>^-gGIiT=V-w{jgoXQdz?eE2T(bFE!0f@N1E;-MqPNxPS`~r~H zcasKTD$afe(_E`Y2MY1e4}A^PprfKb&1>I>GOM&jGFE!?y-3PnsJVKrT2W6Kb1j^; zytx`*>c;&F!=vP_^fG%-jnh{~B<9IGY7`Sdy}7J4wd8(WJXAYlTz@TN@iA|Yz)mJD z=s}pne>&vrVgBfzLhW?pVaHZEnA&bPA53i%NG1XoDsS_r2Ch7ty7s7F0c`}Zo_eMIPYf`0 zrUF-Lex`rtsm$05`6m~|97 zDWI>Mb9L+Q@te=>4))1X+{7~c4z~|Fj&R!86_;%^<^4AMR+O2tTAeAUR7%~k5md4Q zsI7_J`DE8cvO3vKeU%!Wn--Tq);RJpawxB*pOLZHJNIDIU}aZr^{{}{>p^|SY z8Dh17s}koMQx%_?u7Iz1nGyE8y_l7>DL+RKEP;Yd`IkfrBcd=@JwFmRrbp`(Lfj8BudUHmhfdt8%;No@KZ#%ytBnLY?%od0!VD)!pFcCNf z2ut$OPU==_RN@hH8XdEJr_%f0(nJ_EpMgW$&iQ%pl?1#Z)}HGrj$Wn&YAEd&HtCog zYDAHvR>+&C54P6|kF>7?D-YpW@g!xv0kZF%jQSZ|ulg=PwzCJQnuY<175tv(cCns0^ z002 zI;On@O{S_0*y)P|wA9Gl2dP|8LLcM(lnc9`?uBx2n}Eep_sp*_f4X-u*r5t*w@xIg z6}H!VSi*?WLJrVv=qXtc`FnbS04_*V{YbCgJh6=O)$9#duo1YN>Epz2-Vz80kB9L-H55Wi%WIm4{r(OL&dP2hDQ5ZXemA{^RK_PqkZKl zU%}XSrql5Fu3t2ii3s!iw%2jbVr9}!khbCIbrFrQdVQL8ukB#Qe3$!!3H z;4H*aN@F^Rw{EO>U6H4}MCuS7?%pP#e{DmGi=A8S852v>bdCfwgd^E`TosdDk!DKQ z8DvP@?!Nwv1KX5MbTU@iRY{;$_gp4ZRmxjG)9YotPgxRHsM%5@UCkuteQw1KE$K^t z>@c`5r>y!l6qcXZ+j(W+4ydBlXl^Z^LIfk|8iCkHzl!+1TnnYJZbO1Kt75 z;eyE!d45iJ_wMvXJ(0wP#Pa&K&3Q zE2Wm4fLB;vzUw&q!O{SePAceFAv`t_35pdTYwQecZe@AhSnl>sS)h!(yBjOm z6#04#<$QFcUg`b?$SwKvD!}1B@rh{tGAsHXLZ(h_AyXSiO~|MK<{_Xh1zmognpO?X^bHtpLveH{Y{Pu`?zO}q zA`{uj}AP8^hDZ8E|>f#jXeYABh- z9>@*60e4;a0u{0U4DqZw*?)b8(X>vSL*P_bQZx`l=P(d;PTv=VZ{SEz^aC{=TX=ov z8}Bv;91tI2zM8IAUFm}DmfEDqsbR8!r881rdNhiEUD0!kAD9(^CjkpQccqNU-i zMI!brHb#nM1@bXvsgykusNH*IyVJ@i9gT$pCqTD@a>&E9z(!RtJ?PvyYPx{u0Y+Fr zWq!{l{fP1zaF{xn>~xij&g~opyM=n|N7%X_27&~ilbaggjH%l7_{*-Wt&dGC7p0-! zWfy`zm4_S33g!HvN)mi3JxbU>?am4{7CbUtl_PIF4#PTS7R6*Z%KLvBX#QiaS@fFC z;PL1&wFk1Q4;W65P?Ar;IFA^p&rvyp5tj2DF; zJDSe-WX)0(4w%YeKmZ7^rFkOBGc8pYOHVXI9|ZQ(`7tADrPVkfvO%%I$8cZrCNNEC~MT-IE>!UUN}r-TIjiqw73H$vNh0gZSQFot?sAA12N{Pk@VnConp)a}H%-EEaHRTUCG|rbP}?yvH|N?DxEku4F?;Y& zyeHSOe9%253LqPogLVb40-m(qUPneKZA^N-Mfsrn**n&cw06;gQ|0D%3LV(mCZ<~b z_3O`bEvIbMcU*Fmd8RY^aBSpm4f+Lu4-uqfA89f}#5-lPRPrZ%wj~Pt}w!Pf}m{zC{+_D6Ku~3Cm_b;{yOlVgXK%d8?ax24&VeqfJrzUYlXA_fjSh z5)nEF`jQt=b9YRxAdLYCGP*N-dmBd*z= zcndbBu_sa}7vmxo_P3Q>oayOnVi{p<=VLjYQvPSASUb{&dUiJumu%!YU+@L9L~88N zP2rTPw;&%@`&K3rW8lZ9j@M5@!^4Z6#mB#toBxmiki@T~3Q*I(5UwB#jY~&!9yhVZ zrVhd8j;mvd<-Aj))ce^i|55bWVdT?RQGY9X^Y8Rhgp0P#7r^b7D!${NT3A0bmuZ;S zmZ*xZ-9q*o<61lN%(NR_$ELs$^>2%)N8f@sp_^U)uprlbgdb1x97Os609$=?u zA1CvYVh}89+9A}Yp8l67U=H(aeB4=AnXT%sR zo@qzw2#GrCGmjAGP(hNAsM}yJiG3n72MgW2qcbz3XJ$r{J9ajNsC`KEE=S@bJnc#u zGyH44%~|9Pl;;}Jj)&bMKd8y~!N(#kVKWq~SFAH4$u#VK6!9N3kiPp)xl*sQgQOfj zOv}d_J=SNFBnp(Z+@(sUtI?jW$@Rw|VSY0{F}G-mBC= zcv{yKYj!nMcu!htvd*Jn3)A>I*{sx^fGc`peG1Rr<6+V4_saASolq`>k@~MO9-WSk z@#!p0n;9cBDF=~A!5%fc^ve5C6SCU2E^%NP=-$Ivoy3c_A|Sabo3lIU9m<4B^AVB? zQyMK6=0X#T+zfbZ+a?OdFQ>L=P{2$XQx3&Pkj3Axw~IMpXIwwP84_rLN74-P58L#m z6e95{Rg56-m66gvgCGQ0eao`dLqTRQ<^6h=SM>%S8&f!eQk`X8u%k|jz-EdbmsH~J zMsxs;m2u09pH@nT=J!_fj5$dx#K8t`c7CabQ4!xKOlErOZGi6H;;@j!$yQb zD0TIXNmM`ji_&`5KU`I5wdVh)p9T-3#7(FWU%6UjkGSw(Z~yrS?380wJSz=sZ*6!f zjn-j3go9KLwm5z>Iajv8m`j6;czlv9-9%&^&*q&J2*1BzRc;@>G=~yQZHt;COR-&A zL%S5&+U0SN)mszy0$FQ}_?3H~f~WOh4q2(YIH;cR(%0KG)!UB?Nji)^meg=PEW&~g zr+8b9dq#qXs&XnJ7A77Kd zfw*u%sG$#^o+%Bw*a`I_nT>V9Cv#FSmmB2qXQm)flf8iNBoq6+<1HKz0lMWa z57p2$O+Hg zjI_W-;>NlxFxUkPO`Rl#U|Neb>8A6uQTH^p29?K{Bz~DY8T13ID<$9!OCj%ws zg@@!jVR{~xnYfX5POvrrA+~{^$J5|CWTDBXNT|n~_0?U&{*weg35)=TKmyu>&eO{8|AMnPIMp$QW(|NRLx7HEQH{Z~ehwt*`k^=#j*4bxCIe z7;L>(Xyo8&tPy$PXhIWACBv{1IX0J4t+6)X@7Uw(uDez=+kmqBf%zJCC4zqRCDH3i z2XiJ=48k<~!L6jDS`+u!8DstLmg?OUHbYQp$=P{5AvZ-K(qCdaJ5ME_@DP(UhBE<5<^h zXnbKL#g6#}lb6}cZRE>+a#MZjN73}Y(*`pp?QcRqEeNF|I)j@@L=_V94}bXb5$^6< zj4k4JI*NTM>aygHWAvbZASR8Sv0|1Y0p4E}GXl?xfG!Q>KgEr`9BCWG>bswm{A@ZG z%-(a$euX@?hreINiK`w37@_%~@Eog+0R}UmYb82t9_G8$*g`}0Bjd9OrYZ#`{NyfuYbR%~I}hoqE(&=4 zm@+cd6-VmcLgijGZ4UcGc$lzny^ zgh3xELO3v4+Y*$u-zmj?%BJwi78@Kl)-xb35h3fW6cDDkqL43AS9JSiLZBnE_?0q} zcVHnxwz4Rff+Tq#mqL!IUtce)=yQtG5So&G4^vJh9Vaxs*Kn%Q3_>p-QlQeLn|uHr z8F^U$y%r-4|1H6^EAXbdZ-o`qGkxOiQ`>TPdQ&0i<14$EzR#>>KVrdyCLipt?3vy7 zx+s@fYVRy_wG0^4-fLFk$4_vEj@YTzRjt=FID~Wel$D!;Oi5b#8l$Lz&{uR>N8n@% z7J*xKLPd*pX#}I{obEBP=nPO-^H+JM8ohE^8LQ#2K)Y6zB_JccAAU4rrMq%^%sB6c z@irQGGE-`Nbg!Jq7yn0US)vaUt&P#y-mIr$;XVG<>aqs*-FsndE^p-bH(~FLLc%gD zvQ;p77PlX83R-fJ#y4$$9SrAs4~}DRFW!n%56t?OG(NO?f3tGK^^g?we+h6A(~Iuin=k4*5Se>D<@(Q| zEB|^NGvc@$7|o9J)W3|eohG-glM_4?iK9jZb6@FQFGUMhz6CviOY39Mz_s)-@c#@n z`1yr7!u$vx&ECaS7^yVi4++n_oO}%*SH<{*yZ69DtX@uUEwofOo56kdfRfUNAA$T29vWP%RjG zbP)k_Fs1;KuYJ$NKz{6r@S_Dh1+n`l4?~zfPj%>&y;298_zTl-RZPzI@UBkhzOn0w zq}zkO^=KA!Bcrx^;J6(V6OG)2Y5FY1=0K}XUnj8VO7wSU?XUC|8%Lu?5psER>0@O6 z9xyisG1 z-_^D0aD#|cKRDp*?+6MuX4Ut$<&ycRXQJ39Wd0y&rYP-d=!hPR;GXoVHILHnL*mM} zTGR1O^(=MXNi*&HG9ex9-2eot;ry(k%zJ#m*P|Fk>Crur2)GAyMO!A1>=kxa87?ap z%TJI9;Sf)|_~}Q_A%>TK?b~&r-Zt`$0N&+o-!i8%zD(QdglZ_f3OdkAGyvFAm{Nsd`Ej zoYlq^>>rF@;{v%?f)IA0%RJ_5F+x!=@qMfB{NGtry^jIJPPrxkx7*Ryv|Gw1bna>UI{{$ zl1t(TkgF0%%NbW(CkZ$o+doF_Er{B(Dy1By5o*^;&o3!?85v_<%ijT^LuFg=DoRC| zFkdv`eb{>yJQ*bD9Lc;bJ91piI&+>WL9mR&)vZM&=WOS6f?65-oL$aT;8uzmtAOHX zn-DOvFH(|M`E&*qAcMA)Y>E{oqJ`R9WWlY|nzD#p{EoKA%9*X?P^$aRc2gaSt-O;5 zF&@8}^NM@WkiC&iq0TZBI&HYI43wx`>Gl`WVCGly{;Z1zJMWeHg@O;BkL8uD=at)T zf0TABE0BDfczXn=n|H{D%4cl!zB1v^aZH!ZCqZa5K5nPo6+jQo@b9sB2PRaWkixvR zpl2X=K}#}r#p-nJQYTf2-32SUeeABMewWP2pYKzD84gXP zMv+=I=rWJB*t+1@lT2NV1){hBrJ~d}g5BrmG`|y4;L_5o`v$=r2_MV8LPYYQ;Q|lsc^Y#~;4J zz2_dKuVfl=hH0|;?!4qH$(g9Dm8Y#2&g_nPKFgL}z#24{REW@+VPuBD6INL!11UZ3 zA^Yhxhh}$|XB~DZBLari@4rvag_L%%a^(#h6ON}GdJm0!$9qQirukme(lO5|oB0xU zxRZptpF|Kndg4TpR;LDf*c+lclSu!-RFQDoW5>zHx-FSI>&WKqW9#)jt~tRo2QS`* zy_i*!bnu=#;%Fs~S4J0U0>ndfza$QAu`y*o5fG<@#(d0t<(Vtn@#BSfFjDf+$xIX@ zagf=bf?3hA<3lBpDh}aI0nb}*1Q26>jW5~`Ln}X$X6_p9ehN_a^r*T~cbBWL z*dHOyFO_{m(kaLxN&)SwmvjNT(G_(ViWv}e+`Kj>M!oim`4$W@E+}&S99G%Gnq_)B z?NjL_CEv!fJz183{usry3e9|cRtqB2cIy5bOjJKvdl~NTGTBEVRh`<>$Ga!};JX&> z8Ypo>YT4Z^A||^n!@$}5G=VKc+$lxd^QC+3BdH^fYUx|A>b&1-xKuICkw9lo-w^)D zq6%W+2p87wkGjPi!u$WCuX$lr3p z{?4*hQDodkQTc{Yy*(eECx)_+zoo@a%Ys}79B=dMyk|EhxGBnMYhe!e-mey+hvQE^ z+0j9~^P36}0>|Lm)2-u|k2%hWzlj zn6}_ae=YeFWIx}f8<$Qiy^q)Di>s@aW%t5&W0Zvj>?qPlccEoMBI4ZBeab4#AO=JR z>N6ar_@uUCOIXg~w6BS$%>|tJzX>g`0AnRXya=eV%FU70_bMm-^xFINs*f1FBeHOe z;MNyeZRMgVbV+OalhqxU;{=MZFcilv2QA9UdJ~HL0A?~a7Vdi>tNZ)%lk5e}gg&E; znJ{MQ2kTKQUpnbpw2hodQXWRUVgo*-bne<-nzDJ6%mvA{qstx@b%Zv#ZR%TS-sU1s zmJO1roQlp-%1c9g#k7792W~Mne~5C9`P8b6Ihlci=S0nvfN3bWe2)I8x}W%|Y-?NT z)Jr)dYThkA{>oGlWEUilV*LhdX)m=-drkM)5(NJkgYk7#AqG6msqc`y`vFiZ!tD6G zJStr&n&_cg_`D#==gqPrlGi@Q-cBKG9C9H@>y8>m8FHyf`)xXGp~TwGuF9qNcR%n6 z1+L@lU9Qvs@$#riDl|ED*wF$Mss_r-5vil9fo% zyIt;42796BqP+YRmSyBfhmZUz*7%-Qq}wvrrhksP$d)=5X^zHRoQ4B9Dd}V0sF?{m zsenky>tPS>uLx%+I^z#utwQu3yDRhpa;=xjPL2FzYw3*GXj>?~e0B zY$=lUeDWz}pPmz{wkd-2nm$dMHxBK2(&~ysoX!zl|?g=(#|`-WF=BhzREo(Sj6+T zJ}qY*U@g1LSCYrZtR|y^;7|~{@ydv^hkp$mt!@OOF`NQYal(1TrFqpbwIAXZqaKC zGIK}dAJ|>kwpzKE410@gy87>7ync>$=V%aD!f&V|2J{!hP3CP2c-6|!FDo0To(Dr@ zFpa9Jc{*l9s4@NC>8veysC%mW-R*x;)lV0!UtC$+z^}B>`PseCgeAO^7ft8$B*Vxz zcU{9iib8?g5r|d%?7puqWx6N#G{HWmZWiw>ueu~8H{pl8kM}+;+lomR=&|temwV2< z8Cs-ey4o;}FOM;}uX=$4-pZ?>;^r12x4kQk9d0qkyci$VI&_ez)5Q{gOAKVw?)Jcq z@3O8Vpa+8jou|Ar$VMOwrJT0R?k?9Y=(@0?yn^LJT4FCi%c9~tnHv^zx!zYb0?(wC znozk2Qw$C*I)7L26o!&nq+u7TI2Bg;S5jLEEtHD)kC3#r-=wdzBg=(brq}fLCF9;s z?&%JqmJTR5lRt{xARXaOHD~G6{=3bX%C`^FX;``r3y2sUN$Vn2HoF0&Mr*b0)-NJk zm0he8=GdnYoyT9ylfSV?Je}u9#W=Q_g!a8^KSB-q1{W3APj>V!Q^7E#Qo^Au$x3#d z6G>d&z3nAxg_s5lL$rC`7ujj)qv$MQP4aMj^-HwkpeDgk0KPdn(!9B{1>NM#@jE8E z&6omtq%on^sQ(>>=lv5P&2(dF6~mO=X^%sgm6KNqlg>21Mca`+sCJ5_R#;1_zA{qF zjVoODtR%J78(`sZuPe$9YnG66DTN8XP01^28lV+(v^QgFcNtRe7%%E=07AmV1v_}pkFL{w!>MRLh`41}0 zi}0Mn=6$hil3T;KAj^EbbLz8`=V2!64^_)$vcoFV=n2H04r2u~egtVlw-yZoJ(J{U z_DvIpK8cDH!yM=nu?Nx_9eh?NJHxa#LiFFdk=C7#%%S7D&l?CQ@k?LIzlL*}w0dm( zGtzHEy8xPgNOr)J`ffqsldo=p(J~PIE$jifd*3aAYXKTyllXc)mO`typsIUqdf)CV zyW9vRNM2*(E=-w-Dp-19jt3pdVy2$&b7IdU0Wx}ja_$_r^~qCll`RN_J9C=Whh6V0 z)+|M?b)wagomfrDpoa(4IAHj4?Q=~Eel^4}a8O1}?O!3s_%1K+DiFJV7W$&7oA8K_bcb^1ti0f!vZHUa1ST1kiHQ*N*ke;J){xXk-?e{&)X#zm zOBf#9U4R`a*)%EPq;SrLOK*8w#eWH|Fb_bpyJ{^0h4Bl&yrTLg5 z409zDT!A7z5U65bOABCIar^XqJ@Wwnnt&t2AS|JI(tVvo0L(70Pg8$MwhY3OJk)v7 zjzSNApRjC!*n>VAA^G!0?4MCBJzIu+1_Y4ib(uPm3$)H45 z#!=V*|A@hg(0NTR>y;w7G%Y!kVFs(9ywq2`aij%w6QNVK1`|?cURG~?=83hpxtn+( zV}|GmBISwq?M_ebaFiZpBXY`r{f`SsL}d93NRtwi z%VwPayvcvaar>wA=kW+&a%d#?IYsjfa3j}3@YRP*JK_#?ClM|r(j9cS+h}{oYwUuw6ZMNnss)OTnZ-YpHdIl9 zu8v6oz#bgbotnjF>JltX$HLd~fKUK~rJubQBeC$(96tP2giSf7=M(LZWqS7ThqH!Y zUPhAhl*QYUEaW&R^u7H019fCOnuQ?%5t?@y))X8D8aRvphDAeQ{vP>Q(4b+Z2) zIH~+$s_^<8d=_|j4n7GWZW_H5#9gyHL#!l{UjTj%KrCgx-LV}y;=2a9=8j&)Qub)6 zv?WWdQjy@C*7P1d+2;GD=SMa|w{=?Ih8hIqwF>B|**ck%~PjtqBq?==afzsM~QC!t9)9{A}-|h%} zO_qx$ghDwZNp)qS*)b_Qf`?SNhS`)8o6F8VvV@@D-NdbOBYp=}(o2f0HA8wrkyL>C zt};+A+6yZi%Tn=>u>*ocpU;5F)-D86@?MqevJ))tp}#(-QW7G$rElfe6D?KyiH`P1`4!F|&o@={?CFQQsKv6yPFbkL zC0*suB}{M&?+(-8get;unHbH>Fc5^s`Iz9CYs|%82Hveg{`tu;>Ba3Eee&hBYgXl7HH-8tp+;?=`QWcA0&ePPw-MF(0A%;Euku6npgRQbM*vEZHovzN}o(ZA#OG`>=Dzy!jpCB(* zMhrLdUy3640ACd8F58?m{@BGM52K6M|E51OlY}pWmz>;YE&;GFjFTOlX}{&REUO~$ z*?KVZ+wfm2L8wbLNL_K$Of0o_AtC0EYxx!7b-zEAJdpZ}3`7-;m?4DAP<}xRJ$s~* zBV}WFNgU@qVBoylV$PM~tK=(Ml}bJ3eeMLVC_Q38SxPE=Mfb>4f0*xEto+i`w4O23 z5k1^|kKLp1heO2brpckAgS+3#8XM4~+12Ix9a{-(CuAb;+M+Imc-HGE5flEv?w34y zr=x(Rt#}Z`EG%DFXwH46a@(ee1*~z~I8fPJeqb_udu~2ELSBzf`?OpVx2&nfUs(YC z2jY7I+vzzv9u~fmG`9cHNm5;O`0G6}5SV-aLm&$Tkp_hp7 zTQ}nSCUqGXGk@{AJO450_Wu=#CEs`K-TzMj{Ov(5+n=G<`g5*Z_m?Q0-Mj=%v`QM& zH@to+AaYIw(`=QtmJPc<%&YUY-xOJA)VZ$ll`RS0jso|BTYu%DnbYIOrcu0D9ZK87Hcv~u0XGT#@s^WZ;K zB2Ze|loa@oj66Td<0?KYA%E#a&LHQku*r34lDSXsB9?*- zyxb=x%rti-e~G7h)&BiP^5ggDEYS&9-BRNvpA+79yjoS+vWAeFxQj5pQ1VWpzrNPs z!S4Vt*!@?b5A!NZYyR62+QL1*e7{Jo>sF1NgI*o^4e-0~x%Nw09X6t{3$UnBKHDN< zodd_`Xz8OB80khBQ*gB={Vf>w9*g}d52c&tz@x%2IG6@e=;H z7$0VxjW@}rs&4q^FvfP#hA*-bxgy6uK{z~(-k-u(h#-XA>eQws){8B~6}I0;z)r*}(W_Ps7+W&QGT# z{J`t0eESF89n({&x*xaMFo?@H?oyjTOi7X9(RMU?i>AaaLd9veQkvu^S0-)VCe0T# zC(MYZ%s*Q)G&FdBTr#Ttk?z{U9~*n>x^`Ls)buqbm(sg0Muw%6cCRS#XQ@tx(L zX~Q{>x^2LhgMS|gD9UrGNhIylYcpy#5Cm;QOqW)63Mz=AI49Vk{?N8N_tEoWh(^XQ z<$2V1#?UDy*o5tbs-NL@&nHPQi9f|Xny1}Lrd{?e#jTgqz8&(M;(45o+y<3Ry>rR9 zPvo{4A4#LUV|jFb$1|PHx{;hIj093{J*TXgl@G60UTwU(FUtuZ@f4pBzMX}!cwbMR zkw3+5#j#t~1(>F0hKu!${_*R9p*}>#f}O>HQKr18rHQFDqY~$d{sQ?;QHfyPp6)aA zJAaWA5fRM4J~G-oh`8>zFai=a{R{CbgKw+Wbc1Gkd(Om zftU}Yx1>Qc}Nc4b#3Z z3=qPyXH`of=G39G)@_7psxP}jsl^^1uDzN?EaJ31QwR(qmKsHD4<_6WS}Hz>Qd7tH zc9*}vtXYeRw|dRIbWBj0ujs^KNTjk;ASk5UzxBS^J*iC3H;?=$P|rvlc0MbcW#fv1 zg=r6nNqtEd@MltbOW4_Z?xlFlsXA$5yU%qGs&$AaLCngUVxSSs_~J7HN=VTH#(bWX z!uf|b#DHWD2;=Emq^~8z_Po9Q;GYldojafB5|gFqhUx8HUi8n7h&*{SU&I;!&VRNr zniN=#=uo|TmMe?p$;P1?Qv22A&kokRHHlR!GIyTDmjkWZSZRdYSMZg zs&OxZ(oZ&xr&E=p_0k8}ffBb#4enZqJf5dbrA*Y9z-Z1ReonC@n8+!&{T0&-4pFPg z%Z;NmavLn8k0Jd1toI9Eump_LdQ`kE5Gbm1mwEPd`5#p=_ZX`U zKVQH%l9k9sqv|g$s5mlbH{ywhHRs&%5dg}LsOXdSB!N+>w{K)3TRJ>G6;uADIrU5i zg<+NvIc2L84L9Z$Pnwm!qqq4^YTBVpLM@?N#O_Gv>pE%3a>F=9Y@2HNH|sYN7s+^` z>cnrH-$2@h{31bGTxo3QmaLcG5S#A^7RLyCYm`)k~sRkJ;{3w)u94`Q1s4#^u$FG*4cCade^-stsi z?HoQzcBIX!*dy@Vb5?>K`IQIOjhbfC`@^_N`3Rj7A{F5AGQ-%jUd2nJ`9tsDdzFmX ze~L&gX0r_AauR7}0g{KlF4K(q`~;;ALyR$xXVFwCIWt0NQ#=(Dz4JJp-7RR=5@oa* zKG(uHPz(_xSWW;xWay#(eM4pyWXpk=l`iPtcm3tKzuf@-$3GqJ?5V?*1cxB=$j>l} zCMBGOG^OlkK5@8nqq=m7K!R~ACqPjsbCAdk1}euBul_>c>) zGW5NXb%p4()F^G+b)G4w(-*vy#V0J2BB=ALJ!Y*<+;*sy$%n8mp2=_;j0tq_vZXLs{{-RNJ=b~di&g)M`9W5gA{L7>m=%)ttREK1>=vA_!JwtL zI;*FL(-@zFCX`y5xc7v9bEGUpCZy6>fXF9}ZG*5UPa(H?mEWC}h%lJMN>+L5<&`#Z z_;%W}=jIgPL_1&h8d413Z)k1aI_;2BFdu--L*RAL#7)bJmC|(Y*&`;85zDYxSYq)- z3EcwI^XXe=D7LN|woxp13fXr3h}3b_Y89*GbyFyNNqp2B#RIJHW9-DaKkttlK%OnR z5b$TE^dZF`*81hPnzRH<<#LmapYnVnYJD(H*a%M?kjN)(?6%SBS16D4B9~BvYO?|h zGMh!542jF8brn@nP8O%gmzk#3Bg#d=>h!1-Gky*FW!W%fj7Ec@J6l#g1iDGWi-s|u z^yazO=TO3=$ArfJkH>ClBIyR z%hNU}P0!u0^`&wkAbFzjh24@rpEf$*pWx2RTQ8&{hJ&vxS?HeTRYisSqG~>+^B+P- zeg4wyn?otSB6~31`G*l>J|`+C0UsmcwxZaCI?WaZkE>)5NQwgKe0=a#H$qndh*5b9 z*<2S3RP&MbzK*m`7E*%IyeO+}jlb*_Oc{KWif9#URl4|$av^?$jRTPn^zVK~jF0+c zT21P|wkg3Tt)pXCx9HvM`jsA|x&3V{fifpAc!pW{Cx{s(`znWlyNq85gU*MS`_3m~ zH{n>r&@eq(VXob`PhLbyRRM73nCRr{$pBlv?tRr2b(0DO#gwyRqTTh)QV`#;Vr9Ib;Y$3z_DJ;pfcgVG*E~yWU@1 zv}$R8Xna!A?uy5g*#FYFK~E2=RaOq}|G4JP>_?hZu}mzre(vB3ilfXRCKJr6&TCpl zxK=->XNB{Tz=MR92KSeY`82gQcOY|L4CZCB^qklAQ0Xq3RmqZ?84?(u~D_7I@3Ey ziP4?P9z^nrJcJ3j_8ckp(N1mjMMoQKBZG0Wi)cDc2BbwMi^7O2&w2jYWkCi582B9Y zgYT(8s2OP$cN_3G>jEFQp5GY@^PVrxWN=$cr#QE`b5UWt^&OlfFg2E>@=R@CsY{i+ zhQtDYK~zT>Mq=FVRFLLjs{huO@|mT77;3(PW?~fK##ay7uJK_U@kx2md2v zwI6A2L`>L+9*oo4?`EtALZq9x0p;Eo&@Th{KSBI#QP%C*g!T}@Oc8k{Z6n|-Jg4Rn zot4A8Rdkibl458*<{cUuWl5@DDOdil(``gOh^cGWvqRE2Rl5cgr9jB&@Grr^+WkkJ z#-~Gn6ioDFb7(#Zl}Hx4?tP*PO)r8GDz)EQF~IzL;P1*nAM~4@_xN#$%;IO8YlCuLMaOFImBp!tFZJwW&-4y}9 z84uoS3dHz+%~rdy`aPRuovLgSUi??^H<=G2Q&w4647>jXRd@Fh_~n~@Y}iuEmAo** z3QDftUjC>9NlzrK0|c)R!H2-RL-5i5CO`#_eV9=n-Cvi}WVglqmc`8(&Q;=3473p^ zhY8_~BG7-&+(egSq-J*NB24rzjhf8N>t@ZF;tKGkLvSlNY1BksPTqnP?2K3r)6)^3 zjU%?bselsK}OurAF+Ol1w)e9>Bd~7MhyX53#;$Sw!{v8b0MBp+@$K*x{GfTW^pv z5lPl|N_9(P_fSIDB|H|;_&h#^Lwa^gohsmvYUHfypm|3Ey&nTD;@=R~_q`A00;&F{ z?~br!-U3Q1|Jh@PAbQLZ%CWSy3|;zj^>W~kg+J7tu@l*O-aso3jpWIl29 zWkeYv@PheNKjy3BiS} z-`XjzIEzLrQ4wdqA26LJ-~kop<*w)l4|EEJz?0hWi2xCFfw1HH!ysDG%4v@-h=6%y|6t`iVoYZ2tMvEF4ns8$${sb-6M2#YB#dIOL z(UR%73|x$Pn6x*>9$Cb4#UTjQ2U_zeT;$RUl*hpBTm46#ZN~8{hnOCidi#`?51fEA zqV-vCyEBHBM2Dl5{{G5iBxE!kh!U!csNR`8C*hfLOM1H>??d%FJ9A2Bk~uQJS#b>I zODo7gN^XR5Q?7Y~T(f$W9asc8*_w=_UXy*EqZXl`xp{XIlyUp=%?!OZ3BOy}FGrR$ z(v5uu@0Ma-$uK>6I zQ)i6!k#!NchqFcaK?J8a&TsnZS1&7WDqgLftg&nKH$$`MlS_KCP$Dnmhjapb8Zet# zbyUh*sZLIfoF24*+)4QxCo@7yY6yFH0bJO463CFw)EfCl7;nsitI?*e!V<@cDfIAF z{t1jK72j!-u=tg-E_|8AzK}vLQ12;KP?3y8AK|9PH#Bb*V*v>7W>s*Rp?-9u-1|A! zr`h*4bnbq3t-5Dp)Kuf#?N(jB5Iq<5we(_!V~TQASKFxr5H4B{Ip``eeR*KSYbZLn zBQ;ab=BOYy@Nh%7^j^vErx(Z!tH(MK#POY+NYep#Dn^v`^t6J(-k{aG{A!QJfRGs1 zmeRY*>3&5P#~seB((3dL?ux33he#-V8Qe-65w>OGO4#kmCVfZP_p*4FfrY7s~6jpu;JOd z_iVu^rRJ>bA40jM^gh|D4E1Y-5U8<=M9?y_(7&f+Fb`mQA97U}XS{s?-so1z@5NQe zG%f2$IT#i6O5AwL&QeLOdV4Bvt2gf;TixuW`jx*`0evv`SoB>CS;1-fivhi{K&oS) zu8_EuiO3@h78dm;k_3|J^+A0(pU#GGt+lkk3IFpW29a+sbEdT(eK8w>P8LgAtw+F~ zByr@r@?)gv-~{`-sHzm~Ez!YpUe&5)n$t#izQ&BrO5ZdN&f8>C&MFR=DDo05RX@&1 zh|t5gCc}tsDAw!^VY6_ENmD20=I1u2gsdz|Q?}|^Cz_3FeQ*(w>g|yngeE}d=ML&o z;k>>W5L^eLHtdFFG?|BPg|-q>H!`@CF9zDb1b`!=@99F^?r>1ej-oGRg zG)cH7WYW#d?!zUB2~JHJ1bxJIt&MOMf)h8v)#N+_s~H&D~~LNkx@6T++^;fxt z*;Lo?8j5f11J3~ z&s%IJXFO@@rjfOouTW7D@AV~`v0PQ&Y2Niaj_5q)Bzha9jbA8&LZe?;Q++U5yZwzk z>uea|Zp5m*dWI^skeZ)5F_o`2!JabsW!1RI`0g!vMveY@F#;i|-=B^I#K&hWFN)>n zq?l}#(>OVyxWE*yr}BD$+>P*8;Bya&S)RBAc6cj3wa&6J9HK92B3VN-k7YT1%w`uX zp>%3PA=cu~%XTRx6&%92zL|WlSztNei}-E`#nOX=b0+~mfG6=!r-3Dj#MV!cAP9<} zO&}=WvgHy^`G>SOd5MYx_bU@4lA3hy(SPcDM6-?&RE`a3vDPgW8QQH*-1dKM8MhC&57LqZ3N`%zR{_a5S(Vz|9Db{Agn~5cq@lS zE%Hfrz*-M~eb)Al3$VG8HjtKI0jsN2#!Dd{hF<_g2IsN5ILt(^8vnBUg6x4|QtjAb8A zMU#dXlEuUv31N_>)l1%jrxKGbOD1`$EZBM{SB=X$+~O1`sbgO#LOSiV3R-gEG=W!|m5 zj#KS*SaKR3T^zc$PhP1TMv=MpWCs~Nby`vXwZl8As>1LDIm~h)(uyj|hwg79;BTe> zld$VK;xVQ5-%6%L)m)$c()Jy1_1A;DcPv5Y-j$?XJliH$_E3Kc^R^;)C6{7S64E1# z9VycLQfs>#^7-H2-hbDCbm?m=n*q2$<%9(ze}c+gw`n;J}Vn7+&B1ua*2=1NS3 z>D3zg!(A)Y!dSK^mfv56VWL`=1;XW0{V>YhsO==u?=aA_Pj?pGQ5#Km{|vBb%ogyS z*7=cgSXOD#Fz!fDliQE&?0Gl3!OOlbwrs2*?Ad6IJtv{w7su_ zRxyjBZCia;rKB!tfBAt7spL};OKe)*yu;Ulr@B4GV|ON0a*fZ2H$s%gS)yP%!m4$r z*fwRpC#&B8cH1o$Z8kd3+4*s09Lab+UdKUhFth)Ch=mlLN&J>b`AoZ)$$;uBu6tj) z%g*}pSxs?TX|ZXqSrv*7IkyKKkr-mMSTEQ+SLG7i7Po7V=;d&1cmnSQeH_MMG&-m1 z-OgT^DO}IxeZ`)$TZ+}0fpA-XqB^?&P3j@j$L&;rX!~C%0Y5<$f8KyF&BHN8Mgrao zshi8+JLYWct&_2wE|6zk8!P&9Pu)J9%l}W!caEfiJd5fPLo!-a+>fMfh&4Pe@v;dJ zg8t?#t-H-OoTT@j?#H2I{V5HwaDlfMh<-v#5>B*n(QxCbRML;BlC)SJ_#f@V|CL$# zZ_Ukre>ULn4ci0amD6V^c@R@rk+0P67VrPXsee23;r8CKF!}4Bpx4{ceaQ^1-^ZLH zt-@c4aMl7!I;WVj;`N#Imk3^ox-rqCWnv#H)$@vfp{%w0tW!xtcP<1jJbrm|QOX)} z*TQ~P3!-k2EzZPh*<$JSPu;F-3TbgS?+N>A4N9{po1l;Aw>0+4$)Z%c?rXivw+zMk zIzXXjuZ^d$3fQ)tI$sH}mi(rX|4hnlo}fFH_i273c(2z~MQEFw-xqv~WxhFq+J5E_ z8d5TUNqF?v)052$H^gV+511&hVb#)Bj%kr5#N@FWa$^;)#Zxi0(hHANHq`*-9#N@n;>=Z4SgvS;c& zEP*40S0w+riVR}TDn*@%b)~ ziOs$u4z;A)ZYT9-`9)APTIo35Seq(5&7#T&X+FL9hu>K)we`YFwO)zO<|r`WvS2dp z9B-($ZbTrcHt9#na*+N6xd^@ zzFn-+!;FGu9EgPWo(+}Y*-MIcU)(b=zOJ$3I)uh$M+JIAv`R^l{EM$@yd;hAq&Q96BN z0){FTkTxiq?>~g$+4M^$P+O{`J-R39V$4K=>^y0f(#ceItq7;@3MURD8g$-)4_IDp zw4z)m89pWqVby>MtPmVDv4N=^?_rvdDP40(MQ^l5jF>>juQyyM+}{{!LIrOBt<~-C zEOBT64-YS^P=Wk&LC~M3z5g!NH@EQAVcTHjad$o)>zl|9m&b!zV}IIgcdnTwJgJ)I zLM39=;=Q-g#_OT_v7SDUW_oCL=!l>=zqKHdQSU)&l1>|E8+88$2{_{YgAQ zsH&&f?tg3a`o9)RB58Qc;UNAF{0FBvMlifc2lWF^CaE4HL1PaRV)xq`e^-eJjVGbg z*L>2RyqAhB3Q_$DdZYv>3`@!ND4SJ=oZvlsx4D;QidMqjG1As9DOP52ZDRce;2(+6 z(TOP}WthfQjNClD0}sK_{8Kf?{Z{m8mNt5fxY+)qmk&SC^mbntJXQ3Nlh0FLFZ_J- z$jkLDk8jtMI>d-Futn8HXx`+GugJ8$aSL%;8&;(RNQgm3>n_(1tS<(b;Bbl^K;SL6 zkYtjQI1YMs)?TDs;^PVDs%$FUCkM40jlGz)1x)8MF*0S+m*1R|)Ki5HM3{_1@XgGC zVeFvc?+-T{kH2@_HE5xDPtq)DZqj1Py<6W@=NVlw!Y;6+;k!K8KEhQOJt zcK@`*ib#$jxo%~@;$(Sr7wcu4uRB~|_YruaytoweWlr2N(rANwdu}}CQ{$F5wke`g1rB1?zpelH6QBw3%Z^sg_t{m2*BrE+TsRLqHLA< zQ=J{;-Q4kYu&1%!j`tI!A1sfG#m2R!^g<#4o`+zmDF3odR?1)bVC;oJ83=C8eM$76 z!Z;t~*MHlK66ZMNErvP|Ua9&C`tbQ!2NQ9)9)m;`D`ylTG$0i|A(V*FT8Vx`RQT8A zSV91*6nyL`nX|u*XtpOSq)ygL0Mze(f>MhAc_knZQzSeju?7oIv+Az3!@*uD#4dCz zcg4iVtGD{{Wgm&gbegn<{zi;FK)NBR`7v`+uSX8VQ;DMTiCz()KNJ$wRpy;sAyj0v zhVKYvzdzG91mwEreruxrL2LV?rRD($zn?)ccj=7T>MlbMo++UHe+_hi?zmn8xrQU- zKVW|Qw-f1Uw-oCS2Nh<{h8i9!>N`766L%tOP29Ir>I(i>uK(}-W7lkE=<*xl-KyUn zfv1>F{QPiPeGIBUXUw=s5%Tj>DLx4g2V{)W3K$^P+5C$S?t zsm>&gmIZUfRiQ^eT>C&;yJP)~m|U_S^^f81>XrAIs0LB4ylJJi(B2P3u91T=R5MxV$t_CXQXW#S19d+|4&)V9TmgtO*f6G9v=w@Sb4Mhas)w?SZZM0WF~m>Y?zU*^R6)7~ zNQt6AY7#ogV>>fx4u zIZ*bs+6xU}TzN=ExL#|+`lBTN40eoH;k}!L?V>JNmM=Cns-Y*c^r)?ox=KpDjT2%| zZcN}nRCtn=mO;ZK$@BeI8Xc>exQpxph?pJpu~Gf4_Pe$uyuH5anEtC4HW?45=W*kr z+f=;aahA(iuW?yb#rTM07fdofIpHh{j;juuH0Q|!?1Q0~L14@;Z)4?hDU}HP=k7*^ zl;ZK=2q`h1xUqp>xTJIAYVF`k{=k1hhkMaj@vCA`H?9n?ACX_6mg=Km)HYt&NB@ox zpn}M3N0$r~c7kMZP7B^Y$2dU3ztSk4yX(_Xhx;D8gzdeKZUsv-iyLAZLlq$7s07Bf z_2rh>;2|vtBrJ{w(C7qEBE}l91Y%EI)cuhIBH~mnX%9={Tt?og8&B|W7D?^eM@YdW zG_u89%{xdc`GnuQVikTZCLq5Bk6k(yQJT&oxfwt76+P(B69wWbyA9`_@gO8fSilr4 zau3Lm_;WXMy?-=yP<13|Zb|HWCUhSNxIWOp>9wrnO9XxX^V?Fy8~;PHz-xORcGV%r z`~?^g^|~JO^Hfv@F-yLM=7;N!)z!osubrB?^vIp32!-%*@qGMgT+>Hshd>0|_opG;gBDW&;dWdZ>9~Zv^WECF{@yzI@?%`*a|Om!E(n!s8)f&=Dv+Y1Dyo$@R0pYo$TFS?Dt(DMM~apS;w2_K91_%> zw6bC?rlZ9og7_X2D1=f+Fk&Hltx8it=1LMVBzME6DQ@cNUs*68B^pile^`45=uEn2Z#1@TOl;e>or!H* z9ZZaw*tX4yZA>spCU!FM#JqXuf6jOCopaZ^Yu#G?tleE*UAvy{t?s?6er>IU9p`Ah zEa$%{T;`e{@C(tbZ)nXWixMKuJdUwNwh+qV;Ucwdo) zmc}uoEz_gO+V~f6%8-5xj(0^a6S}aC&l9Avtd=Y1o5hVmwuiEQ4=ettA}=Zmp76LV@7*@dCU)KI4abxnsttm${JwaZ zl-AUq7%P+qnHo{!k7Fbhna=e1_ASHXu?@_s3ns-^Qv4m#l4D&!aOa>E*sGYCn6OWtl-Sc1V=ssXkr9P-Z?!1Jhk7kfK+K%XjjFZK#fjzIICq zlVIU<6f%%FK~iSsb_u=_)yGCOQ)wVZ^Bb~T;V)#fQADsi!%}r3Z8Q1OS6~R`p=Vtf zyeN+-dJZE2E~uW8C40QI7bq8BM$;mOvXgl09zhj&G{OlJSqOx@uH^XF(#ZWPD_^ey z`>=lv0cl2ISfc^o6*xr}?;0IYtW;CVKaYI@DJH^VQ9kO`{Jx3oB@)6>io5i=a$hy{ z0C;vp0weVhNjHJ_Nh24bFV=U~R~B^pbv6joW6@U6Kn@b!jvX)>j48PKvl3OgQjBJx z5L(_+>UXXkH6*$hDX2d?rA%Ft$Ci_rR0tIaDbTPw6N(Z#Aud~Z@_7SgIewnmSFYhe ze;dW`9i+8}7)b@M=@_C#VM6mthp37NR;w|x_hg?HCxP~0*p$QC+9k`m9jyYJ7HyB> zWmSV3N{yT=I#GG|8yCCYN%&fPyZZND9J-+Ibx1v@ew?QZ5JA)YhfpynP%f_lX3H89e%`p6N|36!_j_f z_v0};vGD+7;B?0^MaaXj-LagZs{&dD-KqMUH=7L{E6PG!5i5)K@DQZ`^dfkLt6}YI(7i2F9b@y-N~#KC-fVuJ~ePe zK+jzcuxE0SxbG+KiHfs2=)Hre%BQ<*eF!4pvhIH*dhO04Yb3LN8rj6y4PW0uN)$gm zT{@$~V|CAFoAp&jDtA+wQgZaOZsm;7+iUF2Hi4s>Odmv;by*0%Q10)MN?~>%E%}jE zA=JXISBmD25y{ZuM2)XasDeoY+shjjTavrQ;)`Wc2vi~o|}v2~otb&V>w zMRJ;;CIGb&beJASty{oqlsL5oh#OD$=efb#hFB zfap?Jq6!+LGr4a)S6eVm=cwPAQon$ze$`{#pmBWDORYbF#{^|f1r>wDNu9j|#{%PK zNsUZFQiNdR`q)zm2Co691;tIZKLGy(2?_-b4wecU4^IR9KJtDzWPl41&6_Q&vP@Tb z0)+f{mLB(R8tA>BS?Lj?!9Vqm*0Cjv*HjLd*p!}5Y)((Rc{=W=F62nbzN4LZx1MDDoSuy;_m)dhq)wRr z=R%3!e!xV@Si!5mEE(Z5?=WHdav6}uSXjj|`Z<5A4 zLnhVQ=Y{C_(9jd82|)#cKtm_}B#c4A%xe69pyohNPZXbOtMe0iz~_U1 z&Q)3E)irD?w}_4O?0b=-2-4d4ZT?dr{!#c5_x9gQ!^g-R3>*X%0uqgsSpbRI>Qdh~2PrI;U(j&%Z^aKv z2#nh)J3W2J2y7@yE$9dJ!UU5EDpTOH=eCo~DY4a_eals>)$7Y%#5iNI_}cgl=qf4J2qM4qoP z>s>QykHKIgi3s7pgP5T_Zk%7mhNRm}rCcd{g*@ajnXrolBy{{-bShFt@QyKKaO}$* z?Ak79qJsA{ z_{qQ5y@}9IhMSk!Bs1Eb>h^&eMI8)@o7S$VS)6=A7cmkEF$xAVl8K&pTk-fQ91k%f z&*>Z{RXVq7v2^=a{LJ3x14EvbV~Q71awB*YnBq^}2gh?xfv4mul5^rQ9+CkKPkD|o zmlkJ2s2>Zxdq@D-fSmqYp}R+dGCQngo-bE$3goC>F8h*T&l|`)%;BkkzoMhEgH~C3|2yQ`6B;@;l?)o@75|9^{13eU zSC;7Dxq=X}59cs^x!yghVc{ROXDGQG%G`^M&jC{=MB7A{875 zSP^3Ro_BAk3X)Al8R^#JWzI<;u2KU_NV?)R@P!E57!`~(;waC zGOHHnw4-=QNX9MuO{*puUFth&7?jZz(af4GR{Wb5l`C>1_%Je-eD<*UZCu1$&1wq)MS23s|oo#obj<@Zx)7qmq;1y2%Mic z7|QFKa`;@%IIU2a>IPsTIG>uL8cepe=ZWuGp5xN7QpLh25RDe8tAidMUnh1fS4s2W z&`mu(xY*k5y1FwAHcy!a&h|se@B)Y43S^0H^RcFc=O?)4?)YflVjh5yS0U_IU^9*< zB#^N?eb#?EUv;0K((~YRXE3qmB2f7Bg=)^}5e+_^7xK0B zO)>P`jmb6NHyeKK#Nbf)o;S69p=j)b z=Ecjb=K!~N5W{FNpjrRq&?|e#GjfCK|9g_DD53N4QNsTdYryq zAMT)$y+5u@d6NIx|2;p$-}4v$_8$Od`ut| z6Pe`*DL%|KvqRD2==UP-wkddvF4$Gs39Y}COsj=<>7K14u^Igi41!Sp?Wno+Vn%R&`UBa3hrK9Dt#>O>5XF$ErjQ35vBsp_ z|7}e^?gIGV*5uy@kf5l}eV2bxZ?8~-gyWg(xAXr`Yl0G^Wz~-^^JAofN!_5VOU0+) zR^lY`mmsR+7AHYs{g_bDoCJo-KO6dtK*{28hAo36IhyjOLXW=CYRqrgDJ>``dCzWPR(p%V~Di_JmsBiz795L zLw%CVkvrQ1yr6iG@Y8y~958FP;cTMQk^_88K01#YdqAT% z+RwQI&i-{2$Iac|zuUklxPIN;Mhhe;NHiznc&BEz_H?Zqqo26I0ioIr2Tyu7kGHm^ zn?hX=QR`w|Uh@q089br(X7W*LdAUV1*De<%3=m~UZ*9q(iiN=X9XRio83*?-f+g@n zb$9Y5xhZ~l1O2;5(fEjU~0TbEksfK1lIg4qU92=^B$22O6%l?a6xMHRf9X!C?8nIR85%D`es={Oa%P z9XKmDYifKZ%;3ikTPlhqBo#I*4-W}5iKB@P96vvkyt#v=n-vKgGjr=zF<~(${>R?G zon>L;VP%6ecQE@$6poFVCAEHyupRU7)v9oUg8%6hYb&r$_y`Kl#?1DQ5PGUGF%f=i z`6eMIsKCdC9|~3BnA9CL9IQo#`bVtS?itfUTP!F)cm#&wDwt_EwFMLOW0nkw*uj3y`fm*@z zM?_yJ1x?#O|GX-Ge^_0 zo)fv5-3XYfyh=OK7KBKF4{tB(fFFBYA0qy&x!j+l{d z3AV5K9#8f`$TZnszu}f8aP>KV*{gW!7-|Nhu^7wJg&fb(T*j+(e>L8(lOEN*efftssqZW?n}B)4tYaRqR5O_skN= zGZrCK5K=v^Y7J+kJ8qZFm{4Z*$#CYjg7?+%lPVT~n7XS_HgX*?(r~31@>DI&-p^Vr znQ|{o)Fo6nv7$}dKNW=4+0P?)($pA}iDCCyvX3azYHkX%!CKJJpyVaEZ9hNx)~8dh zp05Kp{>?^H`olBTll8}(;IqvA=+*#WDc;nug1LBNXRl*`{fVLJjHDcoz>nI@CA1+s zIscS_cw|1lHFRxyyy9E5adzXSg^;U*J1nW7zS}DFd(@FrR;tkVt|AK60$J?$C~a2Z z6+Uhpr&aKfsSpNBN~n*&Sm1hTroLe0iMh{QQC?U*E$;^ynowUl`AgfK2POccM&R&= zUkb44E8(|q0=o)BQ)b`cN(-syj4N`#lt20|Mz97qgj_Fd8-Z_nN=njMQ?l3PF=n+E zCP#iaz`HMoJF!*brdLJkOxi$E+B$GLdi*Hmu~b<%ijb>yaMx5Jy0C>stSY*03KM`U z#bNc!IdVeEP`ER3>;khbRo4JoJyym1pv>XzIhsL}F_z4f)mg)423jW~n?ev0R}4;z ztZ;H@Ej3*C09Pq~38NYJ@Zg%u!rE&1v1E4AR`DE_MVT?V&rR&}QVTle{N3Mvt`IhG zTWN;iHp*M#AyjcS7PuB6qOxvS_q7-xn>NOcui#~%f_SbSJFa~`6Q z_Y0q7p$Pb*$2BAujr4z?e5>ZEPo8dCyz3B`lCCL5ZrjlLsW}4?>q70D>8j{J8eUe_r(<>WSyuTuYKfTCEBS*n_i0YcuEqhP1lyD4WgK4&Mya&?OaALB z8^;L+V=QxYm)Vms1XBy@E!nK`wOKm~fDQje*8SG3*c5; z9+!p%n-Z__OmHIWsm_A(eVDXf*HI2GNxIMudT; zZx-xuemnTAqTsRsLn#LJqlP62jd{ixt8nG?mQy;nPM9?=He+Hk>s`JQO?Sw3+Q|j2 zFP*R8uM<9~%-`uTh1%n&PspTBDQf536G~v35}{4gE$O7$u9S4OM*EoCE|_#$YGZ-g zqwbEl7?oK-?2P#^TA{3u^***5vUV{z=wVmZ&$erF;;`&QVX1~E_0E2GUa6QxwH z(I4BO);sP`8BViq?4oY+?1jhAv(d-&b{#5vu75zC7Z*A65by>vF3vRe=NZu#(JL_^ zmB>+HGd1p~S#L{I`21xCyLKW(^x~{A36-}3>joh-kF)I#b8Y0D5z&azBvYk~m0~Xy z+BAicFBlGhPC}}|&&KlUukVMyKHQjw9slWL50%;A3BC?7+x}YuFO6v zQW7)Oe`7dy91~ALur`_!51-2*hmxZK*`{bH(NmgZ3r7y_Za;bV*coa^USXma^6{Xb z-H-^o^bQ3LxWK<3)8LzS(0!PFqKF&7U02Hb_0kVK49dx+WP`Y!ZuYS~Ysl@NbgiXw zJTuvCzD-cs>i=1qPU8ZUY_Fb(#TMc%g?(EXZd7$P8ibMd=W8NoMsv%kGUA^0E5ISp z2zcVqpzHC#8nn2I1`geri}(sMXHoSJKp+^4^<@UA7333t)RZ`9G$|iQAB4)Ijdx~5 zQn3R0eCVvWo;P#OB9#@xSonnKp)qBjY72H;h}w?wd^_omM$reqTCr|7IA#n=+D9R@ z_3oLDahHZ;aIY*2G{MO3Tw`mEo-OK>f|`2eNMfduCo$=vTY2SiCeq=4<_4x>2G@q} z8G5_83}my}A^wm?NoxdZj{6HM1xkskTQIq)3uFkaW?f$Y~A8E2d1| z6o11p;%UCi zuoAMOWS$6CFFTkysK3)Hp_)b@Jsdjr&Cg<|f}oNMGCHv$(a9N&Jd#~40xSu!N_KWG zOE7Q5C*{wa9*a6SRD3bQB9uIUP+$aycT+zmV@$p=iOELS4z(YHJz+S*+tkU;w9j;Ti0SigvO8gnK zJe1$lPNvg{J+ALVu|iJ3z-Na%Q*XT>y|WLfo5VsH)4JYzma(3wn3E*1$s@ik%H(rh zF2=0W)<3Rc=z?hk1jnuyW{aS_1PQ~!ChHG)`2AE4otyrXvBx;P$)M^DtD;=pJd>6* zP@P)1pV-;(epqQ09i=^YK7-$LaB=0;xyRub!F;Zzn~I~YTERO2q$@MYJGLwOJ9F7S z?)-&ku7@k8L+>aUfgNSI7u=H1KRI z=Wa=@!svB8eEqtDdKngF{DIs$QSCV#nr!;+a#~IHjTgJD>*My@bg(OpPP%jYO=&8> z_?hoJicVVbGXz?|>Ag=EzOTHX;X^KM2xUckQjg@_%o`_f)*yH~ZaQr<=)xdu_Yp=! zbSzz#0n&V-mGEwPl%jpGpis* zq{h4*D}KG}@>ol4VuN*zTPKWup7Nb~5MF3hNsDd}H_rY>ZA6$ms%AMIT#q-E5*}+L zkN@olN$ixrTojuZ4PsTJJ>IOgO_Pc2;ENuV| zT$WC~>r?>P@Ur=h@bLOt>qzUv<~rRmUQy${a^9Z3ud)8e#cBLuWEZINdq@@2hU0&E z8@MO_oSxowvb^-1tCODGeyzjVoxLk}{BTf!pdNfTVPdHQpq@`2&-8ttM=IK8rwpI7 zv9DXzbR1Yb@!{A|KvLG99H+D5A>3B6K^})Hp}+;er7DSp0wZ~kC#&6t+Vbb^3TFH3Ki8*l(;;EF~bv{{w zhsFYaHk*7`&)_$hsbmc)<^hxWlT5y+@Ic2>sf>weV*FQo}XWz3-2V2vm~-n8FG6~wfH%p{8Z)96qS@n zwNRnnrER5?vuuy~=;2W)?y8tnvDa5FIjOuA>I}+Cu}V|aqf8^1$|&2Zyopy#oRmAG zgUs(?E-Ac@=}FN6%J|YT6j(WL8z1r61Y2)<5@l0T4t}OsmIdT7*a$UkXB+M%;i(}2 z<&CUf->r$^53(=lhI zDX=&W?$tHc%BD_Y7kK{U1b9W^{VU$+F3YB|*zEhAY}5#l19#aF<{>|%Ar z(eNa+P-{h&s*bcz0@5U!z36@w>=1fg}Av;cqBA=pMV{{l^ zx6aS%0dU^g<7EUBG!lcjwaKBOUP?sFFR@${#$@Oa6lNmydLmq<82i&7U-;KNhiOha z4zXDU=d_2?D@@R78AGXRlRW^S)^!M7z;#M$Ck$Fv_hXJGG!u*sYIWc6?KIht@->7+ zgYnMp*mX*uYhba?OEDf?&vUb}H<{jZ!~S!J@MIRLLgi?^M5arH=FB>9^yZ(EWm0-o z!*jkfX{KW7?qj(W`l^iV9;x()?;D zgArhF1%eD=U>(AN@Pg)O)7fF(!7{;Eh6=&{gmkYKmeUudDctP{{0gf~JDE>Ht`O+o zPYQSEsypq74KjnB0YMMI8e!zU3T!6?iqTKWhC{^hUPygG2ctXefV4sr)_n2IR2Bj4 z_(ImS6O~uu@ODE7hANj?SzMb_O>ObVA$yNRwD2d||MLNZFJFoz+xNRoNaGS=ijl@B*{IxLd&A zG^WHs+Zk#%B|hY+PP6HA>;U7M;;D3iJ4{|H0$7HuVL}uW11lV)g2FS~H(t zZ^h5=!;!;x$>N@l;a3`^u$U)$v}3t;*VC%vHVC@-GTcOkP9c9-AGe-1e=}GNpdKK5=2?J41MMq4f|pG#YpJ9d=1~3sVvy#gArY6@Lciu| z4y0;xB{;A#5v$jZvX3K-BaH0AoA51H3d^LQo6Ee-JA?(oC+Xp?Ik0^Fjrk7kZ&XT{ zF`MHlCKvFp>%Sy0mb}Lgh0+j1J2OK|gCLKwqi{GoiER>oe<$AP$0XkAuTLG?(2M=d+1Abq8iTjsHVJD!s6OzwFj4%$H8{pj9Thzx ziP*rfm>H#1BwE4#EonVay+BqIwRt>iu_+r$NoFNd!6sq7h?R~AsaXx52|L7OpDZeJ zs4P`s$SubB6~n_T&BG-v?K`?y;t2-WBd)9nPn-pCK$o@mru}?`%sV`7+H^eGOFvT8 zq7zMA^(W^2@$&7;mASBm$;yz~{xL4&YGC$rSF<28kMu-L)NrL9LWkl%9jRWBnQfo0OSV<-tg0LT75d^aq@yf;89|kdlDloesoAkkxUWV za%j>>q<-r1>OL6xN<&tJ->QY*8BU;zP&pcaFe`Nh&gh@4n?KA}9JXUq?&;C73R*@N zMC!E{<`lqG=x9kgt?E>+B>&*0bB*h{w6l`Mq+Bac>Xmm z6-S7_`O(|BM)Pz! zg>i-RVPp&MwZ!9}>iJ{-R`iag^cq8+6t^^<19gZ;u3B8O*U5{Eho_3&j94 z$4ol-u~o|y1SL(UO$j|9u7<5pxUHf9`0zT`Mq)nViJcZ@siofqM?ac+x27AlSd?&A zglBDlM`>6(XN;_z zoEy`OjMyU#5NJfq`-M4NIE4S1fA%m)75QZiyi_3XPp>bN7s)2L2eLN*!tekGvfgE{ zH}V&pBgGjOWa~TOYG^Y^#TyXdFo>$A;owk!*mqO~s%108mS6c8G*Y9~n|X+JTv+gO z%NY6eMwrW1|JeHWo0HPELqB2Gz0*`x$5P0^(J$O#=74U>nED@L^f}C7*+gOY8Bznf z27kW!BLp{}|8bh%mmsDKF=go2_TrU>iktBXjiFXBS1OfPv1*dlM(h9~6Q9D2*p?MEjxj;K!KARK+q-a+gA3fXdR; znts%Sz8FrY^#y%LO7_!*%ks^vFx`u_*`{PTO^=h$wj0F>6jdWPZhE~lO|K{uanZLn z7gj<)$^h8mG@KZpOlQA$;QWd-dBaLQQ~X4G_po+Az$SV{Is(UZPWaw%EV`S+A$M=W zwb^Xr+gJn(-A{ZiWj*%wUpd}|DVxp%w&iI$v{B}46AXKX-D^a5uvTjdHOd0UVuCH# z-?^I^FuC@s#|Fj|KIe1h4S`wiKecxel&X$Ya8-I%wjTv%g@jFN0h7ym%tpEPYC#p> zjoLtd!5I~RNWw|N*KrKTxNYFYM*JAa_sl^Hr6r}#u1&0;FZyAtt{G4tDY;qiEJ$1M zsP?nN*yWWEO(Qo$&1q+tpyS@B9vN0P|7f6L1X~9%K znn&4&j;6>Gr?xoq2|3-6F_#iPE2Wf#%)~KR$cWJ~qatl5H$VYHv}m}36>PpvaJZ!| z!`;59U^vCkN{8rsz55@`*vV~ItOqy@NKdv0StvsUx150MvE?6&@TVHEC3>zYOgi^+ z*H5uF*H0mzWq%#CsaJG;`8vfoVdwoVF8##%nysRgt$gwGER!feP$e6#0dWeNsesNs zZW3r$kzGi-sskh%H9EE;uQ09fd>0UDvhCmi&w$TRsVFYTwbN`MYZ6wt59v9ror z+s(&TsrRAW^xufRYGQ7faLw$#o2Am9W(id&BsUjE$)@(4w%;)JQ=qop+-!JN*D_d* z>A1^DF#p;z@x+B7knQ?wUp#Bo%gfYzq@zsdmnH_2_YSb``}2L*Kic2fTaHT$4{zyV zl`MdHam5dMafLD|cq4V<>u=-P>!f{e_?29Q%mh!0-BeUR=swOH=6=t7s3s^>7mPe; zqQH@$Ee#OXKx7iavQ`(1g3ksv73WycgU0a-QPrPvWT?v2ZX$8S=RRUn9iyuRiid98H_DZ7!Dz2X#u5~l3^p{BKESn1+N-_l*8eLB%zBV(7T3Qzn8_c0mu-g0l{#`+B`xU7ff-MEY*F0Tvc#;1fmK6N?8<+!K_>hXdN?X2}0_-$ND1>Di=`T>xERGr>2ScePwvzn1geUyO5Gnvy4Vr1WH53?M+kJKY*ve*GR(aQ4Y2m zhs#m&994o{B5@$8Y#n(zleK)3g}6)U9#=YMtRU)byaPwkmcW1k-+;r>{!O4lhdA@Aa028yn` zUp*xqvn(yggX@)3? zn))2@7k-f#fmb4`bIvYLQbNuaxde{KZ&SNL5L6Oo5`HI~;WcpW+^+8% zI58;&U)a4iK&#L$I=doIE?TsBOsq9}>%VB$M>*A>N7^Fcxc7b~xZu0Ah9+?D1&Elf$yO4Cx(*r#^zybhvF;jZ#K=g%Ga1;t=$(plfUa>{;H_IH`BmSI+<++>hma+1^qzq+-2x>Wos~cx8!^8 z6FCk)<74>eZS^@a_1EvvDTA{6;Boxlh+dJawy|)X#n8!unucY-yZAfLFSVZY@Z2Y% z8{mY>^3`b;`T1q`_~L%oJfQ3@WWw-dfK%F{O018_@-z3y*#&c(bZApOMG3;`>OOX^T<-Y zdEQg4dl+6yiGv4tgE2k^74Y=U5?t?|#iTU{@NXg)2S}?4TRUnJd>EO0xs z^V2b2`WXI2uZQpMC6SETQUjQIUqPDp*`^b9h!1w6C0kZ&AWVbTMUFwIU)Z1I&m-(R z(FaYVpTiRXX+Ir>%FfH2@AHZZqW<%JvB|cMgqtt}?KT&N?03>$QxRkfz-<0+morX; z&+K(Nh;m;R`yI9eduixU>>%5S;|0$Y&jJ|A7r?BVI|vX_VoC1mNkESWb@g){dgAIP ztkVn=YvZW=%b;e<&UC;GNQro%wWYGcoC+ z*)1U-eLa!7!M=H+@PMJrI_xhs-jk-_!z3$XDQnIe9wlR>?EI{OswJN*F<_0Pqc zRo{~{aIuU&d6@Aq^zdUey^#BIOsQh6(xkwO8Jlc)*>n#_kq{l-k+4NH z6!V)#(@wPJHr4%6&m)cMpvN5IZ-WyNvWbAL}7<-5)4D2(N5mW7$U%Q!4?T`ezBw2Cs20BGv zF_Hz0!<_C-8<5eEXg~m&Al6j(AAwX6>?Gn$Yjk)NK+quUFeFmjGzPP*U=3-9be&7v z4EdP?NNgCRoakn#qIx6qP+>LWV2&?Yff(1i=`1TvM%T%S$>+)NNg*ync3a9xr;V2& zTw;y^#XkXT4xD1e?MpFd7F&~8YyrMESRiyp$q33E=|;&F;+nA7AI^~`X-2pM;M>9_Jc;$oF)o*eCZQobLv{DPFb zPKxe@s{tGVA5*Z4b6AP8nD&u#egScGxQV88v~(sWv=*9!JH(;)y1Qj|Z}HV33 zUd=nKP!x7~=pH;r_><+8gvtg*5|VEw!Oh};g^BR__Zw@cMk3wYI&tJ=z=wK4EQ848 zw)Z%QN9Ms_Am(U0iOA#R{`c48u}$!RXIBBgs&K>K+nq!P^8+jgHjp=RH{WleZ)Q$5 zf4pb#>i2_Y7?r+A?lsnah45q*ue{B?{qkud&jGh2BF6|;^P%dE18yn;MbLPCz+%a| zx?4l3#KX_BCo@@4#&&sS0#Gj7`sJvCULxVD{GLw)oM{JC-^fn0LBwPP=45v3=1X1S zV?M#ZvV{!!NH2!C$fFyY`gI6Tq489QgT69zs1_+9Px+KBhE#?72`Dq^SZCP8Armdm zr-igs&UyaEZHiiDQAC8WRhRrSpz0V$S0Wi{|K3sJMXj)nvaLAR12m2G6HDzl5v;Gp2KH{cL1SY6|PQ)n9FENGF4o~!TkExZ>O z!c~whB+Wer1DF^(sNVBmsIFyX1jP^kY?Raxl+6V3jLR%%u}{w~(D#ah(v}yFNU7!9 znN8T9u8txNQ9GBp@E#qk>Y7O@>ZE@8RiwCb&{S%!s6^U2J$wlnAKP(xoObD=tOqyq zT5a>N6LiHi{4TYGAC{o;wbtO}=wv4ptweK%R_!4$3zgTauvj zWN^}~@@=vhj+;93{BET68g%={##E~0m=>R+x5VCPBcmc&wQ)eJQ^z^W+r&@hYYfB= zXsM;`(SP2m)>cll;QTSZN@T8};9a90-Y9S)$`f05T(}>`L+{G5M(t`C-d;#>u$;L6 zFhIbI07%k?B+lF~)jRFeyg!VXo%vp@Kiv6V(6Bc8cOnTX9E#9q&>RXDg@;3wH3}0# zsde^Y?5#+sM;6!!hiY{6)E%uV9;2Xp4{{oI#injr(~qmsW4?+j)yOJ3WZ2DEd$sNF zWBUHqtLf;XGjQ;3BZdBa7yEuyI6b}jX6?7x4P4DwofHbi2~^FZNmx76G(niZ5(%85 z8kIw)sOnD3zieYlB6a0zQkyh$Fjb=o9!u^XgMt3u9Y%h& z%_8|jDwieU?dG%Oj|V~a_SSKM;R|7~6Tgs-RkGUS-4L8gc6s!qvcfX)-+?{u1i@iA zdcZs;2$}jvSj=!TC$NnWxxBeRf>bn!EtSNK%T~u;CHl766pG&nhcgDR z29G-=C=Jhyr-HJAC(2DiM13tV-Y4&l8>kx@bLMcKa&|MoUHKF_2|7Z`TYJ6C2>a_{ zG>5 z-6C=mah;93&!vgh zqT%dGse-xD{sZ5o$Hyd2)}An?_V|{rJ}XtL?F>!UY%cG9 zPVjb35MWl7y2*0)sYU|^{D!j2PA%sOi$@qQ24=aI`5|4lD^Qy4qy%uOqBmqsoT{9I zy`!C15gbInlT4iaNu7@RMq69|XW&M1IcJeh;w{f*COPTZb^!sz7(**ij>omA^H`ja zQP%yzYBKY1xt%4n#Cu`mb9on*nE3y(|gg}xDbRg$1j;g#r^itKoOejTs1A4Mjhrom$TjV#S8W>J--avl`3S^T;UPA-P6Nie9}|wQKsb z%3zz8o`t75D12w)MJY|odQn>heN9j2RY`Ww?eIntSzS~^fh({G327XXyDhH~IwK|J zL2IfCV_AI!6yNu0J;{E#u+{Ud{%$*yUvU?(d6L|XI3epP;5E})V6eDo=id?V=g)7y z^1d4H=nKO%#P7N}r&)rgXB#$ZbJywC-#w>oX_<-R(z^?Mc0)dQAjF1DxXAswn`AI- zEzIOCeFmRZQHh!iH)Avw(VqMCllMYlZkD=IcME>?|JXL|3I%^ zwf62_yLQ#D4ua;|FGsjEfvv#<^lcIa+M~RTKxIT`7e;70ku*6S-EbSGsh(hLxB=;U z7_GcuYP#pfytyH3$3m#frC%~C6}5_+luaai|^RRc6e z+Xl*Da7EBK#JY+gWmnw>NSo3`7%}joWal0hsz`*##6=KH;9hyVfJiiI=1fm-U+u!F z`>Dd2z|vh7e{P7-+r!br@_j{r%Uq{CQur&^YxOJEJ=ViJ|A*E`?tRd_4y8|Vj!u67 z1t0Cq4(NLAh92ZoIjVCZcyW%HDCCdsSxW|-lwz)P~T{g7lGjv!UZJ4mQ!|%nOEYoGA?^TU*rTRe`fw z^Pyv(FU=3OfgQVBLu!21y0FoHZ^d-8Hfq3Bx6W6Gi-3`v7p?+($D-?jyePxWUG7t| zlZ z8n3-s7Cj-K)u^qPZr1RX9FkR6-A8KDiLvATj4P>LSh8NNXleIIQu2yoC)=z_aGgTF zmOdiU=By5uq*1R^83*z{G$W^}@$%_v2P~PayB5TVicJw$#~xeRbe~-~ll#T3y-Vrs zH|v@K*U}!g%}4Q7jTSogpPfwvl~pcwcr>4oT}N$1`dM!<&MT`ZF3n;Jbmc!1M4xw8 zuC_u`cY>cB9nRqq6ZYybeMoKhr=tKE9?L4+;J;n|t>LrFt_v`pVEBsiox`vTMM$Cu z5=MV-LkdP57L;)28mL9Y-54Xpq?JyOW{B~D+ZbQjeo``dr|3EmK0b0hWBv=lB$Vv*~k1lg&`7lZCC z31)V*{>-1R<8+YK}B zhi#dhD@nC9p!O)xVjC%lGIPZ1N>|4&aq<+TT)jBpnW*k$#%e!I$?fCVoW$i7mwMu$ zSh>LeBFy@J=V5VhfpXSNv*G`-uFM<&NG9HteNV|;PH#yMU&=BZGWWIb#9@9_g_%fJbbL)N;C-8o9(6(>dg+Dlj>iU=QlgnrEk>{Yts0DnU>#O zcCHpTz1IzB$jVnG(^LI)$(3)LwWAO^H~g|q$oFCwQGNcDD+$bL0hKDJD%>g~df zId(eMHZAcI&PH07Ya7*VrlH@ejdR1WA_b%KokrYLbMnHWQEY`3!>yHQeguCbVDG^M zpJ1Y8sbZ^54JizO3BeNy_x}b3JTF`agAO0hKR|jFL{$C!R|*P4#r1FMj;N%+g36yf z-rC}ISX)uEKn2^}^;$ZyY!EI*Fj0_a^gkeYfpbcrKd2#c^QNsxgPB{*g$>T9H1R5@ zCQKPfDGvS~q#U3Yj0OuFe9~bZ>EHKw6L6mSqY-c(_!A@9J_x2lr+6Cv0idsarsIx+ zLOo1vlxHsEc~_1>d;24=y>DuM_{sUmyf;aPl`&y{zhb*&;a{0zxF>USz)_m=8G!cyO^T* zsE7r1nMx={m2^>RU`%ia2|)Fs>~)?~AoWoU5P~@^LWI#^Ny>}gBYV$9eHRS?;E(Ey z@){-fkpAF@tQQ&{R(_X9CanzmQhN;y0_b~H=I-X6$m$iqtW4J*4eKDdP-h65P<@Dd z36tdk^4{+-kJ8Y^`%!{wq|dSe+tSxD0L1M;CTb^9uMrI8 zmK|zUvSAy9Gbv?a51CK`1UJl2$!iK2{)Au3H-Sj zl>vS+jk0}%uw3fFKo$eKlV4>V8u=Fw?8_6?0SEQL8<`=3E$R-rRfmfxH-%mTIVnbg ztOX*Xdg%cw$!Jn^osP+qQf~uXh#@U@pCcg~#d#ddI*V0%ldErOeyfSzbIPFAtJgJ; z`yV}ye05nnfx&+RMTS<9$XSCGc9kkwf=LN^gwZ@*+u~6P08f*nsR22*jbkU@;N$Ku zaTcX5OLEqJKVH(c;jg3NWfyfj)g*ptteUs?{hO4QVOjQUeGBwOs6wTO<>jvmW*h|T z*>A=^^*50%qmNODSND4fCv&G!xIEAJ9B!(%nd%7!Y&7MawqAHzz`l;-yv%r_Ib;R* z>)ohZGy5DfaP$2O*BZP)iCmjvyNMPbbxue!G#D|=@z)w?Q#f+sxADCm9Oz2985Bs% zblb*XWZpeFd~wk#DcLhQ^TwyG*iGzoOWK)HSq9*qL^V?5P9q#sN`}sn(6Dt7yK6)sSQ}+R_16+OWK1O_B-`;4y+gMV5e`MJQ zzMr%{+)-8njGr%0%?2w5XrD02fsv_r?}9IOB8(qavlC-vazpjqKXjhmAGW+nA7)3l z{Y*LzRo}V;S7I-BM+vJ7G4p+V2r^vnp7wWWx&<|Y1VobG*UJLW#5x?9>Sq}OT4wb# zw)?yJ04DJ(nPYc~5BkCBLOwjEop;s=x3H*)xL> z$TvGbA?;1boGy6z>kMjI#1+=4T=-iuBM+jHE8#EYgahd$2{<>ZRHfx>v7~l%b6!Jy zBa~JiQ37ThXa$KCezDQXq`~C9pgn1|gx>Y0EyNu@M|c-Gj2k^cC`h?3k$plIGSj-h>i6Ym&eUTJzxPswt#=NoTnmG(O%t@v>&D|LLM89x_p_x{ zj9>cR3Oe>W(|?=QV?QoW)79WC7SyM6Ew0X+T2|h?w6)ilTJEcw+^hd|eQaja0P9}b zuiPE%D_Bjo$9gMEf2{OmrlYph>~OW$z0TVnYe0O+I*O`GQ;SPIi%xRhb&?H0KLFwY z<*lvN_2nfII3A7_EN@KDb2d6(JKWcEI$Z6GCJx*wgRXXGwM^yKit5suU@-RwS4Hk+ z+tZVCy9?bxud{~@Qb1ip!CfN=DEQMnY4_Mh=j&_NrH9M?`r0njx#fM?Haw3CsxM~5 zSJ}Sg-Ch2>rn{rMsk)`X7aYH}w9x*ey@N^!*NbX5Gl_tTO+^dycukOSqMb2neQSNm z+~U}q>T}VqI;rt8=Qo>O-z&_p7E7fV%v zl<*Ptp>G6jT{|M#aC` z)eh)cXXU1w_`5SuVq4!s+2y{Q{8z`+7}yveugTJ8NGP9{n}r=k`Bn5xxAqCeMAJ{N zivk~emDUR->GfnLz-`WAMM_2G#6+QrPx(>Jn%t_*m-ma}jT|MH0S#Z!;Es!GL;!;A z?U3ux3xe}S3Hy5>n#r#rL7p$}m70D7n|fOS#&q?QCeEY-$6+<&w{3Sow8mcpt9E9W z!vPHar?*%Y+pn9BUz5)~aR63W)5n`-&*Ro{@hnZDD8T~;03{B7)4cu4K=;WZpydNI zvKKoNH2F-kUQ_E74`AkEdt6Ce|CLO?$hBs+6?isEvD-r^K5rf5rv4jV_ z3-%!RUzLvmGTz&{;MCfu!3eCIcr3$%7r5#Dm*LPDldGHG`$sVfct?nY(hZAv0l&c= zVz__#o36J!4X-v|5v~c;7`72Zum zdXAyd$I@Q@FeJr*FwkPG0~v>djR3n1xUcH*cCtfIg+6a48sy6KQ-Ih}-jN1Df*@jN zFt3A&iX7zKH-@)lBC1`D!WbgocO$W2^@_fW)*B+;C)*EF(i0m0jSb_90d4Fb%EIVV z?-oA}upLEt8SiGrwVP{wdkmVxs;lhGBQ9D)6OP19SS~WM{ew_30XdmKee(YwRnXe54PJ2P8wFXt1%UcmIHBgi zp;I0y3f-!UxV+)yy@EevMAbc5&J!Y*9axDf%@1>WtJ-=obj`YxYQmXQ-nq*)?xW}l!Fb~9DFh$2cd46L2Hqup9V~sxT z=Q@1Zm@-(ip)^~*%U2lhzx9yU`GoZ0{hJpR#irI?j?~h2A#6J=L%F23SoYwzjc#=Q zrQ;l9_k%@IL0b+OgXS z)$O?Ts|7H1T!G=?ddmKZ+D$>CuW^r3(kp@Ajc ziSPGMt*KL=%()**&~jheQw80r4aZm8J@-$U10kO@SvJSrUZ56$(JSu4(#&@6n^n@f)QdBV1R zi{aVRe=QU+rvD>oNP)7YZf)a#Pc0-Q7=UAAV<+NbWg+6=;7H9c#z*60Vfs&4TM7gXw?48VU0RVVEpT{|Rd_akMZl z5D@=^HJJV_ZY=EoQ~p@&`X_%ZCo{G$ZygkK&;%DXp@b7A2*ij8fmo1W=3O=em76I@S#oaZB2Jb^3gn9HW zHnJS}YpkyeYnh>=ET?|{zoF;a*;|I_vgVPC=I*9kdY85eF~<*bH_!oXo-dI34n|6j zMW)tPja5F{VrGl?r@(i%I&CZS&8pXsp_1owu1RP6Ob&rMkdLqP{wra2^dp-%l!x(d z4&M=`1Jmhn1^Z9A$?WIbuSun{x!8|mPZ!h+;ch|v^eFKp!OB^v45$60&|?eMWM9-W z1bi``Pw|G~8LNz3`c%=5S^sV&djA|zhC-mdJQYGa^0Lt61)zV0lob=mFPjVHhsN*% z=@QcU$ST=o8i`2$yrj?w?bzk53%hj+i7me`H zaB42yRG0C6alVq8rX*Q`E*u>T-diozgg-Ptw~#zBR3x23CG0FZgxQ&APmNH0qV>}30!qhomC zzHi05pMGr3&omptAY4^EF+9ZRCiS6|!|AXjPtek;L7zN3s6YZ7L+z zQdsBty*P0@eL9PdQLv9ghhS}GNxHoa;N6-KK|A>M-|u6W-&d`ppxPdv5=hZ%&M96! zzNBDc08<1^&u53UtTI2HM44g)#438=1@W6?Lfi6f^vEsACgwi!{)tJzz0&q`msQW^W8A-mm&b5XKmzV=Ev zN?pv9(S>%W!ys{~JlxMM@4a!|N!?wtbFlRg)x-@^*RLhTe=0byq=)iU}8b9}4++8tdcB;h}J83cCFP>j6ZlUm}1_Up)*MSY9tDA)q zNx&Nv5n^pN2I?lR>Kv9%*1F-mBaBXL52ZP+;bLyk! zv$ZF~s8(ebeBQWjq-XOY zhITJlv|ND&XePtsotLSFW$<*>7Qq({l=_G4=bCeyJU_@cH(g2}yi!|zN#>N>dt^Rj zyi%A&3z4a@3pZa52qdnnmdGaIJ|^MTQdG^M5~d6%9eYD`GHw_gOEdE+ISODafKHj( zOxj{d$c!DkB2Zux{*|WyzT#LT59A+HU9mKIO%KYEK`R%^q`YHyTt1y-a+8U3_?>$) zLZP|DP-$(ds&&0(A@vg-!#Lw&(nZ#$3|nzOQHxZP3RJGY@jF*|FLUH>r+aw!aQ8y@ z7|#!~l-f3?>k-8%5Rnj1^J;B-AYv1Q7MA>=a5WJHY9fB9_Dy^zhIRDDX7-tGwSl6c zi%0eIZ!nMM{-a{E0OL-YTFgx!QvaueXCSh87K(uFqVn6p~ZzA;s8ZVc#df8?xW=%}t*6CG_H;m`g4zSVNF+A5L{A$&up6`wFf=hOw75Xv^Qf|xu&$)pWMCo zZ!=cx_RWK*%Jl~N5j}&u^K|=|3{Nv{r`4=P%2 zg7_^Is?s+EDY5nH+HElHae27r4(CnH?86D_5$?Fba;NoA+Uv~W5_B*ys;P_mwu1u*We>=&O8*NW? zDZwm)kmyVh)QOd|>{Pk-up~1-(zarj6t(WD2HKQ(yfC_gIWfKCjf)_o1z^b zlj>Xp5Oqq5iax&_T1|Y9 z1UY3L^G!Z_>SG?z(R*zo5q-C1xsV7$hQuwD;uD7x-$>+_t@vJu^@^>IrAAxGu{L6A z!Ew)-c-Xz0hFXVpO^3Kyj^#k`;^xsz5+v**z(LiT&9xH?oLW)2X@n{uaMIRHCr$Rz z*g`z?fh`{zO=suQAhgw0OKlhbAP8doE^W!%2|Bg@fex?@MOZ#&b^GM$;+s3Y4 zyS(AObv@#{#l)@^^irnpW}LldoGD?2Dk!{H9w?seb7@)Y@lwJxdoWsBiDGQQmKp9) z1EV*CM;b2bovK0+I1No}wlXM$($8Z~XU>j4e=8uP`lL7OdyC3+qMJ1G4*IpP^8`hn z6DxwK3z14Yc9V4KKVy(V?3R26m23&wG`c&&01qbK zq=tRJ>s+cH|8a3wau!(eW&%)E>l;ArLDr z{{Bfng9G{bgk*NapsC8;Fq4?bQ)rj6pm)`Byrp$EBE5j6fpy>kSHy#zGg;{27SJav zL)BL}7e$xRg)?DeSb9o@u~cSA@q`|_h&QsJ;xAMjNkVw*>8p92{EYgCiE!9B0f<$7 z!yY(iIT}EE$=ilbU^u~j#D8>@A{@~QF?8G@&`3kI?#(8$5(bTrGz!r%YNvyu3?mN@ zf+vE_)lKJINoM|cgBnMSe=zXY&Gl9D^}74k&3jUDlEX)#W!0iVel&6U+p!lqS1xY> z_`Es&dMN!3UP(i(PI#>C=OCxH2xJ6WX)DT5_$C2}FFRyXHR_xgkgx@FuSOfwL#^iw z8hbn+isFz>KLu9z1g^Swy3dbZKMaeds#)Vr1Vla)okE1q+~022Q{VqJ8%rOw)8^u( zS7p*q2Xt-(n;#su>RwoJRjhxhzEcUnzqCBpWih(G{eF)0GhA$b4qr#g0to5fcGU!G z-42Rs3Fimcs(SPV;%zQYv@q;*Xx|FH)C9K9LTkITlN(=|WIV?eG}GivMy3_I_d*k0 zqMmCB!Ti{FiQBk>cS>ERko19YfnCDKtDD&8;rG;c>WaOYt>5gB zSQm;pL)5OmblErYzV>_|39RzBO}}6km9Dp(brcA4g}vPmkd=#DL@_i!tkp{8<#)K& zN`XI7?)(G`;Xjb@8;vCc=76*xps9-#<&R~Em0@GdWolkffTx8yn!6$t@zoZq#kbIt zzicxP`Oz7L#pbuk7dn2+cW0|m{9n6P77r1t&fKM|w)5Oa6Z%RQ0}}d@dVE`mn=`O2 zLK>$)vHsd!W+^7E$0>*Rb7+n<9o&aOn@)PW4~w z-DB2*FMX+=;BdP8W`-LC%F_Qc*)MVWFU#P!_vWt^Mc2ilR1UhgM_oI;crI>{v6I%0 z-ou#f?#}kf!~uq=Tt+N4R^)ukRTI8!=;g`U)!v7UA!}6$%xxC$t(i_icYOj6_O7bIiyNbyIYfdA@fR81lxIJ` zGz!|gLu)E}thv{_z08xfJeF&m1g22wFqcC2F>n3nlLb_nwrO@O9iwf3@Or$)puP{n zldXwjrx~X5mtK&~Fi@Myrgd)9!}0o#hR}K`!1D#|FpZ=KvbtB$K_*TG<1s&$&M>}= z)4YyXwp1~kx>%Z4jhqHaBSy{1*eW-~2p}GOL5(iz#i?s#Wxl^gPh%#VX0sGk?>%io ztz0ad!2Q?1F6Z*^u))p!+tH1D6IQ?oEzg*La}2*2W$d7aiIH`5$Dcka1z?Y)z6s}$Cb6(KHT93OGl@Ljz*3y zHAU9B>bwRpj?wIfMXd4q4gAYv&koG0*i(@pwr;zxUs+HOs1iuMB;k_y6OX71D3#)dzQonDw$$ngTQ$AeL!oIRAf)( zpo{UScVjSmMgtlkkKiPwK=mxN7jy&>v7*oo+rrYp)*~Jd?`=ZZyje{}!Eu`J|7>u2 zOJjEM_(_6Gf>TG|QFR;oM6{TWK#N>D41<_q$f~BSf|$S>Nk0aDXQGmOcCI}EQaE{k z-e7X;1?$84wr8Cj$=&c|1@lJ^Y8<;@)(!l4zdLJl63>9PEp%87+A?v7&$1*mCc$7$ zWhK2+v|#bej@ieFhlrR$9W0bn4bML3I(yAAliBEp(>AiAoUxaNrxqWU zwf?URUNZ9C#eb(JKIdDK#sD)j5MmL}I^8#hM?^ALvVW%0IXCfb_FhX4U?!&Sv@?6S z+&sH-Qn*S>R#DLs=1T8&{CT#J3ow#xaXc+BX|DhA7Sl>06G`=&Som#MJ-7BptbCp{_Aaly3=}`%wFT6c%<#uj=t+d}f(Cb?LStXx zlD%e~B5a2YQnIm4dDB81F#l9*oeNu;5mX|ICeQl75zVS+y?6W8jEnfMGeDY^e2*}T ztD!95mN%2-cte^DVym1MN7W{K4eY}00+g<1PC1Xh5M7vj6|2(J!`!m9JVLn9gm3Y~ zG)dSm#^){L(Mra;wDT+TX`4_V@P1n>AAfSA=&mbp zIjZh+@UL!U!_+~p)BFKvT(_i*`(nK5?^EgGy(IX7WR-Bby- zoev2yA}&!OaFJ^VXb!!2mjCE_4fHA)bv+Dml1i^pV9`soCxihyU;Z40W0G{d7bg}5FW4y|el1M^>R9!CVLzB$?*`ou!yc9`3 zPxx4dp#8^deEJDmrhxBlCpooylX>P~(vAP~25r*nHB;d*h3QYu7#-C8FVbV`iyV)( z0--udAxs)Upf@dHbuU6?QMm^u-vAqh9wzJaet@v3Jn7dd*XU`KGfqW%H47y&W^F2L z4$MX@(mqO60p$cPJCU$pr7B~21G_Zn;JI>?wU`zWDvU(G>}9?HB|JGbdy>ckdXqn) z52=goJLMLi2lWGO?ronvF~bAg$h!2S0se}d^e_)LkX^J71da(&vl=*&w4?2J3WG`) z2t`FpXB7RdHJ9xNC3#U#=126wEL{t8Zy+aGKvt3#>h%x+a} zMDw#5Xx7QC*ROM;Rk!nRWLL$o}}_mu8* zd-2$bmq6Du#&v9aEgVu26u7}G}R<%sjzR%tTMw`j#dL`?dmX3!xZ9y0b zkjW>*;uEj+jt!?^<9Zg1l*&YsHzD-vCOE1qtnWwlK4p!LKtBIl^U_jJV{>}1|3bza z7VTKfBqfKv{AQaU-?60fw*yV5(@R@|?cuzDRN8aZvc`?pLvd^^3jRT{4e*ihpQ#lN z#bfA4=+_Cj;+u+RIafnCB4|>YiR!jZ05u9qSnAkC&^#ICFzdjgboH#c_OCRf0Qu9> z-N%{KP6zgo+tH!nOFSXylO~|-yxdRFp-S0B4QVz|QS=xFQ z_?qE_3}fC`T}wCr*jd(y^rTd)nWE^7yIH=X!uA!ElTVV8MDmHq+Qo+;xVxklz%UuA zgOS}5+fmGJ)vr)s@9NI}@#^so1*iu2qw#LLFTYl5SYLUp4)k!cu4$;XP|brm=5?oz zv8;9{8;@oDf~Bo2WfbEzlNZk9eCF1yD4=9YN3+DuOM*-2n#bqZ#~PVJel*ceZCOTr zMs%$yti9ibrqUTS+1}Z0Ep$EsL)+Xg@PAC3PbIf$ct#|R%eWZ-G?hJUEku^LOX0ds zX7Iu3JR-4;)oaA{?T4ZhAU-Qt1*9MR8xvlpOI^jzO>E{eAUwCQ7p`zW`2k5HD5bEYg~n)$aU%Sp-8HQy`HdeItgotP4ONbg{k`6(bx+^ z(K77063)RxJSx4!eS>Xd?^N5V@w+=D=1H%ua#OyQf6s*)-+{s|Z8DU`QCgnX4lP?S z^n)pLC=AWLUNam`W1cA%kW)7TS-l`7qh24c@#<9+Zw- zXt_jHGg%rEiH?pnAG-u`nDbqO*JI}duA5yd`8EOPpJwt1loVUZ3oxtK| zP2{Yos*M{>e`aVbtIAJ%YB*8k%%>6>+`>Z@C#%M$TDXxy7Ss|vZBEd4OzHA%eT89B zV1+-3a^x-k`5Q7}XQK5QlE4e7kAurQ1w~7Y!5S0~04=}(SY%!@XsFuW^@^0gwW;mn zQt}8bq8T{lj=PMASj~xzx+3?>|0}2$0=;y-av*d`^p56cmx|YjKD${Oo5wnrDeq7k`dv$I#FZ!#C zV9@^yL&0qrAYsd0G&Dg-D#T%+ORoA}y;};$7LF5Tc_PCmTCnS>UtyJh~M9r-1Vj|kPkC|XD z1$|MEpQGHGsj#0GMt{cVcMJa2S<}?@CN$h7my=TfO!-zaV5EjHp?0h}5=U@A(G&^8el&RpO;;$+9ez!HbqTPO8$7T%rsgwFz%1Q>` zVwxrEW^00Ke9csL#Wt zs4yu!$nfrHb0P&l$!`B+_hdCe)$Yr@;_|Yix5|x_n;YyPdVxE6tLl4A=0PtmtqPp; z@k)7CiNjpoG*OMTPMcG!qF)={-C^^sA=mC0up_*B$UKp{Iu>9inhBkIpf}oIbJUd? zde^CHxbU~1;zi^3=IrI_@4in;-(g?y#&}!WbkiY}GYnP`oNU!@V6!2kWFzA9fa9RQ zfqUm!4`Lf6kB@P;@o>%hc9RK@j8aa{b6wHm!GMsF@-w=q;S6sn>fQhZbpb3Z2D+*_ zz(z&;MyqKO&Njq8Rc-EHE)?8Y9F8`-;s&5IqFk4+mZL_=d3dpL)) zam2)l%R|_KOhRGoKngW)9BIaj_?C=wQ!l{lBh`+q_iQ;8&e|CTepp0km14ZFajgiBY>X`MCQr_j@r-pYXu?OT8 z;ALV`zm^wNqll{(17xOuL8NyG{uDs0yqZ^J( zF)%6FB2d{T8)Mrf$h%Q-X!(va7CKV7na>*Dk?hrn<4_*e%-D-Xxvku30(~aZK2&D@ z2y@~`Vn3JdAg5h@@}XA?Fs8(M^!wi!3lGTz0)|DPe6PLyhux(TdtZ>% z?JxdT;KfJfY=VW*S7=yOVmK*o*dB+=Tqb(bKXlF&n{E^B|DeO+PDelHIKnP+s;~&iWBLHdkx* zvBa@@y(K$ohfo6?hl^}mf4pK5W~Z;N-M=%abbow4sbKLxr_fs1=RPOtmb^N%y;k36 zslkVt{g~Azf?xcl2a>_8@qG)`KQyveT~|NKBIMV2y}6N^KP0R9j5R`@isd6aPpW=T^g)f^P9vg&o0&qhc<9TXirqrIXR z78q>E5Oe`HfpUpaD^EFbq&qfc1u{?jDUXFJgs!*IL^2TOFneCs9 zF`YJ?+tiG#0VVBwS-(?Y{_WaoyVdP+9RBZha)n*@se7GM0BcK$vjuR=Gap=T@$(g% zjLNs)ZrT&QlLdAijHfb&sMu)O?Ke9MO02JWaE+ffR{sVrZcoC#(L&xF&hL+#V`BW1 zBR81r@8(cbsUEH*I*IMYoIU>TW%Nn9zKM*+_}WyssHgJV*-RC_BHp36_gy4h$K5)T z<=CII?!A-&XhwG@;R2miOT%)qd)$KHuRhc!YG)a)7u?F#c1z7R;W`MLW5kF0Wbwi3 z@>(SWn`sgMdZmTzRk0DgEN3~&lhiR5Uz4Ok^_4q+duRxu!}{jJV%H~^g(*Q&C+j#- zY(CfG#;wcr!#tIFPgIwoY>@nzId(| z+&6Se`$?xhH z7Oi#x?4LynGCTf5iBeV6MD?@0|t z&I>8AzioSTG9piY7J92y-k*Li0U!SuCI{EW2@HhKtTv>ov^mzwH6^nfP1c5xXU)Yn_jOqw}g2f1~VuH;VbQqxDY3iS7sJu`kBuE2Yj9V6-=7@Cz;oa3<8j}|rn zGpr$&aHz;HVPQ*FR?NK$#8CQR2TAtlV41ymU2OfEnb<+psUIet#a6rFJ z$#3|*MXQ&rt+3wxRejow6{dRWizA!@mbZVP6m+8-d7D3LD z!i@(5Ql)3w5XbGx7_^7%`j>%PW7hpbgQLEeG4SsGj>W4#X}?#O;eKoJoO`V+z+mUc zD6g|VMYz*FnHZh!#y0M)*-<*zm8-phc{Lg3&|7dX2tRqZ4@$sj|Fd)n{dZDvp-cgPx;p9FF?6$6@UJoRK7%DRJvL zOHZ1IyhaD3El?abL`%Ys909@^N(D1t-ui1#x~4x8(mr4HTbV;EvIYzg>=?qG_h3lp-K)cAKKE zev*UKz&GvY_jf|VDxs?%n~z0{MPm5T#ulzL06}k23u9h-GQXpM=MVcIXC6_?6p>l* zJMnF*j`Md3aQE8FQmtYeq*`S`>Db&I9rec) zoH-w@^Wx=lvmAXi<={G35A8>EONMsht%`?fqPo1{bXrjD9)tuWZ=d%lYguc#YpDb? zz<1!$Au7N`aesCDpthp+K!a@~zLN^NK^Z!NSo#URegFdkFg@uYo!GzR{4YQ^2sF`p z*!|XAiwo4ss6L;|ppyY2poHSt;-b^;cxos{+{bpv#n7n~5vP zCk;sBp#j8B_2?tOVSX9{zUcoK#1U%8cdeP1(#OEi0;E#w(og#)u!jQlJrN|!H2D!S z2Ptk9Gz}BPh6uSQLY9xa#CL891Rk;(;(AZe9%LWHhv3(pKOCqJ^|d*Oy+wN5H&XCc zRz<9y#6^wK2L%W}^d1SY>u6cDE>KGZK@*S(e=7eukXH+%1BCxOCvMO5xL6BB z9$76fBQlYhzZX>K1_&bKUXo?l@HTu;e9tIIj%`BnfK!_;yGNd{hF`DvH>V>VFmG@P zFjFFsd3CE;b^=ADLw=j1hhJjHE-U-ueJe})83K&ha`^?TO=FL2v(XY@4ViI zk@@}A)7_p+V!xzp5j>chc}m(Ds`~Ww>J%zta)~5V2x*d(VzJ=|aM_SF)p1Iz*F!& z37Y4YgqV#GGd0IKg_m^iP9y>OTq~Xm2Da2F#h0N_=^27@3s+MW2pZnn!N%nv4DywN z&B{SQ6pp(6WKm@=M7bPY@x+1ZcY(jC6>yR>=UkjB{o?X#f+4szd;F)gH*AhcPQagY z(U=ZSqq@*rOb2Vw;=@0Uv4%r3agJ{>QVEnD^QL*0qu7N%ul>h}bE1Bw-uO$;kA2t( z2HUB*Iy-L~C1 z5OX}slqwg)|Jb@x)1Z$2xbu2y43+I`l`8)H)n~C6y`VdWx%y(lk1i?T>hawa8)IeaBdL#qN-)TK6$IB2w6S~b!Rpl6>7d|S+00% zlDo2RmU<^;WsQEn^uY5~q{EDLmu*THjOk}60N51chlgl!}fp3y!`|-Sfbb^@h zeN6*Vgrzcd=&#jby=8MYz7O{tbRMD`as|w^fsO_xB*{+$tA{8(YfZdzY zTjp`gHen*<^?b?JhZuLtOoT>`Ki!u-GqIjHPA?@|qMlgC{BKzijJBzzK} z>dtFDwTYYmSGKWSblCdP|I^xg2U7k0kK-+bD2j^Q3MmnHU)M-QDMEJHlD$_la+{Q` z=w>B58AT)^S!HHtM)uyaGQQ_|8*iT8?>@gje!X7L?(;m(<8dC3^El@`#(6$F&%CFi zw`6ix=;co9E*W_!eXCM<7o0G%>QXlMZDOlQ*}379e0|?EzRk-u=BC^gD9ApAPcHjf z&%pXz{dmw0wED|u)YwH1=cKQ`OY0@T+g&=oeMp$#|no^v5&HD%L8dsw-7aRaAZo9AMZ#_>6Y8}^(RRRpYCs93i@)@ zj!EK7q@xDWM*_*IeZihKD)n$MjjZY0;N87HVk^2)VPDM(3tGKdo+iF*A{(L`W`!}g ztdG7aOE&s^a!|1D#;d{Hi>JSwFVt%uN8ZdJNrv)x53%pR&s-AckWf6g%K78e(7~@~ zoQ4z+9>`tI?nm5ulC20nPoeN_ucZt}y!__bLVa(sn3FWOPg*2IkK`EB1~HKGvlRB5 zo{`Zb_cYaS@`|68D^|)?7V?(YLOV3nOU2nL?SEa5r7}|3a;2=uc&iHc)&(rD-;u%n zmi#2u{riOnyRIH7X0SSWBGNoWQ9WtG&R9WI=xo&DDgWh*v~skD7SYv~{AA5%H=La8 zM7_VOY@2dUQ~>|J{ru>quZ->2jmct6WS;KAQDi-1>2;xIx3?VSrDLt?-5#yC%{lY2(o9Vr6q(m& zyU4~>%dY)|Wgl;>x)qlBL(}2L9UcZs`=&7r@!}7NefJHl(C3tc0=F)v@NM_*Q{D4; z%CqePX=wO`H8M~1<$<3~m0{_dH}?!5ZFH?TKkg^T!e5bcWYR>pWA(@7aiM8^Hh`QP8t~>SRW~~+hS#`%P zLrpWu6~*9DbB_9?Kd(`Fb;Zx@m&>V7m~|Y^2Fs8-8C5P4QT=O~Z1inTTOePsPBCvpcoxLQYnI6CWpa2`Mu$rW?Vu1G!RjIZg-qZI_RvA`V z?wsVFUL;MsPoGDu1_oR~JoQ-V_40o!mdcg(rgPFO&ba55(A?#x>Z$@iPuT`%o9q0L zR{3dYb-C$7Q^@X;RD7TTx!)jQ{)F2LwJMdl6QQ9Fq4607Bk51W^G8fn-rix84*jMq zzx<%qaA%9)35WCc@dNdk`pfYlkp;)2qe@>aU-U{=Cr!TIUSVdWd|-Fhac<{gW`!s{ zZRW>U^Mp8UwTVdnpQ5~%>dvQ3a=qvlPMmMC$?lXVP8RB}W z(jQ~tRJl*L_QRn6_4@%=Y8dtwTx-{E$ayjKtSs;Dz_$ePm!c0_$=jL|K8pEoeScrZ zXUj_Nn}MOzB%>NlJ?Xc^cuNP&SdbI(oZUbUN&bi3-Uik@o}jrttBTJ*Ri3L_sCC8@ zn~HDy4n-OESlL$J+$1~0ci*EhTCa=YXz!-IPZ<0OPOWX?n05O7=>?W#8aaP+Zf29eAhYq@(%dKR1T$09@aMrydp&-e&i$2Z`~Gj z@5Mg5U^(C3Xw-0XwD)$?VoIxKez0e? z*4#<+-0p)ZqAtwJ9VRO56(RLBtGj&9`)MtGSw0?{<3po=Tr}IW!oy(f^$C6Wb27+ zFOvIb$Emrg8?-?OY?HqiQQg36dlIt`H&z>8Hvit#c{atpDJV<&qQkz!7O6-&Rj%SQ z#;AP^vfDIh^GVLeo!c9e>NFgjIns@tEFPaRQaNTX8jl&ErS8UZ?c2Y%u3CZDhmlKl zP)w{H^Uofmm#hw^S*4C=*nwkIn<5+9Wx1qA4x~w_Brb0uojA)a@?B3PEE>(ztwePn zyfMpZiCTHju{c^dTX?Vm#&;qPjGWHQ&8;V^H^zA z9@av<>ISy`ki8;9$WQ`Pvus3=E@uKSo9t?AY~XZjnq|FCou8TN!k2UfOR+ai3Hh(6 zR%0$R%gXR9b&=}Xr&lIgi3w^yzyF9AU&;L1k>j|_IpOQ#p$}%Rf>~-`l{34ZO&*=x zn)dd1`GTj85>cG~rpDBnCtvnRT~SwRyS>R@`&AiQs71Qs5mArFknDB(v!P8F)A&J7ZcU)ouN8?{l9Ii90+;d%lC&i=iYs^W}H4NOk%m|SxI+Q^(hNujo`v=u*pKb*UCQqi0%$#J^H1tJey3CZtOr6 z@zIB{0|PU`3>O$tg6wUjOo25Qn4Lm0p#(hQ$V$r7t`BE33`gjosQ^%a-DTt#Dh*KaYo=PEp3aIs7Hf zCO50WTc&c8Hs*43uh@&Ukn)OeeYt(pee`|hhDT%zmJM}F>g8)5T4d?EX}T#o)$`l! z^VEEIB9c9t9WfJbPrB=9$~~`Lyv#;$Yw`0hqjL(M) z8O0^DvpaR3Xe_)f&GeEBoXT8G>%{fga`dwIWlxz_KUmp5S#ro9X z_Vd`bJ13;WbNbPHdasfU8y(_OQ?Z4a2}PpX?`2iPn({A&R6n(ByYW%Xp4rVdX?Tb| zn8QQfnq(hTS832Er$xMBQTTBGhZ(cp>%wY$Zfe4j*gJ)r<_7g1A_|-@7fY~GBTk)t zq5ZPKq;-#IFSBdN&9?j|54i|KehZUNTdFzt-51$)*`#&n@Tr9II+Du3*jJmORv$i} z8zHGR5B7_cVwfwrqfgC7G3jM$_y%ZQY}J0Sg6MdGjh^sk@e5bExlA;*ECoXyVsg%?>!NLM(wa-;eou@@E z;iM5To~n|= z6w8Losq&k2dgr&i+*+~H^H@+qHRqz5{M<>Yn*0L)z$lZ;szW^TNZ!Xjk_OSXPr)k; zGwuxXY~CWxw;OP)O|LZ%k!~`K8LqZWB;$=cD~Csdo29K#M>@&^L|!$-hg}vceb}(8 z@+n>luKKhXqdMeRGiuk=m z&!{h>eM`co=vn5(YsKdhjeRaZ3>u%&@D7)=oO)vOx%kH*hugHvmfG6Em@SDHbut63 zR!YeJUcA}#?#_N<^WRg0BCDlmM;MkzX8Q%jUB1gpwYK=K41T;_<@dI;&~K%0Vl?yM zN@cXj=VvAsHx14EX+H{bGm`{k6pzZqq#V$CH*suYe~aUtTpemd>4%3$Sx=-KP43xp znB^r;!|3s-&D#xcOVge(O)~F(5Y%0g3qGTDm$B=kWUQe%ePV*=`D1#jiQ9ujjF0%f zvEAdc53RDV(&o#}A_kYX>Y=ggRyL1K3D%bHdfXq6(OWJBvX`~}z#5fQhLh|Hwbf^n zLQ9_Ql`*RSl$-Rr!6$JR{fe>FC$&-QOvLh-UbBmS1$a~-_ikr)Rm~xz#`GiJ`sd8k zYiel2*+(=+^D-VY3?-YIs||-63S;%-6~z~>hrY=2q$8#smN}Vq@lC4rr&taAl^j_V z_U3K>1!Qo=iM%vaP(R}DRvbZpQaPh&wtv%XQ zmr^V*b=#`krIT;0s?k@$8$Y~36aN}L*3<2JDfGj~su!1zF_Sx#6$TlKasx^7^GPRN zOQnbbR!xL1_8&eAH#9;wPpXzB9!oT}{WeyR65|>CNJV*Pb#3@TLxIm}mly)P>{q5# zKe(p{SCaLlD}28*1R5ENJ^a*${}k@&;bx2c(OTqFHNma~qULWqpk^1Sc3 zXxmi8!2mRI_H_B%Ygd}nJodiMCdDeBV~erNyxqN{_L4&pQlqdw;FkJsk}`dZYX(ZL z8C#N>%I$-a14n*SNxa>Xm~qjsOf|HN?I~l^sav_sR4o~7nbh=bKE<8>yjp6GIUSpm zeGh+T@~qxrY!PllOw_G;BxJkE@bir$zW44Xwsh~)r*U5P74v2Ke9Y$U?AHS%-;58U+5CcL zLplWd*j_Q;T-o|fmb~$@cJYQD?&*;tOxiI+3Y}+TJanVJj~r0tlaH65VhKJPM4ES7 zLTl+7CdUs%Mkfjk7nu5}B*)!LI2)^KV6P_~Tkp@c7dtF#lM!N^4!-#J;Ns~!r;Ju| zZ=mJ+zZDfc;>|;yEQ zU5~0K&s|{1c`xO&nnaCbk-Mg6wY*qCvOFFx`bw*c(XMcWzsD*(LL1}dXgJ@-{rIt; zOoY5e=;Qa|wDHfLqZ7Mm-`yPy-p?^@nWOYo5Y=*V?BmEYE*J4;ms+l>MEQhC#UG|P zOVzFM?sE-!N~F_`s_NBjnTd7{b@e?R4HI!}?)BA)aYYeBy9X1S!dhN_s;f%qj3F&1 zvF%Kpdtnp&UPCN~=T2L#|Kfwin8iDbX(9424nG%AYD_G3!j&AcQT+DmQ^t@SE-ton z(<7bSvnC8(I}gcy&pDuABi+YSh!PL3bri1kcyZ8O@cP9?4jmCMxu2}B$Y;Ga(?uVf zd?VO9l}b!_@2#<8N%%9ch|0! zFGv>ho(`rU-53$IT3VYUSKSM|@`m0W)2WUPC)YCa`WWfR<+MnC(X=RVZwLQ^sg-X$ zfo@h?#j~8zUOUYipLjx-OFct_Lv{C7`5)WjUS!W~Q8KC!@}hpKnM}ZLe!HcZg__Jl zx+7+psh?}-xQGZW8oOJQJ8vT#Vm&J|C$zBNR$#fc`x-f3=!xh>uIMS*QUKtWUj}z3j=S z^Mo5xU$YMkyqg)o8bwdb_WzXoGFIVma$K~xN3PT+t>#m0Y`Fk=<@{F1Gb#k?yS8V(Nv4!1L>H=E_JE<#IIsfsyE^g6H!@dQjpHuxG_58g2>N|bfrs-|k zh0oIX!-Y!^1{e$m58NLY*pcEtKCyCIJsR`r@#gc?`3JqJ_flV|?&$s;;z?wAO4p#A z9(RU>V@b|f8Fc!3o|{Xn>dc!L_F^(24vF?!heieNrggqM825AGi;F2DAs?sQ_MtVa z@?mhriM-NVin@&+93%IMg!3JH1}jH6s2f$7`rgiVlyqY8P75ceYxA}*RYf_)+$@i( zod^rY*alv?a$Q^FGOAFk!Og`*<#yIb-tv*ElcdE^39r2eqtHKJMO;ZA2-Z;w4$pb5 zn@^uGxw~*&v~Ju_Hk8nC+7VShDI8v=)LN(PZd0!Cy>|8yaZgh@?@5!IoiTLvpIo`; z6hGP>$h%Md;MsWN&f&R%3%MUuI+BmxX;1tdhWIo?o|%tXNm|KyHef(AuuY`)K#=9D z2oCun(v>4wbOJS7<1>f0IxAKVme2f14>-Kcn$<;>yBOwn(GO*oE*VjM^oPd}u0@4h z)5~sQb$04!kDitO@c5#3@wNrSA8F~q_}oIy%nx$aarcxye_FNnF7M|hG4#Cdk9K_# zG?gE^b9upI`t#Jov=f~Nr}atCl>#b`tjKBAR=Ss^bjRw@2Bm)1)Z_`>epGC_E_1YY zU{kCnqm@tmz!l*#dd&vH|?o14D=q3AX%7_(_y;QpLy9G(=5Prf#q5;eNW(>fY|Q9Uwh zwDvmZKJRy|bDfTp+xk-5#ze*?qm#5+_^H&+X0aL9C7$1GF;~IIr^jxt5llxeyV2^? zA7C^n9CFH$I`~+ZlZyL0=_qjn){=}{&0E5#1T?G;fk+#PkZOTjmiV$yPNJ1GPXJn-Eg-Z7?2)2*E3k{vxmidI~dXt)rZ&}J)ZI>o81 z9!BeNfu{ngtKN7s-#c*+gsuIr13v0Lt#b0@fG2^LJ`6>f^w^WVuyu1NAbTJZ7y*3LBR zn@dHn$>Ikv=ryAFPda11<9#wZ% z%K3>lD#OZunqPx0O{@wyV5 zuQT-#;#F=P|1L?Ap5P6gaPS+JJRGx}ymPN@qgZnH+*1UqbAbohd-S7#@z%{YxAT32 zXxqaNhl~if7gvOW;OBmzl{{iJit&M*_THyFdHZ-Ar=C!0-o5Mk4xCu67W-BFBd_P% zx4Dz*%|ll0EVg{5>!{zq$U+FA2oB3FBG479Jf9*PSLo?n_%3)Xi=`-}bEz~FEjBgdH z_N7`-C8Z6STgG~kq*1xD^>KHj|aL4#wE}1Kgsko{4d1kXSS~`D>=3CFHAA|$(DIKiu1d1hO3J28@Ycle$0h=?*S?iWzn4-t)VT{<0A)G$F-65 zk$e}@*&Mv$eEJ83Z4LxoqJ49Etl^RN32XIPbc^bV_=c(X68rF-qsq67{O|Lj48NY^ ze{d%Lmd}}Fq)rom4!0}Mv6HMk+q}13aBJA5cJt|qFI^Ge4tkQywmbLi3ii2dW~%Gb z5%4bRjn@r|c%)$Vz-;lxcPDl~r|2clo>L#dUrN{IMW>k!N@EDc8QaY4?Rgob3s9y( zCmr!>rQ@D^+@#ekYwvL7Q6qElY0mNyHH=sC;?c9RH08t1CsdwqsbUxs6Q7!&w~FpQ zDE`n+uHfX2tM~SkcH}K7eY(oQeehz-_R0RK=E=+$b1&&=Kdy}DpN_N89N%)1g_`Bm zu|(N?cM?tP03EsJ$osx*eD?M18#OF8xx*pWHs{!yMumHvOMj%wprXGv^gDn15$xp> z-glLpZf&#lnjWA1arlnh-a~u0%eg2DhH#DaK6j?~6GmMaW=$iBxKG4Y)D%2^r9&I< z(>A3uA5uKgl9=?uSc{RyPtS5Su&jByZ^1By@oVp8HVHq&q|@zVWu8uP<=Sp$}j5Sn!2< z_ZHGBVWl1VYAd#K#umsIPWk%0CRdh@S!XVl@NDhMeElj$NH@K{8)=~#f0iv3)WT5Nm4`*xBtyJ*#i++A9<@^Pwf z#>?tOcI968{W2cdnI?7oQu8STsvv~2@Ff#)VkyrtOhf4F3$xr}!-q}c6*;rrV%AJ$nGgsaY42G!2+ooX7-AjcZH zp1HqMgy-AKr{8pIkCVpAMeEu;vkt1nCwDnwu0)hBb+`IyVLVok;>)B$((*P593;uO zsg)H;E-sJfEODI!kAalo_QxaEf=Jovbm#_{Y6e+e%=$$z6TbZ z*S+*o)wzY4KJ1ZNUDBD{TdY=`DLIwCT|}~pdkdd^{Q07~TQN8iX`Xv!yo>a3{&QEJ z=R6A&f+d30?_rFDCSSYYBPY&^U5EMafb4%#g{hrMoLSJbhlca@)f?pPjt_Nq+tBb4 z)QZk>8lNRt_^>X=&L8A-lewqgWya}tZd+E~m&SA5%~vCZB)FZKPBOiEFprzGn3M<* z<#LlM(%F5G1;x%`NK!I3eEfV_o2gTYY30gN>;oN^&gVCji_D6C7KL+WN!%OkI>7Ws zu8^}?{-=M8&iGBVo3iWKB9Y>FN!M4~E3an1JI8I$BY-NR+iEc>E;)bdo>~!!b<&H| zeDBT}kq>Iz!6|RfRzH}~8T4J1;Ff>5!@oy?Y1c4E9Q+!?SF<-BFeWuHJR;m7sqUMs<>h_*bXYEu)1+{mTPIvJ# zktFV&;N;&+BdN*r)hn4(;lXv38h23ter{fYxxm0;56J7iaChlPRfF7>(YB4cJ*raD)p zh=*#yyLM01F){^srC~dQPxfBy_>|=qDyTorv3=(f%j9a@FkXkq7G&kwK6U+`Sx`aa zFfu}}IAhiG;}`jJ*G}*1xUxTus;yw=(hKwtEWHu^nd=`}U-tOAza;fm+lL(W=&{|e zvtwJF{3pbMh(o;1r-*>3D|zqQzu|hvc~Zg4tJ`dV(D*EB=c1CKq7*TN)(qKFC%W5YMs6La}O}>0`IVFnJn|F#9gd^67BY9ux8P6)GH#t(dq`avNxrMu{zNhrQ8(UwQ$ZC@u%Mw*-&v#W@>0qg6$zeXu zfODrlQ{~?8{)&}x@6B8x)g|c|)RcNpTfN(Ude$hsWVN}WwbT~R*O^c3)ZZVM{PfKH zvMYnyqs9qpLD(+(tAOq0qq%Qo}{Q@ ztsvUOgdHv#JV~+o#(A^in^_C5{dBIUAw|%#U)rHzGX62a#C%WYwSrqY%IfDmP-y?! zi%*}MNS56rsvGL_R79Jn3GP;Xe!!M*k0xmI#!dWg)oAmvx{H^+jytLFBuO|< zJRTjcc{Lx8(c8Kh($#+DCTTg8TJ@DCuBTE*;rodbya^L;XY5_NwIuGhHxH}saWQIl zAgc)=2RH`ykL+)1s?!n5B^!)4~CgJ19xowo7B%P8jaPLs&qTvt4K&J*Kq}8 zkAKL1$ES3I>V!s4l$AwKUO79drM{!?8|IyJudwiRmx_ehc!&&5x}`s(>)kdkj!K_P zW+NI>d;3%DgU^iX%KMRV;^$k(M+f61h7S&8zcDJlWYh7ntmIo_W0G%7t46M+L60*g zDd?j3s!>J_f4$V)cOL95)#xB&7Pd3mfqtsbw=D9XJu;(1#gOqFQ7;=|L#jV3v!}M& zJl*%n@wmgY;>_)5BN{dK1?r2q>v^VtKFI(yxlniTW_u_c#e8kk=^2mIW8BuBQ-M%(Yg=U@PpW+!yBe-=J?31>V%sW#eP)^E=dNb(-1+GJ`CFoQ zEVJ5s+Ne#cbhNg*-`%>0{-@<_X7+FAvZ`8pW)AOs`_^Uz~xZ zrPJBCZ&!)wPo6B1)U6(j`Md4+6`K-%6=P6mrp=$3^`xt@ZO6T@r8lY$rFXg$+yg{E&lkF!2Wk3DV?Tl?`>So zi&YJ4EjcQCE?YjUS|#6n?Cm-fO%huPsHYYfiWz7&!MNA@R-!i8rC!9)`tn|7eeA$;3 z%d9ZVKgyL|IxLxBdZFh5{eUCC4exEA>EeZeg{jrnhK7-7hRVSRjHpM2CI7B&*`TP@ z3+A5K+}0VJIwM)nFFZn$t86-^uDJo{eW(J?C7?bxKIL!}Op~(ky7$6{i8_5dDau%( zNGN|rK0vP9kSkl$ujwokLay*xcQSopXJ1{}!zX=ADp5DLA@T+6Gy^OmWYi_2I+ zcSuYHs56cb9#&AKmcbG}`h@6Z!QM#j>)ore#^8DiNY-V{~Yd%MiGg~|C~IH{(ZVHi#@{gIEHf0?fQd*(a>qV>rbA>5m3;{ z(}zg)<-Vb(c2QM}>Ezp{?c4wUrQW$T{smsA0FSOx8eL1nM@D^CC2oL?&AAW^ebpj4|R{l^}^k-QHo5@}ESpFNx7 zZS(yWt0VBZcy6KPCR@Z{`TN1DPNlSYVZ5GsHpy&pO5Y{KPu@>&p2adUw3h!$axIT$ zpKwHCr;GzVedrHo^S<)Y8Q1XmCH9HQ180UtgpS6Jg<2ncDeSG{$WV$dR~?+PzI-Io zY$bb^H9k!6N0n)qN8fZc|Fk8}$S7-~q#)<4YTtoo4FRgG*CXhjNBWEI6M6<^`6_?8Wme zCi5)E`own>hSiOaiZ0WUO7U`3Y#CPQPMID@TNL`)CZdzrq9mxy#Th7dy z5t-MT>DKmLsWm+(Ug5j4<)+;X-{RnaU@{MB`F=x;PQ@wG!~U)T!PnO#b@X;G%2co{ zvJ8XE?!H@bHg}ERoaBJojOM_cs)t(!YKBjg`KJ|baPBg>dOXQ(MEvWq8Ic*OuAf^& zYjv)s)Q(Ra2y*j79A9q#B9#{&uTw)4+fkS>L%%~hPghGi?~P0GioOrqPpcn;b2nH) zzT}}Zs20lJad4*X^NM~>JSi{LPt2`hek4_Jxmm7u5#>9rdNq_hdbmlfMPTV$hr8QH z{-4X#wz<5T(4^eF_Pl5gIKI0m_@f2ywyo62F|8j~n z2AK)YxNhIihQa(fKpGFu(EiT?!2CWx`g;_|Q&tRm8*GK8HF44x)w*co#f}2Dd`LZZU^2$lp-xAq?vGEe=3`Bj67K z{=aYu0D%HMOb5=LHn6+~El)ZO=Fbur6%{;ZWoZuxu$fk05yUMd4E_)rT+pfVf)^~% z7y>9#PT_`1*h9aTJ>?z)3cuKZ8XTws7bGiG!hsURgHpnSCc*Wm1X{%ZZ4neG_Y`IX z%%Kx#@Yiol0ufYFv<$T=gggXYzw3lhpoAi4H6f6j>Bxgk2yQZCGeQ*HOE-git7gP0 zaQ~_qag5y5jF1HP2U@`W*%kyi+>`9lf;di2Ye5K;FhZbz6b;b{D%+y5P!E4~11bRl zzy+}cC8$q-??IQq@#?>8@IV-F{V9Pa@xO)wP!T|j;QCz$s{X@F2z_WPS_lnZ)6h4eY?Q z!I7D|5DMf29SDK{S-cExKEkw}-Xq3VO{8A(XzZ7x7FNFj6rHFJ0O{DY+ z{8F?Fekr1ZU&z>eYW& z2Mzs`ns4}@)%pLfRvY;z_2>vn$zhy(wd0U)9*y|qL*)W3d9A9r#LE zIRJl(LJOWVv9*I7D+OEdq8?Ph{xbe+gaq|Z#t{1C$WeqC=dXqo1?3EGK$H~Zb+|$R z_qpI7v`e-I*Z(s3O#@dc215iiR^*f82o#*~mo@)Ih@}|XwalQI*PbPJ~h3O>cONOhSm={iC@h4A}- zA^hcbe{o31DUs?Uz9_Q1}4ili#iz``g9i zC}RjB6N-c&>iCUE_>D)P;L&N(3I19_81x#wp@qoL=MchdNR$BP5Dp_GKsba);RH}x z>ttso=lw+NAXkoozY^yVf@J+UgeW;|{8!P8Y&P+yLSY_Mh)n(|mOw@NsXs;W1yF4L zTYL)@6Q}>wo>&A$ml;qTUIaX177-$3nIFH3rdxn*iPMsQeoycMRjt()5tu%}i}Z^Z8jl1Ve{ln`r~vl= zUv3ymi2U39QMw?ZXRl{&Wh6*@NzVvGiD)om^p_AAkQU*|!Al5^tr#4VoVA1q-~mUp zqLC<&*P)Gh`DK~5l4C#=EFu)yIFC+F-RkO7>eu93_Fd1N}KtQ$)lxf0YPyz&lVWAH$t$~q{Xpn6|D`^c7f)Rii8(>hD2E!vlf%bYB9@vKs zFdUTc!SHZ+9BBhk2uk_9EO83=rwo{6D(@O zkO<-bs`{^hL?I}}{6$Opwd~M1A_3MQ5-1Q2g*j`O02mUxK^QC!gMMG~P+gmttS zEM==@9gGA_3VhOl0FdHa)*<4tSSU?j1A}^ugEHVXFeISGLZK`SMuZaQ^)R3rARtBm zf7d%6ON37vu#16&a@uvo1h9p(eiA~$5TGyp!SFC}#^B3g=rxm-gJSi7W>B!+0lyC1 zc;uFYyGd9m8(7;esKP_ZJPbzIzzd5Z!dET^i$y|Tk6TX*6#ideP)-g^0GJT8-vwhL^vCM{Q8)&RLqXrITaO18%Ub0^Lj(}<@R5OFaFYRGL}-s@eS>)9 zMq%)j9S9g6h9;z`h_8P_3#O*#Bp2|*>85JdRG06XhMxOsqvAHFa!SUeu?0RT+s z_lzL@@kh`c6Z&t6@ClE>5;ii%5{00>m318fc+mdKIv5U*gc7j-z<~aN=LX$d3j{Dc z0R=ab07m(^-hYUpq1(8^q4uE7sWo_@b9f{Ywo0M)@bC};%zfMjEdZCY0S55E=Hgl= zNDKiFKEk;HCInkKkT8E2Fa#kGgu@yX0`7Z#?*L;V$`0_F9wRYCGy!h0 z0gMQ31h2s(LDFD0s0JXeTPA=4Lj=ncHd(P?YQlXF20RVgFj)aD+?ZmK1mKlnAp!ux zjU*%>+&Uv6JZST8O-}#}3_EO$f$7;WoDd%2&wTq6B4E)(0^CXg81X;OjN;26VZi?| z#sCl6aa<=12INhDnEZB*SRB~VhRqKW79hgIJ7A7b(Dw4$1_2CM=5;Vgm<>IK@L=u( z37I$O8<}g{!{aeP|F94NLWGYo0V70&lC!nM00{*PkRf4+aLqt?aQ{XCljc8x((e!f z0^(sa9l&s~$px4YKyP5eV8P;sEkyzrje*+_0uBkETSx*4i^ss%Hbe~T9g={<5#VbZ zz~HVQ5)i#X3jh!9DGA_{sE}h@7a{=rfr6f7tWz}}wZZlSVgmGRXFVQ~ut9@(FoD;% z2MLH-qd^iSL;%epH>i+++Nf3`6j<>v#vrzX+kP;!h|rGYIsrj@u-Fwz5F%|17zjdG zG%VPGq{eMfE5L*H5!W#h0-sKW&2$10je~X@*5e5gC>@6M|0iG|0AhId1p-a*-+E#I zBfyp?Bp`l`S}9tE@SrCbYZ()P2V85?DdSJXgJ)^$#|fyEh(W@70ujT54I;2da2E|= zXySUtkbpvP4FWvyz!7Gph>%TLFANHW1ojAy2WH{goxT|v z3~VMvn7{EKL=2$oBm^)#+<;JEF#nFiQu+0{TG03Xc@{mMQ5MjXq1QUWD zfkJod7L} zjMfW*hVo$O3)E|9AsC3f*GDptFn?m~KRuuzLQh;_#6oLQHpp;5c)%2`$3uY;`!6t| zzZUR!Bm)=|;h`=X5CbO;ZxGmWSWm#Q(1OwaA>v;fSKoq(@lA$0%yZURT2E<@HW&;d_85>}D z*!~lwRV*y*hIrur6B+%AWB`zWgC&k&Vu3^yCN;pr!@V5X>?Upy8j1ziM>mi#U?&15 zGzlQW@^&=Xu)shY=j*fpU@#jE?KHtH76kh*7K;etb69&q1d7308_57-AEE zNFvNgfR`1(+JVg(h!*a>a40O;Qd!R!Wbz=9`U|5(GT{9R@V*CZRs$F?1Ah@IOAHV8 zRAH$ypv8c_z72TrTpq#$0}96@0aFB1H9!QLK5#@R)7t${M00f$aGXc+VVFCgb0wb^<4+nBY*gi4{vq0Vm>j;3Yi;|)7hY&YdE}#~$ zxM56yreUTUcwDf<3ugizN5CQ;fCqMXVM7dH;2j-!@4$9HJY@owl>iG6A-7J1ZMgs# zNc}dn2lm5ZS_SDP;a4^T`u|7$5D*rNLwP6>Zd#!oM)>>yFf1%bhxY5iY=vnMz}9IC zievyH2zua%VBNuHE7(oMZDR(eU9UVzHzRJt2Z505+Z=qu9U% zz(DA?o(X^n!7V26&>MUNfc;sDeInq%vb=E31oyZ0S`JiE-?@@zDBg1xPtiMfF-9eB{FWa4Z9Jy;V|w6cO;O8{M?yzggeXa&Gvbx=x@ zhcpg}o{=Ddm46Pn2O>^L5{o|rQV=0Y5PYE|P-o7ZBVbR`0i6E>rk%Z>tvz@MxXX|ZGKNA} NJl&BaXXVe){XfC%&#eFe delta 94671 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%0A15+H%Ck~_{+v^ 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 diff --git a/WorkFeature/Icons/WF_4pointsCube.svg b/WorkFeature/Icons/WF_4pointsCube.svg index b3b3615..449fff3 100644 --- a/WorkFeature/Icons/WF_4pointsCube.svg +++ b/WorkFeature/Icons/WF_4pointsCube.svg @@ -327,6 +327,174 @@ id="radialGradient5473" xlink:href="#linearGradient5238-3-9-7-8-5" inkscape:collect="always" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml - + @@ -385,7 +553,7 @@ inkscape:connector-curvature="0" /> + transform="matrix(-0.07181862,0.04750673,-0.04824701,-0.07071667,53.382707,79.100288)" /> - - - - - - + + + + + + diff --git a/WorkFeature/Icons/WF_Beam.svg b/WorkFeature/Icons/WF_Beam.svg index 381ab55..2cda4c0 100644 --- a/WorkFeature/Icons/WF_Beam.svg +++ b/WorkFeature/Icons/WF_Beam.svg @@ -14,7 +14,7 @@ width="64" height="64" id="svg3017" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.5 r10040" sodipodi:docname="WF_Beam.svg" inkscape:export-filename="/home/mark/HyperbolaIcon.png" inkscape:export-xdpi="90" @@ -398,15 +398,15 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1301" - inkscape:window-height="744" + inkscape:window-width="1366" + inkscape:window-height="702" id="namedview13601" showgrid="false" inkscape:zoom="5.840651" inkscape:cx="60.002575" inkscape:cy="25.215672" - inkscape:window-x="65" - inkscape:window-y="24" + inkscape:window-x="0" + inkscape:window-y="27" inkscape:window-maximized="1" inkscape:current-layer="svg3017" /> - - + + sodipodi:nodetypes="ccssscccccc" + transform="matrix(-0.37450424,-0.5067961,0.81446679,-0.60186189,27.487169,66.65621)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_Difference.svg b/WorkFeature/Icons/WF_Difference.svg new file mode 100644 index 0000000..494acb0 --- /dev/null +++ b/WorkFeature/Icons/WF_Difference.svg @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_FCCamera_02.svg b/WorkFeature/Icons/WF_FCCamera_02.svg index b03199b..6a283d7 100644 --- a/WorkFeature/Icons/WF_FCCamera_02.svg +++ b/WorkFeature/Icons/WF_FCCamera_02.svg @@ -15,7 +15,7 @@ inkscape:version="0.48.3.1 r9886" width="64" height="64" - sodipodi:docname="FCCamera_02.png"> + sodipodi:docname="WF_FCCamera_02.svg"> @@ -24,7 +24,7 @@ image/svg+xml - + @@ -39,148 +39,34 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" + inkscape:window-width="785" + inkscape:window-height="600" id="namedview3038" showgrid="false" - inkscape:zoom="3.6875" + inkscape:zoom="7.078125" inkscape:cx="32" inkscape:cy="32" inkscape:window-x="65" - inkscape:window-y="24" + inkscape:window-y="336" inkscape:window-maximized="0" inkscape:current-layer="svg3036" /> + ? diff --git a/WorkFeature/Icons/WF_NpointsLine.svg b/WorkFeature/Icons/WF_NpointsLine.svg new file mode 100644 index 0000000..8a9cbc4 --- /dev/null +++ b/WorkFeature/Icons/WF_NpointsLine.svg @@ -0,0 +1,562 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_Sweep.svg b/WorkFeature/Icons/WF_Sweep.svg new file mode 100644 index 0000000..381ab55 --- /dev/null +++ b/WorkFeature/Icons/WF_Sweep.svg @@ -0,0 +1,454 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_isCommon.svg b/WorkFeature/Icons/WF_isCommon.svg new file mode 100644 index 0000000..965907e --- /dev/null +++ b/WorkFeature/Icons/WF_isCommon.svg @@ -0,0 +1,998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + ? + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Ressources/Parametric2D.dat b/WorkFeature/Ressources/Parametric2D.dat new file mode 100644 index 0000000..6915c18 --- /dev/null +++ b/WorkFeature/Ressources/Parametric2D.dat @@ -0,0 +1,23 @@ +Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep +['Circle', '10 # Radius', 'a', 'a*cos(t)', 'a*sin(t)', '0', '2*pi', '0.01', '0'] +['Ellipse', '10 # X Radius 1', '20 # Y Radius 2', 'a*cos(t)', 'b*sin(t)', '0', '2*pi', '0.01', '0'] +['Double egg', '10 # Radius', '0', 'a*cos(t)*cos(t)', 't', '-pi', 'pi', '0.01', '1'] +['Catenary or funicular', '10', '0', 'a*log((1+sin(t))/(cos(t)))', 'a/cos(t)', '-pi/2 + 0.01', 'pi/2 - 0.01', '0.01', '0'] +['Sinusoid', '5 ', '1', 't', 'a*sin(t/b)', '0', '10', '0.01', '0'] +['Dipole part1', '5 ', '1', '-pow(a*a*cos(t),0.5)', 't', '-pi/2', 'pi/2', '0.01', '1'] +['Dipole part2', '5 ', '1', 'pow(a*a*cos(t),0.5)', 't', '-pi/2', 'pi/2', '0.01', '1'] +['Tear drop', '10', '2', 'a*cos(t)', 'a*sin(t)*pow(sin(t/2),b)', '0', '2*pi', '0.01', '0'] +['Kulp quartic', '10', '2*a', 'a*tan(t)', 'b*cos(t)', '-pi', 'pi', '0.01', '0'] +['Lemniscate of Bernoulli', '10', '1+pow(cos(t),2)', 'a*sin(t)/b', 'a*sin(t)*cos(t)/b', '-pi', 'pi', '0.01', '0'] +["Pascal's snail", '10', '2', 'a*(1+b*cos(t))', 't', '0', '2*pi', '0.01', '1'] +['Archimedian spiral', '2.5 # Radius', 'a', 'a*t', 't', '0', '5*2*pi # 5 circles', '0.01', '1'] +['Simple folium', '10 # Radius', '0', 'a*(cos(t)**3)', 't', '0', 'pi', '0.01', '1'] +['Regular bifolium', '2.5 # Radius', 'a', '4*a*sin(t)*(cos(t)**2)', 't', '0', 'pi', '0.01', '1'] +['Equilateral trefoil', '10 ', 'a', 'a*cos(3*t)', 't', '0', 'pi', '0.01', '1'] +['Circle with Teeth', '37 # Number of Teeth', '(a+cos(a*t)*2)*1 # 1 is diameter', 'b*cos(t)', 'b*sin(t)', '0.0', '2*pi', '0.01', '0'] +['Spiral', '0.5 ', '-0.75', 'a*t', 'b*t', '0', '10*2*pi', '0.01', '1'] +['transcendental butterfly curve ', '4', '24', 'exp(sin(t))-2*cos(a*t)+pow(sin((2*t-pi)/b),5)', 't', '-8*pi', '8*pi', '0.01', '1'] +['Parabola', '10 # Parabola parameter >0', 'a', 't', 'sqrt(2*a*t)', '0.01', '10', '0.01', '0'] +['Witch of Agnesi', '100 # Radius', 'a', 'a*tan(t)', 'b*cos(t)*cos(t)', '-pi/2.5+0.01', 'pi/2.5-0.01', '0.01', '0'] +['Kappa', '10 # Radius', 'a', 'a*tan(t)', 't', '0', '2*pi', '0.01', '1'] +['Trefle de Habenicht', '3', 'a', '1+cos(a*t)+(sin(a*t)*sin(a*t))', 't', '0', '2*pi', '0.01', '1'] diff --git a/WorkFeature/Ressources/Parametric3D.dat b/WorkFeature/Ressources/Parametric3D.dat new file mode 100644 index 0000000..7a89a75 --- /dev/null +++ b/WorkFeature/Ressources/Parametric3D.dat @@ -0,0 +1,20 @@ +Name, a (t), b (a,t),c (a,b,t), X (a,b,c,t), Y (a,b,c,t), Z (a,b,c,t), tmin, tmax, tstep +['Cylindrical helix', '10 # Radius', '10*0.05 #Vert. step', '1 # +-1 direction of rotation ', 'a*cos(t)', 'c*a*sin(t)', 'b*t', '0.0', '5*2*pi #5 circles', '0.01'] +['Circle with Teeth', '37', '1', '(a+cos(a*t)*2)*b', 'c*cos(t)', 'c*sin(t)', '0', '0.0', '2*pi', '0.01'] +['Seam of a tennis ball', '5', '5', '2*(sqrt(a*b))', 'a*(cos(t))+b*(cos(3*t))', 'a*(sin(t))-b*(sin(3*t))', 'c*(sin(2*t))', '0.0', '2*pi', '0.05*pi'] +['Archytas curve part1', '10', '0', '0', 'a*(cos(t)*cos(t))', 'a*(cos(t)*sin(t))', 'a*(sqrt((1-cos(t))*cos(t)))', '-1*pi/2', '+1*pi/2', '0.005*pi'] +['Archytas curve part2', '10', '0', '0', 'a*(cos(t)*cos(t))', 'a*(cos(t)*sin(t))', '-a*(sqrt((1-cos(t))*cos(t)))', '-1*pi/2', '+1*pi/2', '0.005*pi'] +['Conical helix', '25', '20', 'sin(a)*cos(b)/sin(b)', 'a*exp(c*t)*cos(t)', 'a*exp(c*t)*sin(t)', '-1*exp(c*t)*cos(a)/sin(a)', '0.0', '10*2*pi', '0.01'] +['Tangentoidal crown', '37', '1', '1 ', 'a*cos(t)', 'a*sin(t)', 'b*tan(c*t/2)', '0.0', '2*pi', '0.01'] +['Clelia', '10', '0', '20', 'a*cos(c*t)*cos(t)', 'a*cos(c*t)*sin(t)', 'a*sin(c*t)', '0.0', '2*pi', '0.01'] +['Cylindric sine wave', '25', '10', '5 #c>0', 'a*cos(t)', 'a*sin(t)', 'b*cos(c*t)', '0.0', '10*pi', '0.01'] +['Skew circle', '10', '0', '0', '-a*cos(t)*( 1-(pow(cos(t),2)/3) )', '-a*sin(t) *( 1+(sin(2*t)/3) ) ', 'a*(t/2 +(pow(sin(t),2))/4)', '0.01', '10*pi', '0.01'] +['Egg with Teeth', '1', '1', '(a+cos(a*t)*2)*b', 'c*cos(t)*c', 'c*sin(t)', '0', '0.0', '2*pi', '0.01'] +['Flower', '6.2', '3.1*t', '2', 'a*sin(t)-c*sin(b)', 'a*cos(t)-c*cos(b)', '0', '0.0', '10*2*pi', '0.1'] +['Bicylindrical', '5 # Radius of Cyl 1', '5 # Radius of Cyl 2', '0 # Axis distance', 'a*cos(t)', 'sqrt(b*b-pow(2*c+a*sin(t),2))', 'c+a*sin(t)', '0', '2*pi', '0.01'] +['Bicylindrical eight curved', '5 # Radius of Cyl 1', '10 # Radius of Cyl 2', '2.5 # Axis distance', 'a*cos(t)', '-sqrt(b*b-pow(2*c+a*sin(t),2))', 'c+a*sin(t)', '-pi', 'pi', '0.01'] +['Bicylindrical C small', '5 # Radius of Cyl 1', '5 # Radius of Cyl 2', '1.5 # Axis distance', 'a*cos(t)', '-sqrt(abs(b*b-pow(2*c+a*sin(t),2)))', 'c+a*sin(t)', '-pi', 'pi', '0.01'] +['Horopter', '20 # Radius', '10', 'tan(t/2)', '(2*a)/(1+c*c)', 'b*c', 'c*(2*a)/(1+c*c)', '-pi+0.01', 'pi-0.01', '0.01'] +['3D Lissajous', '10 ', '10', '0', 'a*cos(3*t)', 'a*sin(2*t)', 'b*sin(7*t)', '0.0', '2*pi', '0.01'] +['Trefoil knot', '10', '0', '1 #-1 senestre', 'a*(cos(t)+2*cos(2*t))', 'a*(sin(t)-2*sin(2*t))', 'a*2*c*sin(3*t)', '0.0', '2*pi', '0.01'] +['Nfoil knot', '10', '10 #number of foils', '1 #-1 senestre', 'a*(cos(t)+2*cos((b-1)*t))', 'a*(sin(t)-2*sin((b-1)*t))', 'a*2*c*sin(b*t)', '0.0', '2*pi', '0.01'] diff --git a/WorkFeature/Ui/WFGui_2015.py b/WorkFeature/Ui/WFGui_2015.py new file mode 100644 index 0000000..f04e200 --- /dev/null +++ b/WorkFeature/Ui/WFGui_2015.py @@ -0,0 +1,3309 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WFGui_2015.ui' +# +# Created: Wed Nov 4 07:10:00 2015 +# by: PySide UI code generator 4.11.2 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(382, 845) + icon = QtGui.QIcon() + icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wf.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + Form.setWindowIcon(icon) + self.gridLayout_34 = QtGui.QGridLayout(Form) + self.gridLayout_34.setObjectName(_fromUtf8("gridLayout_34")) + self.scrollArea = QtGui.QScrollArea(Form) + self.scrollArea.setFrameShape(QtGui.QFrame.StyledPanel) + self.scrollArea.setFrameShadow(QtGui.QFrame.Sunken) + self.scrollArea.setLineWidth(1) + self.scrollArea.setMidLineWidth(0) + self.scrollArea.setWidgetResizable(True) + self.scrollArea.setObjectName(_fromUtf8("scrollArea")) + self.scrollAreaWidgetContents = QtGui.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 362, 786)) + self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) + self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) + self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) + self.tabWidget_7 = QtGui.QTabWidget(self.scrollAreaWidgetContents) + self.tabWidget_7.setMinimumSize(QtCore.QSize(0, 0)) + self.tabWidget_7.setTabPosition(QtGui.QTabWidget.West) + self.tabWidget_7.setObjectName(_fromUtf8("tabWidget_7")) + self.Origin_Tab_2 = QtGui.QWidget() + self.Origin_Tab_2.setObjectName(_fromUtf8("Origin_Tab_2")) + self.gridLayout_65 = QtGui.QGridLayout(self.Origin_Tab_2) + self.gridLayout_65.setObjectName(_fromUtf8("gridLayout_65")) + self.button_origin = QtGui.QPushButton(self.Origin_Tab_2) + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_origin.setIcon(icon1) + self.button_origin.setIconSize(QtCore.QSize(32, 32)) + self.button_origin.setObjectName(_fromUtf8("button_origin")) + self.gridLayout_65.addWidget(self.button_origin, 0, 0, 1, 1) + self.frame_6 = QtGui.QFrame(self.Origin_Tab_2) + self.frame_6.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_6.setFrameShadow(QtGui.QFrame.Raised) + self.frame_6.setObjectName(_fromUtf8("frame_6")) + self.gridLayout_66 = QtGui.QGridLayout(self.frame_6) + self.gridLayout_66.setObjectName(_fromUtf8("gridLayout_66")) + self.groupBox_13 = QtGui.QGroupBox(self.frame_6) + self.groupBox_13.setObjectName(_fromUtf8("groupBox_13")) + self.gridLayout_67 = QtGui.QGridLayout(self.groupBox_13) + self.gridLayout_67.setObjectName(_fromUtf8("gridLayout_67")) + self.radioButton_verbose = QtGui.QRadioButton(self.groupBox_13) + self.radioButton_verbose.setChecked(False) + self.radioButton_verbose.setAutoExclusive(False) + self.radioButton_verbose.setObjectName(_fromUtf8("radioButton_verbose")) + self.gridLayout_67.addWidget(self.radioButton_verbose, 0, 0, 1, 1) + self.radioButton_biColor = QtGui.QRadioButton(self.groupBox_13) + self.radioButton_biColor.setAutoExclusive(False) + self.radioButton_biColor.setObjectName(_fromUtf8("radioButton_biColor")) + self.gridLayout_67.addWidget(self.radioButton_biColor, 1, 0, 1, 1) + self.radioButton_copy = QtGui.QRadioButton(self.groupBox_13) + self.radioButton_copy.setObjectName(_fromUtf8("radioButton_copy")) + self.gridLayout_67.addWidget(self.radioButton_copy, 2, 0, 1, 1) + self.horizontalLayout_44 = QtGui.QHBoxLayout() + self.horizontalLayout_44.setObjectName(_fromUtf8("horizontalLayout_44")) + self.label_10 = QtGui.QLabel(self.groupBox_13) + self.label_10.setObjectName(_fromUtf8("label_10")) + self.horizontalLayout_44.addWidget(self.label_10) + self.tolerance_edit = QtGui.QLineEdit(self.groupBox_13) + self.tolerance_edit.setMaximumSize(QtCore.QSize(60, 16777215)) + self.tolerance_edit.setObjectName(_fromUtf8("tolerance_edit")) + self.horizontalLayout_44.addWidget(self.tolerance_edit) + self.gridLayout_67.addLayout(self.horizontalLayout_44, 3, 0, 1, 1) + self.gridLayout_66.addWidget(self.groupBox_13, 0, 0, 1, 1) + self.gridLayout_65.addWidget(self.frame_6, 1, 0, 1, 1) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_65.addItem(spacerItem, 2, 0, 1, 1) + self.tabWidget_7.addTab(self.Origin_Tab_2, icon1, _fromUtf8("")) + self.Point_Tab1_2 = QtGui.QWidget() + self.Point_Tab1_2.setObjectName(_fromUtf8("Point_Tab1_2")) + self.gridLayout_68 = QtGui.QGridLayout(self.Point_Tab1_2) + self.gridLayout_68.setObjectName(_fromUtf8("gridLayout_68")) + spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_68.addItem(spacerItem1, 10, 0, 1, 1) + self.button_circle_center = QtGui.QPushButton(self.Point_Tab1_2) + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_circle_center.setIcon(icon2) + self.button_circle_center.setIconSize(QtCore.QSize(32, 32)) + self.button_circle_center.setObjectName(_fromUtf8("button_circle_center")) + self.gridLayout_68.addWidget(self.button_circle_center, 4, 0, 1, 1) + self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1_2) + icon3 = QtGui.QIcon() + icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_point.setIcon(icon3) + self.button_point_line_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point")) + self.gridLayout_68.addWidget(self.button_point_line_point, 9, 0, 1, 1) + self.button_face_center = QtGui.QPushButton(self.Point_Tab1_2) + icon4 = QtGui.QIcon() + icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_center.setIcon(icon4) + self.button_face_center.setIconSize(QtCore.QSize(32, 32)) + self.button_face_center.setObjectName(_fromUtf8("button_face_center")) + self.gridLayout_68.addWidget(self.button_face_center, 5, 0, 1, 1) + self.horizontalLayout_45 = QtGui.QHBoxLayout() + self.horizontalLayout_45.setObjectName(_fromUtf8("horizontalLayout_45")) + self.button_line_center = QtGui.QPushButton(self.Point_Tab1_2) + self.button_line_center.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon5 = QtGui.QIcon() + icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_center.setIcon(icon5) + self.button_line_center.setIconSize(QtCore.QSize(32, 32)) + self.button_line_center.setObjectName(_fromUtf8("button_line_center")) + self.horizontalLayout_45.addWidget(self.button_line_center) + self.spin_line_center = QtGui.QSpinBox(self.Point_Tab1_2) + self.spin_line_center.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_line_center.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_line_center.setMinimum(2) + self.spin_line_center.setMaximum(100) + self.spin_line_center.setSingleStep(1) + self.spin_line_center.setObjectName(_fromUtf8("spin_line_center")) + self.horizontalLayout_45.addWidget(self.spin_line_center) + self.gridLayout_68.addLayout(self.horizontalLayout_45, 2, 0, 1, 1) + self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1_2) + icon6 = QtGui.QIcon() + icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_center.setIcon(icon6) + self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center")) + self.gridLayout_68.addWidget(self.button_Npoints_center, 1, 0, 1, 1) + self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1_2) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_face_point.setIcon(icon7) + self.button_line_face_point.setIconSize(QtCore.QSize(32, 32)) + self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point")) + self.gridLayout_68.addWidget(self.button_line_face_point, 6, 0, 1, 1) + self.horizontalLayout_46 = QtGui.QHBoxLayout() + self.horizontalLayout_46.setObjectName(_fromUtf8("horizontalLayout_46")) + self.button_object_center = QtGui.QPushButton(self.Point_Tab1_2) + icon8 = QtGui.QIcon() + icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center.setIcon(icon8) + self.button_object_center.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center.setObjectName(_fromUtf8("button_object_center")) + self.horizontalLayout_46.addWidget(self.button_object_center) + self.checkBox_object_center = QtGui.QCheckBox(self.Point_Tab1_2) + self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center")) + self.horizontalLayout_46.addWidget(self.checkBox_object_center) + self.gridLayout_68.addLayout(self.horizontalLayout_46, 0, 0, 1, 1) + self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1_2) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_extrema.setIcon(icon9) + self.button_line_extrema.setIconSize(QtCore.QSize(32, 32)) + self.button_line_extrema.setObjectName(_fromUtf8("button_line_extrema")) + self.gridLayout_68.addWidget(self.button_line_extrema, 3, 0, 1, 1) + self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1_2) + icon10 = QtGui.QIcon() + icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_face_point.setIcon(icon10) + self.button_point_face_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_face_point.setObjectName(_fromUtf8("button_point_face_point")) + self.gridLayout_68.addWidget(self.button_point_face_point, 8, 0, 1, 1) + icon11 = QtGui.QIcon() + icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab1_2, icon11, _fromUtf8("")) + self.Point_Tab2_2 = QtGui.QWidget() + self.Point_Tab2_2.setObjectName(_fromUtf8("Point_Tab2_2")) + self.gridLayout_70 = QtGui.QGridLayout(self.Point_Tab2_2) + self.gridLayout_70.setObjectName(_fromUtf8("gridLayout_70")) + self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2_2) + icon12 = QtGui.QIcon() + icon12.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_point.setIcon(icon12) + self.button_twolines_point.setIconSize(QtCore.QSize(32, 32)) + self.button_twolines_point.setObjectName(_fromUtf8("button_twolines_point")) + self.gridLayout_70.addWidget(self.button_twolines_point, 0, 0, 1, 1) + self.horizontalLayout_47 = QtGui.QHBoxLayout() + self.horizontalLayout_47.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.horizontalLayout_47.setObjectName(_fromUtf8("horizontalLayout_47")) + self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_point_on_line.sizePolicy().hasHeightForWidth()) + self.button_point_on_line.setSizePolicy(sizePolicy) + self.button_point_on_line.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_alongLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_on_line.setIcon(icon13) + self.button_point_on_line.setIconSize(QtCore.QSize(32, 32)) + self.button_point_on_line.setObjectName(_fromUtf8("button_point_on_line")) + self.horizontalLayout_47.addWidget(self.button_point_on_line) + self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.distance_point_on_line.sizePolicy().hasHeightForWidth()) + self.distance_point_on_line.setSizePolicy(sizePolicy) + self.distance_point_on_line.setMinimumSize(QtCore.QSize(50, 0)) + self.distance_point_on_line.setMaximumSize(QtCore.QSize(60, 16777215)) + self.distance_point_on_line.setObjectName(_fromUtf8("distance_point_on_line")) + self.horizontalLayout_47.addWidget(self.distance_point_on_line) + self.gridLayout_70.addLayout(self.horizontalLayout_47, 1, 0, 1, 1) + self.horizontalLayout_48 = QtGui.QHBoxLayout() + self.horizontalLayout_48.setObjectName(_fromUtf8("horizontalLayout_48")) + self.button_distPoint = QtGui.QPushButton(self.Point_Tab2_2) + icon14 = QtGui.QIcon() + icon14.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPoint.setIcon(icon14) + self.button_distPoint.setIconSize(QtCore.QSize(32, 32)) + self.button_distPoint.setObjectName(_fromUtf8("button_distPoint")) + self.horizontalLayout_48.addWidget(self.button_distPoint) + self.dist_point = QtGui.QLineEdit(self.Point_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dist_point.sizePolicy().hasHeightForWidth()) + self.dist_point.setSizePolicy(sizePolicy) + self.dist_point.setMinimumSize(QtCore.QSize(40, 0)) + self.dist_point.setMaximumSize(QtCore.QSize(40, 16777215)) + self.dist_point.setObjectName(_fromUtf8("dist_point")) + self.horizontalLayout_48.addWidget(self.dist_point) + self.spin_dist_point = QtGui.QSpinBox(self.Point_Tab2_2) + self.spin_dist_point.setMinimumSize(QtCore.QSize(30, 0)) + self.spin_dist_point.setMaximumSize(QtCore.QSize(30, 16777215)) + self.spin_dist_point.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) + self.spin_dist_point.setKeyboardTracking(False) + self.spin_dist_point.setMinimum(1) + self.spin_dist_point.setMaximum(100) + self.spin_dist_point.setSingleStep(1) + self.spin_dist_point.setProperty("value", 1) + self.spin_dist_point.setObjectName(_fromUtf8("spin_dist_point")) + self.horizontalLayout_48.addWidget(self.spin_dist_point) + self.gridLayout_70.addLayout(self.horizontalLayout_48, 2, 0, 1, 1) + self.horizontalLayout_49 = QtGui.QHBoxLayout() + self.horizontalLayout_49.setObjectName(_fromUtf8("horizontalLayout_49")) + self.button_cut_wire_point = QtGui.QPushButton(self.Point_Tab2_2) + self.button_cut_wire_point.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon15 = QtGui.QIcon() + icon15.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWirePoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_point.setIcon(icon15) + self.button_cut_wire_point.setIconSize(QtCore.QSize(32, 32)) + self.button_cut_wire_point.setObjectName(_fromUtf8("button_cut_wire_point")) + self.horizontalLayout_49.addWidget(self.button_cut_wire_point) + self.spin_wire_cut_point = QtGui.QSpinBox(self.Point_Tab2_2) + self.spin_wire_cut_point.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_wire_cut_point.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_wire_cut_point.setMinimum(2) + self.spin_wire_cut_point.setMaximum(100) + self.spin_wire_cut_point.setSingleStep(1) + self.spin_wire_cut_point.setObjectName(_fromUtf8("spin_wire_cut_point")) + self.horizontalLayout_49.addWidget(self.spin_wire_cut_point) + self.gridLayout_70.addLayout(self.horizontalLayout_49, 3, 0, 1, 1) + self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2_2) + icon16 = QtGui.QIcon() + icon16.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_point.setIcon(icon16) + self.button_click_for_point.setIconSize(QtCore.QSize(32, 32)) + self.button_click_for_point.setCheckable(True) + self.button_click_for_point.setObjectName(_fromUtf8("button_click_for_point")) + self.gridLayout_70.addWidget(self.button_click_for_point, 4, 0, 1, 1) + self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2_2) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectBasePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_point.setIcon(icon17) + self.button_object_base_point.setIconSize(QtCore.QSize(32, 32)) + self.button_object_base_point.setObjectName(_fromUtf8("button_object_base_point")) + self.gridLayout_70.addWidget(self.button_object_base_point, 5, 0, 1, 1) + self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2_2) + icon18 = QtGui.QIcon() + icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_to_sketch.setIcon(icon18) + self.button_point_to_sketch.setIconSize(QtCore.QSize(32, 32)) + self.button_point_to_sketch.setObjectName(_fromUtf8("button_point_to_sketch")) + self.gridLayout_70.addWidget(self.button_point_to_sketch, 6, 0, 1, 1) + spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_70.addItem(spacerItem2, 7, 0, 1, 1) + self.tabWidget_7.addTab(self.Point_Tab2_2, icon11, _fromUtf8("")) + self.Axis_Tab1_2 = QtGui.QWidget() + self.Axis_Tab1_2.setObjectName(_fromUtf8("Axis_Tab1_2")) + self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab1_2) + self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) + self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon19) + self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) + self.gridLayout_4.addWidget(self.button_object_axis, 0, 0, 1, 1) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_twopoints_axis.sizePolicy().hasHeightForWidth()) + self.button_twopoints_axis.setSizePolicy(sizePolicy) + self.button_twopoints_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon20) + self.button_twopoints_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_twopoints_axis.setObjectName(_fromUtf8("button_twopoints_axis")) + self.horizontalLayout.addWidget(self.button_twopoints_axis) + self.extension_twopoints_axis = QtGui.QLineEdit(self.Axis_Tab1_2) + self.extension_twopoints_axis.setMaximumSize(QtCore.QSize(40, 16777215)) + self.extension_twopoints_axis.setObjectName(_fromUtf8("extension_twopoints_axis")) + self.horizontalLayout.addWidget(self.extension_twopoints_axis) + self.gridLayout_4.addLayout(self.horizontalLayout, 1, 0, 1, 1) + self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon21) + self.button_Npoints_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_axis.setObjectName(_fromUtf8("button_Npoints_axis")) + self.gridLayout_4.addWidget(self.button_Npoints_axis, 2, 0, 1, 1) + self.horizontalLayout_51 = QtGui.QHBoxLayout() + self.horizontalLayout_51.setObjectName(_fromUtf8("horizontalLayout_51")) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) + self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1_2) + self.button_cylinder_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon22) + self.button_cylinder_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_cylinder_axis.setObjectName(_fromUtf8("button_cylinder_axis")) + self.verticalLayout_3.addWidget(self.button_cylinder_axis) + self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1_2) + self.button_plane_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon23) + self.button_plane_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_plane_axis.setObjectName(_fromUtf8("button_plane_axis")) + self.verticalLayout_3.addWidget(self.button_plane_axis) + self.button_face_normal = QtGui.QPushButton(self.Axis_Tab1_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_face_normal.sizePolicy().hasHeightForWidth()) + self.button_face_normal.setSizePolicy(sizePolicy) + self.button_face_normal.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon24) + self.button_face_normal.setIconSize(QtCore.QSize(32, 32)) + self.button_face_normal.setObjectName(_fromUtf8("button_face_normal")) + self.verticalLayout_3.addWidget(self.button_face_normal) + self.horizontalLayout_51.addLayout(self.verticalLayout_3) + self.frame_8 = QtGui.QFrame(self.Axis_Tab1_2) + self.frame_8.setMinimumSize(QtCore.QSize(60, 0)) + self.frame_8.setMaximumSize(QtCore.QSize(50, 16777215)) + self.frame_8.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_8.setFrameShadow(QtGui.QFrame.Raised) + self.frame_8.setObjectName(_fromUtf8("frame_8")) + self.gridLayout_72 = QtGui.QGridLayout(self.frame_8) + self.gridLayout_72.setObjectName(_fromUtf8("gridLayout_72")) + self.extension_face_normal = QtGui.QLineEdit(self.frame_8) + self.extension_face_normal.setMinimumSize(QtCore.QSize(40, 0)) + self.extension_face_normal.setMaximumSize(QtCore.QSize(40, 16777215)) + self.extension_face_normal.setObjectName(_fromUtf8("extension_face_normal")) + self.gridLayout_72.addWidget(self.extension_face_normal, 0, 0, 1, 1) + self.horizontalLayout_51.addWidget(self.frame_8) + self.gridLayout_4.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) + self.horizontalLayout_52 = QtGui.QHBoxLayout() + self.horizontalLayout_52.setObjectName(_fromUtf8("horizontalLayout_52")) + self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_2) + self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon25) + self.button_point_line_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_point_line_axis.setObjectName(_fromUtf8("button_point_line_axis")) + self.horizontalLayout_52.addWidget(self.button_point_line_axis) + self.extension_line = QtGui.QLineEdit(self.Axis_Tab1_2) + self.extension_line.setMaximumSize(QtCore.QSize(40, 16777215)) + self.extension_line.setObjectName(_fromUtf8("extension_line")) + self.horizontalLayout_52.addWidget(self.extension_line) + self.point_loc_comboBox = QtGui.QComboBox(self.Axis_Tab1_2) + self.point_loc_comboBox.setMaximumSize(QtCore.QSize(60, 16777215)) + self.point_loc_comboBox.setObjectName(_fromUtf8("point_loc_comboBox")) + self.point_loc_comboBox.addItem(_fromUtf8("")) + self.point_loc_comboBox.addItem(_fromUtf8("")) + self.point_loc_comboBox.addItem(_fromUtf8("")) + self.horizontalLayout_52.addWidget(self.point_loc_comboBox) + self.gridLayout_4.addLayout(self.horizontalLayout_52, 4, 0, 1, 1) + self.horizontalLayout_53 = QtGui.QHBoxLayout() + self.horizontalLayout_53.setObjectName(_fromUtf8("horizontalLayout_53")) + self.button_line_point_axis = QtGui.QPushButton(self.Axis_Tab1_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_line_point_axis.sizePolicy().hasHeightForWidth()) + self.button_line_point_axis.setSizePolicy(sizePolicy) + self.button_line_point_axis.setMinimumSize(QtCore.QSize(0, 0)) + self.button_line_point_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon26) + self.button_line_point_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_line_point_axis.setObjectName(_fromUtf8("button_line_point_axis")) + self.horizontalLayout_53.addWidget(self.button_line_point_axis) + self.extension_line_point_axis = QtGui.QLineEdit(self.Axis_Tab1_2) + self.extension_line_point_axis.setMaximumSize(QtCore.QSize(40, 16777215)) + self.extension_line_point_axis.setObjectName(_fromUtf8("extension_line_point_axis")) + self.horizontalLayout_53.addWidget(self.extension_line_point_axis) + self.gridLayout_4.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) + self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon27) + self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis")) + self.gridLayout_4.addWidget(self.button_twolines_axis, 6, 0, 1, 1) + self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon28) + self.button_plane_point_line_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_plane_point_line_axis.setObjectName(_fromUtf8("button_plane_point_line_axis")) + self.gridLayout_4.addWidget(self.button_plane_point_line_axis, 7, 0, 1, 1) + spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem3, 8, 0, 1, 1) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab1_2, icon29, _fromUtf8("")) + self.Axis_Tab2_2 = QtGui.QWidget() + self.Axis_Tab2_2.setObjectName(_fromUtf8("Axis_Tab2_2")) + self.gridLayout_73 = QtGui.QGridLayout(self.Axis_Tab2_2) + self.gridLayout_73.setObjectName(_fromUtf8("gridLayout_73")) + self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_2) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon30) + self.button_line_plane_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_line_plane_axis.setObjectName(_fromUtf8("button_line_plane_axis")) + self.gridLayout_73.addWidget(self.button_line_plane_axis, 0, 0, 1, 1) + self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_2) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon31) + self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis")) + self.gridLayout_73.addWidget(self.button_twoplanes_axis, 1, 0, 1, 1) + self.horizontalLayout_54 = QtGui.QHBoxLayout() + self.horizontalLayout_54.setObjectName(_fromUtf8("horizontalLayout_54")) + self.button_distLine = QtGui.QPushButton(self.Axis_Tab2_2) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon32) + self.button_distLine.setIconSize(QtCore.QSize(32, 32)) + self.button_distLine.setObjectName(_fromUtf8("button_distLine")) + self.horizontalLayout_54.addWidget(self.button_distLine) + self.dist_line = QtGui.QLineEdit(self.Axis_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dist_line.sizePolicy().hasHeightForWidth()) + self.dist_line.setSizePolicy(sizePolicy) + self.dist_line.setMinimumSize(QtCore.QSize(40, 0)) + self.dist_line.setMaximumSize(QtCore.QSize(40, 16777215)) + self.dist_line.setObjectName(_fromUtf8("dist_line")) + self.horizontalLayout_54.addWidget(self.dist_line) + self.spin_dist_line = QtGui.QSpinBox(self.Axis_Tab2_2) + self.spin_dist_line.setMinimumSize(QtCore.QSize(30, 0)) + self.spin_dist_line.setMaximumSize(QtCore.QSize(30, 16777215)) + self.spin_dist_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) + self.spin_dist_line.setKeyboardTracking(False) + self.spin_dist_line.setMinimum(1) + self.spin_dist_line.setMaximum(100) + self.spin_dist_line.setSingleStep(1) + self.spin_dist_line.setProperty("value", 1) + self.spin_dist_line.setObjectName(_fromUtf8("spin_dist_line")) + self.horizontalLayout_54.addWidget(self.spin_dist_line) + self.gridLayout_73.addLayout(self.horizontalLayout_54, 2, 0, 1, 1) + self.horizontalLayout_55 = QtGui.QHBoxLayout() + self.horizontalLayout_55.setObjectName(_fromUtf8("horizontalLayout_55")) + self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2_2) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon33) + self.button_angleLine.setIconSize(QtCore.QSize(32, 32)) + self.button_angleLine.setObjectName(_fromUtf8("button_angleLine")) + self.horizontalLayout_55.addWidget(self.button_angleLine) + self.angle_line = QtGui.QLineEdit(self.Axis_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_line.sizePolicy().hasHeightForWidth()) + self.angle_line.setSizePolicy(sizePolicy) + self.angle_line.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_line.setMaximumSize(QtCore.QSize(40, 16777215)) + self.angle_line.setObjectName(_fromUtf8("angle_line")) + self.horizontalLayout_55.addWidget(self.angle_line) + self.spin_angle_line = QtGui.QSpinBox(self.Axis_Tab2_2) + self.spin_angle_line.setMinimumSize(QtCore.QSize(30, 0)) + self.spin_angle_line.setMaximumSize(QtCore.QSize(30, 16777215)) + self.spin_angle_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) + self.spin_angle_line.setKeyboardTracking(False) + self.spin_angle_line.setMinimum(1) + self.spin_angle_line.setMaximum(100) + self.spin_angle_line.setSingleStep(1) + self.spin_angle_line.setProperty("value", 1) + self.spin_angle_line.setObjectName(_fromUtf8("spin_angle_line")) + self.horizontalLayout_55.addWidget(self.spin_angle_line) + self.gridLayout_73.addLayout(self.horizontalLayout_55, 3, 0, 1, 1) + self.horizontalLayout_56 = QtGui.QHBoxLayout() + self.horizontalLayout_56.setObjectName(_fromUtf8("horizontalLayout_56")) + self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2_2) + self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon34) + self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis")) + self.horizontalLayout_56.addWidget(self.button_cut_wire_axis) + self.spin_wire_cut_axis = QtGui.QSpinBox(self.Axis_Tab2_2) + self.spin_wire_cut_axis.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_wire_cut_axis.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_wire_cut_axis.setMinimum(2) + self.spin_wire_cut_axis.setMaximum(100) + self.spin_wire_cut_axis.setSingleStep(1) + self.spin_wire_cut_axis.setObjectName(_fromUtf8("spin_wire_cut_axis")) + self.horizontalLayout_56.addWidget(self.spin_wire_cut_axis) + self.gridLayout_73.addLayout(self.horizontalLayout_56, 4, 0, 1, 1) + self.horizontalLayout_57 = QtGui.QHBoxLayout() + self.horizontalLayout_57.setObjectName(_fromUtf8("horizontalLayout_57")) + self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2_2) + self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon35) + self.button_cut_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis")) + self.horizontalLayout_57.addWidget(self.button_cut_axis) + self.spin_axis_cut = QtGui.QSpinBox(self.Axis_Tab2_2) + self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_axis_cut.setMinimum(2) + self.spin_axis_cut.setMaximum(100) + self.spin_axis_cut.setSingleStep(1) + self.spin_axis_cut.setObjectName(_fromUtf8("spin_axis_cut")) + self.horizontalLayout_57.addWidget(self.spin_axis_cut) + self.gridLayout_73.addLayout(self.horizontalLayout_57, 5, 0, 1, 1) + self.horizontalLayout_58 = QtGui.QHBoxLayout() + self.horizontalLayout_58.setObjectName(_fromUtf8("horizontalLayout_58")) + self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_extension_axis.sizePolicy().hasHeightForWidth()) + self.button_extension_axis.setSizePolicy(sizePolicy) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon36) + self.button_extension_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_extension_axis.setObjectName(_fromUtf8("button_extension_axis")) + self.horizontalLayout_58.addWidget(self.button_extension_axis) + self.extension_axis = QtGui.QLineEdit(self.Axis_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.extension_axis.sizePolicy().hasHeightForWidth()) + self.extension_axis.setSizePolicy(sizePolicy) + self.extension_axis.setMinimumSize(QtCore.QSize(40, 0)) + self.extension_axis.setMaximumSize(QtCore.QSize(50, 16777215)) + self.extension_axis.setObjectName(_fromUtf8("extension_axis")) + self.horizontalLayout_58.addWidget(self.extension_axis) + self.gridLayout_73.addLayout(self.horizontalLayout_58, 6, 0, 1, 1) + self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_2) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon37) + self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis")) + self.gridLayout_73.addWidget(self.button_click_for_axis, 7, 0, 1, 1) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab2_2) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon38) + self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) + self.gridLayout_73.addWidget(self.button_object_base_axes, 8, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab2_2) + self.button_line_to_sketch.setIcon(icon18) + self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) + self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) + self.gridLayout_73.addWidget(self.button_line_to_sketch, 9, 0, 1, 1) + spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_73.addItem(spacerItem4, 10, 0, 1, 1) + self.tabWidget_7.addTab(self.Axis_Tab2_2, icon29, _fromUtf8("")) + self.Wire_Tab_2 = QtGui.QWidget() + self.Wire_Tab_2.setObjectName(_fromUtf8("Wire_Tab_2")) + self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab_2) + self.gridLayout_74.setObjectName(_fromUtf8("gridLayout_74")) + self.lineEdit = QtGui.QLineEdit(self.Wire_Tab_2) + self.lineEdit.setReadOnly(True) + self.lineEdit.setObjectName(_fromUtf8("lineEdit")) + self.gridLayout_74.addWidget(self.lineEdit, 0, 0, 1, 1) + self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth()) + self.tabWidget_8.setSizePolicy(sizePolicy) + self.tabWidget_8.setObjectName(_fromUtf8("tabWidget_8")) + self.tab_14 = QtGui.QWidget() + self.tab_14.setObjectName(_fromUtf8("tab_14")) + self.gridLayout_75 = QtGui.QGridLayout(self.tab_14) + self.gridLayout_75.setObjectName(_fromUtf8("gridLayout_75")) + self.scrollArea_2 = QtGui.QScrollArea(self.tab_14) + self.scrollArea_2.setWidgetResizable(True) + self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2")) + self.scrollAreaWidgetContents_5 = QtGui.QWidget() + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 259, 650)) + self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) + self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) + self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) + spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_76.addItem(spacerItem5, 7, 0, 1, 1) + self.groupBox_14 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_14.setObjectName(_fromUtf8("groupBox_14")) + self.gridLayout_77 = QtGui.QGridLayout(self.groupBox_14) + self.gridLayout_77.setObjectName(_fromUtf8("gridLayout_77")) + self.label_y_3 = QtGui.QLabel(self.groupBox_14) + self.label_y_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_y_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_y_3.setObjectName(_fromUtf8("label_y_3")) + self.gridLayout_77.addWidget(self.label_y_3, 3, 0, 1, 1) + self.ParCurve_a_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_a_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_a_2.setSizePolicy(sizePolicy) + self.ParCurve_a_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_a_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_a_2.setMaxLength(32769) + self.ParCurve_a_2.setObjectName(_fromUtf8("ParCurve_a_2")) + self.gridLayout_77.addWidget(self.ParCurve_a_2, 0, 1, 1, 1) + self.label_b_3 = QtGui.QLabel(self.groupBox_14) + self.label_b_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_b_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_b_3.setObjectName(_fromUtf8("label_b_3")) + self.gridLayout_77.addWidget(self.label_b_3, 1, 0, 1, 1) + self.ParCurve_y_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_y_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_y_2.setSizePolicy(sizePolicy) + self.ParCurve_y_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_y_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_y_2.setMaxLength(32769) + self.ParCurve_y_2.setObjectName(_fromUtf8("ParCurve_y_2")) + self.gridLayout_77.addWidget(self.ParCurve_y_2, 3, 1, 1, 1) + self.checkBox_polar_2 = QtGui.QCheckBox(self.groupBox_14) + self.checkBox_polar_2.setAutoExclusive(True) + self.checkBox_polar_2.setObjectName(_fromUtf8("checkBox_polar_2")) + self.gridLayout_77.addWidget(self.checkBox_polar_2, 4, 1, 1, 1) + self.label_x_3 = QtGui.QLabel(self.groupBox_14) + self.label_x_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_x_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_x_3.setObjectName(_fromUtf8("label_x_3")) + self.gridLayout_77.addWidget(self.label_x_3, 2, 0, 1, 1) + self.ParCurve_x_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_x_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_x_2.setSizePolicy(sizePolicy) + self.ParCurve_x_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_x_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_x_2.setMaxLength(32769) + self.ParCurve_x_2.setObjectName(_fromUtf8("ParCurve_x_2")) + self.gridLayout_77.addWidget(self.ParCurve_x_2, 2, 1, 1, 1) + self.label_a_3 = QtGui.QLabel(self.groupBox_14) + self.label_a_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_a_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_a_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_a_3.setObjectName(_fromUtf8("label_a_3")) + self.gridLayout_77.addWidget(self.label_a_3, 0, 0, 1, 1) + self.ParCurve_b_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_b_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_b_2.setSizePolicy(sizePolicy) + self.ParCurve_b_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_b_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_b_2.setMaxLength(32769) + self.ParCurve_b_2.setObjectName(_fromUtf8("ParCurve_b_2")) + self.gridLayout_77.addWidget(self.ParCurve_b_2, 1, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_14, 2, 0, 1, 1) + self.horizontalLayout_59 = QtGui.QHBoxLayout() + self.horizontalLayout_59.setObjectName(_fromUtf8("horizontalLayout_59")) + self.ParCurve_comboBox_2 = QtGui.QComboBox(self.scrollAreaWidgetContents_5) + self.ParCurve_comboBox_2.setObjectName(_fromUtf8("ParCurve_comboBox_2")) + self.horizontalLayout_59.addWidget(self.ParCurve_comboBox_2) + self.ParCurve_button_edit_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_edit_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_edit_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_edit_2.setObjectName(_fromUtf8("ParCurve_button_edit_2")) + self.horizontalLayout_59.addWidget(self.ParCurve_button_edit_2) + self.gridLayout_76.addLayout(self.horizontalLayout_59, 0, 0, 1, 1) + self.horizontalLayout_61 = QtGui.QHBoxLayout() + self.horizontalLayout_61.setObjectName(_fromUtf8("horizontalLayout_61")) + self.checkBox_close_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) + self.checkBox_close_2.setEnabled(True) + self.checkBox_close_2.setObjectName(_fromUtf8("checkBox_close_2")) + self.horizontalLayout_61.addWidget(self.checkBox_close_2) + self.checkBox_face_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) + self.checkBox_face_2.setEnabled(False) + self.checkBox_face_2.setObjectName(_fromUtf8("checkBox_face_2")) + self.horizontalLayout_61.addWidget(self.checkBox_face_2) + self.gridLayout_76.addLayout(self.horizontalLayout_61, 5, 0, 1, 1) + self.horizontalLayout_60 = QtGui.QHBoxLayout() + self.horizontalLayout_60.setObjectName(_fromUtf8("horizontalLayout_60")) + self.label_name_2 = QtGui.QLabel(self.scrollAreaWidgetContents_5) + self.label_name_2.setFrameShape(QtGui.QFrame.Box) + self.label_name_2.setFrameShadow(QtGui.QFrame.Raised) + self.label_name_2.setLineWidth(3) + self.label_name_2.setAlignment(QtCore.Qt.AlignCenter) + self.label_name_2.setObjectName(_fromUtf8("label_name_2")) + self.horizontalLayout_60.addWidget(self.label_name_2) + self.ParCurve_name_2 = QtGui.QLineEdit(self.scrollAreaWidgetContents_5) + self.ParCurve_name_2.setObjectName(_fromUtf8("ParCurve_name_2")) + self.horizontalLayout_60.addWidget(self.ParCurve_name_2) + self.gridLayout_76.addLayout(self.horizontalLayout_60, 1, 0, 1, 1) + self.groupBox_15 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_15.setObjectName(_fromUtf8("groupBox_15")) + self.gridLayout_78 = QtGui.QGridLayout(self.groupBox_15) + self.gridLayout_78.setObjectName(_fromUtf8("gridLayout_78")) + self.label_tmin_3 = QtGui.QLabel(self.groupBox_15) + self.label_tmin_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmin_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmin_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmin_3.setObjectName(_fromUtf8("label_tmin_3")) + self.gridLayout_78.addWidget(self.label_tmin_3, 0, 0, 1, 1) + self.ParCurve_tmin_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmin_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmin_2.setSizePolicy(sizePolicy) + self.ParCurve_tmin_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmin_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmin_2.setMaxLength(32769) + self.ParCurve_tmin_2.setObjectName(_fromUtf8("ParCurve_tmin_2")) + self.gridLayout_78.addWidget(self.ParCurve_tmin_2, 0, 1, 1, 1) + self.label_tmax_3 = QtGui.QLabel(self.groupBox_15) + self.label_tmax_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmax_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmax_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmax_3.setObjectName(_fromUtf8("label_tmax_3")) + self.gridLayout_78.addWidget(self.label_tmax_3, 1, 0, 1, 1) + self.ParCurve_tmax_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmax_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmax_2.setSizePolicy(sizePolicy) + self.ParCurve_tmax_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmax_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmax_2.setMaxLength(32769) + self.ParCurve_tmax_2.setObjectName(_fromUtf8("ParCurve_tmax_2")) + self.gridLayout_78.addWidget(self.ParCurve_tmax_2, 1, 1, 1, 1) + self.label_tstep_3 = QtGui.QLabel(self.groupBox_15) + self.label_tstep_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tstep_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tstep_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tstep_3.setObjectName(_fromUtf8("label_tstep_3")) + self.gridLayout_78.addWidget(self.label_tstep_3, 2, 0, 1, 1) + self.ParCurve_tstep_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tstep_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tstep_2.setSizePolicy(sizePolicy) + self.ParCurve_tstep_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tstep_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tstep_2.setMaxLength(32769) + self.ParCurve_tstep_2.setObjectName(_fromUtf8("ParCurve_tstep_2")) + self.gridLayout_78.addWidget(self.ParCurve_tstep_2, 2, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_15, 3, 0, 1, 1) + self.groupBox_16 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_16.setObjectName(_fromUtf8("groupBox_16")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_16) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.checkBox_points_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_points_2.setAutoExclusive(True) + self.checkBox_points_2.setObjectName(_fromUtf8("checkBox_points_2")) + self.gridLayout_2.addWidget(self.checkBox_points_2, 0, 0, 1, 1) + self.checkBox_polyline_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_polyline_2.setChecked(True) + self.checkBox_polyline_2.setAutoExclusive(True) + self.checkBox_polyline_2.setObjectName(_fromUtf8("checkBox_polyline_2")) + self.gridLayout_2.addWidget(self.checkBox_polyline_2, 0, 1, 1, 1) + self.checkBox_bspline_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_bspline_2.setEnabled(True) + self.checkBox_bspline_2.setChecked(False) + self.checkBox_bspline_2.setAutoExclusive(True) + self.checkBox_bspline_2.setObjectName(_fromUtf8("checkBox_bspline_2")) + self.gridLayout_2.addWidget(self.checkBox_bspline_2, 1, 0, 1, 1) + self.checkBox_bezier_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_bezier_2.setEnabled(True) + self.checkBox_bezier_2.setChecked(False) + self.checkBox_bezier_2.setAutoExclusive(True) + self.checkBox_bezier_2.setObjectName(_fromUtf8("checkBox_bezier_2")) + self.gridLayout_2.addWidget(self.checkBox_bezier_2, 1, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_16, 4, 0, 1, 1) + self.horizontalLayout_62 = QtGui.QHBoxLayout() + self.horizontalLayout_62.setObjectName(_fromUtf8("horizontalLayout_62")) + self.ParCurve_button_store_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_store_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_store_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_store_2.setObjectName(_fromUtf8("ParCurve_button_store_2")) + self.horizontalLayout_62.addWidget(self.ParCurve_button_store_2) + spacerItem6 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_62.addItem(spacerItem6) + self.ParCurve_button_apply_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_apply_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_apply_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_apply_2.setObjectName(_fromUtf8("ParCurve_button_apply_2")) + self.horizontalLayout_62.addWidget(self.ParCurve_button_apply_2) + self.gridLayout_76.addLayout(self.horizontalLayout_62, 6, 0, 1, 1) + self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_5) + self.gridLayout_75.addWidget(self.scrollArea_2, 0, 0, 1, 1) + self.tabWidget_8.addTab(self.tab_14, _fromUtf8("")) + self.tab_15 = QtGui.QWidget() + self.tab_15.setObjectName(_fromUtf8("tab_15")) + self.gridLayout_80 = QtGui.QGridLayout(self.tab_15) + self.gridLayout_80.setObjectName(_fromUtf8("gridLayout_80")) + self.scrollArea_5 = QtGui.QScrollArea(self.tab_15) + self.scrollArea_5.setWidgetResizable(True) + self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5")) + self.scrollAreaWidgetContents_6 = QtGui.QWidget() + self.scrollAreaWidgetContents_6.setGeometry(QtCore.QRect(0, 0, 207, 692)) + self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) + self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) + self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) + self.horizontalLayout_63 = QtGui.QHBoxLayout() + self.horizontalLayout_63.setObjectName(_fromUtf8("horizontalLayout_63")) + self.ParCurve_comboBox_3 = QtGui.QComboBox(self.scrollAreaWidgetContents_6) + self.ParCurve_comboBox_3.setObjectName(_fromUtf8("ParCurve_comboBox_3")) + self.horizontalLayout_63.addWidget(self.ParCurve_comboBox_3) + self.ParCurve_button_edit_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_edit_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_edit_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_edit_3.setObjectName(_fromUtf8("ParCurve_button_edit_3")) + self.horizontalLayout_63.addWidget(self.ParCurve_button_edit_3) + self.gridLayout_81.addLayout(self.horizontalLayout_63, 0, 0, 1, 1) + self.horizontalLayout_64 = QtGui.QHBoxLayout() + self.horizontalLayout_64.setObjectName(_fromUtf8("horizontalLayout_64")) + self.label_name_3 = QtGui.QLabel(self.scrollAreaWidgetContents_6) + self.label_name_3.setFrameShape(QtGui.QFrame.Box) + self.label_name_3.setFrameShadow(QtGui.QFrame.Raised) + self.label_name_3.setLineWidth(3) + self.label_name_3.setAlignment(QtCore.Qt.AlignCenter) + self.label_name_3.setObjectName(_fromUtf8("label_name_3")) + self.horizontalLayout_64.addWidget(self.label_name_3) + self.ParCurve_name_3 = QtGui.QLineEdit(self.scrollAreaWidgetContents_6) + self.ParCurve_name_3.setObjectName(_fromUtf8("ParCurve_name_3")) + self.horizontalLayout_64.addWidget(self.ParCurve_name_3) + self.gridLayout_81.addLayout(self.horizontalLayout_64, 1, 0, 1, 1) + self.groupBox_17 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_17.setObjectName(_fromUtf8("groupBox_17")) + self.formLayout_3 = QtGui.QFormLayout(self.groupBox_17) + self.formLayout_3.setObjectName(_fromUtf8("formLayout_3")) + self.label_a_4 = QtGui.QLabel(self.groupBox_17) + self.label_a_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_a_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_a_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_a_4.setObjectName(_fromUtf8("label_a_4")) + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_a_4) + self.ParCurve_a_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_a_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_a_3.setSizePolicy(sizePolicy) + self.ParCurve_a_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_a_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_a_3.setMaxLength(32769) + self.ParCurve_a_3.setObjectName(_fromUtf8("ParCurve_a_3")) + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.ParCurve_a_3) + self.label_b_4 = QtGui.QLabel(self.groupBox_17) + self.label_b_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_b_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_b_4.setObjectName(_fromUtf8("label_b_4")) + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_b_4) + self.ParCurve_b_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_b_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_b_3.setSizePolicy(sizePolicy) + self.ParCurve_b_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_b_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_b_3.setMaxLength(32769) + self.ParCurve_b_3.setObjectName(_fromUtf8("ParCurve_b_3")) + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.ParCurve_b_3) + self.label_c_2 = QtGui.QLabel(self.groupBox_17) + self.label_c_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_c_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_c_2.setObjectName(_fromUtf8("label_c_2")) + self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_c_2) + self.ParCurve_c_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_c_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_c_3.setSizePolicy(sizePolicy) + self.ParCurve_c_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_c_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_c_3.setMaxLength(32769) + self.ParCurve_c_3.setObjectName(_fromUtf8("ParCurve_c_3")) + self.formLayout_3.setWidget(2, QtGui.QFormLayout.FieldRole, self.ParCurve_c_3) + self.label_x_4 = QtGui.QLabel(self.groupBox_17) + self.label_x_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_x_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_x_4.setObjectName(_fromUtf8("label_x_4")) + self.formLayout_3.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_x_4) + self.ParCurve_x_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_x_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_x_3.setSizePolicy(sizePolicy) + self.ParCurve_x_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_x_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_x_3.setMaxLength(32769) + self.ParCurve_x_3.setObjectName(_fromUtf8("ParCurve_x_3")) + self.formLayout_3.setWidget(3, QtGui.QFormLayout.FieldRole, self.ParCurve_x_3) + self.label_y_4 = QtGui.QLabel(self.groupBox_17) + self.label_y_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_y_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_y_4.setObjectName(_fromUtf8("label_y_4")) + self.formLayout_3.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_y_4) + self.label_z_2 = QtGui.QLabel(self.groupBox_17) + self.label_z_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_z_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_z_2.setObjectName(_fromUtf8("label_z_2")) + self.formLayout_3.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_z_2) + self.ParCurve_z_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_z_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_z_3.setSizePolicy(sizePolicy) + self.ParCurve_z_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_z_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_z_3.setMaxLength(32769) + self.ParCurve_z_3.setObjectName(_fromUtf8("ParCurve_z_3")) + self.formLayout_3.setWidget(5, QtGui.QFormLayout.FieldRole, self.ParCurve_z_3) + self.ParCurve_y_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_y_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_y_3.setSizePolicy(sizePolicy) + self.ParCurve_y_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_y_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_y_3.setMaxLength(32769) + self.ParCurve_y_3.setObjectName(_fromUtf8("ParCurve_y_3")) + self.formLayout_3.setWidget(4, QtGui.QFormLayout.FieldRole, self.ParCurve_y_3) + self.gridLayout_81.addWidget(self.groupBox_17, 2, 0, 1, 1) + self.groupBox_18 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_18.setObjectName(_fromUtf8("groupBox_18")) + self.gridLayout_82 = QtGui.QGridLayout(self.groupBox_18) + self.gridLayout_82.setObjectName(_fromUtf8("gridLayout_82")) + self.label_tmin_4 = QtGui.QLabel(self.groupBox_18) + self.label_tmin_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmin_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmin_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmin_4.setObjectName(_fromUtf8("label_tmin_4")) + self.gridLayout_82.addWidget(self.label_tmin_4, 0, 0, 1, 1) + self.label_tmax_4 = QtGui.QLabel(self.groupBox_18) + self.label_tmax_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmax_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmax_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmax_4.setObjectName(_fromUtf8("label_tmax_4")) + self.gridLayout_82.addWidget(self.label_tmax_4, 1, 0, 1, 1) + self.ParCurve_tmax_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmax_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmax_3.setSizePolicy(sizePolicy) + self.ParCurve_tmax_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmax_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmax_3.setMaxLength(32769) + self.ParCurve_tmax_3.setObjectName(_fromUtf8("ParCurve_tmax_3")) + self.gridLayout_82.addWidget(self.ParCurve_tmax_3, 1, 1, 1, 1) + self.label_tstep_4 = QtGui.QLabel(self.groupBox_18) + self.label_tstep_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tstep_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tstep_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tstep_4.setObjectName(_fromUtf8("label_tstep_4")) + self.gridLayout_82.addWidget(self.label_tstep_4, 2, 0, 1, 1) + self.ParCurve_tstep_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tstep_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tstep_3.setSizePolicy(sizePolicy) + self.ParCurve_tstep_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tstep_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tstep_3.setMaxLength(32769) + self.ParCurve_tstep_3.setObjectName(_fromUtf8("ParCurve_tstep_3")) + self.gridLayout_82.addWidget(self.ParCurve_tstep_3, 2, 1, 1, 1) + self.ParCurve_tmin_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmin_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmin_3.setSizePolicy(sizePolicy) + self.ParCurve_tmin_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmin_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmin_3.setMaxLength(32769) + self.ParCurve_tmin_3.setObjectName(_fromUtf8("ParCurve_tmin_3")) + self.gridLayout_82.addWidget(self.ParCurve_tmin_3, 0, 1, 1, 1) + self.gridLayout_81.addWidget(self.groupBox_18, 3, 0, 1, 1) + self.groupBox_19 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_19.setObjectName(_fromUtf8("groupBox_19")) + self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_19) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.checkBox_points_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_points_3.setAutoExclusive(True) + self.checkBox_points_3.setObjectName(_fromUtf8("checkBox_points_3")) + self.gridLayout_3.addWidget(self.checkBox_points_3, 0, 0, 1, 1) + self.checkBox_polyline_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_polyline_3.setChecked(True) + self.checkBox_polyline_3.setAutoExclusive(True) + self.checkBox_polyline_3.setObjectName(_fromUtf8("checkBox_polyline_3")) + self.gridLayout_3.addWidget(self.checkBox_polyline_3, 0, 1, 1, 1) + self.checkBox_bspline_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_bspline_3.setChecked(False) + self.checkBox_bspline_3.setAutoExclusive(True) + self.checkBox_bspline_3.setObjectName(_fromUtf8("checkBox_bspline_3")) + self.gridLayout_3.addWidget(self.checkBox_bspline_3, 1, 0, 1, 1) + self.checkBox_bezier_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_bezier_3.setEnabled(True) + self.checkBox_bezier_3.setChecked(False) + self.checkBox_bezier_3.setAutoExclusive(True) + self.checkBox_bezier_3.setObjectName(_fromUtf8("checkBox_bezier_3")) + self.gridLayout_3.addWidget(self.checkBox_bezier_3, 1, 1, 1, 1) + self.gridLayout_81.addWidget(self.groupBox_19, 4, 0, 1, 1) + self.checkBox_close_3 = QtGui.QCheckBox(self.scrollAreaWidgetContents_6) + self.checkBox_close_3.setObjectName(_fromUtf8("checkBox_close_3")) + self.gridLayout_81.addWidget(self.checkBox_close_3, 5, 0, 1, 1) + self.horizontalLayout_65 = QtGui.QHBoxLayout() + self.horizontalLayout_65.setObjectName(_fromUtf8("horizontalLayout_65")) + self.ParCurve_button_store_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_store_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_store_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_store_3.setObjectName(_fromUtf8("ParCurve_button_store_3")) + self.horizontalLayout_65.addWidget(self.ParCurve_button_store_3) + spacerItem7 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_65.addItem(spacerItem7) + self.ParCurve_button_apply_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_apply_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_apply_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_apply_3.setObjectName(_fromUtf8("ParCurve_button_apply_3")) + self.horizontalLayout_65.addWidget(self.ParCurve_button_apply_3) + self.gridLayout_81.addLayout(self.horizontalLayout_65, 6, 0, 1, 1) + spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_81.addItem(spacerItem8, 7, 0, 1, 1) + self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_6) + self.gridLayout_80.addWidget(self.scrollArea_5, 0, 0, 1, 1) + self.tabWidget_8.addTab(self.tab_15, _fromUtf8("")) + self.gridLayout_74.addWidget(self.tabWidget_8, 1, 0, 1, 1) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab_2, icon39, _fromUtf8("")) + self.tab_16 = QtGui.QWidget() + self.tab_16.setObjectName(_fromUtf8("tab_16")) + self.gridLayout = QtGui.QGridLayout(self.tab_16) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout_66 = QtGui.QHBoxLayout() + self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66")) + self.button_linecenter_circle = QtGui.QPushButton(self.tab_16) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon40) + self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32)) + self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle")) + self.horizontalLayout_66.addWidget(self.button_linecenter_circle) + self.radius_circle = QtGui.QLineEdit(self.tab_16) + self.radius_circle.setMinimumSize(QtCore.QSize(40, 0)) + self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215)) + self.radius_circle.setObjectName(_fromUtf8("radius_circle")) + self.horizontalLayout_66.addWidget(self.radius_circle) + self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1) + self.button_linepoint_circle = QtGui.QPushButton(self.tab_16) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon41) + self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32)) + self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle")) + self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1) + self.button_3points_circle = QtGui.QPushButton(self.tab_16) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon42) + self.button_3points_circle.setIconSize(QtCore.QSize(32, 32)) + self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle")) + self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1) + self.horizontalLayout_67 = QtGui.QHBoxLayout() + self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67")) + self.button_cut_circle = QtGui.QPushButton(self.tab_16) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon43) + self.button_cut_circle.setIconSize(QtCore.QSize(32, 32)) + self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle")) + self.horizontalLayout_67.addWidget(self.button_cut_circle) + self.spin_circle_cut = QtGui.QSpinBox(self.tab_16) + self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_circle_cut.setMinimum(2) + self.spin_circle_cut.setMaximum(100) + self.spin_circle_cut.setSingleStep(1) + self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut")) + self.horizontalLayout_67.addWidget(self.spin_circle_cut) + self.gridLayout.addLayout(self.horizontalLayout_67, 3, 0, 1, 1) + self.button_3points_ellipse = QtGui.QPushButton(self.tab_16) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon44) + self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32)) + self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse")) + self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem9, 5, 0, 1, 1) + self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16) + self.button_circle_to_sketch.setIcon(icon18) + self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32)) + self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch")) + self.gridLayout.addWidget(self.button_circle_to_sketch, 6, 0, 1, 1) + spacerItem10 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem10, 7, 0, 1, 1) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_16, icon45, _fromUtf8("")) + self.tab_17 = QtGui.QWidget() + self.tab_17.setObjectName(_fromUtf8("tab_17")) + self.gridLayout_85 = QtGui.QGridLayout(self.tab_17) + self.gridLayout_85.setObjectName(_fromUtf8("gridLayout_85")) + self.frame_9 = QtGui.QFrame(self.tab_17) + self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_9.setFrameShadow(QtGui.QFrame.Raised) + self.frame_9.setLineWidth(3) + self.frame_9.setObjectName(_fromUtf8("frame_9")) + self.gridLayout_86 = QtGui.QGridLayout(self.frame_9) + self.gridLayout_86.setObjectName(_fromUtf8("gridLayout_86")) + self.gridLayout_87 = QtGui.QGridLayout() + self.gridLayout_87.setObjectName(_fromUtf8("gridLayout_87")) + self.checkBox_allsubselect = QtGui.QCheckBox(self.frame_9) + self.checkBox_allsubselect.setChecked(True) + self.checkBox_allsubselect.setObjectName(_fromUtf8("checkBox_allsubselect")) + self.gridLayout_87.addWidget(self.checkBox_allsubselect, 2, 0, 1, 1) + self.transition_comboBox = QtGui.QComboBox(self.frame_9) + self.transition_comboBox.setObjectName(_fromUtf8("transition_comboBox")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.gridLayout_87.addWidget(self.transition_comboBox, 2, 1, 1, 1) + self.checkBox_solid = QtGui.QCheckBox(self.frame_9) + self.checkBox_solid.setMinimumSize(QtCore.QSize(9, 0)) + self.checkBox_solid.setMaximumSize(QtCore.QSize(60, 16777215)) + self.checkBox_solid.setChecked(True) + self.checkBox_solid.setObjectName(_fromUtf8("checkBox_solid")) + self.gridLayout_87.addWidget(self.checkBox_solid, 1, 0, 1, 1) + self.radioButton_Frenet = QtGui.QRadioButton(self.frame_9) + self.radioButton_Frenet.setChecked(True) + self.radioButton_Frenet.setAutoExclusive(False) + self.radioButton_Frenet.setObjectName(_fromUtf8("radioButton_Frenet")) + self.gridLayout_87.addWidget(self.radioButton_Frenet, 1, 1, 1, 1) + self.gridLayout_86.addLayout(self.gridLayout_87, 0, 0, 1, 1) + self.button_sweep = QtGui.QPushButton(self.frame_9) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon46) + self.button_sweep.setIconSize(QtCore.QSize(32, 32)) + self.button_sweep.setObjectName(_fromUtf8("button_sweep")) + self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1) + self.gridLayout_85.addWidget(self.frame_9, 0, 0, 1, 1) + spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_85.addItem(spacerItem11, 1, 0, 1, 1) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_17, icon47, _fromUtf8("")) + self.Plane_Tab1_3 = QtGui.QWidget() + self.Plane_Tab1_3.setObjectName(_fromUtf8("Plane_Tab1_3")) + self.gridLayout_88 = QtGui.QGridLayout(self.Plane_Tab1_3) + self.gridLayout_88.setObjectName(_fromUtf8("gridLayout_88")) + spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_88.addItem(spacerItem12, 9, 0, 1, 1) + self.horizontalLayout_68 = QtGui.QHBoxLayout() + self.horizontalLayout_68.setObjectName(_fromUtf8("horizontalLayout_68")) + self.button_click_for_plane = QtGui.QPushButton(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth()) + self.button_click_for_plane.setSizePolicy(sizePolicy) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon48) + self.button_click_for_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_click_for_plane.setObjectName(_fromUtf8("button_click_for_plane")) + self.horizontalLayout_68.addWidget(self.button_click_for_plane) + self.length_plane = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.length_plane.sizePolicy().hasHeightForWidth()) + self.length_plane.setSizePolicy(sizePolicy) + self.length_plane.setMinimumSize(QtCore.QSize(40, 0)) + self.length_plane.setMaximumSize(QtCore.QSize(50, 16777215)) + self.length_plane.setObjectName(_fromUtf8("length_plane")) + self.horizontalLayout_68.addWidget(self.length_plane) + self.width_plane = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.width_plane.sizePolicy().hasHeightForWidth()) + self.width_plane.setSizePolicy(sizePolicy) + self.width_plane.setMinimumSize(QtCore.QSize(40, 0)) + self.width_plane.setMaximumSize(QtCore.QSize(50, 16777215)) + self.width_plane.setObjectName(_fromUtf8("width_plane")) + self.horizontalLayout_68.addWidget(self.width_plane) + self.gridLayout_88.addLayout(self.horizontalLayout_68, 8, 0, 1, 1) + self.gridLayout_89 = QtGui.QGridLayout() + self.gridLayout_89.setObjectName(_fromUtf8("gridLayout_89")) + self.button_planeandaxis_plane = QtGui.QPushButton(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth()) + self.button_planeandaxis_plane.setSizePolicy(sizePolicy) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon49) + self.button_planeandaxis_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_planeandaxis_plane.setObjectName(_fromUtf8("button_planeandaxis_plane")) + self.gridLayout_89.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1) + self.angle_planeandaxis_plane = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_planeandaxis_plane.sizePolicy().hasHeightForWidth()) + self.angle_planeandaxis_plane.setSizePolicy(sizePolicy) + self.angle_planeandaxis_plane.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_planeandaxis_plane.setMaximumSize(QtCore.QSize(60, 16777215)) + self.angle_planeandaxis_plane.setObjectName(_fromUtf8("angle_planeandaxis_plane")) + self.gridLayout_89.addWidget(self.angle_planeandaxis_plane, 0, 1, 1, 1) + self.gridLayout_88.addLayout(self.gridLayout_89, 4, 0, 1, 1) + self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon50) + self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane")) + self.gridLayout_88.addWidget(self.button_axisandpoint_plane, 1, 0, 1, 1) + self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon51) + self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane")) + self.gridLayout_88.addWidget(self.button_axis_point_plane, 2, 0, 1, 1) + self.horizontalLayout_69 = QtGui.QHBoxLayout() + self.horizontalLayout_69.setObjectName(_fromUtf8("horizontalLayout_69")) + self.button_face_tangent = QtGui.QPushButton(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth()) + self.button_face_tangent.setSizePolicy(sizePolicy) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon52) + self.button_face_tangent.setIconSize(QtCore.QSize(32, 32)) + self.button_face_tangent.setObjectName(_fromUtf8("button_face_tangent")) + self.horizontalLayout_69.addWidget(self.button_face_tangent) + self.length_plane_2 = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.length_plane_2.sizePolicy().hasHeightForWidth()) + self.length_plane_2.setSizePolicy(sizePolicy) + self.length_plane_2.setMinimumSize(QtCore.QSize(40, 0)) + self.length_plane_2.setMaximumSize(QtCore.QSize(50, 16777215)) + self.length_plane_2.setObjectName(_fromUtf8("length_plane_2")) + self.horizontalLayout_69.addWidget(self.length_plane_2) + self.width_plane_2 = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.width_plane_2.sizePolicy().hasHeightForWidth()) + self.width_plane_2.setSizePolicy(sizePolicy) + self.width_plane_2.setMinimumSize(QtCore.QSize(40, 0)) + self.width_plane_2.setMaximumSize(QtCore.QSize(50, 16777215)) + self.width_plane_2.setObjectName(_fromUtf8("width_plane_2")) + self.horizontalLayout_69.addWidget(self.width_plane_2) + self.gridLayout_88.addLayout(self.horizontalLayout_69, 6, 0, 1, 1) + self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon53) + self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane")) + self.gridLayout_88.addWidget(self.button_threepoints_plane, 0, 0, 1, 1) + self.horizontalLayout_70 = QtGui.QHBoxLayout() + self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70")) + self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_3) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon54) + self.button_distPlane.setIconSize(QtCore.QSize(32, 32)) + self.button_distPlane.setObjectName(_fromUtf8("button_distPlane")) + self.horizontalLayout_70.addWidget(self.button_distPlane) + self.dist_plane = QtGui.QLineEdit(self.Plane_Tab1_3) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dist_plane.sizePolicy().hasHeightForWidth()) + self.dist_plane.setSizePolicy(sizePolicy) + self.dist_plane.setMinimumSize(QtCore.QSize(40, 0)) + self.dist_plane.setMaximumSize(QtCore.QSize(40, 16777215)) + self.dist_plane.setObjectName(_fromUtf8("dist_plane")) + self.horizontalLayout_70.addWidget(self.dist_plane) + self.spin_dist_plane = QtGui.QSpinBox(self.Plane_Tab1_3) + self.spin_dist_plane.setMinimumSize(QtCore.QSize(30, 0)) + self.spin_dist_plane.setMaximumSize(QtCore.QSize(30, 16777215)) + self.spin_dist_plane.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) + self.spin_dist_plane.setKeyboardTracking(False) + self.spin_dist_plane.setMinimum(1) + self.spin_dist_plane.setMaximum(100) + self.spin_dist_plane.setSingleStep(1) + self.spin_dist_plane.setProperty("value", 1) + self.spin_dist_plane.setObjectName(_fromUtf8("spin_dist_plane")) + self.horizontalLayout_70.addWidget(self.spin_dist_plane) + self.gridLayout_88.addLayout(self.horizontalLayout_70, 5, 0, 1, 1) + self.gridLayout_90 = QtGui.QGridLayout() + self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90")) + self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon55) + self.button_planeandpoint_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_planeandpoint_plane.setObjectName(_fromUtf8("button_planeandpoint_plane")) + self.gridLayout_90.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1) + self.extension_planePointPlane = QtGui.QLineEdit(self.Plane_Tab1_3) + self.extension_planePointPlane.setMinimumSize(QtCore.QSize(40, 0)) + self.extension_planePointPlane.setMaximumSize(QtCore.QSize(60, 16777215)) + self.extension_planePointPlane.setObjectName(_fromUtf8("extension_planePointPlane")) + self.gridLayout_90.addWidget(self.extension_planePointPlane, 0, 1, 1, 1) + self.gridLayout_88.addLayout(self.gridLayout_90, 3, 0, 1, 1) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab1_3, icon56, _fromUtf8("")) + self.Plane_Tab1_4 = QtGui.QWidget() + self.Plane_Tab1_4.setObjectName(_fromUtf8("Plane_Tab1_4")) + self.gridLayout_91 = QtGui.QGridLayout(self.Plane_Tab1_4) + self.gridLayout_91.setObjectName(_fromUtf8("gridLayout_91")) + spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_91.addItem(spacerItem13, 2, 0, 1, 1) + self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab1_4) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon57) + self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes")) + self.gridLayout_91.addWidget(self.button_object_center_planes, 1, 0, 1, 1) + self.horizontalLayout_71 = QtGui.QHBoxLayout() + self.horizontalLayout_71.setObjectName(_fromUtf8("horizontalLayout_71")) + self.button_extension_plane = QtGui.QPushButton(self.Plane_Tab1_4) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth()) + self.button_extension_plane.setSizePolicy(sizePolicy) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon58) + self.button_extension_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_extension_plane.setObjectName(_fromUtf8("button_extension_plane")) + self.horizontalLayout_71.addWidget(self.button_extension_plane) + self.extension_plane = QtGui.QLineEdit(self.Plane_Tab1_4) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.extension_plane.sizePolicy().hasHeightForWidth()) + self.extension_plane.setSizePolicy(sizePolicy) + self.extension_plane.setMinimumSize(QtCore.QSize(40, 0)) + self.extension_plane.setMaximumSize(QtCore.QSize(50, 16777215)) + self.extension_plane.setObjectName(_fromUtf8("extension_plane")) + self.horizontalLayout_71.addWidget(self.extension_plane) + self.gridLayout_91.addLayout(self.horizontalLayout_71, 0, 0, 1, 1) + self.tabWidget_7.addTab(self.Plane_Tab1_4, icon56, _fromUtf8("")) + self.Objects_Tab2_2 = QtGui.QWidget() + self.Objects_Tab2_2.setEnabled(True) + self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) + self.Objects_Tab2_2.setObjectName(_fromUtf8("Objects_Tab2_2")) + self.gridLayout_5 = QtGui.QGridLayout(self.Objects_Tab2_2) + self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) + self.horizontalLayout_72 = QtGui.QHBoxLayout() + self.horizontalLayout_72.setObjectName(_fromUtf8("horizontalLayout_72")) + self.verticalLayout_4 = QtGui.QVBoxLayout() + self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) + self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2_2) + self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon59) + self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32)) + self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes")) + self.verticalLayout_4.addWidget(self.button_boundingboxes) + self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2_2) + self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon60) + self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) + self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) + self.verticalLayout_4.addWidget(self.button_boundingbox) + self.horizontalLayout_72.addLayout(self.verticalLayout_4) + self.checkBox_volumBB = QtGui.QCheckBox(self.Objects_Tab2_2) + self.checkBox_volumBB.setMaximumSize(QtCore.QSize(60, 16777215)) + self.checkBox_volumBB.setObjectName(_fromUtf8("checkBox_volumBB")) + self.horizontalLayout_72.addWidget(self.checkBox_volumBB) + self.gridLayout_5.addLayout(self.horizontalLayout_72, 0, 0, 1, 1) + self.line_2 = QtGui.QFrame(self.Objects_Tab2_2) + self.line_2.setFrameShadow(QtGui.QFrame.Plain) + self.line_2.setLineWidth(4) + self.line_2.setMidLineWidth(0) + self.line_2.setFrameShape(QtGui.QFrame.HLine) + self.line_2.setFrameShadow(QtGui.QFrame.Sunken) + self.line_2.setObjectName(_fromUtf8("line_2")) + self.gridLayout_5.addWidget(self.line_2, 1, 0, 1, 1) + self.gridLayout_93 = QtGui.QGridLayout() + self.gridLayout_93.setObjectName(_fromUtf8("gridLayout_93")) + self.button_cylinder_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon61) + self.button_cylinder_create.setIconSize(QtCore.QSize(32, 32)) + self.button_cylinder_create.setObjectName(_fromUtf8("button_cylinder_create")) + self.gridLayout_93.addWidget(self.button_cylinder_create, 0, 0, 1, 1) + self.diameter_cylinder = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.diameter_cylinder.sizePolicy().hasHeightForWidth()) + self.diameter_cylinder.setSizePolicy(sizePolicy) + self.diameter_cylinder.setMinimumSize(QtCore.QSize(50, 0)) + self.diameter_cylinder.setMaximumSize(QtCore.QSize(60, 16777215)) + self.diameter_cylinder.setObjectName(_fromUtf8("diameter_cylinder")) + self.gridLayout_93.addWidget(self.diameter_cylinder, 0, 1, 1, 1) + self.length_cylinder = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.length_cylinder.sizePolicy().hasHeightForWidth()) + self.length_cylinder.setSizePolicy(sizePolicy) + self.length_cylinder.setMinimumSize(QtCore.QSize(50, 0)) + self.length_cylinder.setMaximumSize(QtCore.QSize(60, 16777215)) + self.length_cylinder.setObjectName(_fromUtf8("length_cylinder")) + self.gridLayout_93.addWidget(self.length_cylinder, 0, 2, 1, 1) + self.gridLayout_5.addLayout(self.gridLayout_93, 2, 0, 1, 1) + self.horizontalLayout_73 = QtGui.QHBoxLayout() + self.horizontalLayout_73.setObjectName(_fromUtf8("horizontalLayout_73")) + self.button_cube_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon62) + self.button_cube_create.setIconSize(QtCore.QSize(32, 32)) + self.button_cube_create.setObjectName(_fromUtf8("button_cube_create")) + self.horizontalLayout_73.addWidget(self.button_cube_create) + self.section_cube = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.section_cube.sizePolicy().hasHeightForWidth()) + self.section_cube.setSizePolicy(sizePolicy) + self.section_cube.setMinimumSize(QtCore.QSize(50, 0)) + self.section_cube.setMaximumSize(QtCore.QSize(60, 16777215)) + self.section_cube.setObjectName(_fromUtf8("section_cube")) + self.horizontalLayout_73.addWidget(self.section_cube) + self.height_cube = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.height_cube.sizePolicy().hasHeightForWidth()) + self.height_cube.setSizePolicy(sizePolicy) + self.height_cube.setMinimumSize(QtCore.QSize(50, 0)) + self.height_cube.setMaximumSize(QtCore.QSize(60, 16777215)) + self.height_cube.setObjectName(_fromUtf8("height_cube")) + self.horizontalLayout_73.addWidget(self.height_cube) + self.gridLayout_5.addLayout(self.horizontalLayout_73, 3, 0, 1, 1) + self.horizontalLayout_74 = QtGui.QHBoxLayout() + self.horizontalLayout_74.setObjectName(_fromUtf8("horizontalLayout_74")) + self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon63) + self.button_sphere_create.setIconSize(QtCore.QSize(32, 32)) + self.button_sphere_create.setObjectName(_fromUtf8("button_sphere_create")) + self.horizontalLayout_74.addWidget(self.button_sphere_create) + self.diameter_sphere = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.diameter_sphere.sizePolicy().hasHeightForWidth()) + self.diameter_sphere.setSizePolicy(sizePolicy) + self.diameter_sphere.setMinimumSize(QtCore.QSize(50, 0)) + self.diameter_sphere.setMaximumSize(QtCore.QSize(60, 16777215)) + self.diameter_sphere.setObjectName(_fromUtf8("diameter_sphere")) + self.horizontalLayout_74.addWidget(self.diameter_sphere) + self.gridLayout_5.addLayout(self.horizontalLayout_74, 4, 0, 1, 1) + self.horizontalLayout_77 = QtGui.QHBoxLayout() + self.horizontalLayout_77.setObjectName(_fromUtf8("horizontalLayout_77")) + self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon64) + self.button_dome_create.setIconSize(QtCore.QSize(32, 32)) + self.button_dome_create.setObjectName(_fromUtf8("button_dome_create")) + self.horizontalLayout_77.addWidget(self.button_dome_create) + self.spin_frequency_dome = QtGui.QSpinBox(self.Objects_Tab2_2) + self.spin_frequency_dome.setMinimumSize(QtCore.QSize(40, 0)) + self.spin_frequency_dome.setMaximumSize(QtCore.QSize(50, 16777215)) + self.spin_frequency_dome.setMinimum(1) + self.spin_frequency_dome.setMaximum(20) + self.spin_frequency_dome.setSingleStep(1) + self.spin_frequency_dome.setProperty("value", 2) + self.spin_frequency_dome.setObjectName(_fromUtf8("spin_frequency_dome")) + self.horizontalLayout_77.addWidget(self.spin_frequency_dome) + self.diameter_dome = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.diameter_dome.sizePolicy().hasHeightForWidth()) + self.diameter_dome.setSizePolicy(sizePolicy) + self.diameter_dome.setMinimumSize(QtCore.QSize(50, 0)) + self.diameter_dome.setMaximumSize(QtCore.QSize(60, 16777215)) + self.diameter_dome.setObjectName(_fromUtf8("diameter_dome")) + self.horizontalLayout_77.addWidget(self.diameter_dome) + self.gridLayout_5.addLayout(self.horizontalLayout_77, 5, 0, 1, 1) + self.horizontalLayout_75 = QtGui.QHBoxLayout() + self.horizontalLayout_75.setObjectName(_fromUtf8("horizontalLayout_75")) + self.button_letter = QtGui.QPushButton(self.Objects_Tab2_2) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon65) + self.button_letter.setIconSize(QtCore.QSize(32, 32)) + self.button_letter.setObjectName(_fromUtf8("button_letter")) + self.horizontalLayout_75.addWidget(self.button_letter) + self.letter = QtGui.QLineEdit(self.Objects_Tab2_2) + self.letter.setMaximumSize(QtCore.QSize(70, 16777215)) + self.letter.setObjectName(_fromUtf8("letter")) + self.horizontalLayout_75.addWidget(self.letter) + self.size_letter = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.size_letter.sizePolicy().hasHeightForWidth()) + self.size_letter.setSizePolicy(sizePolicy) + self.size_letter.setMinimumSize(QtCore.QSize(50, 0)) + self.size_letter.setMaximumSize(QtCore.QSize(50, 16777215)) + self.size_letter.setObjectName(_fromUtf8("size_letter")) + self.horizontalLayout_75.addWidget(self.size_letter) + self.gridLayout_5.addLayout(self.horizontalLayout_75, 6, 0, 1, 1) + self.horizontalLayout_76 = QtGui.QHBoxLayout() + self.horizontalLayout_76.setObjectName(_fromUtf8("horizontalLayout_76")) + self.button_revolve = QtGui.QPushButton(self.Objects_Tab2_2) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon66) + self.button_revolve.setIconSize(QtCore.QSize(32, 32)) + self.button_revolve.setObjectName(_fromUtf8("button_revolve")) + self.horizontalLayout_76.addWidget(self.button_revolve) + self.angle_revolve = QtGui.QLineEdit(self.Objects_Tab2_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_revolve.sizePolicy().hasHeightForWidth()) + self.angle_revolve.setSizePolicy(sizePolicy) + self.angle_revolve.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_revolve.setMaximumSize(QtCore.QSize(40, 16777215)) + self.angle_revolve.setObjectName(_fromUtf8("angle_revolve")) + self.horizontalLayout_76.addWidget(self.angle_revolve) + self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) + self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon67) + self.button_common.setIconSize(QtCore.QSize(32, 32)) + self.button_common.setObjectName(_fromUtf8("button_common")) + self.gridLayout_5.addWidget(self.button_common, 8, 0, 1, 1) + self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon68) + self.button_difference.setIconSize(QtCore.QSize(32, 32)) + self.button_difference.setObjectName(_fromUtf8("button_difference")) + self.gridLayout_5.addWidget(self.button_difference, 9, 0, 1, 1) + spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem14, 10, 0, 1, 1) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon69, _fromUtf8("")) + self.Modif_Tab_2 = QtGui.QWidget() + self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2")) + self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2) + self.gridLayout_94.setObjectName(_fromUtf8("gridLayout_94")) + self.tabWidget_9 = QtGui.QTabWidget(self.Modif_Tab_2) + self.tabWidget_9.setObjectName(_fromUtf8("tabWidget_9")) + self.align_tab_2 = QtGui.QWidget() + self.align_tab_2.setObjectName(_fromUtf8("align_tab_2")) + self.gridLayout_95 = QtGui.QGridLayout(self.align_tab_2) + self.gridLayout_95.setObjectName(_fromUtf8("gridLayout_95")) + self.button_alignface2view = QtGui.QPushButton(self.align_tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) + self.button_alignface2view.setSizePolicy(sizePolicy) + self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon70) + self.button_alignface2view.setIconSize(QtCore.QSize(32, 32)) + self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view")) + self.gridLayout_95.addWidget(self.button_alignface2view, 0, 0, 1, 1) + self.horizontalLayout_78 = QtGui.QHBoxLayout() + self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78")) + self.button_align_faces = QtGui.QPushButton(self.align_tab_2) + self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215)) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon71) + self.button_align_faces.setIconSize(QtCore.QSize(32, 32)) + self.button_align_faces.setObjectName(_fromUtf8("button_align_faces")) + self.horizontalLayout_78.addWidget(self.button_align_faces) + self.angle_align_faces = QtGui.QLineEdit(self.align_tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_align_faces.sizePolicy().hasHeightForWidth()) + self.angle_align_faces.setSizePolicy(sizePolicy) + self.angle_align_faces.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_align_faces.setMaximumSize(QtCore.QSize(50, 16777215)) + self.angle_align_faces.setObjectName(_fromUtf8("angle_align_faces")) + self.horizontalLayout_78.addWidget(self.angle_align_faces) + self.gridLayout_95.addLayout(self.horizontalLayout_78, 1, 0, 1, 1) + self.horizontalLayout_79 = QtGui.QHBoxLayout() + self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79")) + self.button_align_edges = QtGui.QPushButton(self.align_tab_2) + self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215)) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon72) + self.button_align_edges.setIconSize(QtCore.QSize(32, 32)) + self.button_align_edges.setObjectName(_fromUtf8("button_align_edges")) + self.horizontalLayout_79.addWidget(self.button_align_edges) + self.angle_align_edges = QtGui.QLineEdit(self.align_tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_align_edges.sizePolicy().hasHeightForWidth()) + self.angle_align_edges.setSizePolicy(sizePolicy) + self.angle_align_edges.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_align_edges.setMaximumSize(QtCore.QSize(50, 16777215)) + self.angle_align_edges.setObjectName(_fromUtf8("angle_align_edges")) + self.horizontalLayout_79.addWidget(self.angle_align_edges) + self.gridLayout_95.addLayout(self.horizontalLayout_79, 2, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_95.addItem(spacerItem15, 5, 0, 1, 1) + self.button_joint_points = QtGui.QPushButton(self.align_tab_2) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon73) + self.button_joint_points.setIconSize(QtCore.QSize(32, 32)) + self.button_joint_points.setObjectName(_fromUtf8("button_joint_points")) + self.gridLayout_95.addWidget(self.button_joint_points, 3, 0, 1, 1) + self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon74) + self.button_joint_faces.setIconSize(QtCore.QSize(32, 32)) + self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces")) + self.gridLayout_95.addWidget(self.button_joint_faces, 4, 0, 1, 1) + self.tabWidget_9.addTab(self.align_tab_2, _fromUtf8("")) + self.cut_tab_2 = QtGui.QWidget() + self.cut_tab_2.setObjectName(_fromUtf8("cut_tab_2")) + self.gridLayout_96 = QtGui.QGridLayout(self.cut_tab_2) + self.gridLayout_96.setObjectName(_fromUtf8("gridLayout_96")) + self.frame_10 = QtGui.QFrame(self.cut_tab_2) + self.frame_10.setMinimumSize(QtCore.QSize(0, 0)) + self.frame_10.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_10.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_10.setFrameShadow(QtGui.QFrame.Raised) + self.frame_10.setObjectName(_fromUtf8("frame_10")) + self.gridLayout_97 = QtGui.QGridLayout(self.frame_10) + self.gridLayout_97.setObjectName(_fromUtf8("gridLayout_97")) + self.groupBox_20 = QtGui.QGroupBox(self.frame_10) + self.groupBox_20.setObjectName(_fromUtf8("groupBox_20")) + self.gridLayout_98 = QtGui.QGridLayout(self.groupBox_20) + self.gridLayout_98.setObjectName(_fromUtf8("gridLayout_98")) + self.gridLayout_99 = QtGui.QGridLayout() + self.gridLayout_99.setObjectName(_fromUtf8("gridLayout_99")) + self.button_cut_select_object = QtGui.QPushButton(self.groupBox_20) + self.button_cut_select_object.setMinimumSize(QtCore.QSize(130, 31)) + self.button_cut_select_object.setMaximumSize(QtCore.QSize(250, 40)) + self.button_cut_select_object.setObjectName(_fromUtf8("button_cut_select_object")) + self.gridLayout_99.addWidget(self.button_cut_select_object, 0, 0, 1, 1) + self.info_cut_select_object = QtGui.QLineEdit(self.groupBox_20) + self.info_cut_select_object.setEnabled(False) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.info_cut_select_object.sizePolicy().hasHeightForWidth()) + self.info_cut_select_object.setSizePolicy(sizePolicy) + self.info_cut_select_object.setReadOnly(True) + self.info_cut_select_object.setObjectName(_fromUtf8("info_cut_select_object")) + self.gridLayout_99.addWidget(self.info_cut_select_object, 1, 0, 1, 1) + self.button_cut_select_line = QtGui.QPushButton(self.groupBox_20) + self.button_cut_select_line.setEnabled(False) + self.button_cut_select_line.setMinimumSize(QtCore.QSize(130, 31)) + self.button_cut_select_line.setMaximumSize(QtCore.QSize(250, 40)) + self.button_cut_select_line.setObjectName(_fromUtf8("button_cut_select_line")) + self.gridLayout_99.addWidget(self.button_cut_select_line, 2, 0, 1, 1) + self.info_cut_select_axis = QtGui.QLineEdit(self.groupBox_20) + self.info_cut_select_axis.setEnabled(False) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.info_cut_select_axis.sizePolicy().hasHeightForWidth()) + self.info_cut_select_axis.setSizePolicy(sizePolicy) + self.info_cut_select_axis.setReadOnly(True) + self.info_cut_select_axis.setObjectName(_fromUtf8("info_cut_select_axis")) + self.gridLayout_99.addWidget(self.info_cut_select_axis, 3, 0, 1, 1) + self.button_cut_select_plane = QtGui.QPushButton(self.groupBox_20) + self.button_cut_select_plane.setEnabled(False) + self.button_cut_select_plane.setMinimumSize(QtCore.QSize(130, 31)) + self.button_cut_select_plane.setMaximumSize(QtCore.QSize(250, 40)) + self.button_cut_select_plane.setObjectName(_fromUtf8("button_cut_select_plane")) + self.gridLayout_99.addWidget(self.button_cut_select_plane, 4, 0, 1, 1) + self.info_cut_select_plane = QtGui.QLineEdit(self.groupBox_20) + self.info_cut_select_plane.setEnabled(False) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.info_cut_select_plane.sizePolicy().hasHeightForWidth()) + self.info_cut_select_plane.setSizePolicy(sizePolicy) + self.info_cut_select_plane.setReadOnly(True) + self.info_cut_select_plane.setObjectName(_fromUtf8("info_cut_select_plane")) + self.gridLayout_99.addWidget(self.info_cut_select_plane, 5, 0, 1, 1) + self.gridLayout_98.addLayout(self.gridLayout_99, 0, 0, 1, 1) + self.gridLayout_100 = QtGui.QGridLayout() + self.gridLayout_100.setObjectName(_fromUtf8("gridLayout_100")) + self.gridLayout_101 = QtGui.QGridLayout() + self.gridLayout_101.setObjectName(_fromUtf8("gridLayout_101")) + self.label_angle_3 = QtGui.QLabel(self.groupBox_20) + self.label_angle_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_angle_3.setObjectName(_fromUtf8("label_angle_3")) + self.gridLayout_101.addWidget(self.label_angle_3, 0, 0, 1, 1) + self.angle_cut_object = QtGui.QLineEdit(self.groupBox_20) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.angle_cut_object.sizePolicy().hasHeightForWidth()) + self.angle_cut_object.setSizePolicy(sizePolicy) + self.angle_cut_object.setMinimumSize(QtCore.QSize(0, 0)) + self.angle_cut_object.setMaximumSize(QtCore.QSize(50, 16777215)) + self.angle_cut_object.setObjectName(_fromUtf8("angle_cut_object")) + self.gridLayout_101.addWidget(self.angle_cut_object, 0, 1, 1, 1) + self.gridLayout_100.addLayout(self.gridLayout_101, 0, 0, 1, 1) + self.gridLayout_102 = QtGui.QGridLayout() + self.gridLayout_102.setObjectName(_fromUtf8("gridLayout_102")) + self.label_thickness_2 = QtGui.QLabel(self.groupBox_20) + self.label_thickness_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_thickness_2.setObjectName(_fromUtf8("label_thickness_2")) + self.gridLayout_102.addWidget(self.label_thickness_2, 0, 0, 1, 1) + self.thickness_cut_object = QtGui.QLineEdit(self.groupBox_20) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.thickness_cut_object.sizePolicy().hasHeightForWidth()) + self.thickness_cut_object.setSizePolicy(sizePolicy) + self.thickness_cut_object.setMaximumSize(QtCore.QSize(50, 16777215)) + self.thickness_cut_object.setObjectName(_fromUtf8("thickness_cut_object")) + self.gridLayout_102.addWidget(self.thickness_cut_object, 0, 1, 1, 1) + self.gridLayout_100.addLayout(self.gridLayout_102, 1, 0, 1, 1) + self.horizontalLayout_80 = QtGui.QHBoxLayout() + self.horizontalLayout_80.setObjectName(_fromUtf8("horizontalLayout_80")) + self.button_cut_reset = QtGui.QPushButton(self.groupBox_20) + self.button_cut_reset.setMinimumSize(QtCore.QSize(40, 0)) + self.button_cut_reset.setMaximumSize(QtCore.QSize(60, 16777215)) + self.button_cut_reset.setObjectName(_fromUtf8("button_cut_reset")) + self.horizontalLayout_80.addWidget(self.button_cut_reset) + spacerItem16 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem16) + self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) + self.button_cut_apply.setEnabled(False) + self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) + self.button_cut_apply.setIconSize(QtCore.QSize(32, 32)) + self.button_cut_apply.setObjectName(_fromUtf8("button_cut_apply")) + self.horizontalLayout_80.addWidget(self.button_cut_apply) + self.gridLayout_100.addLayout(self.horizontalLayout_80, 2, 0, 1, 1) + self.gridLayout_98.addLayout(self.gridLayout_100, 1, 0, 1, 1) + self.gridLayout_97.addWidget(self.groupBox_20, 0, 0, 1, 1) + self.gridLayout_96.addWidget(self.frame_10, 0, 0, 1, 1) + spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem17, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.cut_tab_2, _fromUtf8("")) + self.rotate_tab_2 = QtGui.QWidget() + self.rotate_tab_2.setObjectName(_fromUtf8("rotate_tab_2")) + self.gridLayout_103 = QtGui.QGridLayout(self.rotate_tab_2) + self.gridLayout_103.setObjectName(_fromUtf8("gridLayout_103")) + self.frame_11 = QtGui.QFrame(self.rotate_tab_2) + self.frame_11.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_11.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_11.setFrameShadow(QtGui.QFrame.Raised) + self.frame_11.setObjectName(_fromUtf8("frame_11")) + self.gridLayout_104 = QtGui.QGridLayout(self.frame_11) + self.gridLayout_104.setObjectName(_fromUtf8("gridLayout_104")) + self.ObjRot_button_select = QtGui.QPushButton(self.frame_11) + self.ObjRot_button_select.setObjectName(_fromUtf8("ObjRot_button_select")) + self.gridLayout_104.addWidget(self.ObjRot_button_select, 0, 0, 1, 1) + self.tabWidget_10 = QtGui.QTabWidget(self.frame_11) + self.tabWidget_10.setTabPosition(QtGui.QTabWidget.North) + self.tabWidget_10.setObjectName(_fromUtf8("tabWidget_10")) + self.tab_18 = QtGui.QWidget() + self.tab_18.setObjectName(_fromUtf8("tab_18")) + self.gridLayout_105 = QtGui.QGridLayout(self.tab_18) + self.gridLayout_105.setObjectName(_fromUtf8("gridLayout_105")) + self.ObjRot_comboBox_axis = QtGui.QComboBox(self.tab_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ObjRot_comboBox_axis.sizePolicy().hasHeightForWidth()) + self.ObjRot_comboBox_axis.setSizePolicy(sizePolicy) + self.ObjRot_comboBox_axis.setMinimumSize(QtCore.QSize(80, 0)) + self.ObjRot_comboBox_axis.setMaximumSize(QtCore.QSize(130, 16777215)) + self.ObjRot_comboBox_axis.setLayoutDirection(QtCore.Qt.LeftToRight) + self.ObjRot_comboBox_axis.setObjectName(_fromUtf8("ObjRot_comboBox_axis")) + self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) + self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) + self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) + self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) + self.gridLayout_105.addWidget(self.ObjRot_comboBox_axis, 0, 0, 1, 1) + self.ObjRot_button_select_axis = QtGui.QPushButton(self.tab_18) + self.ObjRot_button_select_axis.setEnabled(False) + self.ObjRot_button_select_axis.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_button_select_axis.setMaximumSize(QtCore.QSize(80, 16777215)) + self.ObjRot_button_select_axis.setObjectName(_fromUtf8("ObjRot_button_select_axis")) + self.gridLayout_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon75, _fromUtf8("")) + self.tab_19 = QtGui.QWidget() + self.tab_19.setObjectName(_fromUtf8("tab_19")) + self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) + self.gridLayout_106.setObjectName(_fromUtf8("gridLayout_106")) + self.ObjRot_comboBox_center = QtGui.QComboBox(self.tab_19) + self.ObjRot_comboBox_center.setEnabled(True) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ObjRot_comboBox_center.sizePolicy().hasHeightForWidth()) + self.ObjRot_comboBox_center.setSizePolicy(sizePolicy) + self.ObjRot_comboBox_center.setMinimumSize(QtCore.QSize(120, 0)) + self.ObjRot_comboBox_center.setMaximumSize(QtCore.QSize(130, 16777215)) + self.ObjRot_comboBox_center.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow) + self.ObjRot_comboBox_center.setObjectName(_fromUtf8("ObjRot_comboBox_center")) + self.ObjRot_comboBox_center.addItem(_fromUtf8("")) + self.ObjRot_comboBox_center.addItem(_fromUtf8("")) + self.ObjRot_comboBox_center.addItem(_fromUtf8("")) + self.ObjRot_comboBox_center.addItem(_fromUtf8("")) + self.gridLayout_106.addWidget(self.ObjRot_comboBox_center, 0, 0, 1, 1) + self.ObjRot_button_select_center = QtGui.QPushButton(self.tab_19) + self.ObjRot_button_select_center.setEnabled(False) + self.ObjRot_button_select_center.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_button_select_center.setMaximumSize(QtCore.QSize(80, 16777215)) + self.ObjRot_button_select_center.setObjectName(_fromUtf8("ObjRot_button_select_center")) + self.gridLayout_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon76, _fromUtf8("")) + self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1) + self.groupBox_21 = QtGui.QGroupBox(self.frame_11) + self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67)) + self.groupBox_21.setMaximumSize(QtCore.QSize(16777215, 16777215)) + self.groupBox_21.setFlat(False) + self.groupBox_21.setObjectName(_fromUtf8("groupBox_21")) + self.gridLayout_107 = QtGui.QGridLayout(self.groupBox_21) + self.gridLayout_107.setObjectName(_fromUtf8("gridLayout_107")) + self.tabWidget_11 = QtGui.QTabWidget(self.groupBox_21) + self.tabWidget_11.setObjectName(_fromUtf8("tabWidget_11")) + self.tab_20 = QtGui.QWidget() + self.tab_20.setObjectName(_fromUtf8("tab_20")) + self.gridLayout_108 = QtGui.QGridLayout(self.tab_20) + self.gridLayout_108.setObjectName(_fromUtf8("gridLayout_108")) + self.ObjRot_horizontalSlider = QtGui.QSlider(self.tab_20) + self.ObjRot_horizontalSlider.setMinimumSize(QtCore.QSize(0, 39)) + self.ObjRot_horizontalSlider.setMaximumSize(QtCore.QSize(120, 16777215)) + self.ObjRot_horizontalSlider.setMinimum(-180) + self.ObjRot_horizontalSlider.setMaximum(180) + self.ObjRot_horizontalSlider.setOrientation(QtCore.Qt.Horizontal) + self.ObjRot_horizontalSlider.setTickPosition(QtGui.QSlider.TicksBothSides) + self.ObjRot_horizontalSlider.setTickInterval(20) + self.ObjRot_horizontalSlider.setObjectName(_fromUtf8("ObjRot_horizontalSlider")) + self.gridLayout_108.addWidget(self.ObjRot_horizontalSlider, 0, 0, 1, 1) + self.tabWidget_11.addTab(self.tab_20, _fromUtf8("")) + self.tab_21 = QtGui.QWidget() + self.tab_21.setObjectName(_fromUtf8("tab_21")) + self.gridLayout_109 = QtGui.QGridLayout(self.tab_21) + self.gridLayout_109.setObjectName(_fromUtf8("gridLayout_109")) + self.ObjRot_button_select_angle = QtGui.QPushButton(self.tab_21) + self.ObjRot_button_select_angle.setEnabled(True) + self.ObjRot_button_select_angle.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215)) + self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle")) + self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon77, _fromUtf8("")) + self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) + self.horizontalLayout_81 = QtGui.QHBoxLayout() + self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) + self.ObjRot_lineEdit_angle = QtGui.QLineEdit(self.groupBox_21) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ObjRot_lineEdit_angle.sizePolicy().hasHeightForWidth()) + self.ObjRot_lineEdit_angle.setSizePolicy(sizePolicy) + self.ObjRot_lineEdit_angle.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_lineEdit_angle.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ObjRot_lineEdit_angle.setMaxLength(32769) + self.ObjRot_lineEdit_angle.setObjectName(_fromUtf8("ObjRot_lineEdit_angle")) + self.horizontalLayout_81.addWidget(self.ObjRot_lineEdit_angle) + self.label_angle_4 = QtGui.QLabel(self.groupBox_21) + self.label_angle_4.setMaximumSize(QtCore.QSize(60, 16777215)) + self.label_angle_4.setObjectName(_fromUtf8("label_angle_4")) + self.horizontalLayout_81.addWidget(self.label_angle_4) + self.gridLayout_107.addLayout(self.horizontalLayout_81, 1, 0, 1, 1) + self.gridLayout_104.addWidget(self.groupBox_21, 2, 0, 1, 1) + self.horizontalLayout_82 = QtGui.QHBoxLayout() + self.horizontalLayout_82.setObjectName(_fromUtf8("horizontalLayout_82")) + self.ObjRot_button_reset = QtGui.QPushButton(self.frame_11) + self.ObjRot_button_reset.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset")) + self.horizontalLayout_82.addWidget(self.ObjRot_button_reset) + spacerItem18 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem18) + self.ObjRot_button_apply = QtGui.QPushButton(self.frame_11) + self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ObjRot_button_apply.setObjectName(_fromUtf8("ObjRot_button_apply")) + self.horizontalLayout_82.addWidget(self.ObjRot_button_apply) + self.gridLayout_104.addLayout(self.horizontalLayout_82, 3, 0, 1, 1) + self.gridLayout_103.addWidget(self.frame_11, 0, 0, 1, 1) + spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem19, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.rotate_tab_2, _fromUtf8("")) + self.translate_tab_2 = QtGui.QWidget() + self.translate_tab_2.setObjectName(_fromUtf8("translate_tab_2")) + self.gridLayout_110 = QtGui.QGridLayout(self.translate_tab_2) + self.gridLayout_110.setObjectName(_fromUtf8("gridLayout_110")) + self.frame_12 = QtGui.QFrame(self.translate_tab_2) + self.frame_12.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_12.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_12.setFrameShadow(QtGui.QFrame.Raised) + self.frame_12.setObjectName(_fromUtf8("frame_12")) + self.gridLayout_111 = QtGui.QGridLayout(self.frame_12) + self.gridLayout_111.setObjectName(_fromUtf8("gridLayout_111")) + self.ObjTrans_button_select = QtGui.QPushButton(self.frame_12) + self.ObjTrans_button_select.setObjectName(_fromUtf8("ObjTrans_button_select")) + self.gridLayout_111.addWidget(self.ObjTrans_button_select, 0, 0, 1, 1) + self.horizontalLayout_83 = QtGui.QHBoxLayout() + self.horizontalLayout_83.setObjectName(_fromUtf8("horizontalLayout_83")) + self.ObjTrans_duplicate = QtGui.QCheckBox(self.frame_12) + self.ObjTrans_duplicate.setObjectName(_fromUtf8("ObjTrans_duplicate")) + self.horizontalLayout_83.addWidget(self.ObjTrans_duplicate) + self.ObjTrans_spin = QtGui.QSpinBox(self.frame_12) + self.ObjTrans_spin.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjTrans_spin.setMaximumSize(QtCore.QSize(50, 16777215)) + self.ObjTrans_spin.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) + self.ObjTrans_spin.setKeyboardTracking(False) + self.ObjTrans_spin.setMinimum(1) + self.ObjTrans_spin.setMaximum(20) + self.ObjTrans_spin.setSingleStep(1) + self.ObjTrans_spin.setProperty("value", 1) + self.ObjTrans_spin.setObjectName(_fromUtf8("ObjTrans_spin")) + self.horizontalLayout_83.addWidget(self.ObjTrans_spin) + self.ObjTrans_deepCopy = QtGui.QCheckBox(self.frame_12) + self.ObjTrans_deepCopy.setObjectName(_fromUtf8("ObjTrans_deepCopy")) + self.horizontalLayout_83.addWidget(self.ObjTrans_deepCopy) + self.gridLayout_111.addLayout(self.horizontalLayout_83, 1, 0, 1, 1) + self.tabWidget_12 = QtGui.QTabWidget(self.frame_12) + self.tabWidget_12.setObjectName(_fromUtf8("tabWidget_12")) + self.tab_22 = QtGui.QWidget() + self.tab_22.setObjectName(_fromUtf8("tab_22")) + self.gridLayout_112 = QtGui.QGridLayout(self.tab_22) + self.gridLayout_112.setObjectName(_fromUtf8("gridLayout_112")) + self.groupBox_22 = QtGui.QGroupBox(self.tab_22) + self.groupBox_22.setMinimumSize(QtCore.QSize(150, 0)) + self.groupBox_22.setFlat(False) + self.groupBox_22.setObjectName(_fromUtf8("groupBox_22")) + self.gridLayout_113 = QtGui.QGridLayout(self.groupBox_22) + self.gridLayout_113.setObjectName(_fromUtf8("gridLayout_113")) + self.ObjTrans_comboBox_start = QtGui.QComboBox(self.groupBox_22) + self.ObjTrans_comboBox_start.setEnabled(True) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ObjTrans_comboBox_start.sizePolicy().hasHeightForWidth()) + self.ObjTrans_comboBox_start.setSizePolicy(sizePolicy) + self.ObjTrans_comboBox_start.setMinimumSize(QtCore.QSize(100, 0)) + self.ObjTrans_comboBox_start.setMaximumSize(QtCore.QSize(120, 16777215)) + self.ObjTrans_comboBox_start.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow) + self.ObjTrans_comboBox_start.setObjectName(_fromUtf8("ObjTrans_comboBox_start")) + self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) + self.gridLayout_113.addWidget(self.ObjTrans_comboBox_start, 0, 0, 1, 1) + self.ObjTrans_button_select_start = QtGui.QPushButton(self.groupBox_22) + self.ObjTrans_button_select_start.setEnabled(True) + self.ObjTrans_button_select_start.setMinimumSize(QtCore.QSize(50, 0)) + self.ObjTrans_button_select_start.setMaximumSize(QtCore.QSize(120, 16777215)) + self.ObjTrans_button_select_start.setObjectName(_fromUtf8("ObjTrans_button_select_start")) + self.gridLayout_113.addWidget(self.ObjTrans_button_select_start, 1, 0, 1, 1) + self.gridLayout_114 = QtGui.QGridLayout() + self.gridLayout_114.setObjectName(_fromUtf8("gridLayout_114")) + self.gridLayout_115 = QtGui.QGridLayout() + self.gridLayout_115.setObjectName(_fromUtf8("gridLayout_115")) + self.label_11 = QtGui.QLabel(self.groupBox_22) + self.label_11.setObjectName(_fromUtf8("label_11")) + self.gridLayout_115.addWidget(self.label_11, 0, 0, 1, 1) + self.ObjTrans_start_x = QtGui.QLineEdit(self.groupBox_22) + self.ObjTrans_start_x.setEnabled(False) + self.ObjTrans_start_x.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_start_x.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_start_x.setObjectName(_fromUtf8("ObjTrans_start_x")) + self.gridLayout_115.addWidget(self.ObjTrans_start_x, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_115, 0, 0, 1, 1) + self.gridLayout_116 = QtGui.QGridLayout() + self.gridLayout_116.setObjectName(_fromUtf8("gridLayout_116")) + self.label_12 = QtGui.QLabel(self.groupBox_22) + self.label_12.setObjectName(_fromUtf8("label_12")) + self.gridLayout_116.addWidget(self.label_12, 0, 0, 1, 1) + self.ObjTrans_start_y = QtGui.QLineEdit(self.groupBox_22) + self.ObjTrans_start_y.setEnabled(False) + self.ObjTrans_start_y.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_start_y.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_start_y.setObjectName(_fromUtf8("ObjTrans_start_y")) + self.gridLayout_116.addWidget(self.ObjTrans_start_y, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_116, 1, 0, 1, 1) + self.gridLayout_117 = QtGui.QGridLayout() + self.gridLayout_117.setObjectName(_fromUtf8("gridLayout_117")) + self.label_13 = QtGui.QLabel(self.groupBox_22) + self.label_13.setObjectName(_fromUtf8("label_13")) + self.gridLayout_117.addWidget(self.label_13, 0, 0, 1, 1) + self.ObjTrans_start_z = QtGui.QLineEdit(self.groupBox_22) + self.ObjTrans_start_z.setEnabled(False) + self.ObjTrans_start_z.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_start_z.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_start_z.setObjectName(_fromUtf8("ObjTrans_start_z")) + self.gridLayout_117.addWidget(self.ObjTrans_start_z, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1) + self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1) + self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon78, _fromUtf8("")) + self.tab_23 = QtGui.QWidget() + self.tab_23.setObjectName(_fromUtf8("tab_23")) + self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) + self.gridLayout_118.setObjectName(_fromUtf8("gridLayout_118")) + self.groupBox_23 = QtGui.QGroupBox(self.tab_23) + self.groupBox_23.setMinimumSize(QtCore.QSize(150, 0)) + self.groupBox_23.setFlat(False) + self.groupBox_23.setObjectName(_fromUtf8("groupBox_23")) + self.gridLayout_119 = QtGui.QGridLayout(self.groupBox_23) + self.gridLayout_119.setObjectName(_fromUtf8("gridLayout_119")) + self.ObjTrans_comboBox_end = QtGui.QComboBox(self.groupBox_23) + self.ObjTrans_comboBox_end.setEnabled(True) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ObjTrans_comboBox_end.sizePolicy().hasHeightForWidth()) + self.ObjTrans_comboBox_end.setSizePolicy(sizePolicy) + self.ObjTrans_comboBox_end.setMinimumSize(QtCore.QSize(100, 0)) + self.ObjTrans_comboBox_end.setMaximumSize(QtCore.QSize(120, 16777215)) + self.ObjTrans_comboBox_end.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContentsOnFirstShow) + self.ObjTrans_comboBox_end.setObjectName(_fromUtf8("ObjTrans_comboBox_end")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) + self.gridLayout_119.addWidget(self.ObjTrans_comboBox_end, 0, 0, 1, 1) + self.ObjTrans_button_select_end = QtGui.QPushButton(self.groupBox_23) + self.ObjTrans_button_select_end.setEnabled(True) + self.ObjTrans_button_select_end.setMinimumSize(QtCore.QSize(100, 0)) + self.ObjTrans_button_select_end.setMaximumSize(QtCore.QSize(120, 16777215)) + self.ObjTrans_button_select_end.setObjectName(_fromUtf8("ObjTrans_button_select_end")) + self.gridLayout_119.addWidget(self.ObjTrans_button_select_end, 1, 0, 1, 1) + self.gridLayout_120 = QtGui.QGridLayout() + self.gridLayout_120.setObjectName(_fromUtf8("gridLayout_120")) + self.gridLayout_121 = QtGui.QGridLayout() + self.gridLayout_121.setObjectName(_fromUtf8("gridLayout_121")) + self.label_14 = QtGui.QLabel(self.groupBox_23) + self.label_14.setObjectName(_fromUtf8("label_14")) + self.gridLayout_121.addWidget(self.label_14, 0, 0, 1, 1) + self.ObjTrans_end_z = QtGui.QLineEdit(self.groupBox_23) + self.ObjTrans_end_z.setEnabled(False) + self.ObjTrans_end_z.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_end_z.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_end_z.setObjectName(_fromUtf8("ObjTrans_end_z")) + self.gridLayout_121.addWidget(self.ObjTrans_end_z, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_121, 2, 0, 1, 1) + self.gridLayout_122 = QtGui.QGridLayout() + self.gridLayout_122.setObjectName(_fromUtf8("gridLayout_122")) + self.label_15 = QtGui.QLabel(self.groupBox_23) + self.label_15.setObjectName(_fromUtf8("label_15")) + self.gridLayout_122.addWidget(self.label_15, 0, 0, 1, 1) + self.ObjTrans_end_y = QtGui.QLineEdit(self.groupBox_23) + self.ObjTrans_end_y.setEnabled(False) + self.ObjTrans_end_y.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_end_y.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_end_y.setObjectName(_fromUtf8("ObjTrans_end_y")) + self.gridLayout_122.addWidget(self.ObjTrans_end_y, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_122, 1, 0, 1, 1) + self.gridLayout_123 = QtGui.QGridLayout() + self.gridLayout_123.setObjectName(_fromUtf8("gridLayout_123")) + self.label_16 = QtGui.QLabel(self.groupBox_23) + self.label_16.setObjectName(_fromUtf8("label_16")) + self.gridLayout_123.addWidget(self.label_16, 0, 0, 1, 1) + self.ObjTrans_end_x = QtGui.QLineEdit(self.groupBox_23) + self.ObjTrans_end_x.setEnabled(False) + self.ObjTrans_end_x.setMinimumSize(QtCore.QSize(90, 0)) + self.ObjTrans_end_x.setMaximumSize(QtCore.QSize(200, 16777215)) + self.ObjTrans_end_x.setObjectName(_fromUtf8("ObjTrans_end_x")) + self.gridLayout_123.addWidget(self.ObjTrans_end_x, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1) + self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1) + self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon79, _fromUtf8("")) + self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) + self.horizontalLayout_84 = QtGui.QHBoxLayout() + self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) + self.ObjTrans_button_reset = QtGui.QPushButton(self.frame_12) + self.ObjTrans_button_reset.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjTrans_button_reset.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ObjTrans_button_reset.setObjectName(_fromUtf8("ObjTrans_button_reset")) + self.horizontalLayout_84.addWidget(self.ObjTrans_button_reset) + spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem20) + self.ObjTrans_button_apply = QtGui.QPushButton(self.frame_12) + self.ObjTrans_button_apply.setMinimumSize(QtCore.QSize(40, 0)) + self.ObjTrans_button_apply.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ObjTrans_button_apply.setObjectName(_fromUtf8("ObjTrans_button_apply")) + self.horizontalLayout_84.addWidget(self.ObjTrans_button_apply) + self.gridLayout_111.addLayout(self.horizontalLayout_84, 3, 0, 1, 1) + self.gridLayout_110.addWidget(self.frame_12, 0, 0, 1, 1) + spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_110.addItem(spacerItem21, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.translate_tab_2, _fromUtf8("")) + self.gridLayout_94.addWidget(self.tabWidget_9, 0, 0, 1, 1) + self.tabWidget_7.addTab(self.Modif_Tab_2, _fromUtf8("")) + self.View_Tab_2 = QtGui.QWidget() + self.View_Tab_2.setObjectName(_fromUtf8("View_Tab_2")) + self.gridLayout_124 = QtGui.QGridLayout(self.View_Tab_2) + self.gridLayout_124.setObjectName(_fromUtf8("gridLayout_124")) + self.button_alignview = QtGui.QPushButton(self.View_Tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) + self.button_alignview.setSizePolicy(sizePolicy) + self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon80) + self.button_alignview.setIconSize(QtCore.QSize(32, 32)) + self.button_alignview.setObjectName(_fromUtf8("button_alignview")) + self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1) + spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem22, 2, 0, 1, 1) + self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon81) + self.button_trackcamera.setIconSize(QtCore.QSize(32, 32)) + self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera")) + self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon82, _fromUtf8("")) + self.tab_24 = QtGui.QWidget() + self.tab_24.setObjectName(_fromUtf8("tab_24")) + self.gridLayout_125 = QtGui.QGridLayout(self.tab_24) + self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125")) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem23, 9, 0, 1, 1) + self.button_isView = QtGui.QPushButton(self.tab_24) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon83) + self.button_isView.setIconSize(QtCore.QSize(32, 32)) + self.button_isView.setObjectName(_fromUtf8("button_isView")) + self.gridLayout_125.addWidget(self.button_isView, 8, 0, 1, 1) + self.button_isParallel = QtGui.QPushButton(self.tab_24) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon84) + self.button_isParallel.setIconSize(QtCore.QSize(32, 32)) + self.button_isParallel.setObjectName(_fromUtf8("button_isParallel")) + self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1) + self.button_isAngle = QtGui.QPushButton(self.tab_24) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon85) + self.button_isAngle.setIconSize(QtCore.QSize(32, 32)) + self.button_isAngle.setObjectName(_fromUtf8("button_isAngle")) + self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1) + self.button_isLength = QtGui.QPushButton(self.tab_24) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon86) + self.button_isLength.setIconSize(QtCore.QSize(32, 32)) + self.button_isLength.setObjectName(_fromUtf8("button_isLength")) + self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1) + self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon87) + self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) + self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) + self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) + self.button_isDistance = QtGui.QPushButton(self.tab_24) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon88) + self.button_isDistance.setIconSize(QtCore.QSize(32, 32)) + self.button_isDistance.setObjectName(_fromUtf8("button_isDistance")) + self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1) + self.button_isArea = QtGui.QPushButton(self.tab_24) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon89) + self.button_isArea.setIconSize(QtCore.QSize(32, 32)) + self.button_isArea.setObjectName(_fromUtf8("button_isArea")) + self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) + self.button_isCoplanar = QtGui.QPushButton(self.tab_24) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon90) + self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32)) + self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar")) + self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1) + self.button_isClearance = QtGui.QPushButton(self.tab_24) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon91) + self.button_isClearance.setIconSize(QtCore.QSize(32, 32)) + self.button_isClearance.setObjectName(_fromUtf8("button_isClearance")) + self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon92, _fromUtf8("")) + self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1) + self.scrollArea.setWidget(self.scrollAreaWidgetContents) + self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1) + self.horizontalLayout_43 = QtGui.QHBoxLayout() + self.horizontalLayout_43.setObjectName(_fromUtf8("horizontalLayout_43")) + self.button_WF_quit = QtGui.QPushButton(Form) + self.button_WF_quit.setObjectName(_fromUtf8("button_WF_quit")) + self.horizontalLayout_43.addWidget(self.button_WF_quit) + spacerItem24 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem24) + self.label_release = QtGui.QLabel(Form) + self.label_release.setObjectName(_fromUtf8("label_release")) + self.horizontalLayout_43.addWidget(self.label_release) + self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1) + + self.retranslateUi(Form) + self.tabWidget_7.setCurrentIndex(0) + self.point_loc_comboBox.setCurrentIndex(1) + self.tabWidget_8.setCurrentIndex(0) + self.transition_comboBox.setCurrentIndex(2) + self.tabWidget_9.setCurrentIndex(0) + self.tabWidget_10.setCurrentIndex(0) + self.ObjRot_comboBox_axis.setCurrentIndex(0) + self.ObjRot_comboBox_center.setCurrentIndex(2) + self.tabWidget_11.setCurrentIndex(0) + self.tabWidget_12.setCurrentIndex(0) + self.ObjTrans_comboBox_start.setCurrentIndex(3) + self.ObjTrans_comboBox_end.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "WorkFeature", None)) + self.button_origin.setToolTip(_translate("Form", "Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes", None)) + self.button_origin.setText(_translate("Form", "Origin", None)) + self.groupBox_13.setTitle(_translate("Form", "Preferences :", None)) + self.radioButton_verbose.setToolTip(_translate("Form", "Toggle here if you want a lot of information printed into report View.", None)) + self.radioButton_verbose.setText(_translate("Form", "Verbose", None)) + self.radioButton_biColor.setToolTip(_translate("Form", "Change the successive lines to be bicolor (red and white) for the following functions:\n" +" - in \"Axis 1/2\" TAB:\n" +" Axes=Cut(Wire)\n" +" - in \"Circle\" TAB:\n" +" Arcs=Cut(Circle) \n" +"", None)) + self.radioButton_biColor.setText(_translate("Form", "Bi Color", None)) + self.radioButton_copy.setToolTip(_translate("Form", "Force the duplication of the Parent Object for the following functions:\n" +" - in \"Axis 2/2\" TAB:\n" +" Axes=(Axis,Pt,dist)\n" +" If an Edge of a Cube is selected the Cube is duplicate \n" +" with the corresponding\n" +" Edge at the defined distance from the original.\n" +" - in \"Plane\" TAB:\n" +" Plane=(Plane,dist) ", None)) + self.radioButton_copy.setText(_translate("Form", "Object copy", None)) + self.label_10.setToolTip(_translate("Form", "Change the tolerance for the following functions:\n" +" - in \"Check\" TAB:\n" +" are Parallel?\n" +" are Perpendicular?\n" +" are Coplanar?", None)) + self.label_10.setText(_translate("Form", "Tolerance", None)) + self.tolerance_edit.setToolTip(_translate("Form", "Change the tolerance for the following functions:\n" +" - in \"Check\" TAB:\n" +" are Parallel?\n" +" are Perpendicular?\n" +" are Coplanar?", None)) + self.tolerance_edit.setText(_translate("Form", "1e-10", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Origin_Tab_2), _translate("Form", "Ori. Pref.", None)) + self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None)) + self.button_circle_center.setText(_translate("Form", "Circle(s) Center", None)) + self.button_point_line_point.setToolTip(_translate("Form", "Point(s)=(Point(s),Line(s)):\n" +"Create projection(s) of Point(s) onto Line(s).\n" +"- First select one (or several) Point(s)\n" +"- Second select one or several) Line(s)\n" +"- Then push this button\n" +"\n" +"Plot the intersection point T on a Line given one Line and One Point C.\n" +"The Vector TC is perpendicular to the Line.\n" +"The symetric point Cprime is also created as TC=TCprime.", None)) + self.button_point_line_point.setText(_translate("Form", "Point(s)=(Pt(s),Line(s)) ", None)) + self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).", None)) + self.button_face_center.setText(_translate("Form", "Face(s) Center", None)) + self.button_line_center.setToolTip(_translate("Form", "Create Point(s):\n" +"Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).\n" +"The number indicates how many parts to consider.", None)) + self.button_line_center.setText(_translate("Form", "Line(s) Center", None)) + self.spin_line_center.setToolTip(_translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None)) + self.button_Npoints_center.setToolTip(_translate("Form", "Create a Point at mean location of all selected points.", None)) + self.button_Npoints_center.setText(_translate("Form", "Points Center", None)) + self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line and Plane selected.", None)) + self.button_line_face_point.setText(_translate("Form", "Point=(Line,Face) ", None)) + self.button_object_center.setToolTip(_translate("Form", "Create a Point at center location of all selected Object(s).\n" +" if BBox is not toggled\n" +" This point is the MEAN location of all center of Mass (if exist) of all objects.\n" +" All center of Mass will be created too.\n" +" \n" +"if BBox check box is toggled\n" +" This point is the center of the Global X,Y,Z bounding box of all objects.\n" +" This bounding box alway exists (especially for draft objects).\n" +" Be aware this point is not necessary the center of Mass of all Objects!", None)) + self.button_object_center.setText(_translate("Form", "Object(s) Center", None)) + self.checkBox_object_center.setToolTip(_translate("Form", "if BBox check box is toggled\n" +" This point is the center of the Global X,Y,Z bounding box of all objects.\n" +" This bounding box alway exists (especially for draft objects).\n" +" Be aware this point is not necessary the center of Mass of all Objects!", None)) + self.checkBox_object_center.setText(_translate("Form", "BBox", None)) + self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).", None)) + self.button_line_extrema.setText(_translate("Form", "Line(s) Extrema", None)) + self.button_point_face_point.setToolTip(_translate("Form", "Point(s)=(Point(s),Face(s)):\n" +"Create projection(s) of Point(s) onto Face(s).\n" +"- First select one (or several) Point(s)\n" +"- Second select one or several) Plane(s)\n" +"- Then push this button\n" +"\n" +"Plot the intersection point T on a Plane given one Plane and One Point C.\n" +"The Vector TC is perpendicular to the plane.", None)) + self.button_point_face_point.setText(_translate("Form", "Point(s)=(Pt(s),Face(s))", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab1_2), _translate("Form", "Point 1/2", None)) + self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab1_2), _translate("Form", "Point", None)) + self.button_twolines_point.setToolTip(_translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n" +"Create a Point at intersection of 2 crossing Lines.", None)) + self.button_twolines_point.setText(_translate("Form", "Point=(Line,Line) ", None)) + self.button_point_on_line.setToolTip(_translate("Form", "Create a Point at a certain distance along the line \n" +"respecting to the choosen reference starting point.", None)) + self.button_point_on_line.setText(_translate("Form", "Point along Line", None)) + self.distance_point_on_line.setToolTip(_translate("Form", "Distance from the extremity", None)) + self.distance_point_on_line.setText(_translate("Form", "0.0", None)) + self.button_distPoint.setToolTip(_translate("Form", "Point=(Point,Ax,dist):\n" +"Create a Point along the given Axis, at a given distance of the selected Point.\n" +"The Axis indicate the direction along where the Point is duplicate.\n" +"(you can also select several axes to define different directions)\n" +"- First select a Point (you can select several points) and one or several Axis \n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The distance between points can be defined first.\n" +"Positive number in one direction and negative in the other one.\n" +"The second number indicates the number of Points to create.\n" +"", None)) + self.button_distPoint.setText(_translate("Form", "Point=(Pt,Ax,dist)", None)) + self.dist_point.setToolTip(_translate("Form", "Distance to the new Axis.\n" +"Can be negative for the reverse direction!", None)) + self.dist_point.setText(_translate("Form", "10.0", None)) + self.spin_dist_point.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_cut_wire_point.setToolTip(_translate("Form", "Create Points by Partition:\n" +"Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.\n" +"The number indicates in how many parts to cut.\n" +"Wires can be:\n" +" Line\n" +" Circle\n" +" Arc\n" +" Ellipse\n" +"An object must also be seleted but before any Wire to cut all his edges! ", None)) + self.button_cut_wire_point.setText(_translate("Form", "Points=Cut(Wire)", None)) + self.spin_wire_cut_point.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_click_for_point.setToolTip(_translate("Form", "Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.\n" +"- Click first on the Button then click on the View (with no object in background).\n" +"- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.\n" +"", None)) + self.button_click_for_point.setText(_translate("Form", "Click", None)) + self.button_object_base_point.setToolTip(_translate("Form", "Create Base Point of all selected Object(s).", None)) + self.button_object_base_point.setText(_translate("Form", "Object(s) Base Point", None)) + self.button_point_to_sketch.setToolTip(_translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n" +"- First select an existing Skecth;\n" +"- Select as much as Points needed;\n" +"Then click on this button.", None)) + self.button_point_to_sketch.setText(_translate("Form", "Point(s) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab2_2), _translate("Form", "Point 2/2", None)) + self.button_object_axis.setToolTip(_translate("Form", "Create 3 Axes at center location of all selected Object(s).", None)) + self.button_object_axis.setText(_translate("Form", "Object(s) X, Y, Z Axes", None)) + self.button_twopoints_axis.setToolTip(_translate("Form", "Create an Axis crossing 2 Points.", None)) + self.button_twopoints_axis.setText(_translate("Form", "Two Points Axis", None)) + self.extension_twopoints_axis.setToolTip(_translate("Form", "Distance for the extensions on extrema", None)) + self.extension_twopoints_axis.setText(_translate("Form", "0.0", None)) + self.button_Npoints_axis.setToolTip(_translate("Form", "Axis=(Points):\n" +"Create a \"best fit\" line from a set of points using Singular Value Decomposition..\n" +"- First select several Points\n" +"- Then push this button\n" +"\n" +"The 3 eigenvectors are generated.\n" +"Orange one is the best fit line.\n" +"", None)) + self.button_Npoints_axis.setText(_translate("Form", "Axis from Point(s)", None)) + self.button_cylinder_axis.setToolTip(_translate("Form", "Create the Axis of a Cylinder.", None)) + self.button_cylinder_axis.setText(_translate("Form", "Cylinder(s) Axis", None)) + self.button_plane_axis.setToolTip(_translate("Form", "Plane(s) Axes:\n" +"Create Perpendicular Axes at the center location of a Plane.\n" +" - First select one (or several) Plane(s);\n" +" - Then press the button\n" +"\n" +"or \n" +"Create Perpendicular Axes of a Plane at selected locations.\n" +" - First select one Plane;\n" +" - Second select Point(s) for locations\n" +" - Press the button\n" +"\n" +"NB: Axes are created on both sides of the Plane\n" +"The extension is 10 units by defaut but must be changed if needed.", None)) + self.button_plane_axis.setText(_translate("Form", "Plane(s) Axes", None)) + self.button_face_normal.setToolTip(_translate("Form", "Create a normal Axis of a Face.\n" +"To create a Normal at click location on a Face:\n" +"- Click first in the view to select and object,\n" +"- then push the button, \n" +"- then click on a location on the selected Face.\n" +"or\n" +"To create several Normal of the face:\n" +"- Click first in the view to select and object,\n" +"- then select one or several points of the face\n" +"- then push the button.\n" +"(These selections can also be done into the Combined View)", None)) + self.button_face_normal.setText(_translate("Form", "Face Normal", None)) + self.extension_face_normal.setToolTip(_translate("Form", "Length of external part of the (Normal) Axis.\n" +" If zero In case of cylinder axis the extension will be a percentage of the object length.\n" +" If zero and plane of face Normal, the extension will be 10 units.", None)) + self.extension_face_normal.setText(_translate("Form", "0.0", None)) + self.button_point_line_axis.setToolTip(_translate("Form", "Create an Axis Parallel to an Axis (as Direction) and crossing a Point.\n" +"- Select one Axis and one (or several) Point(s) NOT on the previous Axis.\n" +"Define the length and the attach point if needed.\n" +"A Length of Zero means the length of already selected Axis will be used.", None)) + self.button_point_line_axis.setText(_translate("Form", "Axis=(Pt,Dir)", None)) + self.extension_line.setToolTip(_translate("Form", "Define the length of the Axis to create.\n" +"A Length of Zero means the length of already selected Axis will be used.", None)) + self.extension_line.setText(_translate("Form", "0.0", None)) + self.point_loc_comboBox.setToolTip(_translate("Form", "The Attach Point will be at :\n" +"Start of the Axis;\n" +"Mid of the Axis;\n" +"End of the Axis.", None)) + self.point_loc_comboBox.setItemText(0, _translate("Form", "Start", None)) + self.point_loc_comboBox.setItemText(1, _translate("Form", "Mid", None)) + self.point_loc_comboBox.setItemText(2, _translate("Form", "End", None)) + self.button_line_point_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis and crossing a Point\n" +"-Select one Axis and one (or several) Point(s) NOT on the previous Axis.", None)) + self.button_line_point_axis.setText(_translate("Form", "Axis=(Axis,Point)", None)) + self.extension_line_point_axis.setToolTip(_translate("Form", "Distance for the extensions on extrema.", None)) + self.extension_line_point_axis.setText(_translate("Form", "0.0", None)) + self.button_twolines_axis.setToolTip(_translate("Form", "Create an Axis between two Axes.\n" +"-Select two Axes.", None)) + self.button_twolines_axis.setText(_translate("Form", "Axis=(Line,Line)", None)) + self.button_plane_point_line_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n" +"-Select one Plane, one Axis and one Point ON the previous Axis.", None)) + self.button_plane_point_line_axis.setText(_translate("Form", "Axis=(Plane,Point,Axis)", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab1_2), _translate("Form", "Axis 1/2", None)) + self.button_line_plane_axis.setToolTip(_translate("Form", "Axes=(Pl(s),Axes):\n" +"Create projection(s) of Axes onto Plane(s).\n" +"- First select one (or several) Line(s)\n" +"- Second select one or several) Plane(s)\n" +"- Then push this button", None)) + self.button_line_plane_axis.setText(_translate("Form", "Axes=(Pl(s),Axes)", None)) + self.button_twoplanes_axis.setToolTip(_translate("Form", "Create an Axis by intersect of 2 Planes.", None)) + self.button_twoplanes_axis.setText(_translate("Form", "Axis=(Plane,Plane)", None)) + self.button_distLine.setToolTip(_translate("Form", "Axes=(Axis,Pt,dist):\n" +"Create an Axis parallel to a given Axis, Point at a given distance.\n" +"The Axis is created along the Plane defined by the given Axis and Point.\n" +"- First select an Axis (or several Axes) and a Point\n" +"(you can also select several points to define different Planes)\n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The distance to the Axis created can be defined first.\n" +"Positive number in one direction and negative in the other one.\n" +"The second number indicates the number of Axes to create.\n" +"With option \"Object copy\" in \"Ori. Pref.\" TAB\n" +" - If an Edge of a Cube is selected the Cube is duplicate with the corresponding\n" +"Edge at the defined distance from the original.\n" +"Several Edges of the cube can be selected.\n" +"", None)) + self.button_distLine.setText(_translate("Form", "Axes=(Axis,Pt,dist)", None)) + self.dist_line.setToolTip(_translate("Form", "Distance to the new Axis.\n" +"Can be negative for the reverse direction!", None)) + self.dist_line.setText(_translate("Form", "10.0", None)) + self.spin_dist_line.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_angleLine.setToolTip(_translate("Form", "Axes=(Axis,Pt,Pl,a):\n" +"Create an Axis with an Angle to a origin Axis.\n" +"- First select an Axis to rotate, then a Plane and a rotation Point\n" +"- Second push this button\n" +"or\n" +"- First select an Axis to rotate, then a rotation Axis and a rotation Point\n" +"- Second push this button\n" +"\n" +"NB:\n" +"The Axis is created by rotation using :\n" +" The Normal of the selected Plane as rotation Axis \n" +"and selected Point as rotation Point. \n" +"or\n" +" The second selected Axis as rotation Axis \n" +"and selected Point as rotation Point. \n" +"\n" +" - The angle (in degrees) of rotation can be defined first.\n" +"Positive number in one direction and negative in the other one.\n" +" - The second number indicates the number of Axes to create.\n" +"\n" +"", None)) + self.button_angleLine.setText(_translate("Form", "Axes=(Axis,Pt,Pl,a)", None)) + self.angle_line.setToolTip(_translate("Form", "Angle to the new Axis.\n" +"Can be negative for the reverse direction!\n" +"(in degrees)", None)) + self.angle_line.setText(_translate("Form", "45.0", None)) + self.spin_angle_line.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_cut_wire_axis.setToolTip(_translate("Form", "Create Axes by Partition:\n" +"Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.\n" +"The number indicates in how many parts to cut.\n" +"Wires can be:\n" +" Line\n" +" Circle\n" +" Arc\n" +" Ellipse\n" +"An object must also be seleted but before any Wire to cut all his Edges!\n" +"NB: You can change the successive lines to be bicolor (red and white) \n" +"in \"Ori. Pref.\" TAB \n" +"", None)) + self.button_cut_wire_axis.setText(_translate("Form", "Axes=Cut(Wire)", None)) + self.spin_wire_cut_axis.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_cut_axis.setToolTip(_translate("Form", "Create Axes:\n" +"Cut the selected Line in 2(n) parts and create 2(n) Axes.\n" +"The number indicates in how many parts to cut.\n" +"\n" +"NB: You can change the successive lines to be bicolor (red and white) \n" +"in \"Ori. Pref.\" TAB", None)) + self.button_cut_axis.setText(_translate("Form", "Axes=Cut(Axis)", None)) + self.spin_axis_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_extension_axis.setToolTip(_translate("Form", "Enlarge(Axis):\n" +"Extend an Axis at two extrema.\n" +"- First select an Axis (or several Axes) \n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The percentage of the extension can be defined first.", None)) + self.button_extension_axis.setText(_translate("Form", "Enlarge(Axis)", None)) + self.extension_axis.setToolTip(_translate("Form", "Extension of the Line in percentage.", None)) + self.extension_axis.setText(_translate("Form", "50.0", None)) + self.button_click_for_axis.setToolTip(_translate("Form", "Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.\n" +"- Click first on the Button then at least twice click on the View (with no object in background).\n" +"- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.", None)) + self.button_click_for_axis.setText(_translate("Form", "Click", None)) + self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) + self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) + self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" +"- First select an existing Skecth;\n" +"- Select as much as Lines needed;\n" +"Then click on this button.", None)) + self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab2_2), _translate("Form", "Axis 2/2", None)) + self.lineEdit.setText(_translate("Form", "Examples from http://www.mathcurve.com/", None)) + self.groupBox_14.setTitle(_translate("Form", "Equation :", None)) + self.label_y_3.setText(_translate("Form", "Y (a,b,t) ", None)) + self.ParCurve_a_2.setText(_translate("Form", "10 # Radius", None)) + self.label_b_3.setText(_translate("Form", "b (a, t) ", None)) + self.ParCurve_y_2.setText(_translate("Form", "b*sin(t)", None)) + self.checkBox_polar_2.setToolTip(_translate("Form", "Toggle for Polar coordinates:\n" +"then x is interpreted as radius\n" +" and y is interpreted as angle teta.", None)) + self.checkBox_polar_2.setText(_translate("Form", " Polar coord.", None)) + self.label_x_3.setText(_translate("Form", "X (a,b,t) ", None)) + self.ParCurve_x_2.setText(_translate("Form", "a*cos(t)", None)) + self.label_a_3.setText(_translate("Form", "a (t) ", None)) + self.ParCurve_b_2.setText(_translate("Form", "a", None)) + self.ParCurve_comboBox_2.setToolTip(_translate("Form", "Choose another curve from the list.", None)) + self.ParCurve_button_edit_2.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" +"save your custom curves.", None)) + self.ParCurve_button_edit_2.setText(_translate("Form", "Edit", None)) + self.checkBox_close_2.setText(_translate("Form", "Closed curve", None)) + self.checkBox_face_2.setText(_translate("Form", "Create Face", None)) + self.label_name_2.setText(_translate("Form", "Name", None)) + self.ParCurve_name_2.setText(_translate("Form", "Circle", None)) + self.groupBox_15.setTitle(_translate("Form", "Parameters", None)) + self.label_tmin_3.setText(_translate("Form", "t min", None)) + self.ParCurve_tmin_2.setText(_translate("Form", "0", None)) + self.label_tmax_3.setText(_translate("Form", "t max", None)) + self.ParCurve_tmax_2.setText(_translate("Form", "2*pi", None)) + self.label_tstep_3.setText(_translate("Form", "step", None)) + self.ParCurve_tstep_2.setText(_translate("Form", "0.01", None)) + self.groupBox_16.setTitle(_translate("Form", "Type of 2D Curve", None)) + self.checkBox_points_2.setText(_translate("Form", "Points", None)) + self.checkBox_polyline_2.setText(_translate("Form", "Polyline", None)) + self.checkBox_bspline_2.setText(_translate("Form", "Bspline", None)) + self.checkBox_bezier_2.setText(_translate("Form", "Bezier", None)) + self.ParCurve_button_store_2.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" +"To save your curve you need to go to \"Edit\".", None)) + self.ParCurve_button_store_2.setText(_translate("Form", "Store", None)) + self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None)) + self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "2D", None)) + self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None)) + self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" +"save your custom curves.", None)) + self.ParCurve_button_edit_3.setText(_translate("Form", "Edit", None)) + self.label_name_3.setText(_translate("Form", "Name", None)) + self.ParCurve_name_3.setText(_translate("Form", "Cylindrical helix", None)) + self.groupBox_17.setTitle(_translate("Form", "Equation :", None)) + self.label_a_4.setText(_translate("Form", "a (t) ", None)) + self.ParCurve_a_3.setText(_translate("Form", "10*0.05 #Vert. step", None)) + self.label_b_4.setText(_translate("Form", "b (a, t) ", None)) + self.ParCurve_b_3.setText(_translate("Form", "1", None)) + self.label_c_2.setText(_translate("Form", "c (a, b, t) ", None)) + self.ParCurve_c_3.setText(_translate("Form", "10 # Radius", None)) + self.label_x_4.setText(_translate("Form", "X (a,b,c,t) ", None)) + self.ParCurve_x_3.setText(_translate("Form", "c*sin(t)", None)) + self.label_y_4.setText(_translate("Form", "Y (a,b,c,t) ", None)) + self.label_z_2.setText(_translate("Form", "Z (a,b,c,t) ", None)) + self.ParCurve_z_3.setText(_translate("Form", "a*t", None)) + self.ParCurve_y_3.setText(_translate("Form", "c*cos(t)", None)) + self.groupBox_18.setTitle(_translate("Form", "Parameters", None)) + self.label_tmin_4.setText(_translate("Form", "t min", None)) + self.label_tmax_4.setText(_translate("Form", "t max", None)) + self.ParCurve_tmax_3.setText(_translate("Form", "5*2*pi #5 circles", None)) + self.label_tstep_4.setText(_translate("Form", "step", None)) + self.ParCurve_tstep_3.setText(_translate("Form", "0.01", None)) + self.ParCurve_tmin_3.setText(_translate("Form", "0", None)) + self.groupBox_19.setTitle(_translate("Form", "Type of 3D Curve", None)) + self.checkBox_points_3.setText(_translate("Form", "Points", None)) + self.checkBox_polyline_3.setText(_translate("Form", "Polyline", None)) + self.checkBox_bspline_3.setText(_translate("Form", "Bspline", None)) + self.checkBox_bezier_3.setText(_translate("Form", "Bezier", None)) + self.checkBox_close_3.setText(_translate("Form", "Closed curve", None)) + self.ParCurve_button_store_3.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" +"To save your curve you need to go to \"Edit\".", None)) + self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) + self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) + self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "3D", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) + self.button_linecenter_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" +"centered on the Point, perpendicular to the Axis \n" +"with the given radius.", None)) + self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None)) + self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None)) + self.radius_circle.setText(_translate("Form", "10.0", None)) + self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" +"centered on the Axis and tangenting the Point.", None)) + self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None)) + self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None)) + self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None)) + self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n" +"Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n" +"The number indicates in how many parts to cut.\n" +"- First select as many Circles and Arcs you want\n" +"- Second set the number of parts\n" +"- Third push this button\n" +"\n" +"NB: You can change the successive lines to be bicolor (red and white) \n" +"in \"Ori. Pref.\" TAB", None)) + self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None)) + self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None)) + self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None)) + self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None)) + self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n" +"- First select an existing Skecth;\n" +"- Select as much as Circles and arcs needed;\n" +"Then click on this button.", None)) + self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_16), _translate("Form", "Circle", None)) + self.checkBox_allsubselect.setToolTip(_translate("Form", "if \"All\" is toggled:\n" +" All the wires of the Trajectory selected will be considered.\n" +"\n" +"Untoggled if you select a Skecth with several curves and you want to process\n" +"only the one subselected.", None)) + self.checkBox_allsubselect.setText(_translate("Form", "All", None)) + self.transition_comboBox.setToolTip(_translate("Form", "For the function :\n" +"makePipeShell(shapeList,[isSolid,isFrenet,transition])\n" +"Select a Transition option in case of trajectory with several wires; Transition can be:\n" +"# 0 (default), 1 (right corners) or 2 (rounded corners).", None)) + self.transition_comboBox.setItemText(0, _translate("Form", "No Transition", None)) + self.transition_comboBox.setItemText(1, _translate("Form", "Right corners", None)) + self.transition_comboBox.setItemText(2, _translate("Form", "Rounded corners", None)) + self.checkBox_solid.setToolTip(_translate("Form", "if \"Solid\" is toggled:\n" +" The Beam sweep will generate a solid with a closed selected wire as Section.\n" +"If this check box is toggle off:\n" +" Or if the Section wire is not closed, only a shell will be created.", None)) + self.checkBox_solid.setText(_translate("Form", "Solid", None)) + self.radioButton_Frenet.setToolTip(_translate("Form", "Force the \"isFrenet\" parameter to True for the function :\n" +"makePipeShell(shapeList,[isSolid,isFrenet,transition])\n" +"", None)) + self.radioButton_Frenet.setText(_translate("Form", "isFrenet", None)) + self.button_sweep.setToolTip(_translate("Form", "Section Sweep:\n" +"# Make a loft defined by a list of profiles along a wire.\n" +"Will extrude/sweep a Section along a Trajectory like sweep from Part Workbench but:\n" +"- the Section center (of Mass) is move at the first point of the Trajectory and;\n" +"- the \"plane\" of the Section is rotate to be perpendicular to the Trajectory.\n" +"\n" +"- Select first one Section wire (Closed wire will generate volumes by default)\n" +"(This Section can be a compound from sketch to realize \"tube\")\n" +"- Select one or several wire(s) as Trajectory(ies)\n" +"- Then push this button\n" +"\n" +"NB: You can change first:\n" +"- Solid option (if toggled will generate a solid for Closed wire Section only) \n" +"- isFrenet option\n" +"- All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep)\n" +"- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be:\n" +"# 0 (default), 1 (right corners) or 2 (rounded corners).)\n" +"", None)) + self.button_sweep.setText(_translate("Form", "Section Sweep", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweeping", None)) + self.button_click_for_plane.setToolTip(_translate("Form", "Click:\n" +"Create a rectangular Plane perpendicular to the view at location of one mouse click.\n" +"Define the width and the length of the Plane if needed.\n" +"- Click first on the Button then click once on the View.\n" +"- Click first on the Button then click once on top of one object of the View\n" +" to attach the plane at this object.\n" +"- You can also select an already existing point first and click the button to attach the plane.\n" +"\n" +"NB: The plane width and length can be defined first.\n" +"", None)) + self.button_click_for_plane.setText(_translate("Form", "Click", None)) + self.length_plane.setToolTip(_translate("Form", "Length of the Plane.", None)) + self.length_plane.setText(_translate("Form", "10.0", None)) + self.width_plane.setToolTip(_translate("Form", "Width of the Plane.", None)) + self.width_plane.setText(_translate("Form", "10.0", None)) + self.button_planeandaxis_plane.setToolTip(_translate("Form", "Plane=(Plane, Axis):\n" +"Create a Plane crossing a Line and perpendicular to a Plane.\n" +"- First select a plane and a line NOT on the previous plane\n" +"- Second push this button\n" +"\n" +"NB: The plane created can be rotated if a none null angle is defined first.", None)) + self.button_planeandaxis_plane.setText(_translate("Form", "Plane=(Plane, Axis)", None)) + self.angle_planeandaxis_plane.setToolTip(_translate("Form", "Angle of rotation of the created Plane (in degrees).", None)) + self.angle_planeandaxis_plane.setText(_translate("Form", "0.0", None)) + self.button_axisandpoint_plane.setToolTip(_translate("Form", "Plane=(Point, Axis):\n" +"Create a plane crossing a Line and a Point.\n" +"- First select a line and a point NOT on the previous line\n" +"- Second push this button", None)) + self.button_axisandpoint_plane.setText(_translate("Form", "Plane=(Point, Axis)", None)) + self.button_axis_point_plane.setToolTip(_translate("Form", "Plane=(Point, _|Axis):\n" +"Create a plane perpendicular to a Line and crossing a Point.\n" +"- First select a line and a point NOT on the previous line\n" +"- Second push this button", None)) + self.button_axis_point_plane.setText(_translate("Form", "Plane=(Point, _|Axis)", None)) + self.button_face_tangent.setToolTip(_translate("Form", "Face Tangent:\n" +"Create a tanget Plane at click location of a Face.\n" +"- First click in the view to select and object,\n" +"- Second push this button\n" +"-Third click on a location on the selected object.\n" +"\n" +"NB: The plane width and length can be defined first.", None)) + self.button_face_tangent.setText(_translate("Form", "Face Tangent", None)) + self.length_plane_2.setToolTip(_translate("Form", "Length of the Plane.", None)) + self.length_plane_2.setText(_translate("Form", "10.0", None)) + self.width_plane_2.setToolTip(_translate("Form", "Width of the Plane.", None)) + self.width_plane_2.setText(_translate("Form", "10.0", None)) + self.button_threepoints_plane.setToolTip(_translate("Form", "Plane=(3 Points):\n" +"Create a Plane crossing 3 Points.\n" +"- First select 3 different points\n" +"- Second push this button", None)) + self.button_threepoints_plane.setText(_translate("Form", "Plane=(3 Points)", None)) + self.button_distPlane.setToolTip(_translate("Form", "Plane=(Plane,dist):\n" +"Create a Plane parallel to a Plane at a given distance.\n" +"- First select a plane or several Planes\n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The distance to the plane created can be defined first.\n" +"Positive number in one direction and negative in the other one.\n" +"The second number indicates the number of planes to create.\n" +"With option \"Object copy\" in \"Ori. Pref.\" TAB\n" +" - If a Face of a Cube is selected the Cube is duplicate with the \n" +"corresponding Face at the defined distance from the original.\n" +"Several Faces of the cube can be selected.", None)) + self.button_distPlane.setText(_translate("Form", "Plane=(Plane,dist)", None)) + self.dist_plane.setToolTip(_translate("Form", "Distance to the new plane.\n" +"Can be negative for the reverse direction!", None)) + self.dist_plane.setText(_translate("Form", "10.0", None)) + self.spin_dist_plane.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_planeandpoint_plane.setToolTip(_translate("Form", "Plane=(Point, Plane):\n" +"Create a plane crossing a Point and parallel to a Plane.\n" +"- First select a plane and a point NOT on the previous plane\n" +"- Second push this button\n" +"\n" +"NB: you can enlarge the created new plane by setting first an extension length.", None)) + self.button_planeandpoint_plane.setText(_translate("Form", "Plane=(Point, Plane)", None)) + self.extension_planePointPlane.setToolTip(_translate("Form", "Length for the extensions of the new Plane compared to initial one.", None)) + self.extension_planePointPlane.setText(_translate("Form", "0.0", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab1_3), _translate("Form", "Plane 1/2", None)) + self.button_object_center_planes.setToolTip(_translate("Form", "Object(s) Center Planes:\n" +"Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).\n" +"- First select one or severl objects\n" +"- Second push this button", None)) + self.button_object_center_planes.setText(_translate("Form", "Object(s) Center Planes", None)) + self.button_extension_plane.setToolTip(_translate("Form", "Enlarge(Plane):\n" +"Extend a Plane in each dimension.\n" +"- First select a Plane (or several Planes) \n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The percentage of the extension can be defined first.", None)) + self.button_extension_plane.setText(_translate("Form", "Enlarge(Plane)", None)) + self.extension_plane.setToolTip(_translate("Form", "Extension of the Plane in each dimension in percentage.", None)) + self.extension_plane.setText(_translate("Form", "50.0", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab1_4), _translate("Form", "Plane 2/2", None)) + self.button_boundingboxes.setToolTip(_translate("Form", "Create bounding boxes around each of selected object(s).\n" +"6 rectangles at the limits of each bounding boxes will be created.", None)) + self.button_boundingboxes.setText(_translate("Form", "Bounding Box(es)", None)) + self.button_boundingbox.setToolTip(_translate("Form", "Create one bounding box around all of selected object(s).\n" +"6 rectangles at the limits of the bounding box will be created.", None)) + self.button_boundingbox.setText(_translate("Form", "Bounding Box", None)) + self.checkBox_volumBB.setToolTip(_translate("Form", "if \"Vol.\" is toggled:\n" +" In Addition of rectangles, the Bounding box will be also created as a Volume.", None)) + self.checkBox_volumBB.setText(_translate("Form", "Vol.", None)) + self.button_cylinder_create.setToolTip(_translate("Form", "Create a Cylinder aligned on Axes:\n" +"- First select one or several couple of ( Axis and a Ref. Point). \n" +"- Define Diameter and Length if needed.\n" +"Then Click the button...\n" +"It will create a Cylinder aligned on the selected axis \n" +"with one of the extremities at the Ref. point,\n" +"for all couple selected.", None)) + self.button_cylinder_create.setText(_translate("Form", "Cylinder", None)) + self.diameter_cylinder.setToolTip(_translate("Form", "Radius of the Cylinder.", None)) + self.diameter_cylinder.setText(_translate("Form", "2.0", None)) + self.length_cylinder.setToolTip(_translate("Form", "Length of the Cylinder.\n" +"Negative value will reverse the direction from Ref. Point", None)) + self.length_cylinder.setText(_translate("Form", "20.0", None)) + self.button_cube_create.setToolTip(_translate("Form", "Create a Cuboid aligned on Axes:\n" +"- First select one or several couple of ( Axis and a Ref. Point). \n" +"- Define Dimensions if needed.\n" +"Then Click the button...\n" +"It will create a Cube aligned on the selected axis \n" +"with one of the extremities at Ref. point,\n" +"for all couple selected.", None)) + self.button_cube_create.setText(_translate("Form", "Cube", None)) + self.section_cube.setToolTip(_translate("Form", "Section (Length, Width) of the Cube.", None)) + self.section_cube.setText(_translate("Form", "2.0,2.0", None)) + self.height_cube.setToolTip(_translate("Form", "Heigth of the Cube.\n" +"Negative value will reverse the direction from Ref. Point", None)) + self.height_cube.setText(_translate("Form", "20.0", None)) + self.button_sphere_create.setToolTip(_translate("Form", "Create a Sphere shell:\n" +"- First select one or several Center Point(s). \n" +"- Define Diameter if needed.\n" +"Then Click the button...\n" +"It will create Sphere shell(s) centered\n" +"at the selected point(s).", None)) + self.button_sphere_create.setText(_translate("Form", "Sphere", None)) + self.diameter_sphere.setToolTip(_translate("Form", "Diameter of the Sphere.", None)) + self.diameter_sphere.setText(_translate("Form", "10.0", None)) + self.button_dome_create.setToolTip(_translate("Form", "Create a full geodesic dome shell:\n" +"- First select one or several Center Point(s). \n" +"- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed.\n" +"Then Click the button...\n" +"It will create full geodesic dome shell(s) with a X-Y-symmetry plane \n" +"for even frequencies and centered\n" +"at the selected point(s).\n" +"\n" +"If Frequency Parameter = 1, the code create an icosahedron. \n" +"An icosahedron is a polyhedron with 20 faces.\n" +"\n" +"Original code from : Ulrich Brammer", None)) + self.button_dome_create.setText(_translate("Form", "Dome", None)) + self.spin_frequency_dome.setToolTip(_translate("Form", "Frequency Parameter (Integer between 1 to 20).", None)) + self.diameter_dome.setToolTip(_translate("Form", "Diameter of the Dome.", None)) + self.diameter_dome.setText(_translate("Form", "10.0", None)) + self.button_letter.setToolTip(_translate("Form", "AB:\n" +"Create 3D Text attached to a Point. \n" +"- First select a Plane\n" +"- Then push this button\n" +"in this case the center of the text is attached to center of the Plane;\n" +"or\n" +"- First select a Plane and a Point on the Plane\n" +"- Then push this button\n" +"NB:\n" +" Change the text and his size if needed", None)) + self.button_letter.setText(_translate("Form", "AB", None)) + self.letter.setToolTip(_translate("Form", "Put the desired text here", None)) + self.letter.setText(_translate("Form", "A", None)) + self.size_letter.setToolTip(_translate("Form", "Size of the font.", None)) + self.size_letter.setText(_translate("Form", "2.0", None)) + self.button_revolve.setToolTip(_translate("Form", "Revolve:\n" +"Make the revolution of Edge(s) or Wire(s) around an Axis:\n" +"- Select one or several wire(s)\n" +"- Then push this button\n" +"or\n" +"- Select FIRST one Point as center of rotation and one Axis as rotation axis !\n" +"- Select one or several wire(s)\n" +"- Then push this button\n" +"\n" +"NB:\n" +" You can also define the angle of revolution if needed\n" +" If no Axis is selected the Z axis is considered as Axis of rotation !\n" +" If no Point is selected the Origin is considered as Center of rotation !", None)) + self.button_revolve.setText(_translate("Form", "Revolve", None)) + self.angle_revolve.setToolTip(_translate("Form", "Angle of the revolution in degrees.", None)) + self.angle_revolve.setText(_translate("Form", "360", None)) + self.button_common.setToolTip(_translate("Form", "Compute the common parts between selected shapes.\n" +"- Select at least two objects and click.\n" +"\n" +"Highlight common parts by showing the common shape in red and setting half-transparency on original parts (the original objects are not modified).\n" +"Original code from HighlightCommon.FCMacro\n" +" https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro\n" +" Authors = 2015 Javier Martinez Garcia\n" +"", None)) + self.button_common.setText(_translate("Form", "Common", None)) + self.button_difference.setToolTip(_translate("Form", "Compute the difference parts between selected shapes.\n" +"- Select two objects and click.\n" +"\n" +"Compute the difference between two shapes. Additions are marked red, removals are marked green. Both original parts will be half transparent. The volume of the additions and removals are printed in the console. \n" +"Original code from HighlightDifference.FCMacro\n" +" https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro\n" +" Authors = 2015 GaĆ«l Ecorchard (Galou)", None)) + self.button_difference.setText(_translate("Form", "Difference", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Objects_Tab2_2), _translate("Form", "Object", None)) + self.button_alignface2view.setToolTip(_translate("Form", "Align the face of selected object(s) to the actual view Plane.\n" +" - Click first to select a Face of one or several objects.\n" +"These objects will be moved not the point of view.\n" +"Then Click the button.\n" +"\n" +"NB:\n" +" The center of rotation is the center of the bounbing box if possible or \n" +" the center of the Face.\n" +" \n" +" if the Face of the object selected is already aligned to the view Plane,\n" +" a rotation of 180 deg is applied to the object.\n" +" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n" +"\n" +" Two clicks will rotate by 180 deg the moving objects.\n" +"\n" +"", None)) + self.button_alignface2view.setText(_translate("Form", "Align Face to View", None)) + self.button_align_faces.setToolTip(_translate("Form", "Align the Face(s) from selected object(s) to the last Face selected.\n" +" - Click first to select a Face of an object or several Faces from several objects. \n" +"These objects will be moved.\n" +" - Click second to select a Face to align to (the last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +"NB:\n" +" The center of rotation is the center of the bounbing box if possible or \n" +" the center of the Face.\n" +" \n" +" if the Face of the object selected is already aligned to the last one,\n" +" a rotation of 180 deg is applied to the object.\n" +" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n" +"\n" +" Two clicks will rotate by 180 deg the moving objects.\n" +"", None)) + self.button_align_faces.setText(_translate("Form", "Align Faces", None)) + self.angle_align_faces.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Faces.", None)) + self.angle_align_faces.setText(_translate("Form", "0.0", None)) + self.button_align_edges.setToolTip(_translate("Form", "Align the Edge(s) from selected object(s) to the last Edge selected.\n" +" - Click first to select an Edge of an object or several Edges from several objects. \n" +"These objects will be moved.\n" +" - Click second to select an Edge to align to (the last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +"NB:\n" +" The center of rotation is the center of the bounbing box if possible or \n" +" the center of the Edge.\n" +" \n" +" if the Edge of the object selected is already aligned to the last one,\n" +" a rotation of 180 deg is applied to the object.\n" +" In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n" +"\n" +" Two clicks will rotate by 180 deg the moving objects.\n" +"", None)) + self.button_align_edges.setText(_translate("Form", "Align Edges", None)) + self.angle_align_edges.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None)) + self.angle_align_edges.setText(_translate("Form", "0.0", None)) + self.button_joint_points.setToolTip(_translate("Form", "Joint Point(s) from selected object(s) to the last Point selected.\n" +" - Click first to select a Point of an object or several Points from several objects.\n" +"These objects will be moved. \n" +" - Click second to select an Point to joint to (the last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +"", None)) + self.button_joint_points.setText(_translate("Form", "Joint Points", None)) + self.button_joint_faces.setToolTip(_translate("Form", "Joint Face(s) from selected object(s) to the last Face selected.\n" +" - Click first to select a Face of an object or several Faces from several objects. \n" +"These objects will be moved.\n" +" - Click second to select a Face to joint to (the last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +" Two clicks will rotate by 180 deg the moving objects.\n" +"", None)) + self.button_joint_faces.setText(_translate("Form", "Joint Faces", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.align_tab_2), _translate("Form", "Align", None)) + self.groupBox_20.setTitle(_translate("Form", "Object", None)) + self.button_cut_select_object.setToolTip(_translate("Form", "Select the Object to cut:\n" +"First Click on the object in the view \n" +"and push this button to accept...", None)) + self.button_cut_select_object.setText(_translate("Form", "Select Object", None)) + self.button_cut_select_line.setToolTip(_translate("Form", "Select the Line to cut the Object along:\n" +"First Click on the line/edge in the view \n" +"and push this button to accept...", None)) + self.button_cut_select_line.setText(_translate("Form", "Select Cut Line", None)) + self.button_cut_select_plane.setToolTip(_translate("Form", "Select the Reference Plane to cut the Object from:\n" +"First Click on the plane in the view \n" +"and push this button to accept...\n" +"\n" +"The Reference Plane is the Plane you pose the object on before to use a saw! \n" +"(Note that the Angle is calculated from the Normal at this Plane)", None)) + self.button_cut_select_plane.setText(_translate("Form", "Select Ref. Plane", None)) + self.label_angle_3.setToolTip(_translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" +"\n" +" 0.0 means that the Plane of cutting is along the Cut Line with \n" +"a 90 deg angle with Reference Plane.", None)) + self.label_angle_3.setText(_translate("Form", "Angle", None)) + self.angle_cut_object.setToolTip(_translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" +"\n" +" 0.0 means that the Plane of cutting is along the Cut Line with \n" +"a 90 deg angle with Reference Plane.", None)) + self.angle_cut_object.setText(_translate("Form", "0.0", None)) + self.label_thickness_2.setToolTip(_translate("Form", "Thickness of the Cut.\n" +"\n" +"i.e. the thickness of a saw.", None)) + self.label_thickness_2.setText(_translate("Form", "Thickness", None)) + self.thickness_cut_object.setToolTip(_translate("Form", "Thickness of the Cut.\n" +"\n" +"i.e. the thickness of a saw.", None)) + self.thickness_cut_object.setText(_translate("Form", "0.0", None)) + self.button_cut_reset.setText(_translate("Form", "Reset", None)) + self.button_cut_apply.setToolTip(_translate("Form", "Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.", None)) + self.button_cut_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.cut_tab_2), _translate("Form", "Cut", None)) + self.ObjRot_button_select.setToolTip(_translate("Form", "- Select one or several object(s) in the view and \n" +"- Click on this button.\n" +"\n" +"NB\n" +"Once object(s) are selected an other Click will unselect them !\n" +"Selected Object(s) will be displayed with 75% of transparency.", None)) + self.ObjRot_button_select.setText(_translate("Form", "Select Object(s)", None)) + self.ObjRot_comboBox_axis.setItemText(0, _translate("Form", "X", None)) + self.ObjRot_comboBox_axis.setItemText(1, _translate("Form", "Y", None)) + self.ObjRot_comboBox_axis.setItemText(2, _translate("Form", "Z", None)) + self.ObjRot_comboBox_axis.setItemText(3, _translate("Form", "To select", None)) + self.ObjRot_button_select_axis.setText(_translate("Form", "Select", None)) + self.tabWidget_10.setTabText(self.tabWidget_10.indexOf(self.tab_18), _translate("Form", "Axis", None)) + self.ObjRot_comboBox_center.setItemText(0, _translate("Form", "Origin", None)) + self.ObjRot_comboBox_center.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjRot_comboBox_center.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjRot_comboBox_center.setItemText(3, _translate("Form", "To select", None)) + self.ObjRot_button_select_center.setText(_translate("Form", "Select", None)) + self.tabWidget_10.setTabText(self.tabWidget_10.indexOf(self.tab_19), _translate("Form", "Center", None)) + self.groupBox_21.setTitle(_translate("Form", "Angle of rotation :", None)) + self.tabWidget_11.setTabText(self.tabWidget_11.indexOf(self.tab_20), _translate("Form", "Define", None)) + self.ObjRot_button_select_angle.setToolTip(_translate("Form", "Calculate angle from 2 objects.\n" +"Angle measurement between two Edges or two Planes\n" +"- Select the 2 Edges and\n" +"- Click this button\n" +"or\n" +"- Select the 2 Planes and\n" +"- Click this button\n" +"or\n" +"- Select one Edge and one Plane and\n" +"- Click this button\n" +"\n" +"NB:\n" +" Normals of Planes will be used. ", None)) + self.ObjRot_button_select_angle.setText(_translate("Form", "Select", None)) + self.tabWidget_11.setTabText(self.tabWidget_11.indexOf(self.tab_21), _translate("Form", "Select", None)) + self.ObjRot_lineEdit_angle.setText(_translate("Form", "0.0", None)) + self.label_angle_4.setText(_translate("Form", " (deg)", None)) + self.ObjRot_button_reset.setText(_translate("Form", "Reset", None)) + self.ObjRot_button_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.rotate_tab_2), _translate("Form", "Rotate", None)) + self.ObjTrans_button_select.setToolTip(_translate("Form", "- Select one or several object(s) in the view and \n" +"- Click on this button.\n" +"\n" +"NB\n" +"Once object(s) are selected an other Click will unselect them !\n" +"Selected Object(s) will be displayed with 75% of transparency.", None)) + self.ObjTrans_button_select.setText(_translate("Form", "Select Object(s)", None)) + self.ObjTrans_duplicate.setToolTip(_translate("Form", "Toggle this check box to generate copies the object during the Translation.\n" +"Copy means that the original Object will be left in his original location.\n" +"NB:\n" +"\n" +"1 copy requested : \n" +" - If one starting point and one ending point are selected.\n" +" Only one copy is done!\n" +"\n" +" - If one starting point and several ending points are selected.\n" +" One copy is done at each ending points selected!\n" +"\n" +"N copies requested :\n" +" - If one starting point and one ending point are selected.\n" +" Only one copy is done at the ending point then at double distance\n" +" of the ending point along the line defined by starting and ending point,\n" +" and so on!\n" +" - If one starting point and several ending points are selected.\n" +" One copy is done at each ending points selected, then at double distance\n" +" of each ending points along the line defined by starting and the current \n" +" ending point, and so on!", None)) + self.ObjTrans_duplicate.setText(_translate("Form", "Copy", None)) + self.ObjTrans_spin.setToolTip(_translate("Form", "The number of copies.", None)) + self.ObjTrans_deepCopy.setToolTip(_translate("Form", "Toggle this check box to realize \"deep\" copies. \n" +"Means that all children and parents of selected Object(s) will be copied too! \n" +"\n" +"If the object selected is Pad and his link is on Sketch, and Skecth parent is Box\n" +"Box \n" +"Pad \n" +" |_Sketch\n" +"\n" +"if the current check box is toggle the result will be : \n" +"Box \n" +"Pad\n" +" |_Sketch \n" +"Box001 \n" +"Pad001 \n" +" |_Sketch001 \n" +"\n" +"if not the result will be : \n" +"Box \n" +"Pad \n" +"Pad001 \n" +" |_Sketch \n" +"\n" +"On the last result the same Sketch is both link to Pad001 but also still to Pad.", None)) + self.ObjTrans_deepCopy.setText(_translate("Form", "Deep", None)) + self.groupBox_22.setTitle(_translate("Form", "Starting Point :", None)) + self.ObjTrans_comboBox_start.setItemText(0, _translate("Form", "Origin", None)) + self.ObjTrans_comboBox_start.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjTrans_comboBox_start.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjTrans_comboBox_start.setItemText(3, _translate("Form", "To select", None)) + self.ObjTrans_comboBox_start.setItemText(4, _translate("Form", "To define", None)) + self.ObjTrans_button_select_start.setText(_translate("Form", "Select", None)) + self.label_11.setText(_translate("Form", "X :", None)) + self.ObjTrans_start_x.setText(_translate("Form", "0.0", None)) + self.label_12.setText(_translate("Form", "Y :", None)) + self.ObjTrans_start_y.setText(_translate("Form", "0.0", None)) + self.label_13.setText(_translate("Form", "Z :", None)) + self.ObjTrans_start_z.setText(_translate("Form", "0.0", None)) + self.tabWidget_12.setTabText(self.tabWidget_12.indexOf(self.tab_22), _translate("Form", "Start", None)) + self.groupBox_23.setTitle(_translate("Form", "Ending Point :", None)) + self.ObjTrans_comboBox_end.setItemText(0, _translate("Form", "Origin", None)) + self.ObjTrans_comboBox_end.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjTrans_comboBox_end.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjTrans_comboBox_end.setItemText(3, _translate("Form", "To select", None)) + self.ObjTrans_comboBox_end.setItemText(4, _translate("Form", "To define", None)) + self.ObjTrans_comboBox_end.setItemText(5, _translate("Form", "Relative", None)) + self.ObjTrans_button_select_end.setText(_translate("Form", "Select", None)) + self.label_14.setText(_translate("Form", "Z :", None)) + self.ObjTrans_end_z.setText(_translate("Form", "0.0", None)) + self.label_15.setText(_translate("Form", "Y :", None)) + self.ObjTrans_end_y.setText(_translate("Form", "0.0", None)) + self.label_16.setText(_translate("Form", "X :", None)) + self.ObjTrans_end_x.setText(_translate("Form", "0.0", None)) + self.tabWidget_12.setTabText(self.tabWidget_12.indexOf(self.tab_23), _translate("Form", "End", None)) + self.ObjTrans_button_reset.setText(_translate("Form", "Reset", None)) + self.ObjTrans_button_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.translate_tab_2), _translate("Form", "Translate", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Modif_Tab_2), _translate("Form", "Modif.", None)) + self.button_alignview.setToolTip(_translate("Form", "Set the current view perpendicular to the selected Face, \n" +"or aligned to the selected Axis, \n" +"or aligned on 2 Points.\n" +"ReClick with same selection, will reverse the direction.", None)) + self.button_alignview.setText(_translate("Form", "Align View to ...", None)) + self.button_trackcamera.setText(_translate("Form", "Camera Track", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.View_Tab_2), _translate("Form", "View", None)) + self.button_isView.setToolTip(_translate("Form", "Detect the position of the camera.\n" +"The returned value is the value provided \n" +"by the function getCameraOrientation().", None)) + self.button_isView.setText(_translate("Form", "View ?", None)) + self.button_isParallel.setToolTip(_translate("Form", "Check if two faces or two Edges are Parallel:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isParallel.setText(_translate("Form", "are Parallel ?", None)) + self.button_isAngle.setToolTip(_translate("Form", "Check for two Edges/Planes angle:\n" +"Angle measurement between two Edges or two Planes\n" +"- Select the 2 Edges and\n" +"- Click this button\n" +"or\n" +"- Select the 2 Planes and\n" +"- Click this button\n" +"or\n" +"- Select one Edge and one Plane and\n" +"- Click this button\n" +"\n" +"NB:\n" +" Normals of Planes will be used. ", None)) + self.button_isAngle.setText(_translate("Form", "Angle ?", None)) + self.button_isLength.setToolTip(_translate("Form", "Check for Line Length:\n" +"Length measurement and Delta values (on main Axes) for a Line\n" +"- Select the Line and\n" +"Click this button\n" +" ", None)) + self.button_isLength.setText(_translate("Form", "Length ?", None)) + self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) + self.button_isDistance.setToolTip(_translate("Form", "Check for two Points distance:\n" +"Distances measurement and Delta values (on main Axes) between two Points\n" +"- Select the 2 Points and\n" +"Click this button\n" +" ", None)) + self.button_isDistance.setText(_translate("Form", "Distance ?", None)) + self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" +"Area measurement for a Plane or a set of Planes.\n" +"- Select One or several Planes and\n" +"Click this button", None)) + self.button_isArea.setText(_translate("Form", "Area ?", None)) + self.button_isCoplanar.setToolTip(_translate("Form", "Check if two faces or two Edges are Coplanar:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isCoplanar.setText(_translate("Form", "are Coplanar ?", None)) + self.button_isClearance.setToolTip(_translate("Form", "Check for two Objects Clearance distance:\n" +"Quick measurements between parallel faces and similarly placed objects\n" +"- Select the 2 Objects and\n" +"Click this button", None)) + self.button_isClearance.setText(_translate("Form", "Distance Clearance ?", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_24), _translate("Form", "Check", None)) + self.button_WF_quit.setText(_translate("Form", "Close", None)) + self.label_release.setText(_translate("Form", "2015", None)) + diff --git a/WorkFeature/Ui/WFGui_2015.ui b/WorkFeature/Ui/WFGui_2015.ui new file mode 100644 index 0000000..14bfa63 --- /dev/null +++ b/WorkFeature/Ui/WFGui_2015.ui @@ -0,0 +1,6899 @@ + + + Form + + + + 0 + 0 + 382 + 845 + + + + WorkFeature + + + + ../Icons/WF_wf.svg../Icons/WF_wf.svg + + + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + 1 + + + 0 + + + true + + + + + 0 + 0 + 362 + 786 + + + + + + + + 0 + 0 + + + + QTabWidget::West + + + 0 + + + + + ../Icons/WF_Axes.svg../Icons/WF_Axes.svg + + + Ori. Pref. + + + + + + Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes + + + Origin + + + + ../Icons/WF_Axes.svg../Icons/WF_Axes.svg + + + + 32 + 32 + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + Preferences : + + + + + + Toggle here if you want a lot of information printed into report View. + + + Verbose + + + false + + + false + + + + + + + Change the successive lines to be bicolor (red and white) for the following functions: + - in "Axis 1/2" TAB: + Axes=Cut(Wire) + - in "Circle" TAB: + Arcs=Cut(Circle) + + + + Bi Color + + + false + + + + + + + Force the duplication of the Parent Object for the following functions: + - in "Axis 2/2" TAB: + Axes=(Axis,Pt,dist) + If an Edge of a Cube is selected the Cube is duplicate + with the corresponding + Edge at the defined distance from the original. + - in "Plane" TAB: + Plane=(Plane,dist) + + + Object copy + + + + + + + + + Change the tolerance for the following functions: + - in "Check" TAB: + are Parallel? + are Perpendicular? + are Coplanar? + + + Tolerance + + + + + + + + 60 + 16777215 + + + + Change the tolerance for the following functions: + - in "Check" TAB: + are Parallel? + are Perpendicular? + are Coplanar? + + + 1e-10 + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + ../Icons/WF_point.svg../Icons/WF_point.svg + + + Point 1/2 + + + Point + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Create a Point at center location of each selected Circle(s) or Arc(s). + + + Circle(s) Center + + + + ../Icons/WF_centerCirclePoint.svg../Icons/WF_centerCirclePoint.svg + + + + 32 + 32 + + + + + + + + Point(s)=(Point(s),Line(s)): +Create projection(s) of Point(s) onto Line(s). +- First select one (or several) Point(s) +- Second select one or several) Line(s) +- Then push this button + +Plot the intersection point T on a Line given one Line and One Point C. +The Vector TC is perpendicular to the Line. +The symetric point Cprime is also created as TC=TCprime. + + + Point(s)=(Pt(s),Line(s)) + + + + ../Icons/WF_pointLinePoint.svg../Icons/WF_pointLinePoint.svg + + + + 32 + 32 + + + + + + + + Create a Point at center location of each selected Face(s). + + + Face(s) Center + + + + ../Icons/WF_centerFacePoint.svg../Icons/WF_centerFacePoint.svg + + + + 32 + 32 + + + + + + + + + + + 16777215 + 16777215 + + + + Create Point(s): +Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s). +The number indicates how many parts to consider. + + + Line(s) Center + + + + ../Icons/WF_centerLinePoint.svg../Icons/WF_centerLinePoint.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number indicates in how many parts each selected Lines(s) will be cut (Max 100). + + + 2 + + + 100 + + + 1 + + + + + + + + + Create a Point at mean location of all selected points. + + + Points Center + + + + ../Icons/WF_NpointsPoint.svg../Icons/WF_NpointsPoint.svg + + + + 32 + 32 + + + + + + + + Create a point at the intersection of the Line and Plane selected. + + + Point=(Line,Face) + + + + ../Icons/WF_lineFacePoint.svg../Icons/WF_lineFacePoint.svg + + + + 32 + 32 + + + + + + + + + + Create a Point at center location of all selected Object(s). + if BBox is not toggled + This point is the MEAN location of all center of Mass (if exist) of all objects. + All center of Mass will be created too. + +if BBox check box is toggled + This point is the center of the Global X,Y,Z bounding box of all objects. + This bounding box alway exists (especially for draft objects). + Be aware this point is not necessary the center of Mass of all Objects! + + + Object(s) Center + + + + ../Icons/WF_centerObjectsPoint.svg../Icons/WF_centerObjectsPoint.svg + + + + 32 + 32 + + + + + + + + if BBox check box is toggled + This point is the center of the Global X,Y,Z bounding box of all objects. + This bounding box alway exists (especially for draft objects). + Be aware this point is not necessary the center of Mass of all Objects! + + + BBox + + + + + + + + + Create Points at start and end location of each selected Line(s). + + + Line(s) Extrema + + + + ../Icons/WF_extremaLinePoint.svg../Icons/WF_extremaLinePoint.svg + + + + 32 + 32 + + + + + + + + Point(s)=(Point(s),Face(s)): +Create projection(s) of Point(s) onto Face(s). +- First select one (or several) Point(s) +- Second select one or several) Plane(s) +- Then push this button + +Plot the intersection point T on a Plane given one Plane and One Point C. +The Vector TC is perpendicular to the plane. + + + Point(s)=(Pt(s),Face(s)) + + + + ../Icons/WF_pointFacePoint.svg../Icons/WF_pointFacePoint.svg + + + + 32 + 32 + + + + + + + + + + ../Icons/WF_point.svg../Icons/WF_point.svg + + + Point 2/2 + + + + + + Plot one or two Point(s) at minimum distance of two Lines +Create a Point at intersection of 2 crossing Lines. + + + Point=(Line,Line) + + + + ../Icons/WF_lineLinePoint.svg../Icons/WF_lineLinePoint.svg + + + + 32 + 32 + + + + + + + + QLayout::SetFixedSize + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Create a Point at a certain distance along the line +respecting to the choosen reference starting point. + + + Point along Line + + + + ../Icons/WF_alongLinePoint.svg../Icons/WF_alongLinePoint.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Distance from the extremity + + + 0.0 + + + + + + + + + + + Point=(Point,Ax,dist): +Create a Point along the given Axis, at a given distance of the selected Point. +The Axis indicate the direction along where the Point is duplicate. +(you can also select several axes to define different directions) +- First select a Point (you can select several points) and one or several Axis +- Second push this button + +NB: + - The distance between points can be defined first. +Positive number in one direction and negative in the other one. +The second number indicates the number of Points to create. + + + + Point=(Pt,Ax,dist) + + + + ../Icons/WF_distPointPoint.svg../Icons/WF_distPointPoint.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Distance to the new Axis. +Can be negative for the reverse direction! + + + 10.0 + + + + + + + + 30 + 0 + + + + + 30 + 16777215 + + + + The number of copies (Max 100). + + + QAbstractSpinBox::NoButtons + + + false + + + 1 + + + 100 + + + 1 + + + 1 + + + + + + + + + + + + 16777215 + 16777215 + + + + Create Points by Partition: +Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize. +The number indicates in how many parts to cut. +Wires can be: + Line + Circle + Arc + Ellipse +An object must also be seleted but before any Wire to cut all his edges! + + + Points=Cut(Wire) + + + + ../Icons/WF_cutWirePoints.svg../Icons/WF_cutWirePoints.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number indicates in how many parts the selected Line will be cut (Max 100). + + + 2 + + + 100 + + + 1 + + + + + + + + + Create a set of Points on a Plane perpendicular to the view at location of mouse clicks. +- Click first on the Button then click on the View (with no object in background). +- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object. + + + + Click + + + + ../Icons/WF_clickPoint.svg../Icons/WF_clickPoint.svg + + + + 32 + 32 + + + + true + + + + + + + Create Base Point of all selected Object(s). + + + Object(s) Base Point + + + + ../Icons/WF_objectBasePoint.svg../Icons/WF_objectBasePoint.svg + + + + 32 + 32 + + + + + + + + Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane: +- First select an existing Skecth; +- Select as much as Points needed; +Then click on this button. + + + Point(s) to Sketch + + + + ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + ../Icons/WF_axis.svg../Icons/WF_axis.svg + + + Axis 1/2 + + + + + + Create 3 Axes at center location of all selected Object(s). + + + Object(s) X, Y, Z Axes + + + + ../Icons/WF_centerObjectsAxes.svg../Icons/WF_centerObjectsAxes.svg + + + + 32 + 32 + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Create an Axis crossing 2 Points. + + + Two Points Axis + + + + ../Icons/WF_2pointsLine.svg../Icons/WF_2pointsLine.svg + + + + 32 + 32 + + + + + + + + + 40 + 16777215 + + + + Distance for the extensions on extrema + + + 0.0 + + + + + + + + + Axis=(Points): +Create a "best fit" line from a set of points using Singular Value Decomposition.. +- First select several Points +- Then push this button + +The 3 eigenvectors are generated. +Orange one is the best fit line. + + + + Axis from Point(s) + + + + ../Icons/WF_NpointsLine.svg../Icons/WF_NpointsLine.svg + + + + 32 + 32 + + + + + + + + + + + + + 16777215 + 16777215 + + + + Create the Axis of a Cylinder. + + + Cylinder(s) Axis + + + + ../Icons/WF_cylinderAxis.svg../Icons/WF_cylinderAxis.svg + + + + 32 + 32 + + + + + + + + + 16777215 + 16777215 + + + + Plane(s) Axes: +Create Perpendicular Axes at the center location of a Plane. + - First select one (or several) Plane(s); + - Then press the button + +or +Create Perpendicular Axes of a Plane at selected locations. + - First select one Plane; + - Second select Point(s) for locations + - Press the button + +NB: Axes are created on both sides of the Plane +The extension is 10 units by defaut but must be changed if needed. + + + Plane(s) Axes + + + + ../Icons/WF_FaceAxis.svg../Icons/WF_FaceAxis.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Create a normal Axis of a Face. +To create a Normal at click location on a Face: +- Click first in the view to select and object, +- then push the button, +- then click on a location on the selected Face. +or +To create several Normal of the face: +- Click first in the view to select and object, +- then select one or several points of the face +- then push the button. +(These selections can also be done into the Combined View) + + + Face Normal + + + + ../Icons/WF_FaceNormal.svg../Icons/WF_FaceNormal.svg + + + + 32 + 32 + + + + + + + + + + + 60 + 0 + + + + + 50 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Length of external part of the (Normal) Axis. + If zero In case of cylinder axis the extension will be a percentage of the object length. + If zero and plane of face Normal, the extension will be 10 units. + + + 0.0 + + + + + + + + + + + + + + + 16777215 + 16777215 + + + + Create an Axis Parallel to an Axis (as Direction) and crossing a Point. +- Select one Axis and one (or several) Point(s) NOT on the previous Axis. +Define the length and the attach point if needed. +A Length of Zero means the length of already selected Axis will be used. + + + Axis=(Pt,Dir) + + + + ../Icons/WF_pointLineAxis.svg../Icons/WF_pointLineAxis.svg + + + + 32 + 32 + + + + + + + + + 40 + 16777215 + + + + Define the length of the Axis to create. +A Length of Zero means the length of already selected Axis will be used. + + + 0.0 + + + + + + + + 60 + 16777215 + + + + The Attach Point will be at : +Start of the Axis; +Mid of the Axis; +End of the Axis. + + + 1 + + + + Start + + + + + Mid + + + + + End + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Create an Axis Perpendicular to an Axis and crossing a Point +-Select one Axis and one (or several) Point(s) NOT on the previous Axis. + + + Axis=(Axis,Point) + + + + ../Icons/WF_linePointAxis.svg../Icons/WF_linePointAxis.svg + + + + 32 + 32 + + + + + + + + + 40 + 16777215 + + + + Distance for the extensions on extrema. + + + 0.0 + + + + + + + + + Create an Axis between two Axes. +-Select two Axes. + + + Axis=(Line,Line) + + + + ../Icons/WF_twoLinesAxis.svg../Icons/WF_twoLinesAxis.svg + + + + 32 + 32 + + + + + + + + Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane. +-Select one Plane, one Axis and one Point ON the previous Axis. + + + Axis=(Plane,Point,Axis) + + + + ../Icons/WF_planeLinePointAxis.svg../Icons/WF_planeLinePointAxis.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + ../Icons/WF_axis.svg../Icons/WF_axis.svg + + + Axis 2/2 + + + + + + Axes=(Pl(s),Axes): +Create projection(s) of Axes onto Plane(s). +- First select one (or several) Line(s) +- Second select one or several) Plane(s) +- Then push this button + + + Axes=(Pl(s),Axes) + + + + ../Icons/WF_linePlaneAxis.svg../Icons/WF_linePlaneAxis.svg + + + + 32 + 32 + + + + + + + + Create an Axis by intersect of 2 Planes. + + + Axis=(Plane,Plane) + + + + ../Icons/WF_2PlanesAxis.svg../Icons/WF_2PlanesAxis.svg + + + + 32 + 32 + + + + + + + + + + Axes=(Axis,Pt,dist): +Create an Axis parallel to a given Axis, Point at a given distance. +The Axis is created along the Plane defined by the given Axis and Point. +- First select an Axis (or several Axes) and a Point +(you can also select several points to define different Planes) +- Second push this button + +NB: + - The distance to the Axis created can be defined first. +Positive number in one direction and negative in the other one. +The second number indicates the number of Axes to create. +With option "Object copy" in "Ori. Pref." TAB + - If an Edge of a Cube is selected the Cube is duplicate with the corresponding +Edge at the defined distance from the original. +Several Edges of the cube can be selected. + + + + Axes=(Axis,Pt,dist) + + + + ../Icons/WF_distAxisAxis.svg../Icons/WF_distAxisAxis.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Distance to the new Axis. +Can be negative for the reverse direction! + + + 10.0 + + + + + + + + 30 + 0 + + + + + 30 + 16777215 + + + + The number of copies (Max 100). + + + QAbstractSpinBox::NoButtons + + + false + + + 1 + + + 100 + + + 1 + + + 1 + + + + + + + + + + + Axes=(Axis,Pt,Pl,a): +Create an Axis with an Angle to a origin Axis. +- First select an Axis to rotate, then a Plane and a rotation Point +- Second push this button +or +- First select an Axis to rotate, then a rotation Axis and a rotation Point +- Second push this button + +NB: +The Axis is created by rotation using : + The Normal of the selected Plane as rotation Axis +and selected Point as rotation Point. +or + The second selected Axis as rotation Axis +and selected Point as rotation Point. + + - The angle (in degrees) of rotation can be defined first. +Positive number in one direction and negative in the other one. + - The second number indicates the number of Axes to create. + + + + + Axes=(Axis,Pt,Pl,a) + + + + ../Icons/WF_angleAxisAxis.svg../Icons/WF_angleAxisAxis.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Angle to the new Axis. +Can be negative for the reverse direction! +(in degrees) + + + 45.0 + + + + + + + + 30 + 0 + + + + + 30 + 16777215 + + + + The number of copies (Max 100). + + + QAbstractSpinBox::NoButtons + + + false + + + 1 + + + 100 + + + 1 + + + 1 + + + + + + + + + + + + 16777215 + 16777215 + + + + Create Axes by Partition: +Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize. +The number indicates in how many parts to cut. +Wires can be: + Line + Circle + Arc + Ellipse +An object must also be seleted but before any Wire to cut all his Edges! +NB: You can change the successive lines to be bicolor (red and white) +in "Ori. Pref." TAB + + + + Axes=Cut(Wire) + + + + ../Icons/WF_cutWireAxes.svg../Icons/WF_cutWireAxes.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number indicates in how many parts the selected Line will be cut (Max 100). + + + 2 + + + 100 + + + 1 + + + + + + + + + + + + 16777215 + 16777215 + + + + Create Axes: +Cut the selected Line in 2(n) parts and create 2(n) Axes. +The number indicates in how many parts to cut. + +NB: You can change the successive lines to be bicolor (red and white) +in "Ori. Pref." TAB + + + Axes=Cut(Axis) + + + + ../Icons/WF_cutAxis.svg../Icons/WF_cutAxis.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number indicates in how many parts the selected Line will be cut (Max 100). + + + 2 + + + 100 + + + 1 + + + + + + + + + + + + 0 + 0 + + + + Enlarge(Axis): +Extend an Axis at two extrema. +- First select an Axis (or several Axes) +- Second push this button + +NB: + - The percentage of the extension can be defined first. + + + Enlarge(Axis) + + + + ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Extension of the Line in percentage. + + + 50.0 + + + + + + + + + Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks. +- Click first on the Button then at least twice click on the View (with no object in background). +- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object. + + + Click + + + + ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg + + + + 32 + 32 + + + + + + + + Create 3 Axes at Base location of all selected Object(s). + + + Object(s) Base Axes + + + + ../Icons/WF_baseObjectsAxes.svg../Icons/WF_baseObjectsAxes.svg + + + + 32 + 32 + + + + + + + + Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane: +- First select an existing Skecth; +- Select as much as Lines needed; +Then click on this button. + + + Axis(es) to Sketch + + + + ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + ../Icons/WF_wire.svg../Icons/WF_wire.svg + + + Wire + + + + + + Examples from http://www.mathcurve.com/ + + + true + + + + + + + + 0 + 0 + + + + 0 + + + + 2D + + + + + + true + + + + + 0 + 0 + 259 + 650 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Equation : + + + + + + + 70 + 16777215 + + + + Y (a,b,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 10 # Radius + + + 32769 + + + + + + + + 70 + 16777215 + + + + b (a, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + b*sin(t) + + + 32769 + + + + + + + Toggle for Polar coordinates: +then x is interpreted as radius + and y is interpreted as angle teta. + + + Polar coord. + + + true + + + + + + + + 70 + 16777215 + + + + X (a,b,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + a*cos(t) + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + a (t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + a + + + 32769 + + + + + + + + + + + + Choose another curve from the list. + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to access to a table where you can edit all parameters of all curves and +save your custom curves. + + + Edit + + + + + + + + + + + true + + + Closed curve + + + + + + + false + + + Create Face + + + + + + + + + + + QFrame::Box + + + QFrame::Raised + + + 3 + + + Name + + + Qt::AlignCenter + + + + + + + Circle + + + + + + + + + Parameters + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0 + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 2*pi + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0.01 + + + 32769 + + + + + + + + + + Type of 2D Curve + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + true + + + Bspline + + + false + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to store the current edited curve into the table. +To save your curve you need to go to "Edit". + + + Store + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to visualize the curve. + + + Apply + + + + + + + + + + + + + + 3D + + + + + + true + + + + + 0 + 0 + 207 + 692 + + + + + + + + + Choose another curve from the list. + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to access to a table where you can edit all parameters of all curves and +save your custom curves. + + + Edit + + + + + + + + + + + QFrame::Box + + + QFrame::Raised + + + 3 + + + Name + + + Qt::AlignCenter + + + + + + + Cylindrical helix + + + + + + + + + Equation : + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + a (t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 10*0.05 #Vert. step + + + 32769 + + + + + + + + 70 + 16777215 + + + + b (a, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 1 + + + 32769 + + + + + + + + 70 + 16777215 + + + + c (a, b, t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 10 # Radius + + + 32769 + + + + + + + + 70 + 16777215 + + + + X (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + c*sin(t) + + + 32769 + + + + + + + + 70 + 16777215 + + + + Y (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 70 + 16777215 + + + + Z (a,b,c,t) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + a*t + + + 32769 + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + c*cos(t) + + + 32769 + + + + + + + + + + Parameters + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t min + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + t max + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 5*2*pi #5 circles + + + 32769 + + + + + + + + 70 + 16777215 + + + + Qt::LeftToRight + + + step + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0.01 + + + 32769 + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 150 + 16777215 + + + + 0 + + + 32769 + + + + + + + + + + Type of 3D Curve + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + Bspline + + + false + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + + + + + Closed curve + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to store the current edited curve into the table. +To save your curve you need to go to "Edit". + + + Store + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Click to visualize the curve. + + + Apply + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + + ../Icons/WF_circle.svg../Icons/WF_circle.svg + + + Circle + + + + + + + + Select an Axis and a Point to create a Circle +centered on the Point, perpendicular to the Axis +with the given radius. + + + Circle=(Axis, center) + + + + ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Radius of the Circle. + + + 10.0 + + + + + + + + + Select an Axis and a Point to create a Circle +centered on the Axis and tangenting the Point. + + + Circle=(Axis, point) + + + + ../Icons/WF_linePointCircle.svg../Icons/WF_linePointCircle.svg + + + + 32 + 32 + + + + + + + + Select 3 Points to create a Circle. + + + Circle=(3 points) + + + + ../Icons/WF_3pointsCircle.svg../Icons/WF_3pointsCircle.svg + + + + 32 + 32 + + + + + + + + + + Create Arcs: +Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs. +The number indicates in how many parts to cut. +- First select as many Circles and Arcs you want +- Second set the number of parts +- Third push this button + +NB: You can change the successive lines to be bicolor (red and white) +in "Ori. Pref." TAB + + + Arcs=Cut(Circle) + + + + ../Icons/WF_cutCircle.svg../Icons/WF_cutCircle.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number indicates in how many parts the selected Circle will be cut (Max 100). + + + 2 + + + 100 + + + 1 + + + + + + + + + Select a center and 2 Points to create an Ellipse. + + + Ellipse=(3 points) + + + + ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Transform Circle(s) and Arc(s) in Sketch's object(s) by projection onto the Sketch's Plane: +- First select an existing Skecth; +- Select as much as Circles and arcs needed; +Then click on this button. + + + Circle(s) to Sketch + + + + ../Icons/WF_2Sketch.svg../Icons/WF_2Sketch.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 121 + + + + + + + + + + ../Icons/WF_Beam.svg../Icons/WF_Beam.svg + + + Sweeping + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + 3 + + + + + + + + if "All" is toggled: + All the wires of the Trajectory selected will be considered. + +Untoggled if you select a Skecth with several curves and you want to process +only the one subselected. + + + All + + + true + + + + + + + For the function : +makePipeShell(shapeList,[isSolid,isFrenet,transition]) +Select a Transition option in case of trajectory with several wires; Transition can be: +# 0 (default), 1 (right corners) or 2 (rounded corners). + + + 2 + + + + No Transition + + + + + Right corners + + + + + Rounded corners + + + + + + + + + 9 + 0 + + + + + 60 + 16777215 + + + + if "Solid" is toggled: + The Beam sweep will generate a solid with a closed selected wire as Section. +If this check box is toggle off: + Or if the Section wire is not closed, only a shell will be created. + + + Solid + + + true + + + + + + + Force the "isFrenet" parameter to True for the function : +makePipeShell(shapeList,[isSolid,isFrenet,transition]) + + + + isFrenet + + + true + + + false + + + + + + + + + Section Sweep: +# Make a loft defined by a list of profiles along a wire. +Will extrude/sweep a Section along a Trajectory like sweep from Part Workbench but: +- the Section center (of Mass) is move at the first point of the Trajectory and; +- the "plane" of the Section is rotate to be perpendicular to the Trajectory. + +- Select first one Section wire (Closed wire will generate volumes by default) +(This Section can be a compound from sketch to realize "tube") +- Select one or several wire(s) as Trajectory(ies) +- Then push this button + +NB: You can change first: +- Solid option (if toggled will generate a solid for Closed wire Section only) +- isFrenet option +- All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep) +- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be: +# 0 (default), 1 (right corners) or 2 (rounded corners).) + + + + Section Sweep + + + + ../Icons/WF_Sweep.svg../Icons/WF_Sweep.svg + + + + 32 + 32 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + ../Icons/WF_plane.svg../Icons/WF_plane.svg + + + Plane 1/2 + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + Click: +Create a rectangular Plane perpendicular to the view at location of one mouse click. +Define the width and the length of the Plane if needed. +- Click first on the Button then click once on the View. +- Click first on the Button then click once on top of one object of the View + to attach the plane at this object. +- You can also select an already existing point first and click the button to attach the plane. + +NB: The plane width and length can be defined first. + + + + Click + + + + ../Icons/WF_clickPlane.svg../Icons/WF_clickPlane.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Length of the Plane. + + + 10.0 + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Width of the Plane. + + + 10.0 + + + + + + + + + + + + 0 + 0 + + + + Plane=(Plane, Axis): +Create a Plane crossing a Line and perpendicular to a Plane. +- First select a plane and a line NOT on the previous plane +- Second push this button + +NB: The plane created can be rotated if a none null angle is defined first. + + + Plane=(Plane, Axis) + + + + ../Icons/WF_planeLinePlane.svg../Icons/WF_planeLinePlane.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Angle of rotation of the created Plane (in degrees). + + + 0.0 + + + + + + + + + Plane=(Point, Axis): +Create a plane crossing a Line and a Point. +- First select a line and a point NOT on the previous line +- Second push this button + + + Plane=(Point, Axis) + + + + ../Icons/WF_linePointPlane.svg../Icons/WF_linePointPlane.svg + + + + 32 + 32 + + + + + + + + Plane=(Point, _|Axis): +Create a plane perpendicular to a Line and crossing a Point. +- First select a line and a point NOT on the previous line +- Second push this button + + + Plane=(Point, _|Axis) + + + + ../Icons/WF_linePointPlane2.svg../Icons/WF_linePointPlane2.svg + + + + 32 + 32 + + + + + + + + + + + 0 + 0 + + + + Face Tangent: +Create a tanget Plane at click location of a Face. +- First click in the view to select and object, +- Second push this button +-Third click on a location on the selected object. + +NB: The plane width and length can be defined first. + + + Face Tangent + + + + ../Icons/WF_FaceTangent.svg../Icons/WF_FaceTangent.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Length of the Plane. + + + 10.0 + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Width of the Plane. + + + 10.0 + + + + + + + + + Plane=(3 Points): +Create a Plane crossing 3 Points. +- First select 3 different points +- Second push this button + + + Plane=(3 Points) + + + + ../Icons/WF_threePointsPlane.svg../Icons/WF_threePointsPlane.svg + + + + 32 + 32 + + + + + + + + + + Plane=(Plane,dist): +Create a Plane parallel to a Plane at a given distance. +- First select a plane or several Planes +- Second push this button + +NB: + - The distance to the plane created can be defined first. +Positive number in one direction and negative in the other one. +The second number indicates the number of planes to create. +With option "Object copy" in "Ori. Pref." TAB + - If a Face of a Cube is selected the Cube is duplicate with the +corresponding Face at the defined distance from the original. +Several Faces of the cube can be selected. + + + Plane=(Plane,dist) + + + + ../Icons/WF_distPlanePlane.svg../Icons/WF_distPlanePlane.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Distance to the new plane. +Can be negative for the reverse direction! + + + 10.0 + + + + + + + + 30 + 0 + + + + + 30 + 16777215 + + + + The number of copies (Max 100). + + + QAbstractSpinBox::NoButtons + + + false + + + 1 + + + 100 + + + 1 + + + 1 + + + + + + + + + + + Plane=(Point, Plane): +Create a plane crossing a Point and parallel to a Plane. +- First select a plane and a point NOT on the previous plane +- Second push this button + +NB: you can enlarge the created new plane by setting first an extension length. + + + Plane=(Point, Plane) + + + + ../Icons/WF_pointPlanePlane.svg../Icons/WF_pointPlanePlane.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Length for the extensions of the new Plane compared to initial one. + + + 0.0 + + + + + + + + + + + ../Icons/WF_plane.svg../Icons/WF_plane.svg + + + Plane 2/2 + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Object(s) Center Planes: +Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s). +- First select one or severl objects +- Second push this button + + + Object(s) Center Planes + + + + ../Icons/WF_centerObjectsPlanes.svg../Icons/WF_centerObjectsPlanes.svg + + + + 32 + 32 + + + + + + + + + + + 0 + 0 + + + + Enlarge(Plane): +Extend a Plane in each dimension. +- First select a Plane (or several Planes) +- Second push this button + +NB: + - The percentage of the extension can be defined first. + + + Enlarge(Plane) + + + + ../Icons/WF_enlargePlane.svg../Icons/WF_enlargePlane.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Extension of the Plane in each dimension in percentage. + + + 50.0 + + + + + + + + + + true + + + + 0 + 0 + + + + + ../Icons/WF_box.svg../Icons/WF_box.svg + + + Object + + + + + + + + + + + 16777215 + 16777215 + + + + Create bounding boxes around each of selected object(s). +6 rectangles at the limits of each bounding boxes will be created. + + + Bounding Box(es) + + + + ../Icons/WF_boundingBoxes.svg../Icons/WF_boundingBoxes.svg + + + + 32 + 32 + + + + + + + + + 16777215 + 16777215 + + + + Create one bounding box around all of selected object(s). +6 rectangles at the limits of the bounding box will be created. + + + Bounding Box + + + + ../Icons/WF_boundingBox.svg../Icons/WF_boundingBox.svg + + + + 32 + 32 + + + + + + + + + + + 60 + 16777215 + + + + if "Vol." is toggled: + In Addition of rectangles, the Bounding box will be also created as a Volume. + + + Vol. + + + + + + + + + QFrame::Plain + + + 4 + + + 0 + + + Qt::Horizontal + + + + + + + + + Create a Cylinder aligned on Axes: +- First select one or several couple of ( Axis and a Ref. Point). +- Define Diameter and Length if needed. +Then Click the button... +It will create a Cylinder aligned on the selected axis +with one of the extremities at the Ref. point, +for all couple selected. + + + Cylinder + + + + ../Icons/WF_cylinder.svg../Icons/WF_cylinder.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Radius of the Cylinder. + + + 2.0 + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Length of the Cylinder. +Negative value will reverse the direction from Ref. Point + + + 20.0 + + + + + + + + + + + Create a Cuboid aligned on Axes: +- First select one or several couple of ( Axis and a Ref. Point). +- Define Dimensions if needed. +Then Click the button... +It will create a Cube aligned on the selected axis +with one of the extremities at Ref. point, +for all couple selected. + + + Cube + + + + ../Icons/WF_cube.svg../Icons/WF_cube.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Section (Length, Width) of the Cube. + + + 2.0,2.0 + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Heigth of the Cube. +Negative value will reverse the direction from Ref. Point + + + 20.0 + + + + + + + + + + + Create a Sphere shell: +- First select one or several Center Point(s). +- Define Diameter if needed. +Then Click the button... +It will create Sphere shell(s) centered +at the selected point(s). + + + Sphere + + + + ../Icons/WF_sphere.svg../Icons/WF_sphere.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Diameter of the Sphere. + + + 10.0 + + + + + + + + + + + Create a full geodesic dome shell: +- First select one or several Center Point(s). +- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed. +Then Click the button... +It will create full geodesic dome shell(s) with a X-Y-symmetry plane +for even frequencies and centered +at the selected point(s). + +If Frequency Parameter = 1, the code create an icosahedron. +An icosahedron is a polyhedron with 20 faces. + +Original code from : Ulrich Brammer + + + Dome + + + + ../Icons/WF_dome.svg../Icons/WF_dome.svg + + + + 32 + 32 + + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Frequency Parameter (Integer between 1 to 20). + + + 1 + + + 20 + + + 1 + + + 2 + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 60 + 16777215 + + + + Diameter of the Dome. + + + 10.0 + + + + + + + + + + + AB: +Create 3D Text attached to a Point. +- First select a Plane +- Then push this button +in this case the center of the text is attached to center of the Plane; +or +- First select a Plane and a Point on the Plane +- Then push this button +NB: + Change the text and his size if needed + + + AB + + + + ../Icons/WF_pointText.svg../Icons/WF_pointText.svg + + + + 32 + 32 + + + + + + + + + 70 + 16777215 + + + + Put the desired text here + + + A + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + Size of the font. + + + 2.0 + + + + + + + + + + + Revolve: +Make the revolution of Edge(s) or Wire(s) around an Axis: +- Select one or several wire(s) +- Then push this button +or +- Select FIRST one Point as center of rotation and one Axis as rotation axis ! +- Select one or several wire(s) +- Then push this button + +NB: + You can also define the angle of revolution if needed + If no Axis is selected the Z axis is considered as Axis of rotation ! + If no Point is selected the Origin is considered as Center of rotation ! + + + Revolve + + + + ../Icons/WF_Revolve.svg../Icons/WF_Revolve.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 40 + 16777215 + + + + Angle of the revolution in degrees. + + + 360 + + + + + + + + + Compute the common parts between selected shapes. +- Select at least two objects and click. + +Highlight common parts by showing the common shape in red and setting half-transparency on original parts (the original objects are not modified). +Original code from HighlightCommon.FCMacro + https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro + Authors = 2015 Javier Martinez Garcia + + + + Common + + + + ../Icons/WF_Common.svg../Icons/WF_Common.svg + + + + 32 + 32 + + + + + + + + Compute the difference parts between selected shapes. +- Select two objects and click. + +Compute the difference between two shapes. Additions are marked red, removals are marked green. Both original parts will be half transparent. The volume of the additions and removals are printed in the console. +Original code from HighlightDifference.FCMacro + https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro + Authors = 2015 GaĆ«l Ecorchard (Galou) + + + Difference + + + + ../Icons/WF_Difference.svg../Icons/WF_Difference.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 17 + 8 + + + + + + + + + Modif. + + + + + + 0 + + + + Align + + + + + + + 0 + 0 + + + + + 220 + 16777215 + + + + Align the face of selected object(s) to the actual view Plane. + - Click first to select a Face of one or several objects. +These objects will be moved not the point of view. +Then Click the button. + +NB: + The center of rotation is the center of the bounbing box if possible or + the center of the Face. + + if the Face of the object selected is already aligned to the view Plane, + a rotation of 180 deg is applied to the object. + In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) + + Two clicks will rotate by 180 deg the moving objects. + + + + + Align Face to View + + + + ../Icons/WF_viewAlignFace.svg../Icons/WF_viewAlignFace.svg + + + + 32 + 32 + + + + + + + + + + + 220 + 16777215 + + + + Align the Face(s) from selected object(s) to the last Face selected. + - Click first to select a Face of an object or several Faces from several objects. +These objects will be moved. + - Click second to select a Face to align to (the last object is fixed and will never move). +Then Click the button. + +NB: + The center of rotation is the center of the bounbing box if possible or + the center of the Face. + + if the Face of the object selected is already aligned to the last one, + a rotation of 180 deg is applied to the object. + In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) + + Two clicks will rotate by 180 deg the moving objects. + + + + Align Faces + + + + ../Icons/WF_objectAlignFaces.svg../Icons/WF_objectAlignFaces.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + This Angle (in degrees) will be added to the angle needed to align Faces. + + + 0.0 + + + + + + + + + + + + 220 + 16777215 + + + + Align the Edge(s) from selected object(s) to the last Edge selected. + - Click first to select an Edge of an object or several Edges from several objects. +These objects will be moved. + - Click second to select an Edge to align to (the last object is fixed and will never move). +Then Click the button. + +NB: + The center of rotation is the center of the bounbing box if possible or + the center of the Edge. + + if the Edge of the object selected is already aligned to the last one, + a rotation of 180 deg is applied to the object. + In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1) + + Two clicks will rotate by 180 deg the moving objects. + + + + Align Edges + + + + ../Icons/WF_objectAlignAxes.svg../Icons/WF_objectAlignAxes.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + This Angle (in degrees) will be added to the angle needed to align Edges. + + + 0.0 + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Joint Point(s) from selected object(s) to the last Point selected. + - Click first to select a Point of an object or several Points from several objects. +These objects will be moved. + - Click second to select an Point to joint to (the last object is fixed and will never move). +Then Click the button. + + + + + Joint Points + + + + ../Icons/WF_objectJointPoints.svg../Icons/WF_objectJointPoints.svg + + + + 32 + 32 + + + + + + + + Joint Face(s) from selected object(s) to the last Face selected. + - Click first to select a Face of an object or several Faces from several objects. +These objects will be moved. + - Click second to select a Face to joint to (the last object is fixed and will never move). +Then Click the button. + + Two clicks will rotate by 180 deg the moving objects. + + + + Joint Faces + + + + ../Icons/WF_objectJointFaces.svg../Icons/WF_objectJointFaces.svg + + + + 32 + 32 + + + + + + + + + Cut + + + + + + + 0 + 0 + + + + + 220 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + Object + + + + + + + + + 130 + 31 + + + + + 250 + 40 + + + + Select the Object to cut: +First Click on the object in the view +and push this button to accept... + + + Select Object + + + + + + + false + + + + 0 + 0 + + + + true + + + + + + + false + + + + 130 + 31 + + + + + 250 + 40 + + + + Select the Line to cut the Object along: +First Click on the line/edge in the view +and push this button to accept... + + + Select Cut Line + + + + + + + false + + + + 0 + 0 + + + + true + + + + + + + false + + + + 130 + 31 + + + + + 250 + 40 + + + + Select the Reference Plane to cut the Object from: +First Click on the plane in the view +and push this button to accept... + +The Reference Plane is the Plane you pose the object on before to use a saw! +(Note that the Angle is calculated from the Normal at this Plane) + + + Select Ref. Plane + + + + + + + false + + + + 0 + 0 + + + + true + + + + + + + + + + + + + + 70 + 16777215 + + + + Angle of cutting relative to the Normal of the Reference Plane (in degrees). + + 0.0 means that the Plane of cutting is along the Cut Line with +a 90 deg angle with Reference Plane. + + + Angle + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + Angle of cutting relative to the Normal of the Reference Plane (in degrees). + + 0.0 means that the Plane of cutting is along the Cut Line with +a 90 deg angle with Reference Plane. + + + 0.0 + + + + + + + + + + + + 70 + 16777215 + + + + Thickness of the Cut. + +i.e. the thickness of a saw. + + + Thickness + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + Thickness of the Cut. + +i.e. the thickness of a saw. + + + 0.0 + + + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Reset + + + + + + + Qt::Horizontal + + + + 18 + 20 + + + + + + + + false + + + + 50 + 16777215 + + + + Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane. + + + Apply + + + + 32 + 32 + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Rotate + + + + + + + 220 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + - Select one or several object(s) in the view and +- Click on this button. + +NB +Once object(s) are selected an other Click will unselect them ! +Selected Object(s) will be displayed with 75% of transparency. + + + Select Object(s) + + + + + + + QTabWidget::North + + + 0 + + + + + ../Icons/WF_rotationAxis.svg../Icons/WF_rotationAxis.svg + + + Axis + + + + + + + 0 + 0 + + + + + 80 + 0 + + + + + 130 + 16777215 + + + + Qt::LeftToRight + + + 0 + + + + X + + + + + Y + + + + + Z + + + + + To select + + + + + + + + false + + + + 40 + 0 + + + + + 80 + 16777215 + + + + Select + + + + + + + + + ../Icons/WF_rotationPoint.svg../Icons/WF_rotationPoint.svg + + + Center + + + + + + true + + + + 0 + 0 + + + + + 120 + 0 + + + + + 130 + 16777215 + + + + 2 + + + QComboBox::AdjustToContentsOnFirstShow + + + + Origin + + + + + Base Obj. + + + + + Center Obj.(s) + + + + + To select + + + + + + + + false + + + + 40 + 0 + + + + + 80 + 16777215 + + + + Select + + + + + + + + + + + + 150 + 67 + + + + + 16777215 + 16777215 + + + + Angle of rotation : + + + false + + + + + + 0 + + + + Define + + + + + + + 0 + 39 + + + + + 120 + 16777215 + + + + -180 + + + 180 + + + Qt::Horizontal + + + QSlider::TicksBothSides + + + 20 + + + + + + + + + ../Icons/WF_click.svg../Icons/WF_click.svg + + + Select + + + + + + true + + + + 40 + 0 + + + + + 80 + 16777215 + + + + Calculate angle from 2 objects. +Angle measurement between two Edges or two Planes +- Select the 2 Edges and +- Click this button +or +- Select the 2 Planes and +- Click this button +or +- Select one Edge and one Plane and +- Click this button + +NB: + Normals of Planes will be used. + + + Select + + + + + + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + 0.0 + + + 32769 + + + + + + + + 60 + 16777215 + + + + (deg) + + + + + + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Reset + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Apply + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Translate + + + + + + + 220 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + - Select one or several object(s) in the view and +- Click on this button. + +NB +Once object(s) are selected an other Click will unselect them ! +Selected Object(s) will be displayed with 75% of transparency. + + + Select Object(s) + + + + + + + + + Toggle this check box to generate copies the object during the Translation. +Copy means that the original Object will be left in his original location. +NB: + +1 copy requested : + - If one starting point and one ending point are selected. + Only one copy is done! + + - If one starting point and several ending points are selected. + One copy is done at each ending points selected! + +N copies requested : + - If one starting point and one ending point are selected. + Only one copy is done at the ending point then at double distance + of the ending point along the line defined by starting and ending point, + and so on! + - If one starting point and several ending points are selected. + One copy is done at each ending points selected, then at double distance + of each ending points along the line defined by starting and the current + ending point, and so on! + + + Copy + + + + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + The number of copies. + + + QAbstractSpinBox::NoButtons + + + false + + + 1 + + + 20 + + + 1 + + + 1 + + + + + + + Toggle this check box to realize "deep" copies. +Means that all children and parents of selected Object(s) will be copied too! + +If the object selected is Pad and his link is on Sketch, and Skecth parent is Box +Box +Pad + |_Sketch + +if the current check box is toggle the result will be : +Box +Pad + |_Sketch +Box001 +Pad001 + |_Sketch001 + +if not the result will be : +Box +Pad +Pad001 + |_Sketch + +On the last result the same Sketch is both link to Pad001 but also still to Pad. + + + Deep + + + + + + + + + 0 + + + + + ../Icons/WF_startPoint.svg../Icons/WF_startPoint.svg + + + Start + + + + + + + 150 + 0 + + + + Starting Point : + + + false + + + + + + true + + + + 0 + 0 + + + + + 100 + 0 + + + + + 120 + 16777215 + + + + 3 + + + QComboBox::AdjustToContentsOnFirstShow + + + + Origin + + + + + Base Obj. + + + + + Center Obj.(s) + + + + + To select + + + + + To define + + + + + + + + true + + + + 50 + 0 + + + + + 120 + 16777215 + + + + Select + + + + + + + + + + + X : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + Y : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + Z : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + + + + + + ../Icons/WF_endPoint.svg../Icons/WF_endPoint.svg + + + End + + + + + + + 150 + 0 + + + + Ending Point : + + + false + + + + + + true + + + + 0 + 0 + + + + + 100 + 0 + + + + + 120 + 16777215 + + + + 0 + + + QComboBox::AdjustToContentsOnFirstShow + + + + Origin + + + + + Base Obj. + + + + + Center Obj.(s) + + + + + To select + + + + + To define + + + + + Relative + + + + + + + + true + + + + 100 + 0 + + + + + 120 + 16777215 + + + + Select + + + + + + + + + + + Z : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + Y : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + X : + + + + + + + false + + + + 90 + 0 + + + + + 200 + 16777215 + + + + 0.0 + + + + + + + + + + + + + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Reset + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + 40 + 0 + + + + + 60 + 16777215 + + + + Apply + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + ../Icons/WF_view.svg../Icons/WF_view.svg + + + View + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Set the current view perpendicular to the selected Face, +or aligned to the selected Axis, +or aligned on 2 Points. +ReClick with same selection, will reverse the direction. + + + Align View to ... + + + + ../Icons/WF_viewAlign.svg../Icons/WF_viewAlign.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Camera Track + + + + ../Icons/WF_trackCamera.svg../Icons/WF_trackCamera.svg + + + + 32 + 32 + + + + + + + + + + ../Icons/WF_check.svg../Icons/WF_check.svg + + + Check + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Detect the position of the camera. +The returned value is the value provided +by the function getCameraOrientation(). + + + View ? + + + + ../Icons/WF_FCCamera_02.svg../Icons/WF_FCCamera_02.svg + + + + 32 + 32 + + + + + + + + Check if two faces or two Edges are Parallel: +- Select the 2 faces/planes or 2 Edges/Lines and +Click this button + +NB: You can change the tolerance in "Ori. Pref." TAB + + + are Parallel ? + + + + ../Icons/WF_isParallel.svg../Icons/WF_isParallel.svg + + + + 32 + 32 + + + + + + + + Check for two Edges/Planes angle: +Angle measurement between two Edges or two Planes +- Select the 2 Edges and +- Click this button +or +- Select the 2 Planes and +- Click this button +or +- Select one Edge and one Plane and +- Click this button + +NB: + Normals of Planes will be used. + + + Angle ? + + + + ../Icons/WF_angleBetween.svg../Icons/WF_angleBetween.svg + + + + 32 + 32 + + + + + + + + Check for Line Length: +Length measurement and Delta values (on main Axes) for a Line +- Select the Line and +Click this button + + + + Length ? + + + + ../Icons/WF_isLength.svg../Icons/WF_isLength.svg + + + + 32 + 32 + + + + + + + + Check if two faces or two Edges are Perpendicular: +- Select the 2 faces/planes or 2 Edges/Lines and +Click this button + +NB: You can change the tolerance in "Ori. Pref." TAB + + + are Perpendicular ? + + + + ../Icons/WF_isPerpendicular.svg../Icons/WF_isPerpendicular.svg + + + + 32 + 32 + + + + + + + + Check for two Points distance: +Distances measurement and Delta values (on main Axes) between two Points +- Select the 2 Points and +Click this button + + + + Distance ? + + + + ../Icons/WF_distanceBetween.svg../Icons/WF_distanceBetween.svg + + + + 32 + 32 + + + + + + + + Check for surface Area: +Area measurement for a Plane or a set of Planes. +- Select One or several Planes and +Click this button + + + Area ? + + + + ../Icons/WF_isArea.svg../Icons/WF_isArea.svg + + + + 32 + 32 + + + + + + + + Check if two faces or two Edges are Coplanar: +- Select the 2 faces/planes or 2 Edges/Lines and +Click this button + +NB: You can change the tolerance in "Ori. Pref." TAB + + + are Coplanar ? + + + + ../Icons/WF_isCoplanar.svg../Icons/WF_isCoplanar.svg + + + + 32 + 32 + + + + + + + + Check for two Objects Clearance distance: +Quick measurements between parallel faces and similarly placed objects +- Select the 2 Objects and +Click this button + + + Distance Clearance ? + + + + ../Icons/WF_isClearance.svg../Icons/WF_isClearance.svg + + + + 32 + 32 + + + + + + + + + + + + + + + + + + Close + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 2015 + + + + + + + + + + diff --git a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py new file mode 100644 index 0000000..75fc49b --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui' +# +# Created: Tue Oct 27 06:56:40 2015 +# by: PySide UI code generator 4.11.2 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1039, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(10) + self.tableWidget.setRowCount(2) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setFrame(True) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "2D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric2D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a (t) ", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "X (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "Y (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "t min", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "t max", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "t step", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "Polar", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "Comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Circle", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "10 # Radius", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "a", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "a*cos(t)", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "a*sin(t)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "0", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) + diff --git a/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui new file mode 100644 index 0000000..ed4fff4 --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve2DEditGui_2015.ui @@ -0,0 +1,282 @@ + + + Form + + + + 0 + 0 + 1039 + 460 + + + + Form + + + + + + 2D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric2D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + Name + + + + + a (t) + + + + + b (a, t) + + + + + X (a,b,c,t) + + + + + Y (a,b,c,t) + + + + + t min + + + + + t max + + + + + t step + + + + + Polar + + + + + Comments + + + + + Circle + + + + + 10 # Radius + + + + + a + + + + + a*cos(t) + + + + + a*sin(t) + + + + + 0 + + + + + 2*pi + + + + + 0.01 + + + + + 0 + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + true + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py new file mode 100644 index 0000000..c25afcd --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui' +# +# Created: Tue Oct 27 06:56:50 2015 +# by: PySide UI code generator 4.11.2 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1039, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(11) + self.tableWidget.setRowCount(3) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 9, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "3D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric3D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a (t) ", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "c (a, b, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "X (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "Y (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "Z (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "t min", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "t max", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "t step", None)) + item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "Comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Cylindrical helix", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "10*0.05 #Vert. step", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "10 # Radius", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "c*sin(t)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "c*cos(t)", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "a*t", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "5*2*pi #5 circles", None)) + item = self.tableWidget.item(0, 9) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(1, 0) + item.setText(_translate("Form", "Circle with Teeth", None)) + item = self.tableWidget.item(1, 1) + item.setText(_translate("Form", "37", None)) + item = self.tableWidget.item(1, 2) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.item(1, 3) + item.setText(_translate("Form", "(a+cos(a*t)*2)*b", None)) + item = self.tableWidget.item(1, 4) + item.setText(_translate("Form", "c*cos(t)", None)) + item = self.tableWidget.item(1, 5) + item.setText(_translate("Form", "c*sin(t)", None)) + item = self.tableWidget.item(1, 6) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(1, 7) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(1, 8) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(1, 9) + item.setText(_translate("Form", "0.01", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) + diff --git a/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui new file mode 100644 index 0000000..707d536 --- /dev/null +++ b/WorkFeature/Ui/WF_ObjParCurve3DEditGui_2015.ui @@ -0,0 +1,344 @@ + + + Form + + + + 0 + 0 + 1039 + 460 + + + + Form + + + + + + 3D Database + + + + + + + + Click to load common and customs curves. + + + Load + + + + + + + This will save customs curves only in your HOME directory under "Parametric3D.dat". + + + Save + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + Name + + + + + a (t) + + + + + b (a, t) + + + + + c (a, b, t) + + + + + X (a,b,c,t) + + + + + Y (a,b,c,t) + + + + + Z (a,b,c,t) + + + + + t min + + + + + t max + + + + + t step + + + + + Comments + + + + + Cylindrical helix + + + + + 10*0.05 #Vert. step + + + + + 1 + + + + + 10 # Radius + + + + + c*sin(t) + + + + + c*cos(t) + + + + + a*t + + + + + 0 + + + + + 5*2*pi #5 circles + + + + + 0.01 + + + + + Circle with Teeth + + + + + 37 + + + + + 1 + + + + + (a+cos(a*t)*2)*b + + + + + c*cos(t) + + + + + c*sin(t) + + + + + 0 + + + + + 0 + + + + + 2*pi + + + + + 0.01 + + + + + + + + Row + + + + + + + + Add a row into the table. + + + add + + + + + + + Remove a row from the table. + + + remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Quit + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/WorkFeature/Ui/__init__.py b/WorkFeature/Ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/sh_ui2pySide b/WorkFeature/Ui/sh_ui2pySide old mode 100755 new mode 100644 similarity index 59% rename from WorkFeature/sh_ui2pySide rename to WorkFeature/Ui/sh_ui2pySide index 90dcd4b..9b338b4 --- a/WorkFeature/sh_ui2pySide +++ b/WorkFeature/Ui/sh_ui2pySide @@ -3,6 +3,8 @@ m_ui_file=$1 m_ui_base=`basename ${m_ui_file} .ui` pyuic4 ${m_ui_base}.ui > ${m_ui_base}.py -cat ${m_ui_base}.py | sed 's#Icons/#icons:#g ' | sed 's#PyQt4#PySide#g ' | sed 's#QtCore.QString.fromUtf8(#_fromUtf8(#g '>tmp.py +cat ${m_ui_base}.py | sed 's#Icons/#icons:#g ' | sed 's#PyQt4#PySide#g ' | sed 's#QtCore.QString.fromUtf8(#_fromUtf8(#g ' | sed 's#../icons:#icons:#g '>tmp.py mv tmp.py ${m_ui_base}.py +cp ${m_ui_base}.py ../${m_ui_base}.py + diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py index 2fbf213..f04e200 100644 --- a/WorkFeature/WFGui_2015.py +++ b/WorkFeature/WFGui_2015.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'WFGui_2015_08_31.ui' +# Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Mon Aug 31 22:01:38 2015 -# by: PySide UI code generator 4.9.1 +# Created: Wed Nov 4 07:10:00 2015 +# by: PySide UI code generator 4.11.2 # # WARNING! All changes made in this file will be lost! @@ -12,201 +12,208 @@ from PySide import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: - _fromUtf8 = lambda s: s + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) class Ui_Form(object): def setupUi(self, Form): Form.setObjectName(_fromUtf8("Form")) - Form.resize(364, 693) + Form.resize(382, 845) icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wf.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) Form.setWindowIcon(icon) self.gridLayout_34 = QtGui.QGridLayout(Form) self.gridLayout_34.setObjectName(_fromUtf8("gridLayout_34")) self.scrollArea = QtGui.QScrollArea(Form) + self.scrollArea.setFrameShape(QtGui.QFrame.StyledPanel) + self.scrollArea.setFrameShadow(QtGui.QFrame.Sunken) + self.scrollArea.setLineWidth(1) + self.scrollArea.setMidLineWidth(0) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) - self.scrollAreaWidgetContents_2 = QtGui.QWidget() - self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 344, 638)) - self.scrollAreaWidgetContents_2.setObjectName(_fromUtf8("scrollAreaWidgetContents_2")) - self.gridLayout_9 = QtGui.QGridLayout(self.scrollAreaWidgetContents_2) - self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9")) - self.tabWidget_0 = QtGui.QTabWidget(self.scrollAreaWidgetContents_2) - self.tabWidget_0.setTabPosition(QtGui.QTabWidget.South) - self.tabWidget_0.setObjectName(_fromUtf8("tabWidget_0")) - self.tab_2 = QtGui.QWidget() - self.tab_2.setObjectName(_fromUtf8("tab_2")) - self.gridLayout_30 = QtGui.QGridLayout(self.tab_2) - self.gridLayout_30.setObjectName(_fromUtf8("gridLayout_30")) - self.tabWidget = QtGui.QTabWidget(self.tab_2) - self.tabWidget.setMinimumSize(QtCore.QSize(0, 0)) - self.tabWidget.setMaximumSize(QtCore.QSize(300, 16777215)) - self.tabWidget.setTabPosition(QtGui.QTabWidget.West) - self.tabWidget.setObjectName(_fromUtf8("tabWidget")) - self.Origin_Tab = QtGui.QWidget() - self.Origin_Tab.setObjectName(_fromUtf8("Origin_Tab")) - self.gridLayout_5 = QtGui.QGridLayout(self.Origin_Tab) - self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) - self.button_origin = QtGui.QPushButton(self.Origin_Tab) - self.button_origin.setIcon(icon) + self.scrollAreaWidgetContents = QtGui.QWidget() + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 362, 786)) + self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) + self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) + self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) + self.tabWidget_7 = QtGui.QTabWidget(self.scrollAreaWidgetContents) + self.tabWidget_7.setMinimumSize(QtCore.QSize(0, 0)) + self.tabWidget_7.setTabPosition(QtGui.QTabWidget.West) + self.tabWidget_7.setObjectName(_fromUtf8("tabWidget_7")) + self.Origin_Tab_2 = QtGui.QWidget() + self.Origin_Tab_2.setObjectName(_fromUtf8("Origin_Tab_2")) + self.gridLayout_65 = QtGui.QGridLayout(self.Origin_Tab_2) + self.gridLayout_65.setObjectName(_fromUtf8("gridLayout_65")) + self.button_origin = QtGui.QPushButton(self.Origin_Tab_2) + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_origin.setIcon(icon1) self.button_origin.setIconSize(QtCore.QSize(32, 32)) self.button_origin.setObjectName(_fromUtf8("button_origin")) - self.gridLayout_5.addWidget(self.button_origin, 0, 0, 1, 1) - self.frame_3 = QtGui.QFrame(self.Origin_Tab) - self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_3.setFrameShadow(QtGui.QFrame.Raised) - self.frame_3.setObjectName(_fromUtf8("frame_3")) - self.gridLayout_14 = QtGui.QGridLayout(self.frame_3) - self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14")) - self.groupBox_5 = QtGui.QGroupBox(self.frame_3) - self.groupBox_5.setObjectName(_fromUtf8("groupBox_5")) - self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_5) - self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) - self.radioButton_verbose = QtGui.QRadioButton(self.groupBox_5) + self.gridLayout_65.addWidget(self.button_origin, 0, 0, 1, 1) + self.frame_6 = QtGui.QFrame(self.Origin_Tab_2) + self.frame_6.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_6.setFrameShadow(QtGui.QFrame.Raised) + self.frame_6.setObjectName(_fromUtf8("frame_6")) + self.gridLayout_66 = QtGui.QGridLayout(self.frame_6) + self.gridLayout_66.setObjectName(_fromUtf8("gridLayout_66")) + self.groupBox_13 = QtGui.QGroupBox(self.frame_6) + self.groupBox_13.setObjectName(_fromUtf8("groupBox_13")) + self.gridLayout_67 = QtGui.QGridLayout(self.groupBox_13) + self.gridLayout_67.setObjectName(_fromUtf8("gridLayout_67")) + self.radioButton_verbose = QtGui.QRadioButton(self.groupBox_13) self.radioButton_verbose.setChecked(False) self.radioButton_verbose.setAutoExclusive(False) self.radioButton_verbose.setObjectName(_fromUtf8("radioButton_verbose")) - self.gridLayout_3.addWidget(self.radioButton_verbose, 0, 0, 1, 1) - self.radioButton_biColor = QtGui.QRadioButton(self.groupBox_5) + self.gridLayout_67.addWidget(self.radioButton_verbose, 0, 0, 1, 1) + self.radioButton_biColor = QtGui.QRadioButton(self.groupBox_13) self.radioButton_biColor.setAutoExclusive(False) self.radioButton_biColor.setObjectName(_fromUtf8("radioButton_biColor")) - self.gridLayout_3.addWidget(self.radioButton_biColor, 1, 0, 1, 1) - self.radioButton_copy = QtGui.QRadioButton(self.groupBox_5) + self.gridLayout_67.addWidget(self.radioButton_biColor, 1, 0, 1, 1) + self.radioButton_copy = QtGui.QRadioButton(self.groupBox_13) self.radioButton_copy.setObjectName(_fromUtf8("radioButton_copy")) - self.gridLayout_3.addWidget(self.radioButton_copy, 2, 0, 1, 1) - self.horizontalLayout_25 = QtGui.QHBoxLayout() - self.horizontalLayout_25.setObjectName(_fromUtf8("horizontalLayout_25")) - self.label_5 = QtGui.QLabel(self.groupBox_5) - self.label_5.setObjectName(_fromUtf8("label_5")) - self.horizontalLayout_25.addWidget(self.label_5) - self.tolerance_edit = QtGui.QLineEdit(self.groupBox_5) + self.gridLayout_67.addWidget(self.radioButton_copy, 2, 0, 1, 1) + self.horizontalLayout_44 = QtGui.QHBoxLayout() + self.horizontalLayout_44.setObjectName(_fromUtf8("horizontalLayout_44")) + self.label_10 = QtGui.QLabel(self.groupBox_13) + self.label_10.setObjectName(_fromUtf8("label_10")) + self.horizontalLayout_44.addWidget(self.label_10) + self.tolerance_edit = QtGui.QLineEdit(self.groupBox_13) self.tolerance_edit.setMaximumSize(QtCore.QSize(60, 16777215)) self.tolerance_edit.setObjectName(_fromUtf8("tolerance_edit")) - self.horizontalLayout_25.addWidget(self.tolerance_edit) - self.gridLayout_3.addLayout(self.horizontalLayout_25, 3, 0, 1, 1) - self.gridLayout_14.addWidget(self.groupBox_5, 0, 0, 1, 1) - self.gridLayout_5.addWidget(self.frame_3, 1, 0, 1, 1) + self.horizontalLayout_44.addWidget(self.tolerance_edit) + self.gridLayout_67.addLayout(self.horizontalLayout_44, 3, 0, 1, 1) + self.gridLayout_66.addWidget(self.groupBox_13, 0, 0, 1, 1) + self.gridLayout_65.addWidget(self.frame_6, 1, 0, 1, 1) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_5.addItem(spacerItem, 2, 0, 1, 1) - self.tabWidget.addTab(self.Origin_Tab, icon, _fromUtf8("")) - self.Point_Tab1 = QtGui.QWidget() - self.Point_Tab1.setObjectName(_fromUtf8("Point_Tab1")) - self.gridLayout_7 = QtGui.QGridLayout(self.Point_Tab1) - self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7")) - self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1) - icon1 = QtGui.QIcon() - icon1.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_line_point.setIcon(icon1) - self.button_point_line_point.setIconSize(QtCore.QSize(32, 32)) - self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point")) - self.gridLayout_7.addWidget(self.button_point_line_point, 8, 0, 1, 1) - self.button_face_center = QtGui.QPushButton(self.Point_Tab1) + self.gridLayout_65.addItem(spacerItem, 2, 0, 1, 1) + self.tabWidget_7.addTab(self.Origin_Tab_2, icon1, _fromUtf8("")) + self.Point_Tab1_2 = QtGui.QWidget() + self.Point_Tab1_2.setObjectName(_fromUtf8("Point_Tab1_2")) + self.gridLayout_68 = QtGui.QGridLayout(self.Point_Tab1_2) + self.gridLayout_68.setObjectName(_fromUtf8("gridLayout_68")) + spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_68.addItem(spacerItem1, 10, 0, 1, 1) + self.button_circle_center = QtGui.QPushButton(self.Point_Tab1_2) icon2 = QtGui.QIcon() - icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_center.setIcon(icon2) - self.button_face_center.setIconSize(QtCore.QSize(32, 32)) - self.button_face_center.setObjectName(_fromUtf8("button_face_center")) - self.gridLayout_7.addWidget(self.button_face_center, 5, 0, 1, 1) - self.button_circle_center = QtGui.QPushButton(self.Point_Tab1) - icon3 = QtGui.QIcon() - icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_circle_center.setIcon(icon3) + icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_circle_center.setIcon(icon2) self.button_circle_center.setIconSize(QtCore.QSize(32, 32)) self.button_circle_center.setObjectName(_fromUtf8("button_circle_center")) - self.gridLayout_7.addWidget(self.button_circle_center, 4, 0, 1, 1) - self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1) + self.gridLayout_68.addWidget(self.button_circle_center, 4, 0, 1, 1) + self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1_2) + icon3 = QtGui.QIcon() + icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_point.setIcon(icon3) + self.button_point_line_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point")) + self.gridLayout_68.addWidget(self.button_point_line_point, 9, 0, 1, 1) + self.button_face_center = QtGui.QPushButton(self.Point_Tab1_2) icon4 = QtGui.QIcon() - icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_Npoints_center.setIcon(icon4) - self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32)) - self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center")) - self.gridLayout_7.addWidget(self.button_Npoints_center, 1, 0, 1, 1) - self.horizontalLayout_6 = QtGui.QHBoxLayout() - self.horizontalLayout_6.setObjectName(_fromUtf8("horizontalLayout_6")) - self.button_line_center = QtGui.QPushButton(self.Point_Tab1) + icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_center.setIcon(icon4) + self.button_face_center.setIconSize(QtCore.QSize(32, 32)) + self.button_face_center.setObjectName(_fromUtf8("button_face_center")) + self.gridLayout_68.addWidget(self.button_face_center, 5, 0, 1, 1) + self.horizontalLayout_45 = QtGui.QHBoxLayout() + self.horizontalLayout_45.setObjectName(_fromUtf8("horizontalLayout_45")) + self.button_line_center = QtGui.QPushButton(self.Point_Tab1_2) self.button_line_center.setMaximumSize(QtCore.QSize(16777215, 16777215)) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.button_line_center.setIcon(icon5) self.button_line_center.setIconSize(QtCore.QSize(32, 32)) self.button_line_center.setObjectName(_fromUtf8("button_line_center")) - self.horizontalLayout_6.addWidget(self.button_line_center) - self.spin_line_center = QtGui.QSpinBox(self.Point_Tab1) + self.horizontalLayout_45.addWidget(self.button_line_center) + self.spin_line_center = QtGui.QSpinBox(self.Point_Tab1_2) self.spin_line_center.setMinimumSize(QtCore.QSize(40, 0)) self.spin_line_center.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_line_center.setMinimum(2) self.spin_line_center.setMaximum(100) self.spin_line_center.setSingleStep(1) self.spin_line_center.setObjectName(_fromUtf8("spin_line_center")) - self.horizontalLayout_6.addWidget(self.spin_line_center) - self.gridLayout_7.addLayout(self.horizontalLayout_6, 2, 0, 1, 1) - self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1) + self.horizontalLayout_45.addWidget(self.spin_line_center) + self.gridLayout_68.addLayout(self.horizontalLayout_45, 2, 0, 1, 1) + self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1_2) icon6 = QtGui.QIcon() - icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_face_point.setIcon(icon6) + icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_center.setIcon(icon6) + self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center")) + self.gridLayout_68.addWidget(self.button_Npoints_center, 1, 0, 1, 1) + self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1_2) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_face_point.setIcon(icon7) self.button_line_face_point.setIconSize(QtCore.QSize(32, 32)) self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point")) - self.gridLayout_7.addWidget(self.button_line_face_point, 6, 0, 1, 1) - self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1) - icon7 = QtGui.QIcon() - icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_extrema.setIcon(icon7) - self.button_line_extrema.setIconSize(QtCore.QSize(32, 32)) - self.button_line_extrema.setObjectName(_fromUtf8("button_line_extrema")) - self.gridLayout_7.addWidget(self.button_line_extrema, 3, 0, 1, 1) - spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_7.addItem(spacerItem1, 9, 0, 1, 1) - self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1) + self.gridLayout_68.addWidget(self.button_line_face_point, 6, 0, 1, 1) + self.horizontalLayout_46 = QtGui.QHBoxLayout() + self.horizontalLayout_46.setObjectName(_fromUtf8("horizontalLayout_46")) + self.button_object_center = QtGui.QPushButton(self.Point_Tab1_2) icon8 = QtGui.QIcon() - icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_face_point.setIcon(icon8) - self.button_point_face_point.setIconSize(QtCore.QSize(32, 32)) - self.button_point_face_point.setObjectName(_fromUtf8("button_point_face_point")) - self.gridLayout_7.addWidget(self.button_point_face_point, 7, 0, 1, 1) - self.horizontalLayout_10 = QtGui.QHBoxLayout() - self.horizontalLayout_10.setObjectName(_fromUtf8("horizontalLayout_10")) - self.button_object_center = QtGui.QPushButton(self.Point_Tab1) - icon9 = QtGui.QIcon() - icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_center.setIcon(icon9) + icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center.setIcon(icon8) self.button_object_center.setIconSize(QtCore.QSize(32, 32)) self.button_object_center.setObjectName(_fromUtf8("button_object_center")) - self.horizontalLayout_10.addWidget(self.button_object_center) - self.checkBox_object_center = QtGui.QCheckBox(self.Point_Tab1) + self.horizontalLayout_46.addWidget(self.button_object_center) + self.checkBox_object_center = QtGui.QCheckBox(self.Point_Tab1_2) self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center")) - self.horizontalLayout_10.addWidget(self.checkBox_object_center) - self.gridLayout_7.addLayout(self.horizontalLayout_10, 0, 0, 1, 1) + self.horizontalLayout_46.addWidget(self.checkBox_object_center) + self.gridLayout_68.addLayout(self.horizontalLayout_46, 0, 0, 1, 1) + self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1_2) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_extrema.setIcon(icon9) + self.button_line_extrema.setIconSize(QtCore.QSize(32, 32)) + self.button_line_extrema.setObjectName(_fromUtf8("button_line_extrema")) + self.gridLayout_68.addWidget(self.button_line_extrema, 3, 0, 1, 1) + self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1_2) icon10 = QtGui.QIcon() - icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.Point_Tab1, icon10, _fromUtf8("")) - self.Point_Tab2 = QtGui.QWidget() - self.Point_Tab2.setObjectName(_fromUtf8("Point_Tab2")) - self.gridLayout_31 = QtGui.QGridLayout(self.Point_Tab2) - self.gridLayout_31.setObjectName(_fromUtf8("gridLayout_31")) - self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2) + icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_face_point.setIcon(icon10) + self.button_point_face_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_face_point.setObjectName(_fromUtf8("button_point_face_point")) + self.gridLayout_68.addWidget(self.button_point_face_point, 8, 0, 1, 1) icon11 = QtGui.QIcon() - icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twolines_point.setIcon(icon11) + icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab1_2, icon11, _fromUtf8("")) + self.Point_Tab2_2 = QtGui.QWidget() + self.Point_Tab2_2.setObjectName(_fromUtf8("Point_Tab2_2")) + self.gridLayout_70 = QtGui.QGridLayout(self.Point_Tab2_2) + self.gridLayout_70.setObjectName(_fromUtf8("gridLayout_70")) + self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2_2) + icon12 = QtGui.QIcon() + icon12.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_point.setIcon(icon12) self.button_twolines_point.setIconSize(QtCore.QSize(32, 32)) self.button_twolines_point.setObjectName(_fromUtf8("button_twolines_point")) - self.gridLayout_31.addWidget(self.button_twolines_point, 0, 0, 1, 1) - self.horizontalLayout = QtGui.QHBoxLayout() - self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) - self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2) + self.gridLayout_70.addWidget(self.button_twolines_point, 0, 0, 1, 1) + self.horizontalLayout_47 = QtGui.QHBoxLayout() + self.horizontalLayout_47.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.horizontalLayout_47.setObjectName(_fromUtf8("horizontalLayout_47")) + self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_point_on_line.sizePolicy().hasHeightForWidth()) self.button_point_on_line.setSizePolicy(sizePolicy) self.button_point_on_line.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon12 = QtGui.QIcon() - icon12.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_alongLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_on_line.setIcon(icon12) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_alongLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_on_line.setIcon(icon13) self.button_point_on_line.setIconSize(QtCore.QSize(32, 32)) self.button_point_on_line.setObjectName(_fromUtf8("button_point_on_line")) - self.horizontalLayout.addWidget(self.button_point_on_line) - self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2) + self.horizontalLayout_47.addWidget(self.button_point_on_line) + self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -215,18 +222,18 @@ class Ui_Form(object): self.distance_point_on_line.setMinimumSize(QtCore.QSize(50, 0)) self.distance_point_on_line.setMaximumSize(QtCore.QSize(60, 16777215)) self.distance_point_on_line.setObjectName(_fromUtf8("distance_point_on_line")) - self.horizontalLayout.addWidget(self.distance_point_on_line) - self.gridLayout_31.addLayout(self.horizontalLayout, 1, 0, 1, 1) - self.horizontalLayout_30 = QtGui.QHBoxLayout() - self.horizontalLayout_30.setObjectName(_fromUtf8("horizontalLayout_30")) - self.button_distPoint = QtGui.QPushButton(self.Point_Tab2) - icon13 = QtGui.QIcon() - icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distPoint.setIcon(icon13) + self.horizontalLayout_47.addWidget(self.distance_point_on_line) + self.gridLayout_70.addLayout(self.horizontalLayout_47, 1, 0, 1, 1) + self.horizontalLayout_48 = QtGui.QHBoxLayout() + self.horizontalLayout_48.setObjectName(_fromUtf8("horizontalLayout_48")) + self.button_distPoint = QtGui.QPushButton(self.Point_Tab2_2) + icon14 = QtGui.QIcon() + icon14.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPoint.setIcon(icon14) self.button_distPoint.setIconSize(QtCore.QSize(32, 32)) self.button_distPoint.setObjectName(_fromUtf8("button_distPoint")) - self.horizontalLayout_30.addWidget(self.button_distPoint) - self.dist_point = QtGui.QLineEdit(self.Point_Tab2) + self.horizontalLayout_48.addWidget(self.button_distPoint) + self.dist_point = QtGui.QLineEdit(self.Point_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -235,8 +242,8 @@ class Ui_Form(object): self.dist_point.setMinimumSize(QtCore.QSize(40, 0)) self.dist_point.setMaximumSize(QtCore.QSize(40, 16777215)) self.dist_point.setObjectName(_fromUtf8("dist_point")) - self.horizontalLayout_30.addWidget(self.dist_point) - self.spin_dist_point = QtGui.QSpinBox(self.Point_Tab2) + self.horizontalLayout_48.addWidget(self.dist_point) + self.spin_dist_point = QtGui.QSpinBox(self.Point_Tab2_2) self.spin_dist_point.setMinimumSize(QtCore.QSize(30, 0)) self.spin_dist_point.setMaximumSize(QtCore.QSize(30, 16777215)) self.spin_dist_point.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) @@ -246,157 +253,164 @@ class Ui_Form(object): self.spin_dist_point.setSingleStep(1) self.spin_dist_point.setProperty("value", 1) self.spin_dist_point.setObjectName(_fromUtf8("spin_dist_point")) - self.horizontalLayout_30.addWidget(self.spin_dist_point) - self.gridLayout_31.addLayout(self.horizontalLayout_30, 2, 0, 1, 1) - self.horizontalLayout_27 = QtGui.QHBoxLayout() - self.horizontalLayout_27.setObjectName(_fromUtf8("horizontalLayout_27")) - self.button_cut_wire_point = QtGui.QPushButton(self.Point_Tab2) + self.horizontalLayout_48.addWidget(self.spin_dist_point) + self.gridLayout_70.addLayout(self.horizontalLayout_48, 2, 0, 1, 1) + self.horizontalLayout_49 = QtGui.QHBoxLayout() + self.horizontalLayout_49.setObjectName(_fromUtf8("horizontalLayout_49")) + self.button_cut_wire_point = QtGui.QPushButton(self.Point_Tab2_2) self.button_cut_wire_point.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon14 = QtGui.QIcon() - icon14.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWirePoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_wire_point.setIcon(icon14) + icon15 = QtGui.QIcon() + icon15.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWirePoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_point.setIcon(icon15) self.button_cut_wire_point.setIconSize(QtCore.QSize(32, 32)) self.button_cut_wire_point.setObjectName(_fromUtf8("button_cut_wire_point")) - self.horizontalLayout_27.addWidget(self.button_cut_wire_point) - self.spin_wire_cut_point = QtGui.QSpinBox(self.Point_Tab2) + self.horizontalLayout_49.addWidget(self.button_cut_wire_point) + self.spin_wire_cut_point = QtGui.QSpinBox(self.Point_Tab2_2) self.spin_wire_cut_point.setMinimumSize(QtCore.QSize(40, 0)) self.spin_wire_cut_point.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_wire_cut_point.setMinimum(2) self.spin_wire_cut_point.setMaximum(100) self.spin_wire_cut_point.setSingleStep(1) self.spin_wire_cut_point.setObjectName(_fromUtf8("spin_wire_cut_point")) - self.horizontalLayout_27.addWidget(self.spin_wire_cut_point) - self.gridLayout_31.addLayout(self.horizontalLayout_27, 3, 0, 1, 1) - self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2) - icon15 = QtGui.QIcon() - icon15.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_click_for_point.setIcon(icon15) + self.horizontalLayout_49.addWidget(self.spin_wire_cut_point) + self.gridLayout_70.addLayout(self.horizontalLayout_49, 3, 0, 1, 1) + self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2_2) + icon16 = QtGui.QIcon() + icon16.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_point.setIcon(icon16) self.button_click_for_point.setIconSize(QtCore.QSize(32, 32)) self.button_click_for_point.setCheckable(True) self.button_click_for_point.setObjectName(_fromUtf8("button_click_for_point")) - self.gridLayout_31.addWidget(self.button_click_for_point, 4, 0, 1, 1) - self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2) - icon16 = QtGui.QIcon() - icon16.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectBasePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_base_point.setIcon(icon16) + self.gridLayout_70.addWidget(self.button_click_for_point, 4, 0, 1, 1) + self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2_2) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectBasePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_point.setIcon(icon17) self.button_object_base_point.setIconSize(QtCore.QSize(32, 32)) self.button_object_base_point.setObjectName(_fromUtf8("button_object_base_point")) - self.gridLayout_31.addWidget(self.button_object_base_point, 5, 0, 1, 1) - self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2) - icon17 = QtGui.QIcon() - icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_to_sketch.setIcon(icon17) + self.gridLayout_70.addWidget(self.button_object_base_point, 5, 0, 1, 1) + self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2_2) + icon18 = QtGui.QIcon() + icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_to_sketch.setIcon(icon18) self.button_point_to_sketch.setIconSize(QtCore.QSize(32, 32)) self.button_point_to_sketch.setObjectName(_fromUtf8("button_point_to_sketch")) - self.gridLayout_31.addWidget(self.button_point_to_sketch, 6, 0, 1, 1) + self.gridLayout_70.addWidget(self.button_point_to_sketch, 6, 0, 1, 1) spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_31.addItem(spacerItem2, 7, 0, 1, 1) - self.tabWidget.addTab(self.Point_Tab2, icon10, _fromUtf8("")) - self.Axis_Tab1 = QtGui.QWidget() - self.Axis_Tab1.setObjectName(_fromUtf8("Axis_Tab1")) - self.gridLayout_32 = QtGui.QGridLayout(self.Axis_Tab1) - self.gridLayout_32.setObjectName(_fromUtf8("gridLayout_32")) - self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1) - icon18 = QtGui.QIcon() - icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_axis.setIcon(icon18) + self.gridLayout_70.addItem(spacerItem2, 7, 0, 1, 1) + self.tabWidget_7.addTab(self.Point_Tab2_2, icon11, _fromUtf8("")) + self.Axis_Tab1_2 = QtGui.QWidget() + self.Axis_Tab1_2.setObjectName(_fromUtf8("Axis_Tab1_2")) + self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab1_2) + self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) + self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon19) self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) - self.gridLayout_32.addWidget(self.button_object_axis, 0, 0, 1, 1) - self.horizontalLayout_2 = QtGui.QHBoxLayout() - self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) - self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1) + self.gridLayout_4.addWidget(self.button_object_axis, 0, 0, 1, 1) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_twopoints_axis.sizePolicy().hasHeightForWidth()) self.button_twopoints_axis.setSizePolicy(sizePolicy) self.button_twopoints_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon19 = QtGui.QIcon() - icon19.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twopoints_axis.setIcon(icon19) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon20) self.button_twopoints_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twopoints_axis.setObjectName(_fromUtf8("button_twopoints_axis")) - self.horizontalLayout_2.addWidget(self.button_twopoints_axis) - self.extension_twopoints_axis = QtGui.QLineEdit(self.Axis_Tab1) + self.horizontalLayout.addWidget(self.button_twopoints_axis) + self.extension_twopoints_axis = QtGui.QLineEdit(self.Axis_Tab1_2) self.extension_twopoints_axis.setMaximumSize(QtCore.QSize(40, 16777215)) self.extension_twopoints_axis.setObjectName(_fromUtf8("extension_twopoints_axis")) - self.horizontalLayout_2.addWidget(self.extension_twopoints_axis) - self.gridLayout_32.addLayout(self.horizontalLayout_2, 1, 0, 1, 1) - self.horizontalLayout_5 = QtGui.QHBoxLayout() - self.horizontalLayout_5.setObjectName(_fromUtf8("horizontalLayout_5")) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) - self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1) + self.horizontalLayout.addWidget(self.extension_twopoints_axis) + self.gridLayout_4.addLayout(self.horizontalLayout, 1, 0, 1, 1) + self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon21) + self.button_Npoints_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_axis.setObjectName(_fromUtf8("button_Npoints_axis")) + self.gridLayout_4.addWidget(self.button_Npoints_axis, 2, 0, 1, 1) + self.horizontalLayout_51 = QtGui.QHBoxLayout() + self.horizontalLayout_51.setObjectName(_fromUtf8("horizontalLayout_51")) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) + self.button_cylinder_axis = QtGui.QPushButton(self.Axis_Tab1_2) self.button_cylinder_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon20 = QtGui.QIcon() - icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_axis.setIcon(icon20) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon22) self.button_cylinder_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cylinder_axis.setObjectName(_fromUtf8("button_cylinder_axis")) - self.verticalLayout.addWidget(self.button_cylinder_axis) - self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1) + self.verticalLayout_3.addWidget(self.button_cylinder_axis) + self.button_plane_axis = QtGui.QPushButton(self.Axis_Tab1_2) self.button_plane_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon21 = QtGui.QIcon() - icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_axis.setIcon(icon21) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon23) self.button_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_axis.setObjectName(_fromUtf8("button_plane_axis")) - self.verticalLayout.addWidget(self.button_plane_axis) - self.button_face_normal = QtGui.QPushButton(self.Axis_Tab1) + self.verticalLayout_3.addWidget(self.button_plane_axis) + self.button_face_normal = QtGui.QPushButton(self.Axis_Tab1_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_face_normal.sizePolicy().hasHeightForWidth()) self.button_face_normal.setSizePolicy(sizePolicy) self.button_face_normal.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon22 = QtGui.QIcon() - icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_normal.setIcon(icon22) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon24) self.button_face_normal.setIconSize(QtCore.QSize(32, 32)) self.button_face_normal.setObjectName(_fromUtf8("button_face_normal")) - self.verticalLayout.addWidget(self.button_face_normal) - self.horizontalLayout_5.addLayout(self.verticalLayout) - self.frame_4 = QtGui.QFrame(self.Axis_Tab1) - self.frame_4.setMinimumSize(QtCore.QSize(60, 0)) - self.frame_4.setMaximumSize(QtCore.QSize(50, 16777215)) - self.frame_4.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_4.setFrameShadow(QtGui.QFrame.Raised) - self.frame_4.setObjectName(_fromUtf8("frame_4")) - self.gridLayout = QtGui.QGridLayout(self.frame_4) - self.gridLayout.setObjectName(_fromUtf8("gridLayout")) - self.extension_face_normal = QtGui.QLineEdit(self.frame_4) + self.verticalLayout_3.addWidget(self.button_face_normal) + self.horizontalLayout_51.addLayout(self.verticalLayout_3) + self.frame_8 = QtGui.QFrame(self.Axis_Tab1_2) + self.frame_8.setMinimumSize(QtCore.QSize(60, 0)) + self.frame_8.setMaximumSize(QtCore.QSize(50, 16777215)) + self.frame_8.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_8.setFrameShadow(QtGui.QFrame.Raised) + self.frame_8.setObjectName(_fromUtf8("frame_8")) + self.gridLayout_72 = QtGui.QGridLayout(self.frame_8) + self.gridLayout_72.setObjectName(_fromUtf8("gridLayout_72")) + self.extension_face_normal = QtGui.QLineEdit(self.frame_8) self.extension_face_normal.setMinimumSize(QtCore.QSize(40, 0)) self.extension_face_normal.setMaximumSize(QtCore.QSize(40, 16777215)) self.extension_face_normal.setObjectName(_fromUtf8("extension_face_normal")) - self.gridLayout.addWidget(self.extension_face_normal, 0, 0, 1, 1) - self.horizontalLayout_5.addWidget(self.frame_4) - self.gridLayout_32.addLayout(self.horizontalLayout_5, 2, 0, 1, 1) - self.horizontalLayout_18 = QtGui.QHBoxLayout() - self.horizontalLayout_18.setObjectName(_fromUtf8("horizontalLayout_18")) - self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1) + self.gridLayout_72.addWidget(self.extension_face_normal, 0, 0, 1, 1) + self.horizontalLayout_51.addWidget(self.frame_8) + self.gridLayout_4.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) + self.horizontalLayout_52 = QtGui.QHBoxLayout() + self.horizontalLayout_52.setObjectName(_fromUtf8("horizontalLayout_52")) + self.button_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_2) self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon23 = QtGui.QIcon() - icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_point_line_axis.setIcon(icon23) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon25) self.button_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_point_line_axis.setObjectName(_fromUtf8("button_point_line_axis")) - self.horizontalLayout_18.addWidget(self.button_point_line_axis) - self.extension_line = QtGui.QLineEdit(self.Axis_Tab1) + self.horizontalLayout_52.addWidget(self.button_point_line_axis) + self.extension_line = QtGui.QLineEdit(self.Axis_Tab1_2) self.extension_line.setMaximumSize(QtCore.QSize(40, 16777215)) self.extension_line.setObjectName(_fromUtf8("extension_line")) - self.horizontalLayout_18.addWidget(self.extension_line) - self.point_loc_comboBox = QtGui.QComboBox(self.Axis_Tab1) + self.horizontalLayout_52.addWidget(self.extension_line) + self.point_loc_comboBox = QtGui.QComboBox(self.Axis_Tab1_2) self.point_loc_comboBox.setMaximumSize(QtCore.QSize(60, 16777215)) self.point_loc_comboBox.setObjectName(_fromUtf8("point_loc_comboBox")) self.point_loc_comboBox.addItem(_fromUtf8("")) self.point_loc_comboBox.addItem(_fromUtf8("")) self.point_loc_comboBox.addItem(_fromUtf8("")) - self.horizontalLayout_18.addWidget(self.point_loc_comboBox) - self.gridLayout_32.addLayout(self.horizontalLayout_18, 3, 0, 1, 1) - self.horizontalLayout_7 = QtGui.QHBoxLayout() - self.horizontalLayout_7.setObjectName(_fromUtf8("horizontalLayout_7")) - self.button_line_point_axis = QtGui.QPushButton(self.Axis_Tab1) + self.horizontalLayout_52.addWidget(self.point_loc_comboBox) + self.gridLayout_4.addLayout(self.horizontalLayout_52, 4, 0, 1, 1) + self.horizontalLayout_53 = QtGui.QHBoxLayout() + self.horizontalLayout_53.setObjectName(_fromUtf8("horizontalLayout_53")) + self.button_line_point_axis = QtGui.QPushButton(self.Axis_Tab1_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -404,64 +418,64 @@ class Ui_Form(object): self.button_line_point_axis.setSizePolicy(sizePolicy) self.button_line_point_axis.setMinimumSize(QtCore.QSize(0, 0)) self.button_line_point_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon24 = QtGui.QIcon() - icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_point_axis.setIcon(icon24) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon26) self.button_line_point_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_point_axis.setObjectName(_fromUtf8("button_line_point_axis")) - self.horizontalLayout_7.addWidget(self.button_line_point_axis) - self.extension_line_point_axis = QtGui.QLineEdit(self.Axis_Tab1) + self.horizontalLayout_53.addWidget(self.button_line_point_axis) + self.extension_line_point_axis = QtGui.QLineEdit(self.Axis_Tab1_2) self.extension_line_point_axis.setMaximumSize(QtCore.QSize(40, 16777215)) self.extension_line_point_axis.setObjectName(_fromUtf8("extension_line_point_axis")) - self.horizontalLayout_7.addWidget(self.extension_line_point_axis) - self.gridLayout_32.addLayout(self.horizontalLayout_7, 4, 0, 1, 1) - self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1) - icon25 = QtGui.QIcon() - icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twolines_axis.setIcon(icon25) + self.horizontalLayout_53.addWidget(self.extension_line_point_axis) + self.gridLayout_4.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) + self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon27) self.button_twolines_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twolines_axis.setObjectName(_fromUtf8("button_twolines_axis")) - self.gridLayout_32.addWidget(self.button_twolines_axis, 5, 0, 1, 1) - self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab1) - icon26 = QtGui.QIcon() - icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_plane_point_line_axis.setIcon(icon26) + self.gridLayout_4.addWidget(self.button_twolines_axis, 6, 0, 1, 1) + self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab1_2) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon28) self.button_plane_point_line_axis.setIconSize(QtCore.QSize(32, 32)) self.button_plane_point_line_axis.setObjectName(_fromUtf8("button_plane_point_line_axis")) - self.gridLayout_32.addWidget(self.button_plane_point_line_axis, 6, 0, 1, 1) + self.gridLayout_4.addWidget(self.button_plane_point_line_axis, 7, 0, 1, 1) spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_32.addItem(spacerItem3, 7, 0, 1, 1) - icon27 = QtGui.QIcon() - icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.Axis_Tab1, icon27, _fromUtf8("")) - self.Axis_Tab2 = QtGui.QWidget() - self.Axis_Tab2.setObjectName(_fromUtf8("Axis_Tab2")) - self.gridLayout_33 = QtGui.QGridLayout(self.Axis_Tab2) - self.gridLayout_33.setObjectName(_fromUtf8("gridLayout_33")) - self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2) - icon28 = QtGui.QIcon() - icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_line_plane_axis.setIcon(icon28) + self.gridLayout_4.addItem(spacerItem3, 8, 0, 1, 1) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab1_2, icon29, _fromUtf8("")) + self.Axis_Tab2_2 = QtGui.QWidget() + self.Axis_Tab2_2.setObjectName(_fromUtf8("Axis_Tab2_2")) + self.gridLayout_73 = QtGui.QGridLayout(self.Axis_Tab2_2) + self.gridLayout_73.setObjectName(_fromUtf8("gridLayout_73")) + self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_2) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon30) self.button_line_plane_axis.setIconSize(QtCore.QSize(32, 32)) self.button_line_plane_axis.setObjectName(_fromUtf8("button_line_plane_axis")) - self.gridLayout_33.addWidget(self.button_line_plane_axis, 0, 0, 1, 1) - self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2) - icon29 = QtGui.QIcon() - icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_twoplanes_axis.setIcon(icon29) + self.gridLayout_73.addWidget(self.button_line_plane_axis, 0, 0, 1, 1) + self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_2) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon31) self.button_twoplanes_axis.setIconSize(QtCore.QSize(32, 32)) self.button_twoplanes_axis.setObjectName(_fromUtf8("button_twoplanes_axis")) - self.gridLayout_33.addWidget(self.button_twoplanes_axis, 1, 0, 1, 1) - self.horizontalLayout_29 = QtGui.QHBoxLayout() - self.horizontalLayout_29.setObjectName(_fromUtf8("horizontalLayout_29")) - self.button_distLine = QtGui.QPushButton(self.Axis_Tab2) - icon30 = QtGui.QIcon() - icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distLine.setIcon(icon30) + self.gridLayout_73.addWidget(self.button_twoplanes_axis, 1, 0, 1, 1) + self.horizontalLayout_54 = QtGui.QHBoxLayout() + self.horizontalLayout_54.setObjectName(_fromUtf8("horizontalLayout_54")) + self.button_distLine = QtGui.QPushButton(self.Axis_Tab2_2) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon32) self.button_distLine.setIconSize(QtCore.QSize(32, 32)) self.button_distLine.setObjectName(_fromUtf8("button_distLine")) - self.horizontalLayout_29.addWidget(self.button_distLine) - self.dist_line = QtGui.QLineEdit(self.Axis_Tab2) + self.horizontalLayout_54.addWidget(self.button_distLine) + self.dist_line = QtGui.QLineEdit(self.Axis_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -470,8 +484,8 @@ class Ui_Form(object): self.dist_line.setMinimumSize(QtCore.QSize(40, 0)) self.dist_line.setMaximumSize(QtCore.QSize(40, 16777215)) self.dist_line.setObjectName(_fromUtf8("dist_line")) - self.horizontalLayout_29.addWidget(self.dist_line) - self.spin_dist_line = QtGui.QSpinBox(self.Axis_Tab2) + self.horizontalLayout_54.addWidget(self.dist_line) + self.spin_dist_line = QtGui.QSpinBox(self.Axis_Tab2_2) self.spin_dist_line.setMinimumSize(QtCore.QSize(30, 0)) self.spin_dist_line.setMaximumSize(QtCore.QSize(30, 16777215)) self.spin_dist_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) @@ -481,18 +495,18 @@ class Ui_Form(object): self.spin_dist_line.setSingleStep(1) self.spin_dist_line.setProperty("value", 1) self.spin_dist_line.setObjectName(_fromUtf8("spin_dist_line")) - self.horizontalLayout_29.addWidget(self.spin_dist_line) - self.gridLayout_33.addLayout(self.horizontalLayout_29, 2, 0, 1, 1) - self.horizontalLayout_31 = QtGui.QHBoxLayout() - self.horizontalLayout_31.setObjectName(_fromUtf8("horizontalLayout_31")) - self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2) - icon31 = QtGui.QIcon() - icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_angleLine.setIcon(icon31) + self.horizontalLayout_54.addWidget(self.spin_dist_line) + self.gridLayout_73.addLayout(self.horizontalLayout_54, 2, 0, 1, 1) + self.horizontalLayout_55 = QtGui.QHBoxLayout() + self.horizontalLayout_55.setObjectName(_fromUtf8("horizontalLayout_55")) + self.button_angleLine = QtGui.QPushButton(self.Axis_Tab2_2) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon33) self.button_angleLine.setIconSize(QtCore.QSize(32, 32)) self.button_angleLine.setObjectName(_fromUtf8("button_angleLine")) - self.horizontalLayout_31.addWidget(self.button_angleLine) - self.angle_line = QtGui.QLineEdit(self.Axis_Tab2) + self.horizontalLayout_55.addWidget(self.button_angleLine) + self.angle_line = QtGui.QLineEdit(self.Axis_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -501,8 +515,8 @@ class Ui_Form(object): self.angle_line.setMinimumSize(QtCore.QSize(40, 0)) self.angle_line.setMaximumSize(QtCore.QSize(40, 16777215)) self.angle_line.setObjectName(_fromUtf8("angle_line")) - self.horizontalLayout_31.addWidget(self.angle_line) - self.spin_angle_line = QtGui.QSpinBox(self.Axis_Tab2) + self.horizontalLayout_55.addWidget(self.angle_line) + self.spin_angle_line = QtGui.QSpinBox(self.Axis_Tab2_2) self.spin_angle_line.setMinimumSize(QtCore.QSize(30, 0)) self.spin_angle_line.setMaximumSize(QtCore.QSize(30, 16777215)) self.spin_angle_line.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) @@ -512,61 +526,61 @@ class Ui_Form(object): self.spin_angle_line.setSingleStep(1) self.spin_angle_line.setProperty("value", 1) self.spin_angle_line.setObjectName(_fromUtf8("spin_angle_line")) - self.horizontalLayout_31.addWidget(self.spin_angle_line) - self.gridLayout_33.addLayout(self.horizontalLayout_31, 3, 0, 1, 1) - self.horizontalLayout_26 = QtGui.QHBoxLayout() - self.horizontalLayout_26.setObjectName(_fromUtf8("horizontalLayout_26")) - self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2) + self.horizontalLayout_55.addWidget(self.spin_angle_line) + self.gridLayout_73.addLayout(self.horizontalLayout_55, 3, 0, 1, 1) + self.horizontalLayout_56 = QtGui.QHBoxLayout() + self.horizontalLayout_56.setObjectName(_fromUtf8("horizontalLayout_56")) + self.button_cut_wire_axis = QtGui.QPushButton(self.Axis_Tab2_2) self.button_cut_wire_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon32 = QtGui.QIcon() - icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_wire_axis.setIcon(icon32) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon34) self.button_cut_wire_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_wire_axis.setObjectName(_fromUtf8("button_cut_wire_axis")) - self.horizontalLayout_26.addWidget(self.button_cut_wire_axis) - self.spin_wire_cut_axis = QtGui.QSpinBox(self.Axis_Tab2) + self.horizontalLayout_56.addWidget(self.button_cut_wire_axis) + self.spin_wire_cut_axis = QtGui.QSpinBox(self.Axis_Tab2_2) self.spin_wire_cut_axis.setMinimumSize(QtCore.QSize(40, 0)) self.spin_wire_cut_axis.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_wire_cut_axis.setMinimum(2) self.spin_wire_cut_axis.setMaximum(100) self.spin_wire_cut_axis.setSingleStep(1) self.spin_wire_cut_axis.setObjectName(_fromUtf8("spin_wire_cut_axis")) - self.horizontalLayout_26.addWidget(self.spin_wire_cut_axis) - self.gridLayout_33.addLayout(self.horizontalLayout_26, 4, 0, 1, 1) - self.horizontalLayout_21 = QtGui.QHBoxLayout() - self.horizontalLayout_21.setObjectName(_fromUtf8("horizontalLayout_21")) - self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2) + self.horizontalLayout_56.addWidget(self.spin_wire_cut_axis) + self.gridLayout_73.addLayout(self.horizontalLayout_56, 4, 0, 1, 1) + self.horizontalLayout_57 = QtGui.QHBoxLayout() + self.horizontalLayout_57.setObjectName(_fromUtf8("horizontalLayout_57")) + self.button_cut_axis = QtGui.QPushButton(self.Axis_Tab2_2) self.button_cut_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon33 = QtGui.QIcon() - icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_axis.setIcon(icon33) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon35) self.button_cut_axis.setIconSize(QtCore.QSize(32, 32)) self.button_cut_axis.setObjectName(_fromUtf8("button_cut_axis")) - self.horizontalLayout_21.addWidget(self.button_cut_axis) - self.spin_axis_cut = QtGui.QSpinBox(self.Axis_Tab2) + self.horizontalLayout_57.addWidget(self.button_cut_axis) + self.spin_axis_cut = QtGui.QSpinBox(self.Axis_Tab2_2) self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0)) self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_axis_cut.setMinimum(2) self.spin_axis_cut.setMaximum(100) self.spin_axis_cut.setSingleStep(1) self.spin_axis_cut.setObjectName(_fromUtf8("spin_axis_cut")) - self.horizontalLayout_21.addWidget(self.spin_axis_cut) - self.gridLayout_33.addLayout(self.horizontalLayout_21, 5, 0, 1, 1) - self.horizontalLayout_22 = QtGui.QHBoxLayout() - self.horizontalLayout_22.setObjectName(_fromUtf8("horizontalLayout_22")) - self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2) + self.horizontalLayout_57.addWidget(self.spin_axis_cut) + self.gridLayout_73.addLayout(self.horizontalLayout_57, 5, 0, 1, 1) + self.horizontalLayout_58 = QtGui.QHBoxLayout() + self.horizontalLayout_58.setObjectName(_fromUtf8("horizontalLayout_58")) + self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_axis.sizePolicy().hasHeightForWidth()) self.button_extension_axis.setSizePolicy(sizePolicy) - icon34 = QtGui.QIcon() - icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_axis.setIcon(icon34) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon36) self.button_extension_axis.setIconSize(QtCore.QSize(32, 32)) self.button_extension_axis.setObjectName(_fromUtf8("button_extension_axis")) - self.horizontalLayout_22.addWidget(self.button_extension_axis) - self.extension_axis = QtGui.QLineEdit(self.Axis_Tab2) + self.horizontalLayout_58.addWidget(self.button_extension_axis) + self.extension_axis = QtGui.QLineEdit(self.Axis_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -575,121 +589,653 @@ class Ui_Form(object): self.extension_axis.setMinimumSize(QtCore.QSize(40, 0)) self.extension_axis.setMaximumSize(QtCore.QSize(50, 16777215)) self.extension_axis.setObjectName(_fromUtf8("extension_axis")) - self.horizontalLayout_22.addWidget(self.extension_axis) - self.gridLayout_33.addLayout(self.horizontalLayout_22, 6, 0, 1, 1) - self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2) - icon35 = QtGui.QIcon() - icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_click_for_axis.setIcon(icon35) + self.horizontalLayout_58.addWidget(self.extension_axis) + self.gridLayout_73.addLayout(self.horizontalLayout_58, 6, 0, 1, 1) + self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_2) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon37) self.button_click_for_axis.setIconSize(QtCore.QSize(32, 32)) self.button_click_for_axis.setObjectName(_fromUtf8("button_click_for_axis")) - self.gridLayout_33.addWidget(self.button_click_for_axis, 7, 0, 1, 1) - self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab2) - icon36 = QtGui.QIcon() - icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_base_axes.setIcon(icon36) + self.gridLayout_73.addWidget(self.button_click_for_axis, 7, 0, 1, 1) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab2_2) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon38) self.button_object_base_axes.setIconSize(QtCore.QSize(32, 32)) self.button_object_base_axes.setObjectName(_fromUtf8("button_object_base_axes")) - self.gridLayout_33.addWidget(self.button_object_base_axes, 8, 0, 1, 1) - self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab2) - self.button_line_to_sketch.setIcon(icon17) + self.gridLayout_73.addWidget(self.button_object_base_axes, 8, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab2_2) + self.button_line_to_sketch.setIcon(icon18) self.button_line_to_sketch.setIconSize(QtCore.QSize(32, 32)) self.button_line_to_sketch.setObjectName(_fromUtf8("button_line_to_sketch")) - self.gridLayout_33.addWidget(self.button_line_to_sketch, 9, 0, 1, 1) + self.gridLayout_73.addWidget(self.button_line_to_sketch, 9, 0, 1, 1) spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_33.addItem(spacerItem4, 10, 0, 1, 1) - self.tabWidget.addTab(self.Axis_Tab2, icon27, _fromUtf8("")) - self.tab_4 = QtGui.QWidget() - self.tab_4.setObjectName(_fromUtf8("tab_4")) - self.gridLayout_22 = QtGui.QGridLayout(self.tab_4) - self.gridLayout_22.setObjectName(_fromUtf8("gridLayout_22")) - self.horizontalLayout_11 = QtGui.QHBoxLayout() - self.horizontalLayout_11.setObjectName(_fromUtf8("horizontalLayout_11")) - self.button_linecenter_circle = QtGui.QPushButton(self.tab_4) - icon37 = QtGui.QIcon() - icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_linecenter_circle.setIcon(icon37) + self.gridLayout_73.addItem(spacerItem4, 10, 0, 1, 1) + self.tabWidget_7.addTab(self.Axis_Tab2_2, icon29, _fromUtf8("")) + self.Wire_Tab_2 = QtGui.QWidget() + self.Wire_Tab_2.setObjectName(_fromUtf8("Wire_Tab_2")) + self.gridLayout_74 = QtGui.QGridLayout(self.Wire_Tab_2) + self.gridLayout_74.setObjectName(_fromUtf8("gridLayout_74")) + self.lineEdit = QtGui.QLineEdit(self.Wire_Tab_2) + self.lineEdit.setReadOnly(True) + self.lineEdit.setObjectName(_fromUtf8("lineEdit")) + self.gridLayout_74.addWidget(self.lineEdit, 0, 0, 1, 1) + self.tabWidget_8 = QtGui.QTabWidget(self.Wire_Tab_2) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.tabWidget_8.sizePolicy().hasHeightForWidth()) + self.tabWidget_8.setSizePolicy(sizePolicy) + self.tabWidget_8.setObjectName(_fromUtf8("tabWidget_8")) + self.tab_14 = QtGui.QWidget() + self.tab_14.setObjectName(_fromUtf8("tab_14")) + self.gridLayout_75 = QtGui.QGridLayout(self.tab_14) + self.gridLayout_75.setObjectName(_fromUtf8("gridLayout_75")) + self.scrollArea_2 = QtGui.QScrollArea(self.tab_14) + self.scrollArea_2.setWidgetResizable(True) + self.scrollArea_2.setObjectName(_fromUtf8("scrollArea_2")) + self.scrollAreaWidgetContents_5 = QtGui.QWidget() + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 259, 650)) + self.scrollAreaWidgetContents_5.setObjectName(_fromUtf8("scrollAreaWidgetContents_5")) + self.gridLayout_76 = QtGui.QGridLayout(self.scrollAreaWidgetContents_5) + self.gridLayout_76.setObjectName(_fromUtf8("gridLayout_76")) + spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_76.addItem(spacerItem5, 7, 0, 1, 1) + self.groupBox_14 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_14.setObjectName(_fromUtf8("groupBox_14")) + self.gridLayout_77 = QtGui.QGridLayout(self.groupBox_14) + self.gridLayout_77.setObjectName(_fromUtf8("gridLayout_77")) + self.label_y_3 = QtGui.QLabel(self.groupBox_14) + self.label_y_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_y_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_y_3.setObjectName(_fromUtf8("label_y_3")) + self.gridLayout_77.addWidget(self.label_y_3, 3, 0, 1, 1) + self.ParCurve_a_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_a_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_a_2.setSizePolicy(sizePolicy) + self.ParCurve_a_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_a_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_a_2.setMaxLength(32769) + self.ParCurve_a_2.setObjectName(_fromUtf8("ParCurve_a_2")) + self.gridLayout_77.addWidget(self.ParCurve_a_2, 0, 1, 1, 1) + self.label_b_3 = QtGui.QLabel(self.groupBox_14) + self.label_b_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_b_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_b_3.setObjectName(_fromUtf8("label_b_3")) + self.gridLayout_77.addWidget(self.label_b_3, 1, 0, 1, 1) + self.ParCurve_y_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_y_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_y_2.setSizePolicy(sizePolicy) + self.ParCurve_y_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_y_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_y_2.setMaxLength(32769) + self.ParCurve_y_2.setObjectName(_fromUtf8("ParCurve_y_2")) + self.gridLayout_77.addWidget(self.ParCurve_y_2, 3, 1, 1, 1) + self.checkBox_polar_2 = QtGui.QCheckBox(self.groupBox_14) + self.checkBox_polar_2.setAutoExclusive(True) + self.checkBox_polar_2.setObjectName(_fromUtf8("checkBox_polar_2")) + self.gridLayout_77.addWidget(self.checkBox_polar_2, 4, 1, 1, 1) + self.label_x_3 = QtGui.QLabel(self.groupBox_14) + self.label_x_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_x_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_x_3.setObjectName(_fromUtf8("label_x_3")) + self.gridLayout_77.addWidget(self.label_x_3, 2, 0, 1, 1) + self.ParCurve_x_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_x_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_x_2.setSizePolicy(sizePolicy) + self.ParCurve_x_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_x_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_x_2.setMaxLength(32769) + self.ParCurve_x_2.setObjectName(_fromUtf8("ParCurve_x_2")) + self.gridLayout_77.addWidget(self.ParCurve_x_2, 2, 1, 1, 1) + self.label_a_3 = QtGui.QLabel(self.groupBox_14) + self.label_a_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_a_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_a_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_a_3.setObjectName(_fromUtf8("label_a_3")) + self.gridLayout_77.addWidget(self.label_a_3, 0, 0, 1, 1) + self.ParCurve_b_2 = QtGui.QLineEdit(self.groupBox_14) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_b_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_b_2.setSizePolicy(sizePolicy) + self.ParCurve_b_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_b_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_b_2.setMaxLength(32769) + self.ParCurve_b_2.setObjectName(_fromUtf8("ParCurve_b_2")) + self.gridLayout_77.addWidget(self.ParCurve_b_2, 1, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_14, 2, 0, 1, 1) + self.horizontalLayout_59 = QtGui.QHBoxLayout() + self.horizontalLayout_59.setObjectName(_fromUtf8("horizontalLayout_59")) + self.ParCurve_comboBox_2 = QtGui.QComboBox(self.scrollAreaWidgetContents_5) + self.ParCurve_comboBox_2.setObjectName(_fromUtf8("ParCurve_comboBox_2")) + self.horizontalLayout_59.addWidget(self.ParCurve_comboBox_2) + self.ParCurve_button_edit_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_edit_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_edit_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_edit_2.setObjectName(_fromUtf8("ParCurve_button_edit_2")) + self.horizontalLayout_59.addWidget(self.ParCurve_button_edit_2) + self.gridLayout_76.addLayout(self.horizontalLayout_59, 0, 0, 1, 1) + self.horizontalLayout_61 = QtGui.QHBoxLayout() + self.horizontalLayout_61.setObjectName(_fromUtf8("horizontalLayout_61")) + self.checkBox_close_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) + self.checkBox_close_2.setEnabled(True) + self.checkBox_close_2.setObjectName(_fromUtf8("checkBox_close_2")) + self.horizontalLayout_61.addWidget(self.checkBox_close_2) + self.checkBox_face_2 = QtGui.QCheckBox(self.scrollAreaWidgetContents_5) + self.checkBox_face_2.setEnabled(False) + self.checkBox_face_2.setObjectName(_fromUtf8("checkBox_face_2")) + self.horizontalLayout_61.addWidget(self.checkBox_face_2) + self.gridLayout_76.addLayout(self.horizontalLayout_61, 5, 0, 1, 1) + self.horizontalLayout_60 = QtGui.QHBoxLayout() + self.horizontalLayout_60.setObjectName(_fromUtf8("horizontalLayout_60")) + self.label_name_2 = QtGui.QLabel(self.scrollAreaWidgetContents_5) + self.label_name_2.setFrameShape(QtGui.QFrame.Box) + self.label_name_2.setFrameShadow(QtGui.QFrame.Raised) + self.label_name_2.setLineWidth(3) + self.label_name_2.setAlignment(QtCore.Qt.AlignCenter) + self.label_name_2.setObjectName(_fromUtf8("label_name_2")) + self.horizontalLayout_60.addWidget(self.label_name_2) + self.ParCurve_name_2 = QtGui.QLineEdit(self.scrollAreaWidgetContents_5) + self.ParCurve_name_2.setObjectName(_fromUtf8("ParCurve_name_2")) + self.horizontalLayout_60.addWidget(self.ParCurve_name_2) + self.gridLayout_76.addLayout(self.horizontalLayout_60, 1, 0, 1, 1) + self.groupBox_15 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_15.setObjectName(_fromUtf8("groupBox_15")) + self.gridLayout_78 = QtGui.QGridLayout(self.groupBox_15) + self.gridLayout_78.setObjectName(_fromUtf8("gridLayout_78")) + self.label_tmin_3 = QtGui.QLabel(self.groupBox_15) + self.label_tmin_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmin_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmin_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmin_3.setObjectName(_fromUtf8("label_tmin_3")) + self.gridLayout_78.addWidget(self.label_tmin_3, 0, 0, 1, 1) + self.ParCurve_tmin_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmin_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmin_2.setSizePolicy(sizePolicy) + self.ParCurve_tmin_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmin_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmin_2.setMaxLength(32769) + self.ParCurve_tmin_2.setObjectName(_fromUtf8("ParCurve_tmin_2")) + self.gridLayout_78.addWidget(self.ParCurve_tmin_2, 0, 1, 1, 1) + self.label_tmax_3 = QtGui.QLabel(self.groupBox_15) + self.label_tmax_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmax_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmax_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmax_3.setObjectName(_fromUtf8("label_tmax_3")) + self.gridLayout_78.addWidget(self.label_tmax_3, 1, 0, 1, 1) + self.ParCurve_tmax_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmax_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmax_2.setSizePolicy(sizePolicy) + self.ParCurve_tmax_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmax_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmax_2.setMaxLength(32769) + self.ParCurve_tmax_2.setObjectName(_fromUtf8("ParCurve_tmax_2")) + self.gridLayout_78.addWidget(self.ParCurve_tmax_2, 1, 1, 1, 1) + self.label_tstep_3 = QtGui.QLabel(self.groupBox_15) + self.label_tstep_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tstep_3.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tstep_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tstep_3.setObjectName(_fromUtf8("label_tstep_3")) + self.gridLayout_78.addWidget(self.label_tstep_3, 2, 0, 1, 1) + self.ParCurve_tstep_2 = QtGui.QLineEdit(self.groupBox_15) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tstep_2.sizePolicy().hasHeightForWidth()) + self.ParCurve_tstep_2.setSizePolicy(sizePolicy) + self.ParCurve_tstep_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tstep_2.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tstep_2.setMaxLength(32769) + self.ParCurve_tstep_2.setObjectName(_fromUtf8("ParCurve_tstep_2")) + self.gridLayout_78.addWidget(self.ParCurve_tstep_2, 2, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_15, 3, 0, 1, 1) + self.groupBox_16 = QtGui.QGroupBox(self.scrollAreaWidgetContents_5) + self.groupBox_16.setObjectName(_fromUtf8("groupBox_16")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_16) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.checkBox_points_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_points_2.setAutoExclusive(True) + self.checkBox_points_2.setObjectName(_fromUtf8("checkBox_points_2")) + self.gridLayout_2.addWidget(self.checkBox_points_2, 0, 0, 1, 1) + self.checkBox_polyline_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_polyline_2.setChecked(True) + self.checkBox_polyline_2.setAutoExclusive(True) + self.checkBox_polyline_2.setObjectName(_fromUtf8("checkBox_polyline_2")) + self.gridLayout_2.addWidget(self.checkBox_polyline_2, 0, 1, 1, 1) + self.checkBox_bspline_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_bspline_2.setEnabled(True) + self.checkBox_bspline_2.setChecked(False) + self.checkBox_bspline_2.setAutoExclusive(True) + self.checkBox_bspline_2.setObjectName(_fromUtf8("checkBox_bspline_2")) + self.gridLayout_2.addWidget(self.checkBox_bspline_2, 1, 0, 1, 1) + self.checkBox_bezier_2 = QtGui.QCheckBox(self.groupBox_16) + self.checkBox_bezier_2.setEnabled(True) + self.checkBox_bezier_2.setChecked(False) + self.checkBox_bezier_2.setAutoExclusive(True) + self.checkBox_bezier_2.setObjectName(_fromUtf8("checkBox_bezier_2")) + self.gridLayout_2.addWidget(self.checkBox_bezier_2, 1, 1, 1, 1) + self.gridLayout_76.addWidget(self.groupBox_16, 4, 0, 1, 1) + self.horizontalLayout_62 = QtGui.QHBoxLayout() + self.horizontalLayout_62.setObjectName(_fromUtf8("horizontalLayout_62")) + self.ParCurve_button_store_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_store_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_store_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_store_2.setObjectName(_fromUtf8("ParCurve_button_store_2")) + self.horizontalLayout_62.addWidget(self.ParCurve_button_store_2) + spacerItem6 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_62.addItem(spacerItem6) + self.ParCurve_button_apply_2 = QtGui.QPushButton(self.scrollAreaWidgetContents_5) + self.ParCurve_button_apply_2.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_apply_2.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_apply_2.setObjectName(_fromUtf8("ParCurve_button_apply_2")) + self.horizontalLayout_62.addWidget(self.ParCurve_button_apply_2) + self.gridLayout_76.addLayout(self.horizontalLayout_62, 6, 0, 1, 1) + self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_5) + self.gridLayout_75.addWidget(self.scrollArea_2, 0, 0, 1, 1) + self.tabWidget_8.addTab(self.tab_14, _fromUtf8("")) + self.tab_15 = QtGui.QWidget() + self.tab_15.setObjectName(_fromUtf8("tab_15")) + self.gridLayout_80 = QtGui.QGridLayout(self.tab_15) + self.gridLayout_80.setObjectName(_fromUtf8("gridLayout_80")) + self.scrollArea_5 = QtGui.QScrollArea(self.tab_15) + self.scrollArea_5.setWidgetResizable(True) + self.scrollArea_5.setObjectName(_fromUtf8("scrollArea_5")) + self.scrollAreaWidgetContents_6 = QtGui.QWidget() + self.scrollAreaWidgetContents_6.setGeometry(QtCore.QRect(0, 0, 207, 692)) + self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) + self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) + self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) + self.horizontalLayout_63 = QtGui.QHBoxLayout() + self.horizontalLayout_63.setObjectName(_fromUtf8("horizontalLayout_63")) + self.ParCurve_comboBox_3 = QtGui.QComboBox(self.scrollAreaWidgetContents_6) + self.ParCurve_comboBox_3.setObjectName(_fromUtf8("ParCurve_comboBox_3")) + self.horizontalLayout_63.addWidget(self.ParCurve_comboBox_3) + self.ParCurve_button_edit_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_edit_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_edit_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_edit_3.setObjectName(_fromUtf8("ParCurve_button_edit_3")) + self.horizontalLayout_63.addWidget(self.ParCurve_button_edit_3) + self.gridLayout_81.addLayout(self.horizontalLayout_63, 0, 0, 1, 1) + self.horizontalLayout_64 = QtGui.QHBoxLayout() + self.horizontalLayout_64.setObjectName(_fromUtf8("horizontalLayout_64")) + self.label_name_3 = QtGui.QLabel(self.scrollAreaWidgetContents_6) + self.label_name_3.setFrameShape(QtGui.QFrame.Box) + self.label_name_3.setFrameShadow(QtGui.QFrame.Raised) + self.label_name_3.setLineWidth(3) + self.label_name_3.setAlignment(QtCore.Qt.AlignCenter) + self.label_name_3.setObjectName(_fromUtf8("label_name_3")) + self.horizontalLayout_64.addWidget(self.label_name_3) + self.ParCurve_name_3 = QtGui.QLineEdit(self.scrollAreaWidgetContents_6) + self.ParCurve_name_3.setObjectName(_fromUtf8("ParCurve_name_3")) + self.horizontalLayout_64.addWidget(self.ParCurve_name_3) + self.gridLayout_81.addLayout(self.horizontalLayout_64, 1, 0, 1, 1) + self.groupBox_17 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_17.setObjectName(_fromUtf8("groupBox_17")) + self.formLayout_3 = QtGui.QFormLayout(self.groupBox_17) + self.formLayout_3.setObjectName(_fromUtf8("formLayout_3")) + self.label_a_4 = QtGui.QLabel(self.groupBox_17) + self.label_a_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_a_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_a_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_a_4.setObjectName(_fromUtf8("label_a_4")) + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.label_a_4) + self.ParCurve_a_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_a_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_a_3.setSizePolicy(sizePolicy) + self.ParCurve_a_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_a_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_a_3.setMaxLength(32769) + self.ParCurve_a_3.setObjectName(_fromUtf8("ParCurve_a_3")) + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.ParCurve_a_3) + self.label_b_4 = QtGui.QLabel(self.groupBox_17) + self.label_b_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_b_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_b_4.setObjectName(_fromUtf8("label_b_4")) + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.label_b_4) + self.ParCurve_b_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_b_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_b_3.setSizePolicy(sizePolicy) + self.ParCurve_b_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_b_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_b_3.setMaxLength(32769) + self.ParCurve_b_3.setObjectName(_fromUtf8("ParCurve_b_3")) + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.ParCurve_b_3) + self.label_c_2 = QtGui.QLabel(self.groupBox_17) + self.label_c_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_c_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_c_2.setObjectName(_fromUtf8("label_c_2")) + self.formLayout_3.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_c_2) + self.ParCurve_c_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_c_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_c_3.setSizePolicy(sizePolicy) + self.ParCurve_c_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_c_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_c_3.setMaxLength(32769) + self.ParCurve_c_3.setObjectName(_fromUtf8("ParCurve_c_3")) + self.formLayout_3.setWidget(2, QtGui.QFormLayout.FieldRole, self.ParCurve_c_3) + self.label_x_4 = QtGui.QLabel(self.groupBox_17) + self.label_x_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_x_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_x_4.setObjectName(_fromUtf8("label_x_4")) + self.formLayout_3.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_x_4) + self.ParCurve_x_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_x_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_x_3.setSizePolicy(sizePolicy) + self.ParCurve_x_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_x_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_x_3.setMaxLength(32769) + self.ParCurve_x_3.setObjectName(_fromUtf8("ParCurve_x_3")) + self.formLayout_3.setWidget(3, QtGui.QFormLayout.FieldRole, self.ParCurve_x_3) + self.label_y_4 = QtGui.QLabel(self.groupBox_17) + self.label_y_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_y_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_y_4.setObjectName(_fromUtf8("label_y_4")) + self.formLayout_3.setWidget(4, QtGui.QFormLayout.LabelRole, self.label_y_4) + self.label_z_2 = QtGui.QLabel(self.groupBox_17) + self.label_z_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_z_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_z_2.setObjectName(_fromUtf8("label_z_2")) + self.formLayout_3.setWidget(5, QtGui.QFormLayout.LabelRole, self.label_z_2) + self.ParCurve_z_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_z_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_z_3.setSizePolicy(sizePolicy) + self.ParCurve_z_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_z_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_z_3.setMaxLength(32769) + self.ParCurve_z_3.setObjectName(_fromUtf8("ParCurve_z_3")) + self.formLayout_3.setWidget(5, QtGui.QFormLayout.FieldRole, self.ParCurve_z_3) + self.ParCurve_y_3 = QtGui.QLineEdit(self.groupBox_17) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_y_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_y_3.setSizePolicy(sizePolicy) + self.ParCurve_y_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_y_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_y_3.setMaxLength(32769) + self.ParCurve_y_3.setObjectName(_fromUtf8("ParCurve_y_3")) + self.formLayout_3.setWidget(4, QtGui.QFormLayout.FieldRole, self.ParCurve_y_3) + self.gridLayout_81.addWidget(self.groupBox_17, 2, 0, 1, 1) + self.groupBox_18 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_18.setObjectName(_fromUtf8("groupBox_18")) + self.gridLayout_82 = QtGui.QGridLayout(self.groupBox_18) + self.gridLayout_82.setObjectName(_fromUtf8("gridLayout_82")) + self.label_tmin_4 = QtGui.QLabel(self.groupBox_18) + self.label_tmin_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmin_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmin_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmin_4.setObjectName(_fromUtf8("label_tmin_4")) + self.gridLayout_82.addWidget(self.label_tmin_4, 0, 0, 1, 1) + self.label_tmax_4 = QtGui.QLabel(self.groupBox_18) + self.label_tmax_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tmax_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tmax_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tmax_4.setObjectName(_fromUtf8("label_tmax_4")) + self.gridLayout_82.addWidget(self.label_tmax_4, 1, 0, 1, 1) + self.ParCurve_tmax_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmax_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmax_3.setSizePolicy(sizePolicy) + self.ParCurve_tmax_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmax_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmax_3.setMaxLength(32769) + self.ParCurve_tmax_3.setObjectName(_fromUtf8("ParCurve_tmax_3")) + self.gridLayout_82.addWidget(self.ParCurve_tmax_3, 1, 1, 1, 1) + self.label_tstep_4 = QtGui.QLabel(self.groupBox_18) + self.label_tstep_4.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_tstep_4.setLayoutDirection(QtCore.Qt.LeftToRight) + self.label_tstep_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.label_tstep_4.setObjectName(_fromUtf8("label_tstep_4")) + self.gridLayout_82.addWidget(self.label_tstep_4, 2, 0, 1, 1) + self.ParCurve_tstep_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tstep_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tstep_3.setSizePolicy(sizePolicy) + self.ParCurve_tstep_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tstep_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tstep_3.setMaxLength(32769) + self.ParCurve_tstep_3.setObjectName(_fromUtf8("ParCurve_tstep_3")) + self.gridLayout_82.addWidget(self.ParCurve_tstep_3, 2, 1, 1, 1) + self.ParCurve_tmin_3 = QtGui.QLineEdit(self.groupBox_18) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.ParCurve_tmin_3.sizePolicy().hasHeightForWidth()) + self.ParCurve_tmin_3.setSizePolicy(sizePolicy) + self.ParCurve_tmin_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_tmin_3.setMaximumSize(QtCore.QSize(150, 16777215)) + self.ParCurve_tmin_3.setMaxLength(32769) + self.ParCurve_tmin_3.setObjectName(_fromUtf8("ParCurve_tmin_3")) + self.gridLayout_82.addWidget(self.ParCurve_tmin_3, 0, 1, 1, 1) + self.gridLayout_81.addWidget(self.groupBox_18, 3, 0, 1, 1) + self.groupBox_19 = QtGui.QGroupBox(self.scrollAreaWidgetContents_6) + self.groupBox_19.setObjectName(_fromUtf8("groupBox_19")) + self.gridLayout_3 = QtGui.QGridLayout(self.groupBox_19) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.checkBox_points_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_points_3.setAutoExclusive(True) + self.checkBox_points_3.setObjectName(_fromUtf8("checkBox_points_3")) + self.gridLayout_3.addWidget(self.checkBox_points_3, 0, 0, 1, 1) + self.checkBox_polyline_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_polyline_3.setChecked(True) + self.checkBox_polyline_3.setAutoExclusive(True) + self.checkBox_polyline_3.setObjectName(_fromUtf8("checkBox_polyline_3")) + self.gridLayout_3.addWidget(self.checkBox_polyline_3, 0, 1, 1, 1) + self.checkBox_bspline_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_bspline_3.setChecked(False) + self.checkBox_bspline_3.setAutoExclusive(True) + self.checkBox_bspline_3.setObjectName(_fromUtf8("checkBox_bspline_3")) + self.gridLayout_3.addWidget(self.checkBox_bspline_3, 1, 0, 1, 1) + self.checkBox_bezier_3 = QtGui.QCheckBox(self.groupBox_19) + self.checkBox_bezier_3.setEnabled(True) + self.checkBox_bezier_3.setChecked(False) + self.checkBox_bezier_3.setAutoExclusive(True) + self.checkBox_bezier_3.setObjectName(_fromUtf8("checkBox_bezier_3")) + self.gridLayout_3.addWidget(self.checkBox_bezier_3, 1, 1, 1, 1) + self.gridLayout_81.addWidget(self.groupBox_19, 4, 0, 1, 1) + self.checkBox_close_3 = QtGui.QCheckBox(self.scrollAreaWidgetContents_6) + self.checkBox_close_3.setObjectName(_fromUtf8("checkBox_close_3")) + self.gridLayout_81.addWidget(self.checkBox_close_3, 5, 0, 1, 1) + self.horizontalLayout_65 = QtGui.QHBoxLayout() + self.horizontalLayout_65.setObjectName(_fromUtf8("horizontalLayout_65")) + self.ParCurve_button_store_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_store_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_store_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_store_3.setObjectName(_fromUtf8("ParCurve_button_store_3")) + self.horizontalLayout_65.addWidget(self.ParCurve_button_store_3) + spacerItem7 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_65.addItem(spacerItem7) + self.ParCurve_button_apply_3 = QtGui.QPushButton(self.scrollAreaWidgetContents_6) + self.ParCurve_button_apply_3.setMinimumSize(QtCore.QSize(40, 0)) + self.ParCurve_button_apply_3.setMaximumSize(QtCore.QSize(60, 16777215)) + self.ParCurve_button_apply_3.setObjectName(_fromUtf8("ParCurve_button_apply_3")) + self.horizontalLayout_65.addWidget(self.ParCurve_button_apply_3) + self.gridLayout_81.addLayout(self.horizontalLayout_65, 6, 0, 1, 1) + spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_81.addItem(spacerItem8, 7, 0, 1, 1) + self.scrollArea_5.setWidget(self.scrollAreaWidgetContents_6) + self.gridLayout_80.addWidget(self.scrollArea_5, 0, 0, 1, 1) + self.tabWidget_8.addTab(self.tab_15, _fromUtf8("")) + self.gridLayout_74.addWidget(self.tabWidget_8, 1, 0, 1, 1) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab_2, icon39, _fromUtf8("")) + self.tab_16 = QtGui.QWidget() + self.tab_16.setObjectName(_fromUtf8("tab_16")) + self.gridLayout = QtGui.QGridLayout(self.tab_16) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout_66 = QtGui.QHBoxLayout() + self.horizontalLayout_66.setObjectName(_fromUtf8("horizontalLayout_66")) + self.button_linecenter_circle = QtGui.QPushButton(self.tab_16) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon40) self.button_linecenter_circle.setIconSize(QtCore.QSize(32, 32)) self.button_linecenter_circle.setObjectName(_fromUtf8("button_linecenter_circle")) - self.horizontalLayout_11.addWidget(self.button_linecenter_circle) - self.radius_circle = QtGui.QLineEdit(self.tab_4) + self.horizontalLayout_66.addWidget(self.button_linecenter_circle) + self.radius_circle = QtGui.QLineEdit(self.tab_16) self.radius_circle.setMinimumSize(QtCore.QSize(40, 0)) self.radius_circle.setMaximumSize(QtCore.QSize(60, 16777215)) self.radius_circle.setObjectName(_fromUtf8("radius_circle")) - self.horizontalLayout_11.addWidget(self.radius_circle) - self.gridLayout_22.addLayout(self.horizontalLayout_11, 0, 0, 1, 2) - self.button_linepoint_circle = QtGui.QPushButton(self.tab_4) - icon38 = QtGui.QIcon() - icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_linepoint_circle.setIcon(icon38) + self.horizontalLayout_66.addWidget(self.radius_circle) + self.gridLayout.addLayout(self.horizontalLayout_66, 0, 0, 1, 1) + self.button_linepoint_circle = QtGui.QPushButton(self.tab_16) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon41) self.button_linepoint_circle.setIconSize(QtCore.QSize(32, 32)) self.button_linepoint_circle.setObjectName(_fromUtf8("button_linepoint_circle")) - self.gridLayout_22.addWidget(self.button_linepoint_circle, 1, 0, 1, 2) - self.button_3points_circle = QtGui.QPushButton(self.tab_4) - icon39 = QtGui.QIcon() - icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_3points_circle.setIcon(icon39) + self.gridLayout.addWidget(self.button_linepoint_circle, 1, 0, 1, 1) + self.button_3points_circle = QtGui.QPushButton(self.tab_16) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon42) self.button_3points_circle.setIconSize(QtCore.QSize(32, 32)) self.button_3points_circle.setObjectName(_fromUtf8("button_3points_circle")) - self.gridLayout_22.addWidget(self.button_3points_circle, 2, 0, 1, 2) - self.horizontalLayout_24 = QtGui.QHBoxLayout() - self.horizontalLayout_24.setObjectName(_fromUtf8("horizontalLayout_24")) - self.button_cut_circle = QtGui.QPushButton(self.tab_4) - icon40 = QtGui.QIcon() - icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cut_circle.setIcon(icon40) + self.gridLayout.addWidget(self.button_3points_circle, 2, 0, 1, 1) + self.horizontalLayout_67 = QtGui.QHBoxLayout() + self.horizontalLayout_67.setObjectName(_fromUtf8("horizontalLayout_67")) + self.button_cut_circle = QtGui.QPushButton(self.tab_16) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon43) self.button_cut_circle.setIconSize(QtCore.QSize(32, 32)) self.button_cut_circle.setObjectName(_fromUtf8("button_cut_circle")) - self.horizontalLayout_24.addWidget(self.button_cut_circle) - self.spin_circle_cut = QtGui.QSpinBox(self.tab_4) + self.horizontalLayout_67.addWidget(self.button_cut_circle) + self.spin_circle_cut = QtGui.QSpinBox(self.tab_16) self.spin_circle_cut.setMinimumSize(QtCore.QSize(40, 0)) self.spin_circle_cut.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_circle_cut.setMinimum(2) self.spin_circle_cut.setMaximum(100) self.spin_circle_cut.setSingleStep(1) self.spin_circle_cut.setObjectName(_fromUtf8("spin_circle_cut")) - self.horizontalLayout_24.addWidget(self.spin_circle_cut) - self.gridLayout_22.addLayout(self.horizontalLayout_24, 3, 0, 1, 2) - self.button_3points_ellipse = QtGui.QPushButton(self.tab_4) - icon41 = QtGui.QIcon() - icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_3points_ellipse.setIcon(icon41) + self.horizontalLayout_67.addWidget(self.spin_circle_cut) + self.gridLayout.addLayout(self.horizontalLayout_67, 3, 0, 1, 1) + self.button_3points_ellipse = QtGui.QPushButton(self.tab_16) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon44) self.button_3points_ellipse.setIconSize(QtCore.QSize(32, 32)) self.button_3points_ellipse.setObjectName(_fromUtf8("button_3points_ellipse")) - self.gridLayout_22.addWidget(self.button_3points_ellipse, 4, 0, 1, 2) - spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_22.addItem(spacerItem5, 5, 0, 1, 1) - self.button_circle_to_sketch = QtGui.QPushButton(self.tab_4) - self.button_circle_to_sketch.setIcon(icon17) + self.gridLayout.addWidget(self.button_3points_ellipse, 4, 0, 1, 1) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem9, 5, 0, 1, 1) + self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16) + self.button_circle_to_sketch.setIcon(icon18) self.button_circle_to_sketch.setIconSize(QtCore.QSize(32, 32)) self.button_circle_to_sketch.setObjectName(_fromUtf8("button_circle_to_sketch")) - self.gridLayout_22.addWidget(self.button_circle_to_sketch, 6, 0, 1, 2) - spacerItem6 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_22.addItem(spacerItem6, 7, 1, 1, 1) - icon42 = QtGui.QIcon() - icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.tab_4, icon42, _fromUtf8("")) - self.Plane_Tab1 = QtGui.QWidget() - self.Plane_Tab1.setObjectName(_fromUtf8("Plane_Tab1")) - self.gridLayout_4 = QtGui.QGridLayout(self.Plane_Tab1) - self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) - spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_4.addItem(spacerItem7, 9, 0, 1, 1) - self.horizontalLayout_3 = QtGui.QHBoxLayout() - self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) - self.button_click_for_plane = QtGui.QPushButton(self.Plane_Tab1) + self.gridLayout.addWidget(self.button_circle_to_sketch, 6, 0, 1, 1) + spacerItem10 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem10, 7, 0, 1, 1) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_16, icon45, _fromUtf8("")) + self.tab_17 = QtGui.QWidget() + self.tab_17.setObjectName(_fromUtf8("tab_17")) + self.gridLayout_85 = QtGui.QGridLayout(self.tab_17) + self.gridLayout_85.setObjectName(_fromUtf8("gridLayout_85")) + self.frame_9 = QtGui.QFrame(self.tab_17) + self.frame_9.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_9.setFrameShadow(QtGui.QFrame.Raised) + self.frame_9.setLineWidth(3) + self.frame_9.setObjectName(_fromUtf8("frame_9")) + self.gridLayout_86 = QtGui.QGridLayout(self.frame_9) + self.gridLayout_86.setObjectName(_fromUtf8("gridLayout_86")) + self.gridLayout_87 = QtGui.QGridLayout() + self.gridLayout_87.setObjectName(_fromUtf8("gridLayout_87")) + self.checkBox_allsubselect = QtGui.QCheckBox(self.frame_9) + self.checkBox_allsubselect.setChecked(True) + self.checkBox_allsubselect.setObjectName(_fromUtf8("checkBox_allsubselect")) + self.gridLayout_87.addWidget(self.checkBox_allsubselect, 2, 0, 1, 1) + self.transition_comboBox = QtGui.QComboBox(self.frame_9) + self.transition_comboBox.setObjectName(_fromUtf8("transition_comboBox")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.transition_comboBox.addItem(_fromUtf8("")) + self.gridLayout_87.addWidget(self.transition_comboBox, 2, 1, 1, 1) + self.checkBox_solid = QtGui.QCheckBox(self.frame_9) + self.checkBox_solid.setMinimumSize(QtCore.QSize(9, 0)) + self.checkBox_solid.setMaximumSize(QtCore.QSize(60, 16777215)) + self.checkBox_solid.setChecked(True) + self.checkBox_solid.setObjectName(_fromUtf8("checkBox_solid")) + self.gridLayout_87.addWidget(self.checkBox_solid, 1, 0, 1, 1) + self.radioButton_Frenet = QtGui.QRadioButton(self.frame_9) + self.radioButton_Frenet.setChecked(True) + self.radioButton_Frenet.setAutoExclusive(False) + self.radioButton_Frenet.setObjectName(_fromUtf8("radioButton_Frenet")) + self.gridLayout_87.addWidget(self.radioButton_Frenet, 1, 1, 1, 1) + self.gridLayout_86.addLayout(self.gridLayout_87, 0, 0, 1, 1) + self.button_sweep = QtGui.QPushButton(self.frame_9) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon46) + self.button_sweep.setIconSize(QtCore.QSize(32, 32)) + self.button_sweep.setObjectName(_fromUtf8("button_sweep")) + self.gridLayout_86.addWidget(self.button_sweep, 1, 0, 1, 1) + self.gridLayout_85.addWidget(self.frame_9, 0, 0, 1, 1) + spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_85.addItem(spacerItem11, 1, 0, 1, 1) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_17, icon47, _fromUtf8("")) + self.Plane_Tab1_3 = QtGui.QWidget() + self.Plane_Tab1_3.setObjectName(_fromUtf8("Plane_Tab1_3")) + self.gridLayout_88 = QtGui.QGridLayout(self.Plane_Tab1_3) + self.gridLayout_88.setObjectName(_fromUtf8("gridLayout_88")) + spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_88.addItem(spacerItem12, 9, 0, 1, 1) + self.horizontalLayout_68 = QtGui.QHBoxLayout() + self.horizontalLayout_68.setObjectName(_fromUtf8("horizontalLayout_68")) + self.button_click_for_plane = QtGui.QPushButton(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_click_for_plane.sizePolicy().hasHeightForWidth()) self.button_click_for_plane.setSizePolicy(sizePolicy) - icon43 = QtGui.QIcon() - icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_click_for_plane.setIcon(icon43) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon48) self.button_click_for_plane.setIconSize(QtCore.QSize(32, 32)) self.button_click_for_plane.setObjectName(_fromUtf8("button_click_for_plane")) - self.horizontalLayout_3.addWidget(self.button_click_for_plane) - self.length_plane = QtGui.QLineEdit(self.Plane_Tab1) + self.horizontalLayout_68.addWidget(self.button_click_for_plane) + self.length_plane = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -698,8 +1244,8 @@ class Ui_Form(object): self.length_plane.setMinimumSize(QtCore.QSize(40, 0)) self.length_plane.setMaximumSize(QtCore.QSize(50, 16777215)) self.length_plane.setObjectName(_fromUtf8("length_plane")) - self.horizontalLayout_3.addWidget(self.length_plane) - self.width_plane = QtGui.QLineEdit(self.Plane_Tab1) + self.horizontalLayout_68.addWidget(self.length_plane) + self.width_plane = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -708,23 +1254,23 @@ class Ui_Form(object): self.width_plane.setMinimumSize(QtCore.QSize(40, 0)) self.width_plane.setMaximumSize(QtCore.QSize(50, 16777215)) self.width_plane.setObjectName(_fromUtf8("width_plane")) - self.horizontalLayout_3.addWidget(self.width_plane) - self.gridLayout_4.addLayout(self.horizontalLayout_3, 8, 0, 1, 1) - self.gridLayout_8 = QtGui.QGridLayout() - self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8")) - self.button_planeandaxis_plane = QtGui.QPushButton(self.Plane_Tab1) + self.horizontalLayout_68.addWidget(self.width_plane) + self.gridLayout_88.addLayout(self.horizontalLayout_68, 8, 0, 1, 1) + self.gridLayout_89 = QtGui.QGridLayout() + self.gridLayout_89.setObjectName(_fromUtf8("gridLayout_89")) + self.button_planeandaxis_plane = QtGui.QPushButton(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_planeandaxis_plane.sizePolicy().hasHeightForWidth()) self.button_planeandaxis_plane.setSizePolicy(sizePolicy) - icon44 = QtGui.QIcon() - icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandaxis_plane.setIcon(icon44) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon49) self.button_planeandaxis_plane.setIconSize(QtCore.QSize(32, 32)) self.button_planeandaxis_plane.setObjectName(_fromUtf8("button_planeandaxis_plane")) - self.gridLayout_8.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1) - self.angle_planeandaxis_plane = QtGui.QLineEdit(self.Plane_Tab1) + self.gridLayout_89.addWidget(self.button_planeandaxis_plane, 0, 0, 1, 1) + self.angle_planeandaxis_plane = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -733,37 +1279,37 @@ class Ui_Form(object): self.angle_planeandaxis_plane.setMinimumSize(QtCore.QSize(40, 0)) self.angle_planeandaxis_plane.setMaximumSize(QtCore.QSize(60, 16777215)) self.angle_planeandaxis_plane.setObjectName(_fromUtf8("angle_planeandaxis_plane")) - self.gridLayout_8.addWidget(self.angle_planeandaxis_plane, 0, 1, 1, 1) - self.gridLayout_4.addLayout(self.gridLayout_8, 4, 0, 1, 1) - self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1) - icon45 = QtGui.QIcon() - icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_axisandpoint_plane.setIcon(icon45) + self.gridLayout_89.addWidget(self.angle_planeandaxis_plane, 0, 1, 1, 1) + self.gridLayout_88.addLayout(self.gridLayout_89, 4, 0, 1, 1) + self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon50) self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32)) self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane")) - self.gridLayout_4.addWidget(self.button_axisandpoint_plane, 1, 0, 1, 1) - self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1) - icon46 = QtGui.QIcon() - icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_axis_point_plane.setIcon(icon46) + self.gridLayout_88.addWidget(self.button_axisandpoint_plane, 1, 0, 1, 1) + self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon51) self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32)) self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane")) - self.gridLayout_4.addWidget(self.button_axis_point_plane, 2, 0, 1, 1) - self.horizontalLayout_12 = QtGui.QHBoxLayout() - self.horizontalLayout_12.setObjectName(_fromUtf8("horizontalLayout_12")) - self.button_face_tangent = QtGui.QPushButton(self.Plane_Tab1) + self.gridLayout_88.addWidget(self.button_axis_point_plane, 2, 0, 1, 1) + self.horizontalLayout_69 = QtGui.QHBoxLayout() + self.horizontalLayout_69.setObjectName(_fromUtf8("horizontalLayout_69")) + self.button_face_tangent = QtGui.QPushButton(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_face_tangent.sizePolicy().hasHeightForWidth()) self.button_face_tangent.setSizePolicy(sizePolicy) - icon47 = QtGui.QIcon() - icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_face_tangent.setIcon(icon47) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon52) self.button_face_tangent.setIconSize(QtCore.QSize(32, 32)) self.button_face_tangent.setObjectName(_fromUtf8("button_face_tangent")) - self.horizontalLayout_12.addWidget(self.button_face_tangent) - self.length_plane_2 = QtGui.QLineEdit(self.Plane_Tab1) + self.horizontalLayout_69.addWidget(self.button_face_tangent) + self.length_plane_2 = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -772,8 +1318,8 @@ class Ui_Form(object): self.length_plane_2.setMinimumSize(QtCore.QSize(40, 0)) self.length_plane_2.setMaximumSize(QtCore.QSize(50, 16777215)) self.length_plane_2.setObjectName(_fromUtf8("length_plane_2")) - self.horizontalLayout_12.addWidget(self.length_plane_2) - self.width_plane_2 = QtGui.QLineEdit(self.Plane_Tab1) + self.horizontalLayout_69.addWidget(self.length_plane_2) + self.width_plane_2 = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -782,25 +1328,25 @@ class Ui_Form(object): self.width_plane_2.setMinimumSize(QtCore.QSize(40, 0)) self.width_plane_2.setMaximumSize(QtCore.QSize(50, 16777215)) self.width_plane_2.setObjectName(_fromUtf8("width_plane_2")) - self.horizontalLayout_12.addWidget(self.width_plane_2) - self.gridLayout_4.addLayout(self.horizontalLayout_12, 6, 0, 1, 1) - self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1) - icon48 = QtGui.QIcon() - icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_threepoints_plane.setIcon(icon48) + self.horizontalLayout_69.addWidget(self.width_plane_2) + self.gridLayout_88.addLayout(self.horizontalLayout_69, 6, 0, 1, 1) + self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon53) self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32)) self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane")) - self.gridLayout_4.addWidget(self.button_threepoints_plane, 0, 0, 1, 1) - self.horizontalLayout_28 = QtGui.QHBoxLayout() - self.horizontalLayout_28.setObjectName(_fromUtf8("horizontalLayout_28")) - self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1) - icon49 = QtGui.QIcon() - icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_distPlane.setIcon(icon49) + self.gridLayout_88.addWidget(self.button_threepoints_plane, 0, 0, 1, 1) + self.horizontalLayout_70 = QtGui.QHBoxLayout() + self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70")) + self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_3) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon54) self.button_distPlane.setIconSize(QtCore.QSize(32, 32)) self.button_distPlane.setObjectName(_fromUtf8("button_distPlane")) - self.horizontalLayout_28.addWidget(self.button_distPlane) - self.dist_plane = QtGui.QLineEdit(self.Plane_Tab1) + self.horizontalLayout_70.addWidget(self.button_distPlane) + self.dist_plane = QtGui.QLineEdit(self.Plane_Tab1_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -809,8 +1355,8 @@ class Ui_Form(object): self.dist_plane.setMinimumSize(QtCore.QSize(40, 0)) self.dist_plane.setMaximumSize(QtCore.QSize(40, 16777215)) self.dist_plane.setObjectName(_fromUtf8("dist_plane")) - self.horizontalLayout_28.addWidget(self.dist_plane) - self.spin_dist_plane = QtGui.QSpinBox(self.Plane_Tab1) + self.horizontalLayout_70.addWidget(self.dist_plane) + self.spin_dist_plane = QtGui.QSpinBox(self.Plane_Tab1_3) self.spin_dist_plane.setMinimumSize(QtCore.QSize(30, 0)) self.spin_dist_plane.setMaximumSize(QtCore.QSize(30, 16777215)) self.spin_dist_plane.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) @@ -820,54 +1366,54 @@ class Ui_Form(object): self.spin_dist_plane.setSingleStep(1) self.spin_dist_plane.setProperty("value", 1) self.spin_dist_plane.setObjectName(_fromUtf8("spin_dist_plane")) - self.horizontalLayout_28.addWidget(self.spin_dist_plane) - self.gridLayout_4.addLayout(self.horizontalLayout_28, 5, 0, 1, 1) - self.gridLayout_16 = QtGui.QGridLayout() - self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) - self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1) - icon50 = QtGui.QIcon() - icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_planeandpoint_plane.setIcon(icon50) + self.horizontalLayout_70.addWidget(self.spin_dist_plane) + self.gridLayout_88.addLayout(self.horizontalLayout_70, 5, 0, 1, 1) + self.gridLayout_90 = QtGui.QGridLayout() + self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90")) + self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_3) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon55) self.button_planeandpoint_plane.setIconSize(QtCore.QSize(32, 32)) self.button_planeandpoint_plane.setObjectName(_fromUtf8("button_planeandpoint_plane")) - self.gridLayout_16.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1) - self.extension_planePointPlane = QtGui.QLineEdit(self.Plane_Tab1) + self.gridLayout_90.addWidget(self.button_planeandpoint_plane, 0, 0, 1, 1) + self.extension_planePointPlane = QtGui.QLineEdit(self.Plane_Tab1_3) self.extension_planePointPlane.setMinimumSize(QtCore.QSize(40, 0)) self.extension_planePointPlane.setMaximumSize(QtCore.QSize(60, 16777215)) self.extension_planePointPlane.setObjectName(_fromUtf8("extension_planePointPlane")) - self.gridLayout_16.addWidget(self.extension_planePointPlane, 0, 1, 1, 1) - self.gridLayout_4.addLayout(self.gridLayout_16, 3, 0, 1, 1) - icon51 = QtGui.QIcon() - icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.Plane_Tab1, icon51, _fromUtf8("")) - self.Plane_Tab11 = QtGui.QWidget() - self.Plane_Tab11.setObjectName(_fromUtf8("Plane_Tab11")) - self.gridLayout_37 = QtGui.QGridLayout(self.Plane_Tab11) - self.gridLayout_37.setObjectName(_fromUtf8("gridLayout_37")) - spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_37.addItem(spacerItem8, 2, 0, 1, 1) - self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab11) - icon52 = QtGui.QIcon() - icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_object_center_planes.setIcon(icon52) + self.gridLayout_90.addWidget(self.extension_planePointPlane, 0, 1, 1, 1) + self.gridLayout_88.addLayout(self.gridLayout_90, 3, 0, 1, 1) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab1_3, icon56, _fromUtf8("")) + self.Plane_Tab1_4 = QtGui.QWidget() + self.Plane_Tab1_4.setObjectName(_fromUtf8("Plane_Tab1_4")) + self.gridLayout_91 = QtGui.QGridLayout(self.Plane_Tab1_4) + self.gridLayout_91.setObjectName(_fromUtf8("gridLayout_91")) + spacerItem13 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_91.addItem(spacerItem13, 2, 0, 1, 1) + self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab1_4) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon57) self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32)) self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes")) - self.gridLayout_37.addWidget(self.button_object_center_planes, 1, 0, 1, 1) - self.horizontalLayout_17 = QtGui.QHBoxLayout() - self.horizontalLayout_17.setObjectName(_fromUtf8("horizontalLayout_17")) - self.button_extension_plane = QtGui.QPushButton(self.Plane_Tab11) + self.gridLayout_91.addWidget(self.button_object_center_planes, 1, 0, 1, 1) + self.horizontalLayout_71 = QtGui.QHBoxLayout() + self.horizontalLayout_71.setObjectName(_fromUtf8("horizontalLayout_71")) + self.button_extension_plane = QtGui.QPushButton(self.Plane_Tab1_4) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_extension_plane.sizePolicy().hasHeightForWidth()) self.button_extension_plane.setSizePolicy(sizePolicy) - icon53 = QtGui.QIcon() - icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_extension_plane.setIcon(icon53) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon58) self.button_extension_plane.setIconSize(QtCore.QSize(32, 32)) self.button_extension_plane.setObjectName(_fromUtf8("button_extension_plane")) - self.horizontalLayout_17.addWidget(self.button_extension_plane) - self.extension_plane = QtGui.QLineEdit(self.Plane_Tab11) + self.horizontalLayout_71.addWidget(self.button_extension_plane) + self.extension_plane = QtGui.QLineEdit(self.Plane_Tab1_4) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -876,59 +1422,59 @@ class Ui_Form(object): self.extension_plane.setMinimumSize(QtCore.QSize(40, 0)) self.extension_plane.setMaximumSize(QtCore.QSize(50, 16777215)) self.extension_plane.setObjectName(_fromUtf8("extension_plane")) - self.horizontalLayout_17.addWidget(self.extension_plane) - self.gridLayout_37.addLayout(self.horizontalLayout_17, 0, 0, 1, 1) - self.tabWidget.addTab(self.Plane_Tab11, icon51, _fromUtf8("")) - self.Objects_Tab2 = QtGui.QWidget() - self.Objects_Tab2.setEnabled(True) - self.Objects_Tab2.setMinimumSize(QtCore.QSize(0, 0)) - self.Objects_Tab2.setObjectName(_fromUtf8("Objects_Tab2")) - self.gridLayout_54 = QtGui.QGridLayout(self.Objects_Tab2) - self.gridLayout_54.setObjectName(_fromUtf8("gridLayout_54")) - self.horizontalLayout_35 = QtGui.QHBoxLayout() - self.horizontalLayout_35.setObjectName(_fromUtf8("horizontalLayout_35")) - self.verticalLayout_2 = QtGui.QVBoxLayout() - self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) - self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2) + self.horizontalLayout_71.addWidget(self.extension_plane) + self.gridLayout_91.addLayout(self.horizontalLayout_71, 0, 0, 1, 1) + self.tabWidget_7.addTab(self.Plane_Tab1_4, icon56, _fromUtf8("")) + self.Objects_Tab2_2 = QtGui.QWidget() + self.Objects_Tab2_2.setEnabled(True) + self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) + self.Objects_Tab2_2.setObjectName(_fromUtf8("Objects_Tab2_2")) + self.gridLayout_5 = QtGui.QGridLayout(self.Objects_Tab2_2) + self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5")) + self.horizontalLayout_72 = QtGui.QHBoxLayout() + self.horizontalLayout_72.setObjectName(_fromUtf8("horizontalLayout_72")) + self.verticalLayout_4 = QtGui.QVBoxLayout() + self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) + self.button_boundingboxes = QtGui.QPushButton(self.Objects_Tab2_2) self.button_boundingboxes.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon54 = QtGui.QIcon() - icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingboxes.setIcon(icon54) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon59) self.button_boundingboxes.setIconSize(QtCore.QSize(32, 32)) self.button_boundingboxes.setObjectName(_fromUtf8("button_boundingboxes")) - self.verticalLayout_2.addWidget(self.button_boundingboxes) - self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2) + self.verticalLayout_4.addWidget(self.button_boundingboxes) + self.button_boundingbox = QtGui.QPushButton(self.Objects_Tab2_2) self.button_boundingbox.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon55 = QtGui.QIcon() - icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_boundingbox.setIcon(icon55) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon60) self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) - self.verticalLayout_2.addWidget(self.button_boundingbox) - self.horizontalLayout_35.addLayout(self.verticalLayout_2) - self.checkBox_volumBB = QtGui.QCheckBox(self.Objects_Tab2) + self.verticalLayout_4.addWidget(self.button_boundingbox) + self.horizontalLayout_72.addLayout(self.verticalLayout_4) + self.checkBox_volumBB = QtGui.QCheckBox(self.Objects_Tab2_2) self.checkBox_volumBB.setMaximumSize(QtCore.QSize(60, 16777215)) self.checkBox_volumBB.setObjectName(_fromUtf8("checkBox_volumBB")) - self.horizontalLayout_35.addWidget(self.checkBox_volumBB) - self.gridLayout_54.addLayout(self.horizontalLayout_35, 0, 0, 1, 1) - self.line = QtGui.QFrame(self.Objects_Tab2) - self.line.setFrameShadow(QtGui.QFrame.Plain) - self.line.setLineWidth(4) - self.line.setMidLineWidth(0) - self.line.setFrameShape(QtGui.QFrame.HLine) - self.line.setFrameShadow(QtGui.QFrame.Sunken) - self.line.setObjectName(_fromUtf8("line")) - self.gridLayout_54.addWidget(self.line, 1, 0, 1, 1) - self.gridLayout_6 = QtGui.QGridLayout() - self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6")) - self.button_cylinder_create = QtGui.QPushButton(self.Objects_Tab2) - icon56 = QtGui.QIcon() - icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cylinder_create.setIcon(icon56) + self.horizontalLayout_72.addWidget(self.checkBox_volumBB) + self.gridLayout_5.addLayout(self.horizontalLayout_72, 0, 0, 1, 1) + self.line_2 = QtGui.QFrame(self.Objects_Tab2_2) + self.line_2.setFrameShadow(QtGui.QFrame.Plain) + self.line_2.setLineWidth(4) + self.line_2.setMidLineWidth(0) + self.line_2.setFrameShape(QtGui.QFrame.HLine) + self.line_2.setFrameShadow(QtGui.QFrame.Sunken) + self.line_2.setObjectName(_fromUtf8("line_2")) + self.gridLayout_5.addWidget(self.line_2, 1, 0, 1, 1) + self.gridLayout_93 = QtGui.QGridLayout() + self.gridLayout_93.setObjectName(_fromUtf8("gridLayout_93")) + self.button_cylinder_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon61) self.button_cylinder_create.setIconSize(QtCore.QSize(32, 32)) self.button_cylinder_create.setObjectName(_fromUtf8("button_cylinder_create")) - self.gridLayout_6.addWidget(self.button_cylinder_create, 0, 0, 1, 1) - self.diameter_cylinder = QtGui.QLineEdit(self.Objects_Tab2) + self.gridLayout_93.addWidget(self.button_cylinder_create, 0, 0, 1, 1) + self.diameter_cylinder = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -937,8 +1483,8 @@ class Ui_Form(object): self.diameter_cylinder.setMinimumSize(QtCore.QSize(50, 0)) self.diameter_cylinder.setMaximumSize(QtCore.QSize(60, 16777215)) self.diameter_cylinder.setObjectName(_fromUtf8("diameter_cylinder")) - self.gridLayout_6.addWidget(self.diameter_cylinder, 0, 1, 1, 1) - self.length_cylinder = QtGui.QLineEdit(self.Objects_Tab2) + self.gridLayout_93.addWidget(self.diameter_cylinder, 0, 1, 1, 1) + self.length_cylinder = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -947,18 +1493,18 @@ class Ui_Form(object): self.length_cylinder.setMinimumSize(QtCore.QSize(50, 0)) self.length_cylinder.setMaximumSize(QtCore.QSize(60, 16777215)) self.length_cylinder.setObjectName(_fromUtf8("length_cylinder")) - self.gridLayout_6.addWidget(self.length_cylinder, 0, 2, 1, 1) - self.gridLayout_54.addLayout(self.gridLayout_6, 2, 0, 1, 1) - self.horizontalLayout_4 = QtGui.QHBoxLayout() - self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) - self.button_cube_create = QtGui.QPushButton(self.Objects_Tab2) - icon57 = QtGui.QIcon() - icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_cube_create.setIcon(icon57) + self.gridLayout_93.addWidget(self.length_cylinder, 0, 2, 1, 1) + self.gridLayout_5.addLayout(self.gridLayout_93, 2, 0, 1, 1) + self.horizontalLayout_73 = QtGui.QHBoxLayout() + self.horizontalLayout_73.setObjectName(_fromUtf8("horizontalLayout_73")) + self.button_cube_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon62) self.button_cube_create.setIconSize(QtCore.QSize(32, 32)) self.button_cube_create.setObjectName(_fromUtf8("button_cube_create")) - self.horizontalLayout_4.addWidget(self.button_cube_create) - self.section_cube = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_73.addWidget(self.button_cube_create) + self.section_cube = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -967,8 +1513,8 @@ class Ui_Form(object): self.section_cube.setMinimumSize(QtCore.QSize(50, 0)) self.section_cube.setMaximumSize(QtCore.QSize(60, 16777215)) self.section_cube.setObjectName(_fromUtf8("section_cube")) - self.horizontalLayout_4.addWidget(self.section_cube) - self.height_cube = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_73.addWidget(self.section_cube) + self.height_cube = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -977,18 +1523,18 @@ class Ui_Form(object): self.height_cube.setMinimumSize(QtCore.QSize(50, 0)) self.height_cube.setMaximumSize(QtCore.QSize(60, 16777215)) self.height_cube.setObjectName(_fromUtf8("height_cube")) - self.horizontalLayout_4.addWidget(self.height_cube) - self.gridLayout_54.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) - self.horizontalLayout_19 = QtGui.QHBoxLayout() - self.horizontalLayout_19.setObjectName(_fromUtf8("horizontalLayout_19")) - self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2) - icon58 = QtGui.QIcon() - icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sphere_create.setIcon(icon58) + self.horizontalLayout_73.addWidget(self.height_cube) + self.gridLayout_5.addLayout(self.horizontalLayout_73, 3, 0, 1, 1) + self.horizontalLayout_74 = QtGui.QHBoxLayout() + self.horizontalLayout_74.setObjectName(_fromUtf8("horizontalLayout_74")) + self.button_sphere_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon63) self.button_sphere_create.setIconSize(QtCore.QSize(32, 32)) self.button_sphere_create.setObjectName(_fromUtf8("button_sphere_create")) - self.horizontalLayout_19.addWidget(self.button_sphere_create) - self.diameter_sphere = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_74.addWidget(self.button_sphere_create) + self.diameter_sphere = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -997,18 +1543,18 @@ class Ui_Form(object): self.diameter_sphere.setMinimumSize(QtCore.QSize(50, 0)) self.diameter_sphere.setMaximumSize(QtCore.QSize(60, 16777215)) self.diameter_sphere.setObjectName(_fromUtf8("diameter_sphere")) - self.horizontalLayout_19.addWidget(self.diameter_sphere) - self.gridLayout_54.addLayout(self.horizontalLayout_19, 4, 0, 1, 1) - self.horizontalLayout_20 = QtGui.QHBoxLayout() - self.horizontalLayout_20.setObjectName(_fromUtf8("horizontalLayout_20")) - self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2) - icon59 = QtGui.QIcon() - icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_dome_create.setIcon(icon59) + self.horizontalLayout_74.addWidget(self.diameter_sphere) + self.gridLayout_5.addLayout(self.horizontalLayout_74, 4, 0, 1, 1) + self.horizontalLayout_77 = QtGui.QHBoxLayout() + self.horizontalLayout_77.setObjectName(_fromUtf8("horizontalLayout_77")) + self.button_dome_create = QtGui.QPushButton(self.Objects_Tab2_2) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon64) self.button_dome_create.setIconSize(QtCore.QSize(32, 32)) self.button_dome_create.setObjectName(_fromUtf8("button_dome_create")) - self.horizontalLayout_20.addWidget(self.button_dome_create) - self.spin_frequency_dome = QtGui.QSpinBox(self.Objects_Tab2) + self.horizontalLayout_77.addWidget(self.button_dome_create) + self.spin_frequency_dome = QtGui.QSpinBox(self.Objects_Tab2_2) self.spin_frequency_dome.setMinimumSize(QtCore.QSize(40, 0)) self.spin_frequency_dome.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_frequency_dome.setMinimum(1) @@ -1016,8 +1562,8 @@ class Ui_Form(object): self.spin_frequency_dome.setSingleStep(1) self.spin_frequency_dome.setProperty("value", 2) self.spin_frequency_dome.setObjectName(_fromUtf8("spin_frequency_dome")) - self.horizontalLayout_20.addWidget(self.spin_frequency_dome) - self.diameter_dome = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_77.addWidget(self.spin_frequency_dome) + self.diameter_dome = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1026,22 +1572,22 @@ class Ui_Form(object): self.diameter_dome.setMinimumSize(QtCore.QSize(50, 0)) self.diameter_dome.setMaximumSize(QtCore.QSize(60, 16777215)) self.diameter_dome.setObjectName(_fromUtf8("diameter_dome")) - self.horizontalLayout_20.addWidget(self.diameter_dome) - self.gridLayout_54.addLayout(self.horizontalLayout_20, 5, 0, 1, 1) - self.horizontalLayout_23 = QtGui.QHBoxLayout() - self.horizontalLayout_23.setObjectName(_fromUtf8("horizontalLayout_23")) - self.button_letter = QtGui.QPushButton(self.Objects_Tab2) - icon60 = QtGui.QIcon() - icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_letter.setIcon(icon60) + self.horizontalLayout_77.addWidget(self.diameter_dome) + self.gridLayout_5.addLayout(self.horizontalLayout_77, 5, 0, 1, 1) + self.horizontalLayout_75 = QtGui.QHBoxLayout() + self.horizontalLayout_75.setObjectName(_fromUtf8("horizontalLayout_75")) + self.button_letter = QtGui.QPushButton(self.Objects_Tab2_2) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon65) self.button_letter.setIconSize(QtCore.QSize(32, 32)) self.button_letter.setObjectName(_fromUtf8("button_letter")) - self.horizontalLayout_23.addWidget(self.button_letter) - self.letter = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_75.addWidget(self.button_letter) + self.letter = QtGui.QLineEdit(self.Objects_Tab2_2) self.letter.setMaximumSize(QtCore.QSize(70, 16777215)) self.letter.setObjectName(_fromUtf8("letter")) - self.horizontalLayout_23.addWidget(self.letter) - self.size_letter = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_75.addWidget(self.letter) + self.size_letter = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1050,18 +1596,18 @@ class Ui_Form(object): self.size_letter.setMinimumSize(QtCore.QSize(50, 0)) self.size_letter.setMaximumSize(QtCore.QSize(50, 16777215)) self.size_letter.setObjectName(_fromUtf8("size_letter")) - self.horizontalLayout_23.addWidget(self.size_letter) - self.gridLayout_54.addLayout(self.horizontalLayout_23, 6, 0, 1, 1) - self.horizontalLayout_34 = QtGui.QHBoxLayout() - self.horizontalLayout_34.setObjectName(_fromUtf8("horizontalLayout_34")) - self.button_revolve = QtGui.QPushButton(self.Objects_Tab2) - icon61 = QtGui.QIcon() - icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_revolve.setIcon(icon61) + self.horizontalLayout_75.addWidget(self.size_letter) + self.gridLayout_5.addLayout(self.horizontalLayout_75, 6, 0, 1, 1) + self.horizontalLayout_76 = QtGui.QHBoxLayout() + self.horizontalLayout_76.setObjectName(_fromUtf8("horizontalLayout_76")) + self.button_revolve = QtGui.QPushButton(self.Objects_Tab2_2) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon66) self.button_revolve.setIconSize(QtCore.QSize(32, 32)) self.button_revolve.setObjectName(_fromUtf8("button_revolve")) - self.horizontalLayout_34.addWidget(self.button_revolve) - self.angle_revolve = QtGui.QLineEdit(self.Objects_Tab2) + self.horizontalLayout_76.addWidget(self.button_revolve) + self.angle_revolve = QtGui.QLineEdit(self.Objects_Tab2_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1070,86 +1616,61 @@ class Ui_Form(object): self.angle_revolve.setMinimumSize(QtCore.QSize(40, 0)) self.angle_revolve.setMaximumSize(QtCore.QSize(40, 16777215)) self.angle_revolve.setObjectName(_fromUtf8("angle_revolve")) - self.horizontalLayout_34.addWidget(self.angle_revolve) - self.gridLayout_54.addLayout(self.horizontalLayout_34, 7, 0, 1, 1) - self.frame_5 = QtGui.QFrame(self.Objects_Tab2) - self.frame_5.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_5.setFrameShadow(QtGui.QFrame.Raised) - self.frame_5.setLineWidth(3) - self.frame_5.setObjectName(_fromUtf8("frame_5")) - self.gridLayout_53 = QtGui.QGridLayout(self.frame_5) - self.gridLayout_53.setObjectName(_fromUtf8("gridLayout_53")) - self.gridLayout_12 = QtGui.QGridLayout() - self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) - self.checkBox_allsubselect = QtGui.QCheckBox(self.frame_5) - self.checkBox_allsubselect.setChecked(True) - self.checkBox_allsubselect.setObjectName(_fromUtf8("checkBox_allsubselect")) - self.gridLayout_12.addWidget(self.checkBox_allsubselect, 2, 0, 1, 1) - self.transition_comboBox = QtGui.QComboBox(self.frame_5) - self.transition_comboBox.setObjectName(_fromUtf8("transition_comboBox")) - self.transition_comboBox.addItem(_fromUtf8("")) - self.transition_comboBox.addItem(_fromUtf8("")) - self.transition_comboBox.addItem(_fromUtf8("")) - self.gridLayout_12.addWidget(self.transition_comboBox, 2, 1, 1, 1) - self.checkBox_solid = QtGui.QCheckBox(self.frame_5) - self.checkBox_solid.setMinimumSize(QtCore.QSize(9, 0)) - self.checkBox_solid.setMaximumSize(QtCore.QSize(60, 16777215)) - self.checkBox_solid.setChecked(True) - self.checkBox_solid.setObjectName(_fromUtf8("checkBox_solid")) - self.gridLayout_12.addWidget(self.checkBox_solid, 1, 0, 1, 1) - self.radioButton_Frenet = QtGui.QRadioButton(self.frame_5) - self.radioButton_Frenet.setChecked(True) - self.radioButton_Frenet.setAutoExclusive(False) - self.radioButton_Frenet.setObjectName(_fromUtf8("radioButton_Frenet")) - self.gridLayout_12.addWidget(self.radioButton_Frenet, 1, 1, 1, 1) - self.gridLayout_53.addLayout(self.gridLayout_12, 0, 0, 1, 1) - self.button_sweep = QtGui.QPushButton(self.frame_5) - icon62 = QtGui.QIcon() - icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_sweep.setIcon(icon62) - self.button_sweep.setIconSize(QtCore.QSize(32, 32)) - self.button_sweep.setObjectName(_fromUtf8("button_sweep")) - self.gridLayout_53.addWidget(self.button_sweep, 1, 0, 1, 1) - self.gridLayout_54.addWidget(self.frame_5, 8, 0, 1, 1) - spacerItem9 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_54.addItem(spacerItem9, 9, 0, 1, 1) - icon63 = QtGui.QIcon() - icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.Objects_Tab2, icon63, _fromUtf8("")) - self.Modif_Tab = QtGui.QWidget() - self.Modif_Tab.setObjectName(_fromUtf8("Modif_Tab")) - self.gridLayout_11 = QtGui.QGridLayout(self.Modif_Tab) - self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11")) - self.tabWidget_2 = QtGui.QTabWidget(self.Modif_Tab) - self.tabWidget_2.setObjectName(_fromUtf8("tabWidget_2")) - self.align_tab = QtGui.QWidget() - self.align_tab.setObjectName(_fromUtf8("align_tab")) - self.gridLayout_51 = QtGui.QGridLayout(self.align_tab) - self.gridLayout_51.setObjectName(_fromUtf8("gridLayout_51")) - self.button_alignface2view = QtGui.QPushButton(self.align_tab) + self.horizontalLayout_76.addWidget(self.angle_revolve) + self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) + self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon67) + self.button_common.setIconSize(QtCore.QSize(32, 32)) + self.button_common.setObjectName(_fromUtf8("button_common")) + self.gridLayout_5.addWidget(self.button_common, 8, 0, 1, 1) + self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon68) + self.button_difference.setIconSize(QtCore.QSize(32, 32)) + self.button_difference.setObjectName(_fromUtf8("button_difference")) + self.gridLayout_5.addWidget(self.button_difference, 9, 0, 1, 1) + spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem14, 10, 0, 1, 1) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon69, _fromUtf8("")) + self.Modif_Tab_2 = QtGui.QWidget() + self.Modif_Tab_2.setObjectName(_fromUtf8("Modif_Tab_2")) + self.gridLayout_94 = QtGui.QGridLayout(self.Modif_Tab_2) + self.gridLayout_94.setObjectName(_fromUtf8("gridLayout_94")) + self.tabWidget_9 = QtGui.QTabWidget(self.Modif_Tab_2) + self.tabWidget_9.setObjectName(_fromUtf8("tabWidget_9")) + self.align_tab_2 = QtGui.QWidget() + self.align_tab_2.setObjectName(_fromUtf8("align_tab_2")) + self.gridLayout_95 = QtGui.QGridLayout(self.align_tab_2) + self.gridLayout_95.setObjectName(_fromUtf8("gridLayout_95")) + self.button_alignface2view = QtGui.QPushButton(self.align_tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) self.button_alignface2view.setSizePolicy(sizePolicy) self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) - icon64 = QtGui.QIcon() - icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon64) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon70) self.button_alignface2view.setIconSize(QtCore.QSize(32, 32)) self.button_alignface2view.setObjectName(_fromUtf8("button_alignface2view")) - self.gridLayout_51.addWidget(self.button_alignface2view, 0, 0, 1, 1) - self.horizontalLayout_32 = QtGui.QHBoxLayout() - self.horizontalLayout_32.setObjectName(_fromUtf8("horizontalLayout_32")) - self.button_align_faces = QtGui.QPushButton(self.align_tab) + self.gridLayout_95.addWidget(self.button_alignface2view, 0, 0, 1, 1) + self.horizontalLayout_78 = QtGui.QHBoxLayout() + self.horizontalLayout_78.setObjectName(_fromUtf8("horizontalLayout_78")) + self.button_align_faces = QtGui.QPushButton(self.align_tab_2) self.button_align_faces.setMaximumSize(QtCore.QSize(220, 16777215)) - icon65 = QtGui.QIcon() - icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon65) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon71) self.button_align_faces.setIconSize(QtCore.QSize(32, 32)) self.button_align_faces.setObjectName(_fromUtf8("button_align_faces")) - self.horizontalLayout_32.addWidget(self.button_align_faces) - self.angle_align_faces = QtGui.QLineEdit(self.align_tab) + self.horizontalLayout_78.addWidget(self.button_align_faces) + self.angle_align_faces = QtGui.QLineEdit(self.align_tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1158,19 +1679,19 @@ class Ui_Form(object): self.angle_align_faces.setMinimumSize(QtCore.QSize(40, 0)) self.angle_align_faces.setMaximumSize(QtCore.QSize(50, 16777215)) self.angle_align_faces.setObjectName(_fromUtf8("angle_align_faces")) - self.horizontalLayout_32.addWidget(self.angle_align_faces) - self.gridLayout_51.addLayout(self.horizontalLayout_32, 1, 0, 1, 1) - self.horizontalLayout_33 = QtGui.QHBoxLayout() - self.horizontalLayout_33.setObjectName(_fromUtf8("horizontalLayout_33")) - self.button_align_edges = QtGui.QPushButton(self.align_tab) + self.horizontalLayout_78.addWidget(self.angle_align_faces) + self.gridLayout_95.addLayout(self.horizontalLayout_78, 1, 0, 1, 1) + self.horizontalLayout_79 = QtGui.QHBoxLayout() + self.horizontalLayout_79.setObjectName(_fromUtf8("horizontalLayout_79")) + self.button_align_edges = QtGui.QPushButton(self.align_tab_2) self.button_align_edges.setMaximumSize(QtCore.QSize(220, 16777215)) - icon66 = QtGui.QIcon() - icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon66) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon72) self.button_align_edges.setIconSize(QtCore.QSize(32, 32)) self.button_align_edges.setObjectName(_fromUtf8("button_align_edges")) - self.horizontalLayout_33.addWidget(self.button_align_edges) - self.angle_align_edges = QtGui.QLineEdit(self.align_tab) + self.horizontalLayout_79.addWidget(self.button_align_edges) + self.angle_align_edges = QtGui.QLineEdit(self.align_tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1179,49 +1700,49 @@ class Ui_Form(object): self.angle_align_edges.setMinimumSize(QtCore.QSize(40, 0)) self.angle_align_edges.setMaximumSize(QtCore.QSize(50, 16777215)) self.angle_align_edges.setObjectName(_fromUtf8("angle_align_edges")) - self.horizontalLayout_33.addWidget(self.angle_align_edges) - self.gridLayout_51.addLayout(self.horizontalLayout_33, 2, 0, 1, 1) - spacerItem10 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_51.addItem(spacerItem10, 5, 0, 1, 1) - self.button_joint_points = QtGui.QPushButton(self.align_tab) - icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon67) + self.horizontalLayout_79.addWidget(self.angle_align_edges) + self.gridLayout_95.addLayout(self.horizontalLayout_79, 2, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_95.addItem(spacerItem15, 5, 0, 1, 1) + self.button_joint_points = QtGui.QPushButton(self.align_tab_2) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon73) self.button_joint_points.setIconSize(QtCore.QSize(32, 32)) self.button_joint_points.setObjectName(_fromUtf8("button_joint_points")) - self.gridLayout_51.addWidget(self.button_joint_points, 3, 0, 1, 1) - self.button_joint_faces = QtGui.QPushButton(self.align_tab) - icon68 = QtGui.QIcon() - icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon68) + self.gridLayout_95.addWidget(self.button_joint_points, 3, 0, 1, 1) + self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon74) self.button_joint_faces.setIconSize(QtCore.QSize(32, 32)) self.button_joint_faces.setObjectName(_fromUtf8("button_joint_faces")) - self.gridLayout_51.addWidget(self.button_joint_faces, 4, 0, 1, 1) - self.tabWidget_2.addTab(self.align_tab, _fromUtf8("")) - self.cut_tab = QtGui.QWidget() - self.cut_tab.setObjectName(_fromUtf8("cut_tab")) - self.gridLayout_38 = QtGui.QGridLayout(self.cut_tab) - self.gridLayout_38.setObjectName(_fromUtf8("gridLayout_38")) - self.frame_7 = QtGui.QFrame(self.cut_tab) - self.frame_7.setMinimumSize(QtCore.QSize(0, 0)) - self.frame_7.setMaximumSize(QtCore.QSize(220, 16777215)) - self.frame_7.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_7.setFrameShadow(QtGui.QFrame.Raised) - self.frame_7.setObjectName(_fromUtf8("frame_7")) - self.gridLayout_36 = QtGui.QGridLayout(self.frame_7) - self.gridLayout_36.setObjectName(_fromUtf8("gridLayout_36")) - self.groupBox_6 = QtGui.QGroupBox(self.frame_7) - self.groupBox_6.setObjectName(_fromUtf8("groupBox_6")) - self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_6) - self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) - self.gridLayout_18 = QtGui.QGridLayout() - self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18")) - self.button_cut_select_object = QtGui.QPushButton(self.groupBox_6) + self.gridLayout_95.addWidget(self.button_joint_faces, 4, 0, 1, 1) + self.tabWidget_9.addTab(self.align_tab_2, _fromUtf8("")) + self.cut_tab_2 = QtGui.QWidget() + self.cut_tab_2.setObjectName(_fromUtf8("cut_tab_2")) + self.gridLayout_96 = QtGui.QGridLayout(self.cut_tab_2) + self.gridLayout_96.setObjectName(_fromUtf8("gridLayout_96")) + self.frame_10 = QtGui.QFrame(self.cut_tab_2) + self.frame_10.setMinimumSize(QtCore.QSize(0, 0)) + self.frame_10.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_10.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_10.setFrameShadow(QtGui.QFrame.Raised) + self.frame_10.setObjectName(_fromUtf8("frame_10")) + self.gridLayout_97 = QtGui.QGridLayout(self.frame_10) + self.gridLayout_97.setObjectName(_fromUtf8("gridLayout_97")) + self.groupBox_20 = QtGui.QGroupBox(self.frame_10) + self.groupBox_20.setObjectName(_fromUtf8("groupBox_20")) + self.gridLayout_98 = QtGui.QGridLayout(self.groupBox_20) + self.gridLayout_98.setObjectName(_fromUtf8("gridLayout_98")) + self.gridLayout_99 = QtGui.QGridLayout() + self.gridLayout_99.setObjectName(_fromUtf8("gridLayout_99")) + self.button_cut_select_object = QtGui.QPushButton(self.groupBox_20) self.button_cut_select_object.setMinimumSize(QtCore.QSize(130, 31)) self.button_cut_select_object.setMaximumSize(QtCore.QSize(250, 40)) self.button_cut_select_object.setObjectName(_fromUtf8("button_cut_select_object")) - self.gridLayout_18.addWidget(self.button_cut_select_object, 0, 0, 1, 1) - self.info_cut_select_object = QtGui.QLineEdit(self.groupBox_6) + self.gridLayout_99.addWidget(self.button_cut_select_object, 0, 0, 1, 1) + self.info_cut_select_object = QtGui.QLineEdit(self.groupBox_20) self.info_cut_select_object.setEnabled(False) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) @@ -1230,14 +1751,14 @@ class Ui_Form(object): self.info_cut_select_object.setSizePolicy(sizePolicy) self.info_cut_select_object.setReadOnly(True) self.info_cut_select_object.setObjectName(_fromUtf8("info_cut_select_object")) - self.gridLayout_18.addWidget(self.info_cut_select_object, 1, 0, 1, 1) - self.button_cut_select_line = QtGui.QPushButton(self.groupBox_6) + self.gridLayout_99.addWidget(self.info_cut_select_object, 1, 0, 1, 1) + self.button_cut_select_line = QtGui.QPushButton(self.groupBox_20) self.button_cut_select_line.setEnabled(False) self.button_cut_select_line.setMinimumSize(QtCore.QSize(130, 31)) self.button_cut_select_line.setMaximumSize(QtCore.QSize(250, 40)) self.button_cut_select_line.setObjectName(_fromUtf8("button_cut_select_line")) - self.gridLayout_18.addWidget(self.button_cut_select_line, 2, 0, 1, 1) - self.info_cut_select_axis = QtGui.QLineEdit(self.groupBox_6) + self.gridLayout_99.addWidget(self.button_cut_select_line, 2, 0, 1, 1) + self.info_cut_select_axis = QtGui.QLineEdit(self.groupBox_20) self.info_cut_select_axis.setEnabled(False) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) @@ -1246,14 +1767,14 @@ class Ui_Form(object): self.info_cut_select_axis.setSizePolicy(sizePolicy) self.info_cut_select_axis.setReadOnly(True) self.info_cut_select_axis.setObjectName(_fromUtf8("info_cut_select_axis")) - self.gridLayout_18.addWidget(self.info_cut_select_axis, 3, 0, 1, 1) - self.button_cut_select_plane = QtGui.QPushButton(self.groupBox_6) + self.gridLayout_99.addWidget(self.info_cut_select_axis, 3, 0, 1, 1) + self.button_cut_select_plane = QtGui.QPushButton(self.groupBox_20) self.button_cut_select_plane.setEnabled(False) self.button_cut_select_plane.setMinimumSize(QtCore.QSize(130, 31)) self.button_cut_select_plane.setMaximumSize(QtCore.QSize(250, 40)) self.button_cut_select_plane.setObjectName(_fromUtf8("button_cut_select_plane")) - self.gridLayout_18.addWidget(self.button_cut_select_plane, 4, 0, 1, 1) - self.info_cut_select_plane = QtGui.QLineEdit(self.groupBox_6) + self.gridLayout_99.addWidget(self.button_cut_select_plane, 4, 0, 1, 1) + self.info_cut_select_plane = QtGui.QLineEdit(self.groupBox_20) self.info_cut_select_plane.setEnabled(False) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) @@ -1262,17 +1783,17 @@ class Ui_Form(object): self.info_cut_select_plane.setSizePolicy(sizePolicy) self.info_cut_select_plane.setReadOnly(True) self.info_cut_select_plane.setObjectName(_fromUtf8("info_cut_select_plane")) - self.gridLayout_18.addWidget(self.info_cut_select_plane, 5, 0, 1, 1) - self.gridLayout_2.addLayout(self.gridLayout_18, 0, 0, 1, 1) - self.gridLayout_17 = QtGui.QGridLayout() - self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17")) - self.gridLayout_19 = QtGui.QGridLayout() - self.gridLayout_19.setObjectName(_fromUtf8("gridLayout_19")) - self.label_angle = QtGui.QLabel(self.groupBox_6) - self.label_angle.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_angle.setObjectName(_fromUtf8("label_angle")) - self.gridLayout_19.addWidget(self.label_angle, 0, 0, 1, 1) - self.angle_cut_object = QtGui.QLineEdit(self.groupBox_6) + self.gridLayout_99.addWidget(self.info_cut_select_plane, 5, 0, 1, 1) + self.gridLayout_98.addLayout(self.gridLayout_99, 0, 0, 1, 1) + self.gridLayout_100 = QtGui.QGridLayout() + self.gridLayout_100.setObjectName(_fromUtf8("gridLayout_100")) + self.gridLayout_101 = QtGui.QGridLayout() + self.gridLayout_101.setObjectName(_fromUtf8("gridLayout_101")) + self.label_angle_3 = QtGui.QLabel(self.groupBox_20) + self.label_angle_3.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_angle_3.setObjectName(_fromUtf8("label_angle_3")) + self.gridLayout_101.addWidget(self.label_angle_3, 0, 0, 1, 1) + self.angle_cut_object = QtGui.QLineEdit(self.groupBox_20) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1281,15 +1802,15 @@ class Ui_Form(object): self.angle_cut_object.setMinimumSize(QtCore.QSize(0, 0)) self.angle_cut_object.setMaximumSize(QtCore.QSize(50, 16777215)) self.angle_cut_object.setObjectName(_fromUtf8("angle_cut_object")) - self.gridLayout_19.addWidget(self.angle_cut_object, 0, 1, 1, 1) - self.gridLayout_17.addLayout(self.gridLayout_19, 0, 0, 1, 1) - self.gridLayout_20 = QtGui.QGridLayout() - self.gridLayout_20.setObjectName(_fromUtf8("gridLayout_20")) - self.label_thickness = QtGui.QLabel(self.groupBox_6) - self.label_thickness.setMaximumSize(QtCore.QSize(70, 16777215)) - self.label_thickness.setObjectName(_fromUtf8("label_thickness")) - self.gridLayout_20.addWidget(self.label_thickness, 0, 0, 1, 1) - self.thickness_cut_object = QtGui.QLineEdit(self.groupBox_6) + self.gridLayout_101.addWidget(self.angle_cut_object, 0, 1, 1, 1) + self.gridLayout_100.addLayout(self.gridLayout_101, 0, 0, 1, 1) + self.gridLayout_102 = QtGui.QGridLayout() + self.gridLayout_102.setObjectName(_fromUtf8("gridLayout_102")) + self.label_thickness_2 = QtGui.QLabel(self.groupBox_20) + self.label_thickness_2.setMaximumSize(QtCore.QSize(70, 16777215)) + self.label_thickness_2.setObjectName(_fromUtf8("label_thickness_2")) + self.gridLayout_102.addWidget(self.label_thickness_2, 0, 0, 1, 1) + self.thickness_cut_object = QtGui.QLineEdit(self.groupBox_20) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1297,52 +1818,52 @@ class Ui_Form(object): self.thickness_cut_object.setSizePolicy(sizePolicy) self.thickness_cut_object.setMaximumSize(QtCore.QSize(50, 16777215)) self.thickness_cut_object.setObjectName(_fromUtf8("thickness_cut_object")) - self.gridLayout_20.addWidget(self.thickness_cut_object, 0, 1, 1, 1) - self.gridLayout_17.addLayout(self.gridLayout_20, 1, 0, 1, 1) - self.horizontalLayout_8 = QtGui.QHBoxLayout() - self.horizontalLayout_8.setObjectName(_fromUtf8("horizontalLayout_8")) - self.button_cut_reset = QtGui.QPushButton(self.groupBox_6) + self.gridLayout_102.addWidget(self.thickness_cut_object, 0, 1, 1, 1) + self.gridLayout_100.addLayout(self.gridLayout_102, 1, 0, 1, 1) + self.horizontalLayout_80 = QtGui.QHBoxLayout() + self.horizontalLayout_80.setObjectName(_fromUtf8("horizontalLayout_80")) + self.button_cut_reset = QtGui.QPushButton(self.groupBox_20) self.button_cut_reset.setMinimumSize(QtCore.QSize(40, 0)) self.button_cut_reset.setMaximumSize(QtCore.QSize(60, 16777215)) self.button_cut_reset.setObjectName(_fromUtf8("button_cut_reset")) - self.horizontalLayout_8.addWidget(self.button_cut_reset) - spacerItem11 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_8.addItem(spacerItem11) - self.button_cut_apply = QtGui.QPushButton(self.groupBox_6) + self.horizontalLayout_80.addWidget(self.button_cut_reset) + spacerItem16 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem16) + self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) self.button_cut_apply.setEnabled(False) self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) self.button_cut_apply.setIconSize(QtCore.QSize(32, 32)) self.button_cut_apply.setObjectName(_fromUtf8("button_cut_apply")) - self.horizontalLayout_8.addWidget(self.button_cut_apply) - self.gridLayout_17.addLayout(self.horizontalLayout_8, 2, 0, 1, 1) - self.gridLayout_2.addLayout(self.gridLayout_17, 1, 0, 1, 1) - self.gridLayout_36.addWidget(self.groupBox_6, 0, 0, 1, 1) - self.gridLayout_38.addWidget(self.frame_7, 0, 0, 1, 1) - spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_38.addItem(spacerItem12, 1, 0, 1, 1) - self.tabWidget_2.addTab(self.cut_tab, _fromUtf8("")) - self.rotate_tab = QtGui.QWidget() - self.rotate_tab.setObjectName(_fromUtf8("rotate_tab")) - self.gridLayout_52 = QtGui.QGridLayout(self.rotate_tab) - self.gridLayout_52.setObjectName(_fromUtf8("gridLayout_52")) - self.frame = QtGui.QFrame(self.rotate_tab) - self.frame.setMaximumSize(QtCore.QSize(220, 16777215)) - self.frame.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame.setFrameShadow(QtGui.QFrame.Raised) - self.frame.setObjectName(_fromUtf8("frame")) - self.gridLayout_50 = QtGui.QGridLayout(self.frame) - self.gridLayout_50.setObjectName(_fromUtf8("gridLayout_50")) - self.ObjRot_button_select = QtGui.QPushButton(self.frame) + self.horizontalLayout_80.addWidget(self.button_cut_apply) + self.gridLayout_100.addLayout(self.horizontalLayout_80, 2, 0, 1, 1) + self.gridLayout_98.addLayout(self.gridLayout_100, 1, 0, 1, 1) + self.gridLayout_97.addWidget(self.groupBox_20, 0, 0, 1, 1) + self.gridLayout_96.addWidget(self.frame_10, 0, 0, 1, 1) + spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem17, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.cut_tab_2, _fromUtf8("")) + self.rotate_tab_2 = QtGui.QWidget() + self.rotate_tab_2.setObjectName(_fromUtf8("rotate_tab_2")) + self.gridLayout_103 = QtGui.QGridLayout(self.rotate_tab_2) + self.gridLayout_103.setObjectName(_fromUtf8("gridLayout_103")) + self.frame_11 = QtGui.QFrame(self.rotate_tab_2) + self.frame_11.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_11.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_11.setFrameShadow(QtGui.QFrame.Raised) + self.frame_11.setObjectName(_fromUtf8("frame_11")) + self.gridLayout_104 = QtGui.QGridLayout(self.frame_11) + self.gridLayout_104.setObjectName(_fromUtf8("gridLayout_104")) + self.ObjRot_button_select = QtGui.QPushButton(self.frame_11) self.ObjRot_button_select.setObjectName(_fromUtf8("ObjRot_button_select")) - self.gridLayout_50.addWidget(self.ObjRot_button_select, 0, 0, 1, 1) - self.tabWidget_3 = QtGui.QTabWidget(self.frame) - self.tabWidget_3.setTabPosition(QtGui.QTabWidget.North) - self.tabWidget_3.setObjectName(_fromUtf8("tabWidget_3")) - self.tab_8 = QtGui.QWidget() - self.tab_8.setObjectName(_fromUtf8("tab_8")) - self.gridLayout_21 = QtGui.QGridLayout(self.tab_8) - self.gridLayout_21.setObjectName(_fromUtf8("gridLayout_21")) - self.ObjRot_comboBox_axis = QtGui.QComboBox(self.tab_8) + self.gridLayout_104.addWidget(self.ObjRot_button_select, 0, 0, 1, 1) + self.tabWidget_10 = QtGui.QTabWidget(self.frame_11) + self.tabWidget_10.setTabPosition(QtGui.QTabWidget.North) + self.tabWidget_10.setObjectName(_fromUtf8("tabWidget_10")) + self.tab_18 = QtGui.QWidget() + self.tab_18.setObjectName(_fromUtf8("tab_18")) + self.gridLayout_105 = QtGui.QGridLayout(self.tab_18) + self.gridLayout_105.setObjectName(_fromUtf8("gridLayout_105")) + self.ObjRot_comboBox_axis = QtGui.QComboBox(self.tab_18) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1356,21 +1877,21 @@ class Ui_Form(object): self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) self.ObjRot_comboBox_axis.addItem(_fromUtf8("")) - self.gridLayout_21.addWidget(self.ObjRot_comboBox_axis, 0, 0, 1, 1) - self.ObjRot_button_select_axis = QtGui.QPushButton(self.tab_8) + self.gridLayout_105.addWidget(self.ObjRot_comboBox_axis, 0, 0, 1, 1) + self.ObjRot_button_select_axis = QtGui.QPushButton(self.tab_18) self.ObjRot_button_select_axis.setEnabled(False) self.ObjRot_button_select_axis.setMinimumSize(QtCore.QSize(40, 0)) self.ObjRot_button_select_axis.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_axis.setObjectName(_fromUtf8("ObjRot_button_select_axis")) - self.gridLayout_21.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_3.addTab(self.tab_8, icon69, _fromUtf8("")) - self.tab_9 = QtGui.QWidget() - self.tab_9.setObjectName(_fromUtf8("tab_9")) - self.gridLayout_23 = QtGui.QGridLayout(self.tab_9) - self.gridLayout_23.setObjectName(_fromUtf8("gridLayout_23")) - self.ObjRot_comboBox_center = QtGui.QComboBox(self.tab_9) + self.gridLayout_105.addWidget(self.ObjRot_button_select_axis, 1, 0, 1, 1) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon75, _fromUtf8("")) + self.tab_19 = QtGui.QWidget() + self.tab_19.setObjectName(_fromUtf8("tab_19")) + self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) + self.gridLayout_106.setObjectName(_fromUtf8("gridLayout_106")) + self.ObjRot_comboBox_center = QtGui.QComboBox(self.tab_19) self.ObjRot_comboBox_center.setEnabled(True) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -1385,31 +1906,31 @@ class Ui_Form(object): self.ObjRot_comboBox_center.addItem(_fromUtf8("")) self.ObjRot_comboBox_center.addItem(_fromUtf8("")) self.ObjRot_comboBox_center.addItem(_fromUtf8("")) - self.gridLayout_23.addWidget(self.ObjRot_comboBox_center, 0, 0, 1, 1) - self.ObjRot_button_select_center = QtGui.QPushButton(self.tab_9) + self.gridLayout_106.addWidget(self.ObjRot_comboBox_center, 0, 0, 1, 1) + self.ObjRot_button_select_center = QtGui.QPushButton(self.tab_19) self.ObjRot_button_select_center.setEnabled(False) self.ObjRot_button_select_center.setMinimumSize(QtCore.QSize(40, 0)) self.ObjRot_button_select_center.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_center.setObjectName(_fromUtf8("ObjRot_button_select_center")) - self.gridLayout_23.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_3.addTab(self.tab_9, icon70, _fromUtf8("")) - self.gridLayout_50.addWidget(self.tabWidget_3, 1, 0, 1, 1) - self.groupBox_2 = QtGui.QGroupBox(self.frame) - self.groupBox_2.setMinimumSize(QtCore.QSize(150, 67)) - self.groupBox_2.setMaximumSize(QtCore.QSize(16777215, 16777215)) - self.groupBox_2.setFlat(False) - self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) - self.gridLayout_29 = QtGui.QGridLayout(self.groupBox_2) - self.gridLayout_29.setObjectName(_fromUtf8("gridLayout_29")) - self.tabWidget_5 = QtGui.QTabWidget(self.groupBox_2) - self.tabWidget_5.setObjectName(_fromUtf8("tabWidget_5")) - self.tab_7 = QtGui.QWidget() - self.tab_7.setObjectName(_fromUtf8("tab_7")) - self.gridLayout_25 = QtGui.QGridLayout(self.tab_7) - self.gridLayout_25.setObjectName(_fromUtf8("gridLayout_25")) - self.ObjRot_horizontalSlider = QtGui.QSlider(self.tab_7) + self.gridLayout_106.addWidget(self.ObjRot_button_select_center, 1, 0, 1, 1) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon76, _fromUtf8("")) + self.gridLayout_104.addWidget(self.tabWidget_10, 1, 0, 1, 1) + self.groupBox_21 = QtGui.QGroupBox(self.frame_11) + self.groupBox_21.setMinimumSize(QtCore.QSize(150, 67)) + self.groupBox_21.setMaximumSize(QtCore.QSize(16777215, 16777215)) + self.groupBox_21.setFlat(False) + self.groupBox_21.setObjectName(_fromUtf8("groupBox_21")) + self.gridLayout_107 = QtGui.QGridLayout(self.groupBox_21) + self.gridLayout_107.setObjectName(_fromUtf8("gridLayout_107")) + self.tabWidget_11 = QtGui.QTabWidget(self.groupBox_21) + self.tabWidget_11.setObjectName(_fromUtf8("tabWidget_11")) + self.tab_20 = QtGui.QWidget() + self.tab_20.setObjectName(_fromUtf8("tab_20")) + self.gridLayout_108 = QtGui.QGridLayout(self.tab_20) + self.gridLayout_108.setObjectName(_fromUtf8("gridLayout_108")) + self.ObjRot_horizontalSlider = QtGui.QSlider(self.tab_20) self.ObjRot_horizontalSlider.setMinimumSize(QtCore.QSize(0, 39)) self.ObjRot_horizontalSlider.setMaximumSize(QtCore.QSize(120, 16777215)) self.ObjRot_horizontalSlider.setMinimum(-180) @@ -1418,25 +1939,25 @@ class Ui_Form(object): self.ObjRot_horizontalSlider.setTickPosition(QtGui.QSlider.TicksBothSides) self.ObjRot_horizontalSlider.setTickInterval(20) self.ObjRot_horizontalSlider.setObjectName(_fromUtf8("ObjRot_horizontalSlider")) - self.gridLayout_25.addWidget(self.ObjRot_horizontalSlider, 0, 0, 1, 1) - self.tabWidget_5.addTab(self.tab_7, _fromUtf8("")) - self.tab_10 = QtGui.QWidget() - self.tab_10.setObjectName(_fromUtf8("tab_10")) - self.gridLayout_24 = QtGui.QGridLayout(self.tab_10) - self.gridLayout_24.setObjectName(_fromUtf8("gridLayout_24")) - self.ObjRot_button_select_angle = QtGui.QPushButton(self.tab_10) + self.gridLayout_108.addWidget(self.ObjRot_horizontalSlider, 0, 0, 1, 1) + self.tabWidget_11.addTab(self.tab_20, _fromUtf8("")) + self.tab_21 = QtGui.QWidget() + self.tab_21.setObjectName(_fromUtf8("tab_21")) + self.gridLayout_109 = QtGui.QGridLayout(self.tab_21) + self.gridLayout_109.setObjectName(_fromUtf8("gridLayout_109")) + self.ObjRot_button_select_angle = QtGui.QPushButton(self.tab_21) self.ObjRot_button_select_angle.setEnabled(True) self.ObjRot_button_select_angle.setMinimumSize(QtCore.QSize(40, 0)) self.ObjRot_button_select_angle.setMaximumSize(QtCore.QSize(80, 16777215)) self.ObjRot_button_select_angle.setObjectName(_fromUtf8("ObjRot_button_select_angle")) - self.gridLayout_24.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_5.addTab(self.tab_10, icon71, _fromUtf8("")) - self.gridLayout_29.addWidget(self.tabWidget_5, 0, 0, 1, 1) - self.horizontalLayout_13 = QtGui.QHBoxLayout() - self.horizontalLayout_13.setObjectName(_fromUtf8("horizontalLayout_13")) - self.ObjRot_lineEdit_angle = QtGui.QLineEdit(self.groupBox_2) + self.gridLayout_109.addWidget(self.ObjRot_button_select_angle, 0, 0, 1, 1) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon77, _fromUtf8("")) + self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) + self.horizontalLayout_81 = QtGui.QHBoxLayout() + self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) + self.ObjRot_lineEdit_angle = QtGui.QLineEdit(self.groupBox_21) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -1446,52 +1967,52 @@ class Ui_Form(object): self.ObjRot_lineEdit_angle.setMaximumSize(QtCore.QSize(60, 16777215)) self.ObjRot_lineEdit_angle.setMaxLength(32769) self.ObjRot_lineEdit_angle.setObjectName(_fromUtf8("ObjRot_lineEdit_angle")) - self.horizontalLayout_13.addWidget(self.ObjRot_lineEdit_angle) - self.label_angle_2 = QtGui.QLabel(self.groupBox_2) - self.label_angle_2.setMaximumSize(QtCore.QSize(60, 16777215)) - self.label_angle_2.setObjectName(_fromUtf8("label_angle_2")) - self.horizontalLayout_13.addWidget(self.label_angle_2) - self.gridLayout_29.addLayout(self.horizontalLayout_13, 1, 0, 1, 1) - self.gridLayout_50.addWidget(self.groupBox_2, 2, 0, 1, 1) - self.horizontalLayout_14 = QtGui.QHBoxLayout() - self.horizontalLayout_14.setObjectName(_fromUtf8("horizontalLayout_14")) - self.ObjRot_button_reset = QtGui.QPushButton(self.frame) + self.horizontalLayout_81.addWidget(self.ObjRot_lineEdit_angle) + self.label_angle_4 = QtGui.QLabel(self.groupBox_21) + self.label_angle_4.setMaximumSize(QtCore.QSize(60, 16777215)) + self.label_angle_4.setObjectName(_fromUtf8("label_angle_4")) + self.horizontalLayout_81.addWidget(self.label_angle_4) + self.gridLayout_107.addLayout(self.horizontalLayout_81, 1, 0, 1, 1) + self.gridLayout_104.addWidget(self.groupBox_21, 2, 0, 1, 1) + self.horizontalLayout_82 = QtGui.QHBoxLayout() + self.horizontalLayout_82.setObjectName(_fromUtf8("horizontalLayout_82")) + self.ObjRot_button_reset = QtGui.QPushButton(self.frame_11) self.ObjRot_button_reset.setMinimumSize(QtCore.QSize(40, 0)) self.ObjRot_button_reset.setMaximumSize(QtCore.QSize(60, 16777215)) self.ObjRot_button_reset.setObjectName(_fromUtf8("ObjRot_button_reset")) - self.horizontalLayout_14.addWidget(self.ObjRot_button_reset) - spacerItem13 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_14.addItem(spacerItem13) - self.ObjRot_button_apply = QtGui.QPushButton(self.frame) + self.horizontalLayout_82.addWidget(self.ObjRot_button_reset) + spacerItem18 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem18) + self.ObjRot_button_apply = QtGui.QPushButton(self.frame_11) self.ObjRot_button_apply.setMinimumSize(QtCore.QSize(40, 0)) self.ObjRot_button_apply.setMaximumSize(QtCore.QSize(60, 16777215)) self.ObjRot_button_apply.setObjectName(_fromUtf8("ObjRot_button_apply")) - self.horizontalLayout_14.addWidget(self.ObjRot_button_apply) - self.gridLayout_50.addLayout(self.horizontalLayout_14, 3, 0, 1, 1) - self.gridLayout_52.addWidget(self.frame, 0, 0, 1, 1) - spacerItem14 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_52.addItem(spacerItem14, 1, 0, 1, 1) - self.tabWidget_2.addTab(self.rotate_tab, _fromUtf8("")) - self.translate_tab = QtGui.QWidget() - self.translate_tab.setObjectName(_fromUtf8("translate_tab")) - self.gridLayout_49 = QtGui.QGridLayout(self.translate_tab) - self.gridLayout_49.setObjectName(_fromUtf8("gridLayout_49")) - self.frame_2 = QtGui.QFrame(self.translate_tab) - self.frame_2.setMaximumSize(QtCore.QSize(220, 16777215)) - self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel) - self.frame_2.setFrameShadow(QtGui.QFrame.Raised) - self.frame_2.setObjectName(_fromUtf8("frame_2")) - self.gridLayout_48 = QtGui.QGridLayout(self.frame_2) - self.gridLayout_48.setObjectName(_fromUtf8("gridLayout_48")) - self.ObjTrans_button_select = QtGui.QPushButton(self.frame_2) + self.horizontalLayout_82.addWidget(self.ObjRot_button_apply) + self.gridLayout_104.addLayout(self.horizontalLayout_82, 3, 0, 1, 1) + self.gridLayout_103.addWidget(self.frame_11, 0, 0, 1, 1) + spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem19, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.rotate_tab_2, _fromUtf8("")) + self.translate_tab_2 = QtGui.QWidget() + self.translate_tab_2.setObjectName(_fromUtf8("translate_tab_2")) + self.gridLayout_110 = QtGui.QGridLayout(self.translate_tab_2) + self.gridLayout_110.setObjectName(_fromUtf8("gridLayout_110")) + self.frame_12 = QtGui.QFrame(self.translate_tab_2) + self.frame_12.setMaximumSize(QtCore.QSize(220, 16777215)) + self.frame_12.setFrameShape(QtGui.QFrame.StyledPanel) + self.frame_12.setFrameShadow(QtGui.QFrame.Raised) + self.frame_12.setObjectName(_fromUtf8("frame_12")) + self.gridLayout_111 = QtGui.QGridLayout(self.frame_12) + self.gridLayout_111.setObjectName(_fromUtf8("gridLayout_111")) + self.ObjTrans_button_select = QtGui.QPushButton(self.frame_12) self.ObjTrans_button_select.setObjectName(_fromUtf8("ObjTrans_button_select")) - self.gridLayout_48.addWidget(self.ObjTrans_button_select, 0, 0, 1, 1) - self.horizontalLayout_15 = QtGui.QHBoxLayout() - self.horizontalLayout_15.setObjectName(_fromUtf8("horizontalLayout_15")) - self.ObjTrans_duplicate = QtGui.QCheckBox(self.frame_2) + self.gridLayout_111.addWidget(self.ObjTrans_button_select, 0, 0, 1, 1) + self.horizontalLayout_83 = QtGui.QHBoxLayout() + self.horizontalLayout_83.setObjectName(_fromUtf8("horizontalLayout_83")) + self.ObjTrans_duplicate = QtGui.QCheckBox(self.frame_12) self.ObjTrans_duplicate.setObjectName(_fromUtf8("ObjTrans_duplicate")) - self.horizontalLayout_15.addWidget(self.ObjTrans_duplicate) - self.ObjTrans_spin = QtGui.QSpinBox(self.frame_2) + self.horizontalLayout_83.addWidget(self.ObjTrans_duplicate) + self.ObjTrans_spin = QtGui.QSpinBox(self.frame_12) self.ObjTrans_spin.setMinimumSize(QtCore.QSize(40, 0)) self.ObjTrans_spin.setMaximumSize(QtCore.QSize(50, 16777215)) self.ObjTrans_spin.setButtonSymbols(QtGui.QAbstractSpinBox.NoButtons) @@ -1501,24 +2022,24 @@ class Ui_Form(object): self.ObjTrans_spin.setSingleStep(1) self.ObjTrans_spin.setProperty("value", 1) self.ObjTrans_spin.setObjectName(_fromUtf8("ObjTrans_spin")) - self.horizontalLayout_15.addWidget(self.ObjTrans_spin) - self.ObjTrans_deepCopy = QtGui.QCheckBox(self.frame_2) + self.horizontalLayout_83.addWidget(self.ObjTrans_spin) + self.ObjTrans_deepCopy = QtGui.QCheckBox(self.frame_12) self.ObjTrans_deepCopy.setObjectName(_fromUtf8("ObjTrans_deepCopy")) - self.horizontalLayout_15.addWidget(self.ObjTrans_deepCopy) - self.gridLayout_48.addLayout(self.horizontalLayout_15, 1, 0, 1, 1) - self.tabWidget_4 = QtGui.QTabWidget(self.frame_2) - self.tabWidget_4.setObjectName(_fromUtf8("tabWidget_4")) - self.tab_5 = QtGui.QWidget() - self.tab_5.setObjectName(_fromUtf8("tab_5")) - self.gridLayout_15 = QtGui.QGridLayout(self.tab_5) - self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15")) - self.groupBox_3 = QtGui.QGroupBox(self.tab_5) - self.groupBox_3.setMinimumSize(QtCore.QSize(150, 0)) - self.groupBox_3.setFlat(False) - self.groupBox_3.setObjectName(_fromUtf8("groupBox_3")) - self.gridLayout_26 = QtGui.QGridLayout(self.groupBox_3) - self.gridLayout_26.setObjectName(_fromUtf8("gridLayout_26")) - self.ObjTrans_comboBox_start = QtGui.QComboBox(self.groupBox_3) + self.horizontalLayout_83.addWidget(self.ObjTrans_deepCopy) + self.gridLayout_111.addLayout(self.horizontalLayout_83, 1, 0, 1, 1) + self.tabWidget_12 = QtGui.QTabWidget(self.frame_12) + self.tabWidget_12.setObjectName(_fromUtf8("tabWidget_12")) + self.tab_22 = QtGui.QWidget() + self.tab_22.setObjectName(_fromUtf8("tab_22")) + self.gridLayout_112 = QtGui.QGridLayout(self.tab_22) + self.gridLayout_112.setObjectName(_fromUtf8("gridLayout_112")) + self.groupBox_22 = QtGui.QGroupBox(self.tab_22) + self.groupBox_22.setMinimumSize(QtCore.QSize(150, 0)) + self.groupBox_22.setFlat(False) + self.groupBox_22.setObjectName(_fromUtf8("groupBox_22")) + self.gridLayout_113 = QtGui.QGridLayout(self.groupBox_22) + self.gridLayout_113.setObjectName(_fromUtf8("gridLayout_113")) + self.ObjTrans_comboBox_start = QtGui.QComboBox(self.groupBox_22) self.ObjTrans_comboBox_start.setEnabled(True) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -1534,67 +2055,67 @@ class Ui_Form(object): self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) self.ObjTrans_comboBox_start.addItem(_fromUtf8("")) - self.gridLayout_26.addWidget(self.ObjTrans_comboBox_start, 0, 0, 1, 1) - self.ObjTrans_button_select_start = QtGui.QPushButton(self.groupBox_3) + self.gridLayout_113.addWidget(self.ObjTrans_comboBox_start, 0, 0, 1, 1) + self.ObjTrans_button_select_start = QtGui.QPushButton(self.groupBox_22) self.ObjTrans_button_select_start.setEnabled(True) self.ObjTrans_button_select_start.setMinimumSize(QtCore.QSize(50, 0)) self.ObjTrans_button_select_start.setMaximumSize(QtCore.QSize(120, 16777215)) self.ObjTrans_button_select_start.setObjectName(_fromUtf8("ObjTrans_button_select_start")) - self.gridLayout_26.addWidget(self.ObjTrans_button_select_start, 1, 0, 1, 1) - self.gridLayout_27 = QtGui.QGridLayout() - self.gridLayout_27.setObjectName(_fromUtf8("gridLayout_27")) - self.gridLayout_28 = QtGui.QGridLayout() - self.gridLayout_28.setObjectName(_fromUtf8("gridLayout_28")) - self.label_3 = QtGui.QLabel(self.groupBox_3) - self.label_3.setObjectName(_fromUtf8("label_3")) - self.gridLayout_28.addWidget(self.label_3, 0, 0, 1, 1) - self.ObjTrans_start_x = QtGui.QLineEdit(self.groupBox_3) + self.gridLayout_113.addWidget(self.ObjTrans_button_select_start, 1, 0, 1, 1) + self.gridLayout_114 = QtGui.QGridLayout() + self.gridLayout_114.setObjectName(_fromUtf8("gridLayout_114")) + self.gridLayout_115 = QtGui.QGridLayout() + self.gridLayout_115.setObjectName(_fromUtf8("gridLayout_115")) + self.label_11 = QtGui.QLabel(self.groupBox_22) + self.label_11.setObjectName(_fromUtf8("label_11")) + self.gridLayout_115.addWidget(self.label_11, 0, 0, 1, 1) + self.ObjTrans_start_x = QtGui.QLineEdit(self.groupBox_22) self.ObjTrans_start_x.setEnabled(False) self.ObjTrans_start_x.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_start_x.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_start_x.setObjectName(_fromUtf8("ObjTrans_start_x")) - self.gridLayout_28.addWidget(self.ObjTrans_start_x, 0, 1, 1, 1) - self.gridLayout_27.addLayout(self.gridLayout_28, 0, 0, 1, 1) - self.gridLayout_40 = QtGui.QGridLayout() - self.gridLayout_40.setObjectName(_fromUtf8("gridLayout_40")) - self.label_4 = QtGui.QLabel(self.groupBox_3) - self.label_4.setObjectName(_fromUtf8("label_4")) - self.gridLayout_40.addWidget(self.label_4, 0, 0, 1, 1) - self.ObjTrans_start_y = QtGui.QLineEdit(self.groupBox_3) + self.gridLayout_115.addWidget(self.ObjTrans_start_x, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_115, 0, 0, 1, 1) + self.gridLayout_116 = QtGui.QGridLayout() + self.gridLayout_116.setObjectName(_fromUtf8("gridLayout_116")) + self.label_12 = QtGui.QLabel(self.groupBox_22) + self.label_12.setObjectName(_fromUtf8("label_12")) + self.gridLayout_116.addWidget(self.label_12, 0, 0, 1, 1) + self.ObjTrans_start_y = QtGui.QLineEdit(self.groupBox_22) self.ObjTrans_start_y.setEnabled(False) self.ObjTrans_start_y.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_start_y.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_start_y.setObjectName(_fromUtf8("ObjTrans_start_y")) - self.gridLayout_40.addWidget(self.ObjTrans_start_y, 0, 1, 1, 1) - self.gridLayout_27.addLayout(self.gridLayout_40, 1, 0, 1, 1) - self.gridLayout_41 = QtGui.QGridLayout() - self.gridLayout_41.setObjectName(_fromUtf8("gridLayout_41")) - self.label_6 = QtGui.QLabel(self.groupBox_3) - self.label_6.setObjectName(_fromUtf8("label_6")) - self.gridLayout_41.addWidget(self.label_6, 0, 0, 1, 1) - self.ObjTrans_start_z = QtGui.QLineEdit(self.groupBox_3) + self.gridLayout_116.addWidget(self.ObjTrans_start_y, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_116, 1, 0, 1, 1) + self.gridLayout_117 = QtGui.QGridLayout() + self.gridLayout_117.setObjectName(_fromUtf8("gridLayout_117")) + self.label_13 = QtGui.QLabel(self.groupBox_22) + self.label_13.setObjectName(_fromUtf8("label_13")) + self.gridLayout_117.addWidget(self.label_13, 0, 0, 1, 1) + self.ObjTrans_start_z = QtGui.QLineEdit(self.groupBox_22) self.ObjTrans_start_z.setEnabled(False) self.ObjTrans_start_z.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_start_z.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_start_z.setObjectName(_fromUtf8("ObjTrans_start_z")) - self.gridLayout_41.addWidget(self.ObjTrans_start_z, 0, 1, 1, 1) - self.gridLayout_27.addLayout(self.gridLayout_41, 2, 0, 1, 1) - self.gridLayout_26.addLayout(self.gridLayout_27, 2, 0, 1, 1) - self.gridLayout_15.addWidget(self.groupBox_3, 0, 0, 1, 1) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_4.addTab(self.tab_5, icon72, _fromUtf8("")) - self.tab_6 = QtGui.QWidget() - self.tab_6.setObjectName(_fromUtf8("tab_6")) - self.gridLayout_42 = QtGui.QGridLayout(self.tab_6) - self.gridLayout_42.setObjectName(_fromUtf8("gridLayout_42")) - self.groupBox_4 = QtGui.QGroupBox(self.tab_6) - self.groupBox_4.setMinimumSize(QtCore.QSize(150, 0)) - self.groupBox_4.setFlat(False) - self.groupBox_4.setObjectName(_fromUtf8("groupBox_4")) - self.gridLayout_43 = QtGui.QGridLayout(self.groupBox_4) - self.gridLayout_43.setObjectName(_fromUtf8("gridLayout_43")) - self.ObjTrans_comboBox_end = QtGui.QComboBox(self.groupBox_4) + self.gridLayout_117.addWidget(self.ObjTrans_start_z, 0, 1, 1, 1) + self.gridLayout_114.addLayout(self.gridLayout_117, 2, 0, 1, 1) + self.gridLayout_113.addLayout(self.gridLayout_114, 2, 0, 1, 1) + self.gridLayout_112.addWidget(self.groupBox_22, 0, 0, 1, 1) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon78, _fromUtf8("")) + self.tab_23 = QtGui.QWidget() + self.tab_23.setObjectName(_fromUtf8("tab_23")) + self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) + self.gridLayout_118.setObjectName(_fromUtf8("gridLayout_118")) + self.groupBox_23 = QtGui.QGroupBox(self.tab_23) + self.groupBox_23.setMinimumSize(QtCore.QSize(150, 0)) + self.groupBox_23.setFlat(False) + self.groupBox_23.setObjectName(_fromUtf8("groupBox_23")) + self.gridLayout_119 = QtGui.QGridLayout(self.groupBox_23) + self.gridLayout_119.setObjectName(_fromUtf8("gridLayout_119")) + self.ObjTrans_comboBox_end = QtGui.QComboBox(self.groupBox_23) self.ObjTrans_comboBox_end.setEnabled(True) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -1611,248 +2132,248 @@ class Ui_Form(object): self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) self.ObjTrans_comboBox_end.addItem(_fromUtf8("")) - self.gridLayout_43.addWidget(self.ObjTrans_comboBox_end, 0, 0, 1, 1) - self.ObjTrans_button_select_end = QtGui.QPushButton(self.groupBox_4) + self.gridLayout_119.addWidget(self.ObjTrans_comboBox_end, 0, 0, 1, 1) + self.ObjTrans_button_select_end = QtGui.QPushButton(self.groupBox_23) self.ObjTrans_button_select_end.setEnabled(True) self.ObjTrans_button_select_end.setMinimumSize(QtCore.QSize(100, 0)) self.ObjTrans_button_select_end.setMaximumSize(QtCore.QSize(120, 16777215)) self.ObjTrans_button_select_end.setObjectName(_fromUtf8("ObjTrans_button_select_end")) - self.gridLayout_43.addWidget(self.ObjTrans_button_select_end, 1, 0, 1, 1) - self.gridLayout_44 = QtGui.QGridLayout() - self.gridLayout_44.setObjectName(_fromUtf8("gridLayout_44")) - self.gridLayout_45 = QtGui.QGridLayout() - self.gridLayout_45.setObjectName(_fromUtf8("gridLayout_45")) - self.label_7 = QtGui.QLabel(self.groupBox_4) - self.label_7.setObjectName(_fromUtf8("label_7")) - self.gridLayout_45.addWidget(self.label_7, 0, 0, 1, 1) - self.ObjTrans_end_z = QtGui.QLineEdit(self.groupBox_4) + self.gridLayout_119.addWidget(self.ObjTrans_button_select_end, 1, 0, 1, 1) + self.gridLayout_120 = QtGui.QGridLayout() + self.gridLayout_120.setObjectName(_fromUtf8("gridLayout_120")) + self.gridLayout_121 = QtGui.QGridLayout() + self.gridLayout_121.setObjectName(_fromUtf8("gridLayout_121")) + self.label_14 = QtGui.QLabel(self.groupBox_23) + self.label_14.setObjectName(_fromUtf8("label_14")) + self.gridLayout_121.addWidget(self.label_14, 0, 0, 1, 1) + self.ObjTrans_end_z = QtGui.QLineEdit(self.groupBox_23) self.ObjTrans_end_z.setEnabled(False) self.ObjTrans_end_z.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_end_z.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_end_z.setObjectName(_fromUtf8("ObjTrans_end_z")) - self.gridLayout_45.addWidget(self.ObjTrans_end_z, 0, 1, 1, 1) - self.gridLayout_44.addLayout(self.gridLayout_45, 2, 0, 1, 1) - self.gridLayout_46 = QtGui.QGridLayout() - self.gridLayout_46.setObjectName(_fromUtf8("gridLayout_46")) - self.label_8 = QtGui.QLabel(self.groupBox_4) - self.label_8.setObjectName(_fromUtf8("label_8")) - self.gridLayout_46.addWidget(self.label_8, 0, 0, 1, 1) - self.ObjTrans_end_y = QtGui.QLineEdit(self.groupBox_4) + self.gridLayout_121.addWidget(self.ObjTrans_end_z, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_121, 2, 0, 1, 1) + self.gridLayout_122 = QtGui.QGridLayout() + self.gridLayout_122.setObjectName(_fromUtf8("gridLayout_122")) + self.label_15 = QtGui.QLabel(self.groupBox_23) + self.label_15.setObjectName(_fromUtf8("label_15")) + self.gridLayout_122.addWidget(self.label_15, 0, 0, 1, 1) + self.ObjTrans_end_y = QtGui.QLineEdit(self.groupBox_23) self.ObjTrans_end_y.setEnabled(False) self.ObjTrans_end_y.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_end_y.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_end_y.setObjectName(_fromUtf8("ObjTrans_end_y")) - self.gridLayout_46.addWidget(self.ObjTrans_end_y, 0, 1, 1, 1) - self.gridLayout_44.addLayout(self.gridLayout_46, 1, 0, 1, 1) - self.gridLayout_47 = QtGui.QGridLayout() - self.gridLayout_47.setObjectName(_fromUtf8("gridLayout_47")) - self.label_9 = QtGui.QLabel(self.groupBox_4) - self.label_9.setObjectName(_fromUtf8("label_9")) - self.gridLayout_47.addWidget(self.label_9, 0, 0, 1, 1) - self.ObjTrans_end_x = QtGui.QLineEdit(self.groupBox_4) + self.gridLayout_122.addWidget(self.ObjTrans_end_y, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_122, 1, 0, 1, 1) + self.gridLayout_123 = QtGui.QGridLayout() + self.gridLayout_123.setObjectName(_fromUtf8("gridLayout_123")) + self.label_16 = QtGui.QLabel(self.groupBox_23) + self.label_16.setObjectName(_fromUtf8("label_16")) + self.gridLayout_123.addWidget(self.label_16, 0, 0, 1, 1) + self.ObjTrans_end_x = QtGui.QLineEdit(self.groupBox_23) self.ObjTrans_end_x.setEnabled(False) self.ObjTrans_end_x.setMinimumSize(QtCore.QSize(90, 0)) self.ObjTrans_end_x.setMaximumSize(QtCore.QSize(200, 16777215)) self.ObjTrans_end_x.setObjectName(_fromUtf8("ObjTrans_end_x")) - self.gridLayout_47.addWidget(self.ObjTrans_end_x, 0, 1, 1, 1) - self.gridLayout_44.addLayout(self.gridLayout_47, 0, 0, 1, 1) - self.gridLayout_43.addLayout(self.gridLayout_44, 2, 0, 1, 1) - self.gridLayout_42.addWidget(self.groupBox_4, 0, 0, 1, 1) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_4.addTab(self.tab_6, icon73, _fromUtf8("")) - self.gridLayout_48.addWidget(self.tabWidget_4, 2, 0, 1, 1) - self.horizontalLayout_16 = QtGui.QHBoxLayout() - self.horizontalLayout_16.setObjectName(_fromUtf8("horizontalLayout_16")) - self.ObjTrans_button_reset = QtGui.QPushButton(self.frame_2) + self.gridLayout_123.addWidget(self.ObjTrans_end_x, 0, 1, 1, 1) + self.gridLayout_120.addLayout(self.gridLayout_123, 0, 0, 1, 1) + self.gridLayout_119.addLayout(self.gridLayout_120, 2, 0, 1, 1) + self.gridLayout_118.addWidget(self.groupBox_23, 0, 0, 1, 1) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon79, _fromUtf8("")) + self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) + self.horizontalLayout_84 = QtGui.QHBoxLayout() + self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) + self.ObjTrans_button_reset = QtGui.QPushButton(self.frame_12) self.ObjTrans_button_reset.setMinimumSize(QtCore.QSize(40, 0)) self.ObjTrans_button_reset.setMaximumSize(QtCore.QSize(60, 16777215)) self.ObjTrans_button_reset.setObjectName(_fromUtf8("ObjTrans_button_reset")) - self.horizontalLayout_16.addWidget(self.ObjTrans_button_reset) - spacerItem15 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_16.addItem(spacerItem15) - self.ObjTrans_button_apply = QtGui.QPushButton(self.frame_2) + self.horizontalLayout_84.addWidget(self.ObjTrans_button_reset) + spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem20) + self.ObjTrans_button_apply = QtGui.QPushButton(self.frame_12) self.ObjTrans_button_apply.setMinimumSize(QtCore.QSize(40, 0)) self.ObjTrans_button_apply.setMaximumSize(QtCore.QSize(60, 16777215)) self.ObjTrans_button_apply.setObjectName(_fromUtf8("ObjTrans_button_apply")) - self.horizontalLayout_16.addWidget(self.ObjTrans_button_apply) - self.gridLayout_48.addLayout(self.horizontalLayout_16, 3, 0, 1, 1) - self.gridLayout_49.addWidget(self.frame_2, 0, 0, 1, 1) - spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_49.addItem(spacerItem16, 1, 0, 1, 1) - self.tabWidget_2.addTab(self.translate_tab, _fromUtf8("")) - self.gridLayout_11.addWidget(self.tabWidget_2, 0, 0, 1, 1) - self.tabWidget.addTab(self.Modif_Tab, _fromUtf8("")) - self.View_Tab = QtGui.QWidget() - self.View_Tab.setObjectName(_fromUtf8("View_Tab")) - self.gridLayout_13 = QtGui.QGridLayout(self.View_Tab) - self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13")) - self.button_alignview = QtGui.QPushButton(self.View_Tab) + self.horizontalLayout_84.addWidget(self.ObjTrans_button_apply) + self.gridLayout_111.addLayout(self.horizontalLayout_84, 3, 0, 1, 1) + self.gridLayout_110.addWidget(self.frame_12, 0, 0, 1, 1) + spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_110.addItem(spacerItem21, 1, 0, 1, 1) + self.tabWidget_9.addTab(self.translate_tab_2, _fromUtf8("")) + self.gridLayout_94.addWidget(self.tabWidget_9, 0, 0, 1, 1) + self.tabWidget_7.addTab(self.Modif_Tab_2, _fromUtf8("")) + self.View_Tab_2 = QtGui.QWidget() + self.View_Tab_2.setObjectName(_fromUtf8("View_Tab_2")) + self.gridLayout_124 = QtGui.QGridLayout(self.View_Tab_2) + self.gridLayout_124.setObjectName(_fromUtf8("gridLayout_124")) + self.button_alignview = QtGui.QPushButton(self.View_Tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) self.button_alignview.setSizePolicy(sizePolicy) self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon74) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon80) self.button_alignview.setIconSize(QtCore.QSize(32, 32)) self.button_alignview.setObjectName(_fromUtf8("button_alignview")) - self.gridLayout_13.addWidget(self.button_alignview, 0, 0, 1, 1) - spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_13.addItem(spacerItem17, 2, 0, 1, 1) - self.button_trackcamera = QtGui.QPushButton(self.View_Tab) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon75) + self.gridLayout_124.addWidget(self.button_alignview, 0, 0, 1, 1) + spacerItem22 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem22, 2, 0, 1, 1) + self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon81) self.button_trackcamera.setIconSize(QtCore.QSize(32, 32)) self.button_trackcamera.setObjectName(_fromUtf8("button_trackcamera")) - self.gridLayout_13.addWidget(self.button_trackcamera, 1, 0, 1, 1) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.View_Tab, icon76, _fromUtf8("")) - self.tab_3 = QtGui.QWidget() - self.tab_3.setObjectName(_fromUtf8("tab_3")) - self.gridLayout_35 = QtGui.QGridLayout(self.tab_3) - self.gridLayout_35.setObjectName(_fromUtf8("gridLayout_35")) - self.button_isView = QtGui.QPushButton(self.tab_3) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon77) + self.gridLayout_124.addWidget(self.button_trackcamera, 1, 0, 1, 1) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon82, _fromUtf8("")) + self.tab_24 = QtGui.QWidget() + self.tab_24.setObjectName(_fromUtf8("tab_24")) + self.gridLayout_125 = QtGui.QGridLayout(self.tab_24) + self.gridLayout_125.setObjectName(_fromUtf8("gridLayout_125")) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem23, 9, 0, 1, 1) + self.button_isView = QtGui.QPushButton(self.tab_24) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon83) self.button_isView.setIconSize(QtCore.QSize(32, 32)) self.button_isView.setObjectName(_fromUtf8("button_isView")) - self.gridLayout_35.addWidget(self.button_isView, 8, 0, 1, 1) - spacerItem18 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_35.addItem(spacerItem18, 9, 0, 1, 1) - self.button_isCoplanar = QtGui.QPushButton(self.tab_3) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon78) - self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32)) - self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar")) - self.gridLayout_35.addWidget(self.button_isCoplanar, 2, 0, 1, 1) - self.button_isParallel = QtGui.QPushButton(self.tab_3) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon79) + self.gridLayout_125.addWidget(self.button_isView, 8, 0, 1, 1) + self.button_isParallel = QtGui.QPushButton(self.tab_24) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon84) self.button_isParallel.setIconSize(QtCore.QSize(32, 32)) self.button_isParallel.setObjectName(_fromUtf8("button_isParallel")) - self.gridLayout_35.addWidget(self.button_isParallel, 0, 0, 1, 1) - self.button_isAngle = QtGui.QPushButton(self.tab_3) - icon80 = QtGui.QIcon() - icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon80) + self.gridLayout_125.addWidget(self.button_isParallel, 0, 0, 1, 1) + self.button_isAngle = QtGui.QPushButton(self.tab_24) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon85) self.button_isAngle.setIconSize(QtCore.QSize(32, 32)) self.button_isAngle.setObjectName(_fromUtf8("button_isAngle")) - self.gridLayout_35.addWidget(self.button_isAngle, 4, 0, 1, 1) - self.button_isLength = QtGui.QPushButton(self.tab_3) - icon81 = QtGui.QIcon() - icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon81) + self.gridLayout_125.addWidget(self.button_isAngle, 4, 0, 1, 1) + self.button_isLength = QtGui.QPushButton(self.tab_24) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon86) self.button_isLength.setIconSize(QtCore.QSize(32, 32)) self.button_isLength.setObjectName(_fromUtf8("button_isLength")) - self.gridLayout_35.addWidget(self.button_isLength, 6, 0, 1, 1) - self.button_isDistance = QtGui.QPushButton(self.tab_3) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isDistance.setIcon(icon82) - self.button_isDistance.setIconSize(QtCore.QSize(32, 32)) - self.button_isDistance.setObjectName(_fromUtf8("button_isDistance")) - self.gridLayout_35.addWidget(self.button_isDistance, 5, 0, 1, 1) - self.button_isPerpendicular = QtGui.QPushButton(self.tab_3) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon83) + self.gridLayout_125.addWidget(self.button_isLength, 6, 0, 1, 1) + self.button_isPerpendicular = QtGui.QPushButton(self.tab_24) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon87) self.button_isPerpendicular.setIconSize(QtCore.QSize(32, 32)) self.button_isPerpendicular.setObjectName(_fromUtf8("button_isPerpendicular")) - self.gridLayout_35.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) - self.button_isClearance = QtGui.QPushButton(self.tab_3) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon84) - self.button_isClearance.setIconSize(QtCore.QSize(32, 32)) - self.button_isClearance.setObjectName(_fromUtf8("button_isClearance")) - self.gridLayout_35.addWidget(self.button_isClearance, 3, 0, 1, 1) - self.button_isArea = QtGui.QPushButton(self.tab_3) - icon85 = QtGui.QIcon() - icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon85) + self.gridLayout_125.addWidget(self.button_isPerpendicular, 1, 0, 1, 1) + self.button_isDistance = QtGui.QPushButton(self.tab_24) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon88) + self.button_isDistance.setIconSize(QtCore.QSize(32, 32)) + self.button_isDistance.setObjectName(_fromUtf8("button_isDistance")) + self.gridLayout_125.addWidget(self.button_isDistance, 5, 0, 1, 1) + self.button_isArea = QtGui.QPushButton(self.tab_24) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon89) self.button_isArea.setIconSize(QtCore.QSize(32, 32)) self.button_isArea.setObjectName(_fromUtf8("button_isArea")) - self.gridLayout_35.addWidget(self.button_isArea, 7, 0, 1, 1) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget.addTab(self.tab_3, icon86, _fromUtf8("")) - self.gridLayout_30.addWidget(self.tabWidget, 0, 0, 1, 1) - self.tabWidget_0.addTab(self.tab_2, _fromUtf8("")) - self.gridLayout_9.addWidget(self.tabWidget_0, 0, 0, 1, 1) - self.scrollArea.setWidget(self.scrollAreaWidgetContents_2) + self.gridLayout_125.addWidget(self.button_isArea, 7, 0, 1, 1) + self.button_isCoplanar = QtGui.QPushButton(self.tab_24) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon90) + self.button_isCoplanar.setIconSize(QtCore.QSize(32, 32)) + self.button_isCoplanar.setObjectName(_fromUtf8("button_isCoplanar")) + self.gridLayout_125.addWidget(self.button_isCoplanar, 2, 0, 1, 1) + self.button_isClearance = QtGui.QPushButton(self.tab_24) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon91) + self.button_isClearance.setIconSize(QtCore.QSize(32, 32)) + self.button_isClearance.setObjectName(_fromUtf8("button_isClearance")) + self.gridLayout_125.addWidget(self.button_isClearance, 3, 0, 1, 1) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon92, _fromUtf8("")) + self.gridLayout_128.addWidget(self.tabWidget_7, 0, 0, 1, 1) + self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_34.addWidget(self.scrollArea, 0, 0, 1, 1) - self.horizontalLayout_9 = QtGui.QHBoxLayout() - self.horizontalLayout_9.setObjectName(_fromUtf8("horizontalLayout_9")) + self.horizontalLayout_43 = QtGui.QHBoxLayout() + self.horizontalLayout_43.setObjectName(_fromUtf8("horizontalLayout_43")) self.button_WF_quit = QtGui.QPushButton(Form) self.button_WF_quit.setObjectName(_fromUtf8("button_WF_quit")) - self.horizontalLayout_9.addWidget(self.button_WF_quit) - spacerItem19 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) - self.horizontalLayout_9.addItem(spacerItem19) + self.horizontalLayout_43.addWidget(self.button_WF_quit) + spacerItem24 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem24) self.label_release = QtGui.QLabel(Form) self.label_release.setObjectName(_fromUtf8("label_release")) - self.horizontalLayout_9.addWidget(self.label_release) - self.gridLayout_34.addLayout(self.horizontalLayout_9, 1, 0, 1, 1) + self.horizontalLayout_43.addWidget(self.label_release) + self.gridLayout_34.addLayout(self.horizontalLayout_43, 1, 0, 1, 1) self.retranslateUi(Form) - self.tabWidget_0.setCurrentIndex(0) - self.tabWidget.setCurrentIndex(0) + self.tabWidget_7.setCurrentIndex(0) self.point_loc_comboBox.setCurrentIndex(1) + self.tabWidget_8.setCurrentIndex(0) self.transition_comboBox.setCurrentIndex(2) - self.tabWidget_2.setCurrentIndex(0) - self.tabWidget_3.setCurrentIndex(0) + self.tabWidget_9.setCurrentIndex(0) + self.tabWidget_10.setCurrentIndex(0) self.ObjRot_comboBox_axis.setCurrentIndex(0) self.ObjRot_comboBox_center.setCurrentIndex(2) - self.tabWidget_5.setCurrentIndex(1) - self.tabWidget_4.setCurrentIndex(1) + self.tabWidget_11.setCurrentIndex(0) + self.tabWidget_12.setCurrentIndex(0) self.ObjTrans_comboBox_start.setCurrentIndex(3) self.ObjTrans_comboBox_end.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): - Form.setWindowTitle(QtGui.QApplication.translate("Form", "WorkFeature", None, QtGui.QApplication.UnicodeUTF8)) - self.button_origin.setToolTip(QtGui.QApplication.translate("Form", "Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes", None, QtGui.QApplication.UnicodeUTF8)) - self.button_origin.setText(QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_5.setTitle(QtGui.QApplication.translate("Form", "Preferences :", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_verbose.setToolTip(QtGui.QApplication.translate("Form", "Toggle here if you want a lot of information printed into report View.", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_verbose.setText(QtGui.QApplication.translate("Form", "Verbose", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_biColor.setToolTip(QtGui.QApplication.translate("Form", "Change the successive lines to be bicolor (red and white) for the following functions:\n" + Form.setWindowTitle(_translate("Form", "WorkFeature", None)) + self.button_origin.setToolTip(_translate("Form", "Create at origin: a point and X,Y and Z axis and XZ,XY and YZ planes", None)) + self.button_origin.setText(_translate("Form", "Origin", None)) + self.groupBox_13.setTitle(_translate("Form", "Preferences :", None)) + self.radioButton_verbose.setToolTip(_translate("Form", "Toggle here if you want a lot of information printed into report View.", None)) + self.radioButton_verbose.setText(_translate("Form", "Verbose", None)) + self.radioButton_biColor.setToolTip(_translate("Form", "Change the successive lines to be bicolor (red and white) for the following functions:\n" " - in \"Axis 1/2\" TAB:\n" " Axes=Cut(Wire)\n" " - in \"Circle\" TAB:\n" " Arcs=Cut(Circle) \n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_biColor.setText(QtGui.QApplication.translate("Form", "Bi Color", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_copy.setToolTip(QtGui.QApplication.translate("Form", "Force the duplication of the Parent Object for the following functions:\n" +"", None)) + self.radioButton_biColor.setText(_translate("Form", "Bi Color", None)) + self.radioButton_copy.setToolTip(_translate("Form", "Force the duplication of the Parent Object for the following functions:\n" " - in \"Axis 2/2\" TAB:\n" " Axes=(Axis,Pt,dist)\n" " If an Edge of a Cube is selected the Cube is duplicate \n" " with the corresponding\n" " Edge at the defined distance from the original.\n" " - in \"Plane\" TAB:\n" -" Plane=(Plane,dist) ", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_copy.setText(QtGui.QApplication.translate("Form", "Object copy", None, QtGui.QApplication.UnicodeUTF8)) - self.label_5.setToolTip(QtGui.QApplication.translate("Form", "Change the tolerance for the following functions:\n" +" Plane=(Plane,dist) ", None)) + self.radioButton_copy.setText(_translate("Form", "Object copy", None)) + self.label_10.setToolTip(_translate("Form", "Change the tolerance for the following functions:\n" " - in \"Check\" TAB:\n" " are Parallel?\n" " are Perpendicular?\n" -" are Coplanar?", None, QtGui.QApplication.UnicodeUTF8)) - self.label_5.setText(QtGui.QApplication.translate("Form", "Tolerance", None, QtGui.QApplication.UnicodeUTF8)) - self.tolerance_edit.setToolTip(QtGui.QApplication.translate("Form", "Change the tolerance for the following functions:\n" +" are Coplanar?", None)) + self.label_10.setText(_translate("Form", "Tolerance", None)) + self.tolerance_edit.setToolTip(_translate("Form", "Change the tolerance for the following functions:\n" " - in \"Check\" TAB:\n" " are Parallel?\n" " are Perpendicular?\n" -" are Coplanar?", None, QtGui.QApplication.UnicodeUTF8)) - self.tolerance_edit.setText(QtGui.QApplication.translate("Form", "1e-10", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Origin_Tab), QtGui.QApplication.translate("Form", "Ori. Pref.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_line_point.setToolTip(QtGui.QApplication.translate("Form", "Point(s)=(Point(s),Line(s)):\n" +" are Coplanar?", None)) + self.tolerance_edit.setText(_translate("Form", "1e-10", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Origin_Tab_2), _translate("Form", "Ori. Pref.", None)) + self.button_circle_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None)) + self.button_circle_center.setText(_translate("Form", "Circle(s) Center", None)) + self.button_point_line_point.setToolTip(_translate("Form", "Point(s)=(Point(s),Line(s)):\n" "Create projection(s) of Point(s) onto Line(s).\n" "- First select one (or several) Point(s)\n" "- Second select one or several) Line(s)\n" @@ -1860,33 +2381,20 @@ class Ui_Form(object): "\n" "Plot the intersection point T on a Line given one Line and One Point C.\n" "The Vector TC is perpendicular to the Line.\n" -"The symetric point Cprime is also created as TC=TCprime.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_line_point.setText(QtGui.QApplication.translate("Form", "Point(s)=(Pt(s),Line(s)) ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Face(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_center.setText(QtGui.QApplication.translate("Form", "Face(s) Center", None, QtGui.QApplication.UnicodeUTF8)) - self.button_circle_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of each selected Circle(s) or Arc(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_circle_center.setText(QtGui.QApplication.translate("Form", "Circle(s) Center", None, QtGui.QApplication.UnicodeUTF8)) - self.button_Npoints_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at mean location of all selected points.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_Npoints_center.setText(QtGui.QApplication.translate("Form", "Points Center", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_center.setToolTip(QtGui.QApplication.translate("Form", "Create Point(s):\n" +"The symetric point Cprime is also created as TC=TCprime.", None)) + self.button_point_line_point.setText(_translate("Form", "Point(s)=(Pt(s),Line(s)) ", None)) + self.button_face_center.setToolTip(_translate("Form", "Create a Point at center location of each selected Face(s).", None)) + self.button_face_center.setText(_translate("Form", "Face(s) Center", None)) + self.button_line_center.setToolTip(_translate("Form", "Create Point(s):\n" "Cut each selected Line(s) in 2 (n) parts and create a (n-1) Point(s) at ends of edge(s).\n" -"The number indicates how many parts to consider.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_center.setText(QtGui.QApplication.translate("Form", "Line(s) Center", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_line_center.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_face_point.setToolTip(QtGui.QApplication.translate("Form", "Create a point at the intersection of the Line and Plane selected.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_face_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Face) ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_extrema.setToolTip(QtGui.QApplication.translate("Form", "Create Points at start and end location of each selected Line(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_extrema.setText(QtGui.QApplication.translate("Form", "Line(s) Extrema", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_face_point.setToolTip(QtGui.QApplication.translate("Form", "Point(s)=(Point(s),Face(s)):\n" -"Create projection(s) of Point(s) onto Face(s).\n" -"- First select one (or several) Point(s)\n" -"- Second select one or several) Plane(s)\n" -"- Then push this button\n" -"\n" -"Plot the intersection point T on a Plane given one Plane and One Point C.\n" -"The Vector TC is perpendicular to the plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_face_point.setText(QtGui.QApplication.translate("Form", "Point(s)=(Pt(s),Face(s))", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_center.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at center location of all selected Object(s).\n" +"The number indicates how many parts to consider.", None)) + self.button_line_center.setText(_translate("Form", "Line(s) Center", None)) + self.spin_line_center.setToolTip(_translate("Form", "The number indicates in how many parts each selected Lines(s) will be cut (Max 100).", None)) + self.button_Npoints_center.setToolTip(_translate("Form", "Create a Point at mean location of all selected points.", None)) + self.button_Npoints_center.setText(_translate("Form", "Points Center", None)) + self.button_line_face_point.setToolTip(_translate("Form", "Create a point at the intersection of the Line and Plane selected.", None)) + self.button_line_face_point.setText(_translate("Form", "Point=(Line,Face) ", None)) + self.button_object_center.setToolTip(_translate("Form", "Create a Point at center location of all selected Object(s).\n" " if BBox is not toggled\n" " This point is the MEAN location of all center of Mass (if exist) of all objects.\n" " All center of Mass will be created too.\n" @@ -1894,24 +2402,35 @@ class Ui_Form(object): "if BBox check box is toggled\n" " This point is the center of the Global X,Y,Z bounding box of all objects.\n" " This bounding box alway exists (especially for draft objects).\n" -" Be aware this point is not necessary the center of Mass of all Objects!", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_center.setText(QtGui.QApplication.translate("Form", "Object(s) Center", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_object_center.setToolTip(QtGui.QApplication.translate("Form", "if BBox check box is toggled\n" +" Be aware this point is not necessary the center of Mass of all Objects!", None)) + self.button_object_center.setText(_translate("Form", "Object(s) Center", None)) + self.checkBox_object_center.setToolTip(_translate("Form", "if BBox check box is toggled\n" " This point is the center of the Global X,Y,Z bounding box of all objects.\n" " This bounding box alway exists (especially for draft objects).\n" -" Be aware this point is not necessary the center of Mass of all Objects!", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_object_center.setText(QtGui.QApplication.translate("Form", "BBox", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1), QtGui.QApplication.translate("Form", "Point 1/2", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1), QtGui.QApplication.translate("Form", "Point", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twolines_point.setToolTip(QtGui.QApplication.translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n" -"Create a Point at intersection of 2 crossing Lines.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twolines_point.setText(QtGui.QApplication.translate("Form", "Point=(Line,Line) ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Create a Point at a certain distance along the line \n" -"respecting to the choosen reference starting point.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_on_line.setText(QtGui.QApplication.translate("Form", "Point along Line", None, QtGui.QApplication.UnicodeUTF8)) - self.distance_point_on_line.setToolTip(QtGui.QApplication.translate("Form", "Distance from the extremity", None, QtGui.QApplication.UnicodeUTF8)) - self.distance_point_on_line.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distPoint.setToolTip(QtGui.QApplication.translate("Form", "Point=(Point,Ax,dist):\n" +" Be aware this point is not necessary the center of Mass of all Objects!", None)) + self.checkBox_object_center.setText(_translate("Form", "BBox", None)) + self.button_line_extrema.setToolTip(_translate("Form", "Create Points at start and end location of each selected Line(s).", None)) + self.button_line_extrema.setText(_translate("Form", "Line(s) Extrema", None)) + self.button_point_face_point.setToolTip(_translate("Form", "Point(s)=(Point(s),Face(s)):\n" +"Create projection(s) of Point(s) onto Face(s).\n" +"- First select one (or several) Point(s)\n" +"- Second select one or several) Plane(s)\n" +"- Then push this button\n" +"\n" +"Plot the intersection point T on a Plane given one Plane and One Point C.\n" +"The Vector TC is perpendicular to the plane.", None)) + self.button_point_face_point.setText(_translate("Form", "Point(s)=(Pt(s),Face(s))", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab1_2), _translate("Form", "Point 1/2", None)) + self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab1_2), _translate("Form", "Point", None)) + self.button_twolines_point.setToolTip(_translate("Form", "Plot one or two Point(s) at minimum distance of two Lines\n" +"Create a Point at intersection of 2 crossing Lines.", None)) + self.button_twolines_point.setText(_translate("Form", "Point=(Line,Line) ", None)) + self.button_point_on_line.setToolTip(_translate("Form", "Create a Point at a certain distance along the line \n" +"respecting to the choosen reference starting point.", None)) + self.button_point_on_line.setText(_translate("Form", "Point along Line", None)) + self.distance_point_on_line.setToolTip(_translate("Form", "Distance from the extremity", None)) + self.distance_point_on_line.setText(_translate("Form", "0.0", None)) + self.button_distPoint.setToolTip(_translate("Form", "Point=(Point,Ax,dist):\n" "Create a Point along the given Axis, at a given distance of the selected Point.\n" "The Axis indicate the direction along where the Point is duplicate.\n" "(you can also select several axes to define different directions)\n" @@ -1922,13 +2441,13 @@ class Ui_Form(object): " - The distance between points can be defined first.\n" "Positive number in one direction and negative in the other one.\n" "The second number indicates the number of Points to create.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distPoint.setText(QtGui.QApplication.translate("Form", "Point=(Pt,Ax,dist)", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_point.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new Axis.\n" -"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_point.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_dist_point.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_wire_point.setToolTip(QtGui.QApplication.translate("Form", "Create Points by Partition:\n" +"", None)) + self.button_distPoint.setText(_translate("Form", "Point=(Pt,Ax,dist)", None)) + self.dist_point.setToolTip(_translate("Form", "Distance to the new Axis.\n" +"Can be negative for the reverse direction!", None)) + self.dist_point.setText(_translate("Form", "10.0", None)) + self.spin_dist_point.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_cut_wire_point.setToolTip(_translate("Form", "Create Points by Partition:\n" "Cut the selected wire(s) in 2(n) parts and create 2(n) Points with function discretize.\n" "The number indicates in how many parts to cut.\n" "Wires can be:\n" @@ -1936,31 +2455,40 @@ class Ui_Form(object): " Circle\n" " Arc\n" " Ellipse\n" -"An object must also be seleted but before any Wire to cut all his edges! ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_wire_point.setText(QtGui.QApplication.translate("Form", "Points=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_wire_cut_point.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_point.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.\n" +"An object must also be seleted but before any Wire to cut all his edges! ", None)) + self.button_cut_wire_point.setText(_translate("Form", "Points=Cut(Wire)", None)) + self.spin_wire_cut_point.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_click_for_point.setToolTip(_translate("Form", "Create a set of Points on a Plane perpendicular to the view at location of mouse clicks.\n" "- Click first on the Button then click on the View (with no object in background).\n" "- Click first on the Button then click on the View (with an object in background), it will attach the points to the surface of the object.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_point.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_base_point.setToolTip(QtGui.QApplication.translate("Form", "Create Base Point of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_base_point.setText(QtGui.QApplication.translate("Form", "Object(s) Base Point", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n" +"", None)) + self.button_click_for_point.setText(_translate("Form", "Click", None)) + self.button_object_base_point.setToolTip(_translate("Form", "Create Base Point of all selected Object(s).", None)) + self.button_object_base_point.setText(_translate("Form", "Object(s) Base Point", None)) + self.button_point_to_sketch.setToolTip(_translate("Form", "Transform Point(s) in Sketch\'s Point(s) by projection onto the Sketch\'s Plane:\n" "- First select an existing Skecth;\n" "- Select as much as Points needed;\n" -"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_to_sketch.setText(QtGui.QApplication.translate("Form", "Point(s) to Sketch", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab2), QtGui.QApplication.translate("Form", "Point 2/2", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_axis.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at center location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_axis.setText(QtGui.QApplication.translate("Form", "Object(s) X, Y, Z Axes", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twopoints_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis crossing 2 Points.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twopoints_axis.setText(QtGui.QApplication.translate("Form", "Two Points Axis", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_twopoints_axis.setToolTip(QtGui.QApplication.translate("Form", "Distance for the extensions on extrema", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_twopoints_axis.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cylinder_axis.setToolTip(QtGui.QApplication.translate("Form", "Create the Axis of a Cylinder.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cylinder_axis.setText(QtGui.QApplication.translate("Form", "Cylinder(s) Axis", None, QtGui.QApplication.UnicodeUTF8)) - self.button_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Plane(s) Axes:\n" +"Then click on this button.", None)) + self.button_point_to_sketch.setText(_translate("Form", "Point(s) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab2_2), _translate("Form", "Point 2/2", None)) + self.button_object_axis.setToolTip(_translate("Form", "Create 3 Axes at center location of all selected Object(s).", None)) + self.button_object_axis.setText(_translate("Form", "Object(s) X, Y, Z Axes", None)) + self.button_twopoints_axis.setToolTip(_translate("Form", "Create an Axis crossing 2 Points.", None)) + self.button_twopoints_axis.setText(_translate("Form", "Two Points Axis", None)) + self.extension_twopoints_axis.setToolTip(_translate("Form", "Distance for the extensions on extrema", None)) + self.extension_twopoints_axis.setText(_translate("Form", "0.0", None)) + self.button_Npoints_axis.setToolTip(_translate("Form", "Axis=(Points):\n" +"Create a \"best fit\" line from a set of points using Singular Value Decomposition..\n" +"- First select several Points\n" +"- Then push this button\n" +"\n" +"The 3 eigenvectors are generated.\n" +"Orange one is the best fit line.\n" +"", None)) + self.button_Npoints_axis.setText(_translate("Form", "Axis from Point(s)", None)) + self.button_cylinder_axis.setToolTip(_translate("Form", "Create the Axis of a Cylinder.", None)) + self.button_cylinder_axis.setText(_translate("Form", "Cylinder(s) Axis", None)) + self.button_plane_axis.setToolTip(_translate("Form", "Plane(s) Axes:\n" "Create Perpendicular Axes at the center location of a Plane.\n" " - First select one (or several) Plane(s);\n" " - Then press the button\n" @@ -1972,9 +2500,9 @@ class Ui_Form(object): " - Press the button\n" "\n" "NB: Axes are created on both sides of the Plane\n" -"The extension is 10 units by defaut but must be changed if needed.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_plane_axis.setText(QtGui.QApplication.translate("Form", "Plane(s) Axes", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_normal.setToolTip(QtGui.QApplication.translate("Form", "Create a normal Axis of a Face.\n" +"The extension is 10 units by defaut but must be changed if needed.", None)) + self.button_plane_axis.setText(_translate("Form", "Plane(s) Axes", None)) + self.button_face_normal.setToolTip(_translate("Form", "Create a normal Axis of a Face.\n" "To create a Normal at click location on a Face:\n" "- Click first in the view to select and object,\n" "- then push the button, \n" @@ -1984,48 +2512,48 @@ class Ui_Form(object): "- Click first in the view to select and object,\n" "- then select one or several points of the face\n" "- then push the button.\n" -"(These selections can also be done into the Combined View)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_normal.setText(QtGui.QApplication.translate("Form", "Face Normal", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_face_normal.setToolTip(QtGui.QApplication.translate("Form", "Length of external part of the (Normal) Axis.\n" +"(These selections can also be done into the Combined View)", None)) + self.button_face_normal.setText(_translate("Form", "Face Normal", None)) + self.extension_face_normal.setToolTip(_translate("Form", "Length of external part of the (Normal) Axis.\n" " If zero In case of cylinder axis the extension will be a percentage of the object length.\n" -" If zero and plane of face Normal, the extension will be 10 units.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_face_normal.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Parallel to an Axis (as Direction) and crossing a Point.\n" +" If zero and plane of face Normal, the extension will be 10 units.", None)) + self.extension_face_normal.setText(_translate("Form", "0.0", None)) + self.button_point_line_axis.setToolTip(_translate("Form", "Create an Axis Parallel to an Axis (as Direction) and crossing a Point.\n" "- Select one Axis and one (or several) Point(s) NOT on the previous Axis.\n" "Define the length and the attach point if needed.\n" -"A Length of Zero means the length of already selected Axis will be used.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Pt,Dir)", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_line.setToolTip(QtGui.QApplication.translate("Form", "Define the length of the Axis to create.\n" -"A Length of Zero means the length of already selected Axis will be used.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_line.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.point_loc_comboBox.setToolTip(QtGui.QApplication.translate("Form", "The Attach Point will be at :\n" +"A Length of Zero means the length of already selected Axis will be used.", None)) + self.button_point_line_axis.setText(_translate("Form", "Axis=(Pt,Dir)", None)) + self.extension_line.setToolTip(_translate("Form", "Define the length of the Axis to create.\n" +"A Length of Zero means the length of already selected Axis will be used.", None)) + self.extension_line.setText(_translate("Form", "0.0", None)) + self.point_loc_comboBox.setToolTip(_translate("Form", "The Attach Point will be at :\n" "Start of the Axis;\n" "Mid of the Axis;\n" -"End of the Axis.", None, QtGui.QApplication.UnicodeUTF8)) - self.point_loc_comboBox.setItemText(0, QtGui.QApplication.translate("Form", "Start", None, QtGui.QApplication.UnicodeUTF8)) - self.point_loc_comboBox.setItemText(1, QtGui.QApplication.translate("Form", "Mid", None, QtGui.QApplication.UnicodeUTF8)) - self.point_loc_comboBox.setItemText(2, QtGui.QApplication.translate("Form", "End", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_point_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Perpendicular to an Axis and crossing a Point\n" -"-Select one Axis and one (or several) Point(s) NOT on the previous Axis.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_point_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Axis,Point)", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_line_point_axis.setToolTip(QtGui.QApplication.translate("Form", "Distance for the extensions on extrema.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_line_point_axis.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twolines_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis between two Axes.\n" -"-Select two Axes.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twolines_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Line,Line)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_plane_point_line_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n" -"-Select one Plane, one Axis and one Point ON the previous Axis.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_plane_point_line_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Point,Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Axis_Tab1), QtGui.QApplication.translate("Form", "Axis 1/2", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_plane_axis.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Pl(s),Axes):\n" +"End of the Axis.", None)) + self.point_loc_comboBox.setItemText(0, _translate("Form", "Start", None)) + self.point_loc_comboBox.setItemText(1, _translate("Form", "Mid", None)) + self.point_loc_comboBox.setItemText(2, _translate("Form", "End", None)) + self.button_line_point_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis and crossing a Point\n" +"-Select one Axis and one (or several) Point(s) NOT on the previous Axis.", None)) + self.button_line_point_axis.setText(_translate("Form", "Axis=(Axis,Point)", None)) + self.extension_line_point_axis.setToolTip(_translate("Form", "Distance for the extensions on extrema.", None)) + self.extension_line_point_axis.setText(_translate("Form", "0.0", None)) + self.button_twolines_axis.setToolTip(_translate("Form", "Create an Axis between two Axes.\n" +"-Select two Axes.", None)) + self.button_twolines_axis.setText(_translate("Form", "Axis=(Line,Line)", None)) + self.button_plane_point_line_axis.setToolTip(_translate("Form", "Create an Axis Perpendicular to an Axis, crossing a Point and Parallel to a Plane.\n" +"-Select one Plane, one Axis and one Point ON the previous Axis.", None)) + self.button_plane_point_line_axis.setText(_translate("Form", "Axis=(Plane,Point,Axis)", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab1_2), _translate("Form", "Axis 1/2", None)) + self.button_line_plane_axis.setToolTip(_translate("Form", "Axes=(Pl(s),Axes):\n" "Create projection(s) of Axes onto Plane(s).\n" "- First select one (or several) Line(s)\n" "- Second select one or several) Plane(s)\n" -"- Then push this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_plane_axis.setText(QtGui.QApplication.translate("Form", "Axes=(Pl(s),Axes)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twoplanes_axis.setToolTip(QtGui.QApplication.translate("Form", "Create an Axis by intersect of 2 Planes.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_twoplanes_axis.setText(QtGui.QApplication.translate("Form", "Axis=(Plane,Plane)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distLine.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,dist):\n" +"- Then push this button", None)) + self.button_line_plane_axis.setText(_translate("Form", "Axes=(Pl(s),Axes)", None)) + self.button_twoplanes_axis.setToolTip(_translate("Form", "Create an Axis by intersect of 2 Planes.", None)) + self.button_twoplanes_axis.setText(_translate("Form", "Axis=(Plane,Plane)", None)) + self.button_distLine.setToolTip(_translate("Form", "Axes=(Axis,Pt,dist):\n" "Create an Axis parallel to a given Axis, Point at a given distance.\n" "The Axis is created along the Plane defined by the given Axis and Point.\n" "- First select an Axis (or several Axes) and a Point\n" @@ -2040,13 +2568,13 @@ class Ui_Form(object): " - If an Edge of a Cube is selected the Cube is duplicate with the corresponding\n" "Edge at the defined distance from the original.\n" "Several Edges of the cube can be selected.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distLine.setText(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,dist)", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_line.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new Axis.\n" -"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_line.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_dist_line.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_angleLine.setToolTip(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,Pl,a):\n" +"", None)) + self.button_distLine.setText(_translate("Form", "Axes=(Axis,Pt,dist)", None)) + self.dist_line.setToolTip(_translate("Form", "Distance to the new Axis.\n" +"Can be negative for the reverse direction!", None)) + self.dist_line.setText(_translate("Form", "10.0", None)) + self.spin_dist_line.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_angleLine.setToolTip(_translate("Form", "Axes=(Axis,Pt,Pl,a):\n" "Create an Axis with an Angle to a origin Axis.\n" "- First select an Axis to rotate, then a Plane and a rotation Point\n" "- Second push this button\n" @@ -2066,14 +2594,14 @@ class Ui_Form(object): "Positive number in one direction and negative in the other one.\n" " - The second number indicates the number of Axes to create.\n" "\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_angleLine.setText(QtGui.QApplication.translate("Form", "Axes=(Axis,Pt,Pl,a)", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_line.setToolTip(QtGui.QApplication.translate("Form", "Angle to the new Axis.\n" +"", None)) + self.button_angleLine.setText(_translate("Form", "Axes=(Axis,Pt,Pl,a)", None)) + self.angle_line.setToolTip(_translate("Form", "Angle to the new Axis.\n" "Can be negative for the reverse direction!\n" -"(in degrees)", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_line.setText(QtGui.QApplication.translate("Form", "45.0", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_angle_line.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_wire_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes by Partition:\n" +"(in degrees)", None)) + self.angle_line.setText(_translate("Form", "45.0", None)) + self.spin_angle_line.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_cut_wire_axis.setToolTip(_translate("Form", "Create Axes by Partition:\n" "Cut the selected wire(s) in 2(n) parts and create 2(n) Axes with function discretize.\n" "The number indicates in how many parts to cut.\n" "Wires can be:\n" @@ -2084,51 +2612,130 @@ class Ui_Form(object): "An object must also be seleted but before any Wire to cut all his Edges!\n" "NB: You can change the successive lines to be bicolor (red and white) \n" "in \"Ori. Pref.\" TAB \n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_wire_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Wire)", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_wire_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_axis.setToolTip(QtGui.QApplication.translate("Form", "Create Axes:\n" +"", None)) + self.button_cut_wire_axis.setText(_translate("Form", "Axes=Cut(Wire)", None)) + self.spin_wire_cut_axis.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_cut_axis.setToolTip(_translate("Form", "Create Axes:\n" "Cut the selected Line in 2(n) parts and create 2(n) Axes.\n" "The number indicates in how many parts to cut.\n" "\n" "NB: You can change the successive lines to be bicolor (red and white) \n" -"in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_axis.setText(QtGui.QApplication.translate("Form", "Axes=Cut(Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_axis_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_extension_axis.setToolTip(QtGui.QApplication.translate("Form", "Enlarge(Axis):\n" +"in \"Ori. Pref.\" TAB", None)) + self.button_cut_axis.setText(_translate("Form", "Axes=Cut(Axis)", None)) + self.spin_axis_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Line will be cut (Max 100).", None)) + self.button_extension_axis.setToolTip(_translate("Form", "Enlarge(Axis):\n" "Extend an Axis at two extrema.\n" "- First select an Axis (or several Axes) \n" "- Second push this button\n" "\n" "NB: \n" -" - The percentage of the extension can be defined first.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_extension_axis.setText(QtGui.QApplication.translate("Form", "Enlarge(Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_axis.setToolTip(QtGui.QApplication.translate("Form", "Extension of the Line in percentage.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_axis.setText(QtGui.QApplication.translate("Form", "50.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_axis.setToolTip(QtGui.QApplication.translate("Form", "Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.\n" +" - The percentage of the extension can be defined first.", None)) + self.button_extension_axis.setText(_translate("Form", "Enlarge(Axis)", None)) + self.extension_axis.setToolTip(_translate("Form", "Extension of the Line in percentage.", None)) + self.extension_axis.setText(_translate("Form", "50.0", None)) + self.button_click_for_axis.setToolTip(_translate("Form", "Create a set of Lines on a Plane perpendicular to the view at location of 2 mouse clicks.\n" "- Click first on the Button then at least twice click on the View (with no object in background).\n" -"- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_axis.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_base_axes.setToolTip(QtGui.QApplication.translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_base_axes.setText(QtGui.QApplication.translate("Form", "Object(s) Base Axes", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" +"- Click first on the Button then at least twice click on the View (with an object in background), it will attach the lines to the surface of the object.", None)) + self.button_click_for_axis.setText(_translate("Form", "Click", None)) + self.button_object_base_axes.setToolTip(_translate("Form", "Create 3 Axes at Base location of all selected Object(s).", None)) + self.button_object_base_axes.setText(_translate("Form", "Object(s) Base Axes", None)) + self.button_line_to_sketch.setToolTip(_translate("Form", "Transform Line(s) in Sketch\'s Line(s) by projection onto the Sketch\'s Plane:\n" "- First select an existing Skecth;\n" "- Select as much as Lines needed;\n" -"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_line_to_sketch.setText(QtGui.QApplication.translate("Form", "Axis(es) to Sketch", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Axis_Tab2), QtGui.QApplication.translate("Form", "Axis 2/2", None, QtGui.QApplication.UnicodeUTF8)) - self.button_linecenter_circle.setToolTip(QtGui.QApplication.translate("Form", "Select an Axis and a Point to create a Circle\n" +"Then click on this button.", None)) + self.button_line_to_sketch.setText(_translate("Form", "Axis(es) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab2_2), _translate("Form", "Axis 2/2", None)) + self.lineEdit.setText(_translate("Form", "Examples from http://www.mathcurve.com/", None)) + self.groupBox_14.setTitle(_translate("Form", "Equation :", None)) + self.label_y_3.setText(_translate("Form", "Y (a,b,t) ", None)) + self.ParCurve_a_2.setText(_translate("Form", "10 # Radius", None)) + self.label_b_3.setText(_translate("Form", "b (a, t) ", None)) + self.ParCurve_y_2.setText(_translate("Form", "b*sin(t)", None)) + self.checkBox_polar_2.setToolTip(_translate("Form", "Toggle for Polar coordinates:\n" +"then x is interpreted as radius\n" +" and y is interpreted as angle teta.", None)) + self.checkBox_polar_2.setText(_translate("Form", " Polar coord.", None)) + self.label_x_3.setText(_translate("Form", "X (a,b,t) ", None)) + self.ParCurve_x_2.setText(_translate("Form", "a*cos(t)", None)) + self.label_a_3.setText(_translate("Form", "a (t) ", None)) + self.ParCurve_b_2.setText(_translate("Form", "a", None)) + self.ParCurve_comboBox_2.setToolTip(_translate("Form", "Choose another curve from the list.", None)) + self.ParCurve_button_edit_2.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" +"save your custom curves.", None)) + self.ParCurve_button_edit_2.setText(_translate("Form", "Edit", None)) + self.checkBox_close_2.setText(_translate("Form", "Closed curve", None)) + self.checkBox_face_2.setText(_translate("Form", "Create Face", None)) + self.label_name_2.setText(_translate("Form", "Name", None)) + self.ParCurve_name_2.setText(_translate("Form", "Circle", None)) + self.groupBox_15.setTitle(_translate("Form", "Parameters", None)) + self.label_tmin_3.setText(_translate("Form", "t min", None)) + self.ParCurve_tmin_2.setText(_translate("Form", "0", None)) + self.label_tmax_3.setText(_translate("Form", "t max", None)) + self.ParCurve_tmax_2.setText(_translate("Form", "2*pi", None)) + self.label_tstep_3.setText(_translate("Form", "step", None)) + self.ParCurve_tstep_2.setText(_translate("Form", "0.01", None)) + self.groupBox_16.setTitle(_translate("Form", "Type of 2D Curve", None)) + self.checkBox_points_2.setText(_translate("Form", "Points", None)) + self.checkBox_polyline_2.setText(_translate("Form", "Polyline", None)) + self.checkBox_bspline_2.setText(_translate("Form", "Bspline", None)) + self.checkBox_bezier_2.setText(_translate("Form", "Bezier", None)) + self.ParCurve_button_store_2.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" +"To save your curve you need to go to \"Edit\".", None)) + self.ParCurve_button_store_2.setText(_translate("Form", "Store", None)) + self.ParCurve_button_apply_2.setToolTip(_translate("Form", "Click to visualize the curve.", None)) + self.ParCurve_button_apply_2.setText(_translate("Form", "Apply", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_14), _translate("Form", "2D", None)) + self.ParCurve_comboBox_3.setToolTip(_translate("Form", "Choose another curve from the list.", None)) + self.ParCurve_button_edit_3.setToolTip(_translate("Form", "Click to access to a table where you can edit all parameters of all curves and \n" +"save your custom curves.", None)) + self.ParCurve_button_edit_3.setText(_translate("Form", "Edit", None)) + self.label_name_3.setText(_translate("Form", "Name", None)) + self.ParCurve_name_3.setText(_translate("Form", "Cylindrical helix", None)) + self.groupBox_17.setTitle(_translate("Form", "Equation :", None)) + self.label_a_4.setText(_translate("Form", "a (t) ", None)) + self.ParCurve_a_3.setText(_translate("Form", "10*0.05 #Vert. step", None)) + self.label_b_4.setText(_translate("Form", "b (a, t) ", None)) + self.ParCurve_b_3.setText(_translate("Form", "1", None)) + self.label_c_2.setText(_translate("Form", "c (a, b, t) ", None)) + self.ParCurve_c_3.setText(_translate("Form", "10 # Radius", None)) + self.label_x_4.setText(_translate("Form", "X (a,b,c,t) ", None)) + self.ParCurve_x_3.setText(_translate("Form", "c*sin(t)", None)) + self.label_y_4.setText(_translate("Form", "Y (a,b,c,t) ", None)) + self.label_z_2.setText(_translate("Form", "Z (a,b,c,t) ", None)) + self.ParCurve_z_3.setText(_translate("Form", "a*t", None)) + self.ParCurve_y_3.setText(_translate("Form", "c*cos(t)", None)) + self.groupBox_18.setTitle(_translate("Form", "Parameters", None)) + self.label_tmin_4.setText(_translate("Form", "t min", None)) + self.label_tmax_4.setText(_translate("Form", "t max", None)) + self.ParCurve_tmax_3.setText(_translate("Form", "5*2*pi #5 circles", None)) + self.label_tstep_4.setText(_translate("Form", "step", None)) + self.ParCurve_tstep_3.setText(_translate("Form", "0.01", None)) + self.ParCurve_tmin_3.setText(_translate("Form", "0", None)) + self.groupBox_19.setTitle(_translate("Form", "Type of 3D Curve", None)) + self.checkBox_points_3.setText(_translate("Form", "Points", None)) + self.checkBox_polyline_3.setText(_translate("Form", "Polyline", None)) + self.checkBox_bspline_3.setText(_translate("Form", "Bspline", None)) + self.checkBox_bezier_3.setText(_translate("Form", "Bezier", None)) + self.checkBox_close_3.setText(_translate("Form", "Closed curve", None)) + self.ParCurve_button_store_3.setToolTip(_translate("Form", "Click to store the current edited curve into the table.\n" +"To save your curve you need to go to \"Edit\".", None)) + self.ParCurve_button_store_3.setText(_translate("Form", "Store", None)) + self.ParCurve_button_apply_3.setToolTip(_translate("Form", "Click to visualize the curve.", None)) + self.ParCurve_button_apply_3.setText(_translate("Form", "Apply", None)) + self.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "3D", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) + self.button_linecenter_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" "centered on the Point, perpendicular to the Axis \n" -"with the given radius.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_linecenter_circle.setText(QtGui.QApplication.translate("Form", "Circle=(Axis, center)", None, QtGui.QApplication.UnicodeUTF8)) - self.radius_circle.setToolTip(QtGui.QApplication.translate("Form", "Radius of the Circle.", None, QtGui.QApplication.UnicodeUTF8)) - self.radius_circle.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_linepoint_circle.setToolTip(QtGui.QApplication.translate("Form", "Select an Axis and a Point to create a Circle\n" -"centered on the Axis and tangenting the Point.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_linepoint_circle.setText(QtGui.QApplication.translate("Form", "Circle=(Axis, point)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_3points_circle.setToolTip(QtGui.QApplication.translate("Form", "Select 3 Points to create a Circle.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_3points_circle.setText(QtGui.QApplication.translate("Form", "Circle=(3 points)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_circle.setToolTip(QtGui.QApplication.translate("Form", "Create Arcs:\n" +"with the given radius.", None)) + self.button_linecenter_circle.setText(_translate("Form", "Circle=(Axis, center)", None)) + self.radius_circle.setToolTip(_translate("Form", "Radius of the Circle.", None)) + self.radius_circle.setText(_translate("Form", "10.0", None)) + self.button_linepoint_circle.setToolTip(_translate("Form", "Select an Axis and a Point to create a Circle\n" +"centered on the Axis and tangenting the Point.", None)) + self.button_linepoint_circle.setText(_translate("Form", "Circle=(Axis, point)", None)) + self.button_3points_circle.setToolTip(_translate("Form", "Select 3 Points to create a Circle.", None)) + self.button_3points_circle.setText(_translate("Form", "Circle=(3 points)", None)) + self.button_cut_circle.setToolTip(_translate("Form", "Create Arcs:\n" "Cut the selected Circle(s) or Arc(s) in 2(n) parts and create 2(n) Arcs.\n" "The number indicates in how many parts to cut.\n" "- First select as many Circles and Arcs you want\n" @@ -2136,226 +2743,40 @@ class Ui_Form(object): "- Third push this button\n" "\n" "NB: You can change the successive lines to be bicolor (red and white) \n" -"in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_circle.setText(QtGui.QApplication.translate("Form", "Arcs=Cut(Circle)", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_circle_cut.setToolTip(QtGui.QApplication.translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_3points_ellipse.setToolTip(QtGui.QApplication.translate("Form", "Select a center and 2 Points to create an Ellipse.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_3points_ellipse.setText(QtGui.QApplication.translate("Form", "Ellipse=(3 points)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_circle_to_sketch.setToolTip(QtGui.QApplication.translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n" +"in \"Ori. Pref.\" TAB", None)) + self.button_cut_circle.setText(_translate("Form", "Arcs=Cut(Circle)", None)) + self.spin_circle_cut.setToolTip(_translate("Form", "The number indicates in how many parts the selected Circle will be cut (Max 100).", None)) + self.button_3points_ellipse.setToolTip(_translate("Form", "Select a center and 2 Points to create an Ellipse.", None)) + self.button_3points_ellipse.setText(_translate("Form", "Ellipse=(3 points)", None)) + self.button_circle_to_sketch.setToolTip(_translate("Form", "Transform Circle(s) and Arc(s) in Sketch\'s object(s) by projection onto the Sketch\'s Plane:\n" "- First select an existing Skecth;\n" "- Select as much as Circles and arcs needed;\n" -"Then click on this button.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_circle_to_sketch.setText(QtGui.QApplication.translate("Form", "Circle(s) to Sketch", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QtGui.QApplication.translate("Form", "Circle", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_plane.setToolTip(QtGui.QApplication.translate("Form", "Click:\n" -"Create a rectangular Plane perpendicular to the view at location of one mouse click.\n" -"Define the width and the length of the Plane if needed.\n" -"- Click first on the Button then click once on the View.\n" -"- Click first on the Button then click once on top of one object of the View\n" -" to attach the plane at this object.\n" -"- You can also select an already existing point first and click the button to attach the plane.\n" -"\n" -"NB: The plane width and length can be defined first.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_click_for_plane.setText(QtGui.QApplication.translate("Form", "Click", None, QtGui.QApplication.UnicodeUTF8)) - self.length_plane.setToolTip(QtGui.QApplication.translate("Form", "Length of the Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.length_plane.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.width_plane.setToolTip(QtGui.QApplication.translate("Form", "Width of the Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.width_plane.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_planeandaxis_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Plane, Axis):\n" -"Create a Plane crossing a Line and perpendicular to a Plane.\n" -"- First select a plane and a line NOT on the previous plane\n" -"- Second push this button\n" -"\n" -"NB: The plane created can be rotated if a none null angle is defined first.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_planeandaxis_plane.setText(QtGui.QApplication.translate("Form", "Plane=(Plane, Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_planeandaxis_plane.setToolTip(QtGui.QApplication.translate("Form", "Angle of rotation of the created Plane (in degrees).", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_planeandaxis_plane.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_axisandpoint_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Point, Axis):\n" -"Create a plane crossing a Line and a Point.\n" -"- First select a line and a point NOT on the previous line\n" -"- Second push this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_axisandpoint_plane.setText(QtGui.QApplication.translate("Form", "Plane=(Point, Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_axis_point_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Point, _|Axis):\n" -"Create a plane perpendicular to a Line and crossing a Point.\n" -"- First select a line and a point NOT on the previous line\n" -"- Second push this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_axis_point_plane.setText(QtGui.QApplication.translate("Form", "Plane=(Point, _|Axis)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_tangent.setToolTip(QtGui.QApplication.translate("Form", "Face Tangent:\n" -"Create a tanget Plane at click location of a Face.\n" -"- First click in the view to select and object,\n" -"- Second push this button\n" -"-Third click on a location on the selected object.\n" -"\n" -"NB: The plane width and length can be defined first.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_face_tangent.setText(QtGui.QApplication.translate("Form", "Face Tangent", None, QtGui.QApplication.UnicodeUTF8)) - self.length_plane_2.setToolTip(QtGui.QApplication.translate("Form", "Length of the Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.length_plane_2.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.width_plane_2.setToolTip(QtGui.QApplication.translate("Form", "Width of the Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.width_plane_2.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_threepoints_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(3 Points):\n" -"Create a Plane crossing 3 Points.\n" -"- First select 3 different points\n" -"- Second push this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_threepoints_plane.setText(QtGui.QApplication.translate("Form", "Plane=(3 Points)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distPlane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Plane,dist):\n" -"Create a Plane parallel to a Plane at a given distance.\n" -"- First select a plane or several Planes\n" -"- Second push this button\n" -"\n" -"NB: \n" -" - The distance to the plane created can be defined first.\n" -"Positive number in one direction and negative in the other one.\n" -"The second number indicates the number of planes to create.\n" -"With option \"Object copy\" in \"Ori. Pref.\" TAB\n" -" - If a Face of a Cube is selected the Cube is duplicate with the \n" -"corresponding Face at the defined distance from the original.\n" -"Several Faces of the cube can be selected.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_distPlane.setText(QtGui.QApplication.translate("Form", "Plane=(Plane,dist)", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_plane.setToolTip(QtGui.QApplication.translate("Form", "Distance to the new plane.\n" -"Can be negative for the reverse direction!", None, QtGui.QApplication.UnicodeUTF8)) - self.dist_plane.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_dist_plane.setToolTip(QtGui.QApplication.translate("Form", "The number of copies (Max 100).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_planeandpoint_plane.setToolTip(QtGui.QApplication.translate("Form", "Plane=(Point, Plane):\n" -"Create a plane crossing a Point and parallel to a Plane.\n" -"- First select a plane and a point NOT on the previous plane\n" -"- Second push this button\n" -"\n" -"NB: you can enlarge the created new plane by setting first an extension length.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_planeandpoint_plane.setText(QtGui.QApplication.translate("Form", "Plane=(Point, Plane)", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_planePointPlane.setToolTip(QtGui.QApplication.translate("Form", "Length for the extensions of the new Plane compared to initial one.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_planePointPlane.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Plane_Tab1), QtGui.QApplication.translate("Form", "Plane 1/2", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_center_planes.setToolTip(QtGui.QApplication.translate("Form", "Object(s) Center Planes:\n" -"Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).\n" -"- First select one or severl objects\n" -"- Second push this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_object_center_planes.setText(QtGui.QApplication.translate("Form", "Object(s) Center Planes", None, QtGui.QApplication.UnicodeUTF8)) - self.button_extension_plane.setToolTip(QtGui.QApplication.translate("Form", "Enlarge(Plane):\n" -"Extend a Plane in each dimension.\n" -"- First select a Plane (or several Planes) \n" -"- Second push this button\n" -"\n" -"NB: \n" -" - The percentage of the extension can be defined first.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_extension_plane.setText(QtGui.QApplication.translate("Form", "Enlarge(Plane)", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_plane.setToolTip(QtGui.QApplication.translate("Form", "Extension of the Plane in each dimension in percentage.", None, QtGui.QApplication.UnicodeUTF8)) - self.extension_plane.setText(QtGui.QApplication.translate("Form", "50.0", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Plane_Tab11), QtGui.QApplication.translate("Form", "Plane 2/2", None, QtGui.QApplication.UnicodeUTF8)) - self.button_boundingboxes.setToolTip(QtGui.QApplication.translate("Form", "Create bounding boxes around each of selected object(s).\n" -"6 rectangles at the limits of each bounding boxes will be created.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_boundingboxes.setText(QtGui.QApplication.translate("Form", "Bounding Box(es)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_boundingbox.setToolTip(QtGui.QApplication.translate("Form", "Create one bounding box around all of selected object(s).\n" -"6 rectangles at the limits of the bounding box will be created.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_boundingbox.setText(QtGui.QApplication.translate("Form", "Bounding Box", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_volumBB.setToolTip(QtGui.QApplication.translate("Form", "if \"Vol.\" is toggled:\n" -" In Addition of rectangles, the Bounding box will be also created as a Volume.", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_volumBB.setText(QtGui.QApplication.translate("Form", "Vol.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cylinder_create.setToolTip(QtGui.QApplication.translate("Form", "Create a Cylinder aligned on Axes:\n" -"- First select one or several couple of ( Axis and a Ref. Point). \n" -"- Define Diameter and Length if needed.\n" -"Then Click the button...\n" -"It will create a Cylinder aligned on the selected axis \n" -"with one of the extremities at the Ref. point,\n" -"for all couple selected.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cylinder_create.setText(QtGui.QApplication.translate("Form", "Cylinder", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_cylinder.setToolTip(QtGui.QApplication.translate("Form", "Radius of the Cylinder.", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_cylinder.setText(QtGui.QApplication.translate("Form", "2.0", None, QtGui.QApplication.UnicodeUTF8)) - self.length_cylinder.setToolTip(QtGui.QApplication.translate("Form", "Length of the Cylinder.\n" -"Negative value will reverse the direction from Ref. Point", None, QtGui.QApplication.UnicodeUTF8)) - self.length_cylinder.setText(QtGui.QApplication.translate("Form", "20.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cube_create.setToolTip(QtGui.QApplication.translate("Form", "Create a Cuboid aligned on Axes:\n" -"- First select one or several couple of ( Axis and a Ref. Point). \n" -"- Define Dimensions if needed.\n" -"Then Click the button...\n" -"It will create a Cube aligned on the selected axis \n" -"with one of the extremities at Ref. point,\n" -"for all couple selected.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cube_create.setText(QtGui.QApplication.translate("Form", "Cube", None, QtGui.QApplication.UnicodeUTF8)) - self.section_cube.setToolTip(QtGui.QApplication.translate("Form", "Section (Length, Width) of the Cube.", None, QtGui.QApplication.UnicodeUTF8)) - self.section_cube.setText(QtGui.QApplication.translate("Form", "2.0,2.0", None, QtGui.QApplication.UnicodeUTF8)) - self.height_cube.setToolTip(QtGui.QApplication.translate("Form", "Heigth of the Cube.\n" -"Negative value will reverse the direction from Ref. Point", None, QtGui.QApplication.UnicodeUTF8)) - self.height_cube.setText(QtGui.QApplication.translate("Form", "20.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_sphere_create.setToolTip(QtGui.QApplication.translate("Form", "Create a Sphere shell:\n" -"- First select one or several Center Point(s). \n" -"- Define Diameter if needed.\n" -"Then Click the button...\n" -"It will create Sphere shell(s) centered\n" -"at the selected point(s).", None, QtGui.QApplication.UnicodeUTF8)) - self.button_sphere_create.setText(QtGui.QApplication.translate("Form", "Sphere", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_sphere.setToolTip(QtGui.QApplication.translate("Form", "Diameter of the Sphere.", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_sphere.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_dome_create.setToolTip(QtGui.QApplication.translate("Form", "Create a full geodesic dome shell:\n" -"- First select one or several Center Point(s). \n" -"- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed.\n" -"Then Click the button...\n" -"It will create full geodesic dome shell(s) with a X-Y-symmetry plane \n" -"for even frequencies and centered\n" -"at the selected point(s).\n" -"\n" -"If Frequency Parameter = 1, the code create an icosahedron. \n" -"An icosahedron is a polyhedron with 20 faces.\n" -"\n" -"Original code from : Ulrich Brammer", None, QtGui.QApplication.UnicodeUTF8)) - self.button_dome_create.setText(QtGui.QApplication.translate("Form", "Dome", None, QtGui.QApplication.UnicodeUTF8)) - self.spin_frequency_dome.setToolTip(QtGui.QApplication.translate("Form", "Frequency Parameter (Integer between 1 to 20).", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_dome.setToolTip(QtGui.QApplication.translate("Form", "Diameter of the Dome.", None, QtGui.QApplication.UnicodeUTF8)) - self.diameter_dome.setText(QtGui.QApplication.translate("Form", "10.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_letter.setToolTip(QtGui.QApplication.translate("Form", "AB:\n" -"Create 3D Text attached to a Point. \n" -"- First select a Plane\n" -"- Then push this button\n" -"in this case the center of the text is attached to center of the Plane;\n" -"or\n" -"- First select a Plane and a Point on the Plane\n" -"- Then push this button\n" -"NB:\n" -" Change the text and his size if needed", None, QtGui.QApplication.UnicodeUTF8)) - self.button_letter.setText(QtGui.QApplication.translate("Form", "AB", None, QtGui.QApplication.UnicodeUTF8)) - self.letter.setToolTip(QtGui.QApplication.translate("Form", "Put the desired text here", None, QtGui.QApplication.UnicodeUTF8)) - self.letter.setText(QtGui.QApplication.translate("Form", "A", None, QtGui.QApplication.UnicodeUTF8)) - self.size_letter.setToolTip(QtGui.QApplication.translate("Form", "Size of the font.", None, QtGui.QApplication.UnicodeUTF8)) - self.size_letter.setText(QtGui.QApplication.translate("Form", "2.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_revolve.setToolTip(QtGui.QApplication.translate("Form", "Revolve:\n" -"Make the revolution of Edge(s) or Wire(s) around an Axis:\n" -"- Select one or several wire(s)\n" -"- Then push this button\n" -"or\n" -"- Select FIRST one Point as center of rotation and one Axis as rotation axis !\n" -"- Select one or several wire(s)\n" -"- Then push this button\n" -"\n" -"NB:\n" -" You can also define the angle of revolution if needed\n" -" If no Axis is selected the Z axis is considered as Axis of rotation !\n" -" If no Point is selected the Origin is considered as Center of rotation !", None, QtGui.QApplication.UnicodeUTF8)) - self.button_revolve.setText(QtGui.QApplication.translate("Form", "Revolve", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_revolve.setToolTip(QtGui.QApplication.translate("Form", "Angle of the revolution in degrees.", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_revolve.setText(QtGui.QApplication.translate("Form", "360", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_allsubselect.setToolTip(QtGui.QApplication.translate("Form", "if \"All\" is toggled:\n" +"Then click on this button.", None)) + self.button_circle_to_sketch.setText(_translate("Form", "Circle(s) to Sketch", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_16), _translate("Form", "Circle", None)) + self.checkBox_allsubselect.setToolTip(_translate("Form", "if \"All\" is toggled:\n" " All the wires of the Trajectory selected will be considered.\n" "\n" "Untoggled if you select a Skecth with several curves and you want to process\n" -"only the one subselected.", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_allsubselect.setText(QtGui.QApplication.translate("Form", "All", None, QtGui.QApplication.UnicodeUTF8)) - self.transition_comboBox.setToolTip(QtGui.QApplication.translate("Form", "For the function :\n" +"only the one subselected.", None)) + self.checkBox_allsubselect.setText(_translate("Form", "All", None)) + self.transition_comboBox.setToolTip(_translate("Form", "For the function :\n" "makePipeShell(shapeList,[isSolid,isFrenet,transition])\n" "Select a Transition option in case of trajectory with several wires; Transition can be:\n" -"# 0 (default), 1 (right corners) or 2 (rounded corners).", None, QtGui.QApplication.UnicodeUTF8)) - self.transition_comboBox.setItemText(0, QtGui.QApplication.translate("Form", "No Transition", None, QtGui.QApplication.UnicodeUTF8)) - self.transition_comboBox.setItemText(1, QtGui.QApplication.translate("Form", "Right corners", None, QtGui.QApplication.UnicodeUTF8)) - self.transition_comboBox.setItemText(2, QtGui.QApplication.translate("Form", "Rounded corners", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_solid.setToolTip(QtGui.QApplication.translate("Form", "if \"Solid\" is toggled:\n" +"# 0 (default), 1 (right corners) or 2 (rounded corners).", None)) + self.transition_comboBox.setItemText(0, _translate("Form", "No Transition", None)) + self.transition_comboBox.setItemText(1, _translate("Form", "Right corners", None)) + self.transition_comboBox.setItemText(2, _translate("Form", "Rounded corners", None)) + self.checkBox_solid.setToolTip(_translate("Form", "if \"Solid\" is toggled:\n" " The Beam sweep will generate a solid with a closed selected wire as Section.\n" "If this check box is toggle off:\n" -" Or if the Section wire is not closed, only a shell will be created.", None, QtGui.QApplication.UnicodeUTF8)) - self.checkBox_solid.setText(QtGui.QApplication.translate("Form", "Solid", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_Frenet.setToolTip(QtGui.QApplication.translate("Form", "Force the \"isFrenet\" parameter to True for the function :\n" +" Or if the Section wire is not closed, only a shell will be created.", None)) + self.checkBox_solid.setText(_translate("Form", "Solid", None)) + self.radioButton_Frenet.setToolTip(_translate("Form", "Force the \"isFrenet\" parameter to True for the function :\n" "makePipeShell(shapeList,[isSolid,isFrenet,transition])\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.radioButton_Frenet.setText(QtGui.QApplication.translate("Form", "isFrenet", None, QtGui.QApplication.UnicodeUTF8)) - self.button_sweep.setToolTip(QtGui.QApplication.translate("Form", "Section Sweep:\n" +"", None)) + self.radioButton_Frenet.setText(_translate("Form", "isFrenet", None)) + self.button_sweep.setToolTip(_translate("Form", "Section Sweep:\n" "# Make a loft defined by a list of profiles along a wire.\n" "Will extrude/sweep a Section along a Trajectory like sweep from Part Workbench but:\n" "- the Section center (of Mass) is move at the first point of the Trajectory and;\n" @@ -2372,10 +2793,214 @@ class Ui_Form(object): "- All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep)\n" "- Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be:\n" "# 0 (default), 1 (right corners) or 2 (rounded corners).)\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_sweep.setText(QtGui.QApplication.translate("Form", "Section Sweep", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Objects_Tab2), QtGui.QApplication.translate("Form", "Object", None, QtGui.QApplication.UnicodeUTF8)) - self.button_alignface2view.setToolTip(QtGui.QApplication.translate("Form", "Align the face of selected object(s) to the actual view Plane.\n" +"", None)) + self.button_sweep.setText(_translate("Form", "Section Sweep", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweeping", None)) + self.button_click_for_plane.setToolTip(_translate("Form", "Click:\n" +"Create a rectangular Plane perpendicular to the view at location of one mouse click.\n" +"Define the width and the length of the Plane if needed.\n" +"- Click first on the Button then click once on the View.\n" +"- Click first on the Button then click once on top of one object of the View\n" +" to attach the plane at this object.\n" +"- You can also select an already existing point first and click the button to attach the plane.\n" +"\n" +"NB: The plane width and length can be defined first.\n" +"", None)) + self.button_click_for_plane.setText(_translate("Form", "Click", None)) + self.length_plane.setToolTip(_translate("Form", "Length of the Plane.", None)) + self.length_plane.setText(_translate("Form", "10.0", None)) + self.width_plane.setToolTip(_translate("Form", "Width of the Plane.", None)) + self.width_plane.setText(_translate("Form", "10.0", None)) + self.button_planeandaxis_plane.setToolTip(_translate("Form", "Plane=(Plane, Axis):\n" +"Create a Plane crossing a Line and perpendicular to a Plane.\n" +"- First select a plane and a line NOT on the previous plane\n" +"- Second push this button\n" +"\n" +"NB: The plane created can be rotated if a none null angle is defined first.", None)) + self.button_planeandaxis_plane.setText(_translate("Form", "Plane=(Plane, Axis)", None)) + self.angle_planeandaxis_plane.setToolTip(_translate("Form", "Angle of rotation of the created Plane (in degrees).", None)) + self.angle_planeandaxis_plane.setText(_translate("Form", "0.0", None)) + self.button_axisandpoint_plane.setToolTip(_translate("Form", "Plane=(Point, Axis):\n" +"Create a plane crossing a Line and a Point.\n" +"- First select a line and a point NOT on the previous line\n" +"- Second push this button", None)) + self.button_axisandpoint_plane.setText(_translate("Form", "Plane=(Point, Axis)", None)) + self.button_axis_point_plane.setToolTip(_translate("Form", "Plane=(Point, _|Axis):\n" +"Create a plane perpendicular to a Line and crossing a Point.\n" +"- First select a line and a point NOT on the previous line\n" +"- Second push this button", None)) + self.button_axis_point_plane.setText(_translate("Form", "Plane=(Point, _|Axis)", None)) + self.button_face_tangent.setToolTip(_translate("Form", "Face Tangent:\n" +"Create a tanget Plane at click location of a Face.\n" +"- First click in the view to select and object,\n" +"- Second push this button\n" +"-Third click on a location on the selected object.\n" +"\n" +"NB: The plane width and length can be defined first.", None)) + self.button_face_tangent.setText(_translate("Form", "Face Tangent", None)) + self.length_plane_2.setToolTip(_translate("Form", "Length of the Plane.", None)) + self.length_plane_2.setText(_translate("Form", "10.0", None)) + self.width_plane_2.setToolTip(_translate("Form", "Width of the Plane.", None)) + self.width_plane_2.setText(_translate("Form", "10.0", None)) + self.button_threepoints_plane.setToolTip(_translate("Form", "Plane=(3 Points):\n" +"Create a Plane crossing 3 Points.\n" +"- First select 3 different points\n" +"- Second push this button", None)) + self.button_threepoints_plane.setText(_translate("Form", "Plane=(3 Points)", None)) + self.button_distPlane.setToolTip(_translate("Form", "Plane=(Plane,dist):\n" +"Create a Plane parallel to a Plane at a given distance.\n" +"- First select a plane or several Planes\n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The distance to the plane created can be defined first.\n" +"Positive number in one direction and negative in the other one.\n" +"The second number indicates the number of planes to create.\n" +"With option \"Object copy\" in \"Ori. Pref.\" TAB\n" +" - If a Face of a Cube is selected the Cube is duplicate with the \n" +"corresponding Face at the defined distance from the original.\n" +"Several Faces of the cube can be selected.", None)) + self.button_distPlane.setText(_translate("Form", "Plane=(Plane,dist)", None)) + self.dist_plane.setToolTip(_translate("Form", "Distance to the new plane.\n" +"Can be negative for the reverse direction!", None)) + self.dist_plane.setText(_translate("Form", "10.0", None)) + self.spin_dist_plane.setToolTip(_translate("Form", "The number of copies (Max 100).", None)) + self.button_planeandpoint_plane.setToolTip(_translate("Form", "Plane=(Point, Plane):\n" +"Create a plane crossing a Point and parallel to a Plane.\n" +"- First select a plane and a point NOT on the previous plane\n" +"- Second push this button\n" +"\n" +"NB: you can enlarge the created new plane by setting first an extension length.", None)) + self.button_planeandpoint_plane.setText(_translate("Form", "Plane=(Point, Plane)", None)) + self.extension_planePointPlane.setToolTip(_translate("Form", "Length for the extensions of the new Plane compared to initial one.", None)) + self.extension_planePointPlane.setText(_translate("Form", "0.0", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab1_3), _translate("Form", "Plane 1/2", None)) + self.button_object_center_planes.setToolTip(_translate("Form", "Object(s) Center Planes:\n" +"Create 3 Planes (XY, XZ and YZ) at center location of all selected Object(s).\n" +"- First select one or severl objects\n" +"- Second push this button", None)) + self.button_object_center_planes.setText(_translate("Form", "Object(s) Center Planes", None)) + self.button_extension_plane.setToolTip(_translate("Form", "Enlarge(Plane):\n" +"Extend a Plane in each dimension.\n" +"- First select a Plane (or several Planes) \n" +"- Second push this button\n" +"\n" +"NB: \n" +" - The percentage of the extension can be defined first.", None)) + self.button_extension_plane.setText(_translate("Form", "Enlarge(Plane)", None)) + self.extension_plane.setToolTip(_translate("Form", "Extension of the Plane in each dimension in percentage.", None)) + self.extension_plane.setText(_translate("Form", "50.0", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab1_4), _translate("Form", "Plane 2/2", None)) + self.button_boundingboxes.setToolTip(_translate("Form", "Create bounding boxes around each of selected object(s).\n" +"6 rectangles at the limits of each bounding boxes will be created.", None)) + self.button_boundingboxes.setText(_translate("Form", "Bounding Box(es)", None)) + self.button_boundingbox.setToolTip(_translate("Form", "Create one bounding box around all of selected object(s).\n" +"6 rectangles at the limits of the bounding box will be created.", None)) + self.button_boundingbox.setText(_translate("Form", "Bounding Box", None)) + self.checkBox_volumBB.setToolTip(_translate("Form", "if \"Vol.\" is toggled:\n" +" In Addition of rectangles, the Bounding box will be also created as a Volume.", None)) + self.checkBox_volumBB.setText(_translate("Form", "Vol.", None)) + self.button_cylinder_create.setToolTip(_translate("Form", "Create a Cylinder aligned on Axes:\n" +"- First select one or several couple of ( Axis and a Ref. Point). \n" +"- Define Diameter and Length if needed.\n" +"Then Click the button...\n" +"It will create a Cylinder aligned on the selected axis \n" +"with one of the extremities at the Ref. point,\n" +"for all couple selected.", None)) + self.button_cylinder_create.setText(_translate("Form", "Cylinder", None)) + self.diameter_cylinder.setToolTip(_translate("Form", "Radius of the Cylinder.", None)) + self.diameter_cylinder.setText(_translate("Form", "2.0", None)) + self.length_cylinder.setToolTip(_translate("Form", "Length of the Cylinder.\n" +"Negative value will reverse the direction from Ref. Point", None)) + self.length_cylinder.setText(_translate("Form", "20.0", None)) + self.button_cube_create.setToolTip(_translate("Form", "Create a Cuboid aligned on Axes:\n" +"- First select one or several couple of ( Axis and a Ref. Point). \n" +"- Define Dimensions if needed.\n" +"Then Click the button...\n" +"It will create a Cube aligned on the selected axis \n" +"with one of the extremities at Ref. point,\n" +"for all couple selected.", None)) + self.button_cube_create.setText(_translate("Form", "Cube", None)) + self.section_cube.setToolTip(_translate("Form", "Section (Length, Width) of the Cube.", None)) + self.section_cube.setText(_translate("Form", "2.0,2.0", None)) + self.height_cube.setToolTip(_translate("Form", "Heigth of the Cube.\n" +"Negative value will reverse the direction from Ref. Point", None)) + self.height_cube.setText(_translate("Form", "20.0", None)) + self.button_sphere_create.setToolTip(_translate("Form", "Create a Sphere shell:\n" +"- First select one or several Center Point(s). \n" +"- Define Diameter if needed.\n" +"Then Click the button...\n" +"It will create Sphere shell(s) centered\n" +"at the selected point(s).", None)) + self.button_sphere_create.setText(_translate("Form", "Sphere", None)) + self.diameter_sphere.setToolTip(_translate("Form", "Diameter of the Sphere.", None)) + self.diameter_sphere.setText(_translate("Form", "10.0", None)) + self.button_dome_create.setToolTip(_translate("Form", "Create a full geodesic dome shell:\n" +"- First select one or several Center Point(s). \n" +"- Define Diameter and Frequency Parameter (Integer between 1 to 10) if needed.\n" +"Then Click the button...\n" +"It will create full geodesic dome shell(s) with a X-Y-symmetry plane \n" +"for even frequencies and centered\n" +"at the selected point(s).\n" +"\n" +"If Frequency Parameter = 1, the code create an icosahedron. \n" +"An icosahedron is a polyhedron with 20 faces.\n" +"\n" +"Original code from : Ulrich Brammer", None)) + self.button_dome_create.setText(_translate("Form", "Dome", None)) + self.spin_frequency_dome.setToolTip(_translate("Form", "Frequency Parameter (Integer between 1 to 20).", None)) + self.diameter_dome.setToolTip(_translate("Form", "Diameter of the Dome.", None)) + self.diameter_dome.setText(_translate("Form", "10.0", None)) + self.button_letter.setToolTip(_translate("Form", "AB:\n" +"Create 3D Text attached to a Point. \n" +"- First select a Plane\n" +"- Then push this button\n" +"in this case the center of the text is attached to center of the Plane;\n" +"or\n" +"- First select a Plane and a Point on the Plane\n" +"- Then push this button\n" +"NB:\n" +" Change the text and his size if needed", None)) + self.button_letter.setText(_translate("Form", "AB", None)) + self.letter.setToolTip(_translate("Form", "Put the desired text here", None)) + self.letter.setText(_translate("Form", "A", None)) + self.size_letter.setToolTip(_translate("Form", "Size of the font.", None)) + self.size_letter.setText(_translate("Form", "2.0", None)) + self.button_revolve.setToolTip(_translate("Form", "Revolve:\n" +"Make the revolution of Edge(s) or Wire(s) around an Axis:\n" +"- Select one or several wire(s)\n" +"- Then push this button\n" +"or\n" +"- Select FIRST one Point as center of rotation and one Axis as rotation axis !\n" +"- Select one or several wire(s)\n" +"- Then push this button\n" +"\n" +"NB:\n" +" You can also define the angle of revolution if needed\n" +" If no Axis is selected the Z axis is considered as Axis of rotation !\n" +" If no Point is selected the Origin is considered as Center of rotation !", None)) + self.button_revolve.setText(_translate("Form", "Revolve", None)) + self.angle_revolve.setToolTip(_translate("Form", "Angle of the revolution in degrees.", None)) + self.angle_revolve.setText(_translate("Form", "360", None)) + self.button_common.setToolTip(_translate("Form", "Compute the common parts between selected shapes.\n" +"- Select at least two objects and click.\n" +"\n" +"Highlight common parts by showing the common shape in red and setting half-transparency on original parts (the original objects are not modified).\n" +"Original code from HighlightCommon.FCMacro\n" +" https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro\n" +" Authors = 2015 Javier Martinez Garcia\n" +"", None)) + self.button_common.setText(_translate("Form", "Common", None)) + self.button_difference.setToolTip(_translate("Form", "Compute the difference parts between selected shapes.\n" +"- Select two objects and click.\n" +"\n" +"Compute the difference between two shapes. Additions are marked red, removals are marked green. Both original parts will be half transparent. The volume of the additions and removals are printed in the console. \n" +"Original code from HighlightDifference.FCMacro\n" +" https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro\n" +" Authors = 2015 GaĆ«l Ecorchard (Galou)", None)) + self.button_difference.setText(_translate("Form", "Difference", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Objects_Tab2_2), _translate("Form", "Object", None)) + self.button_alignface2view.setToolTip(_translate("Form", "Align the face of selected object(s) to the actual view Plane.\n" " - Click first to select a Face of one or several objects.\n" "These objects will be moved not the point of view.\n" "Then Click the button.\n" @@ -2390,9 +3015,9 @@ class Ui_Form(object): "\n" " Two clicks will rotate by 180 deg the moving objects.\n" "\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_alignface2view.setText(QtGui.QApplication.translate("Form", "Align Face to View", None, QtGui.QApplication.UnicodeUTF8)) - self.button_align_faces.setToolTip(QtGui.QApplication.translate("Form", "Align the Face(s) from selected object(s) to the last Face selected.\n" +"", None)) + self.button_alignface2view.setText(_translate("Form", "Align Face to View", None)) + self.button_align_faces.setToolTip(_translate("Form", "Align the Face(s) from selected object(s) to the last Face selected.\n" " - Click first to select a Face of an object or several Faces from several objects. \n" "These objects will be moved.\n" " - Click second to select a Face to align to (the last object is fixed and will never move).\n" @@ -2407,11 +3032,11 @@ class Ui_Form(object): " In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n" "\n" " Two clicks will rotate by 180 deg the moving objects.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_align_faces.setText(QtGui.QApplication.translate("Form", "Align Faces", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_align_faces.setToolTip(QtGui.QApplication.translate("Form", "This Angle (in degrees) will be added to the angle needed to align Faces.", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_align_faces.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_align_edges.setToolTip(QtGui.QApplication.translate("Form", "Align the Edge(s) from selected object(s) to the last Edge selected.\n" +"", None)) + self.button_align_faces.setText(_translate("Form", "Align Faces", None)) + self.angle_align_faces.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Faces.", None)) + self.angle_align_faces.setText(_translate("Form", "0.0", None)) + self.button_align_edges.setToolTip(_translate("Form", "Align the Edge(s) from selected object(s) to the last Edge selected.\n" " - Click first to select an Edge of an object or several Edges from several objects. \n" "These objects will be moved.\n" " - Click second to select an Edge to align to (the last object is fixed and will never move).\n" @@ -2426,88 +3051,88 @@ class Ui_Form(object): " In this case the Axis of rotation is Z vector : Base.Vector(0, 0, 1)\n" "\n" " Two clicks will rotate by 180 deg the moving objects.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_align_edges.setText(QtGui.QApplication.translate("Form", "Align Edges", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_align_edges.setToolTip(QtGui.QApplication.translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_align_edges.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_joint_points.setToolTip(QtGui.QApplication.translate("Form", "Joint Point(s) from selected object(s) to the last Point selected.\n" +"", None)) + self.button_align_edges.setText(_translate("Form", "Align Edges", None)) + self.angle_align_edges.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None)) + self.angle_align_edges.setText(_translate("Form", "0.0", None)) + self.button_joint_points.setToolTip(_translate("Form", "Joint Point(s) from selected object(s) to the last Point selected.\n" " - Click first to select a Point of an object or several Points from several objects.\n" "These objects will be moved. \n" " - Click second to select an Point to joint to (the last object is fixed and will never move).\n" "Then Click the button.\n" "\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_joint_points.setText(QtGui.QApplication.translate("Form", "Joint Points", None, QtGui.QApplication.UnicodeUTF8)) - self.button_joint_faces.setToolTip(QtGui.QApplication.translate("Form", "Joint Face(s) from selected object(s) to the last Face selected.\n" +"", None)) + self.button_joint_points.setText(_translate("Form", "Joint Points", None)) + self.button_joint_faces.setToolTip(_translate("Form", "Joint Face(s) from selected object(s) to the last Face selected.\n" " - Click first to select a Face of an object or several Faces from several objects. \n" "These objects will be moved.\n" " - Click second to select a Face to joint to (the last object is fixed and will never move).\n" "Then Click the button.\n" "\n" " Two clicks will rotate by 180 deg the moving objects.\n" -"", None, QtGui.QApplication.UnicodeUTF8)) - self.button_joint_faces.setText(QtGui.QApplication.translate("Form", "Joint Faces", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.align_tab), QtGui.QApplication.translate("Form", "Align", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_6.setTitle(QtGui.QApplication.translate("Form", "Object", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_object.setToolTip(QtGui.QApplication.translate("Form", "Select the Object to cut:\n" +"", None)) + self.button_joint_faces.setText(_translate("Form", "Joint Faces", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.align_tab_2), _translate("Form", "Align", None)) + self.groupBox_20.setTitle(_translate("Form", "Object", None)) + self.button_cut_select_object.setToolTip(_translate("Form", "Select the Object to cut:\n" "First Click on the object in the view \n" -"and push this button to accept...", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_object.setText(QtGui.QApplication.translate("Form", "Select Object", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_line.setToolTip(QtGui.QApplication.translate("Form", "Select the Line to cut the Object along:\n" +"and push this button to accept...", None)) + self.button_cut_select_object.setText(_translate("Form", "Select Object", None)) + self.button_cut_select_line.setToolTip(_translate("Form", "Select the Line to cut the Object along:\n" "First Click on the line/edge in the view \n" -"and push this button to accept...", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_line.setText(QtGui.QApplication.translate("Form", "Select Cut Line", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_plane.setToolTip(QtGui.QApplication.translate("Form", "Select the Reference Plane to cut the Object from:\n" +"and push this button to accept...", None)) + self.button_cut_select_line.setText(_translate("Form", "Select Cut Line", None)) + self.button_cut_select_plane.setToolTip(_translate("Form", "Select the Reference Plane to cut the Object from:\n" "First Click on the plane in the view \n" "and push this button to accept...\n" "\n" "The Reference Plane is the Plane you pose the object on before to use a saw! \n" -"(Note that the Angle is calculated from the Normal at this Plane)", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_select_plane.setText(QtGui.QApplication.translate("Form", "Select Ref. Plane", None, QtGui.QApplication.UnicodeUTF8)) - self.label_angle.setToolTip(QtGui.QApplication.translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" +"(Note that the Angle is calculated from the Normal at this Plane)", None)) + self.button_cut_select_plane.setText(_translate("Form", "Select Ref. Plane", None)) + self.label_angle_3.setToolTip(_translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" "\n" " 0.0 means that the Plane of cutting is along the Cut Line with \n" -"a 90 deg angle with Reference Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.label_angle.setText(QtGui.QApplication.translate("Form", "Angle", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_cut_object.setToolTip(QtGui.QApplication.translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" +"a 90 deg angle with Reference Plane.", None)) + self.label_angle_3.setText(_translate("Form", "Angle", None)) + self.angle_cut_object.setToolTip(_translate("Form", "Angle of cutting relative to the Normal of the Reference Plane (in degrees).\n" "\n" " 0.0 means that the Plane of cutting is along the Cut Line with \n" -"a 90 deg angle with Reference Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.angle_cut_object.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_thickness.setToolTip(QtGui.QApplication.translate("Form", "Thickness of the Cut.\n" +"a 90 deg angle with Reference Plane.", None)) + self.angle_cut_object.setText(_translate("Form", "0.0", None)) + self.label_thickness_2.setToolTip(_translate("Form", "Thickness of the Cut.\n" "\n" -"i.e. the thickness of a saw.", None, QtGui.QApplication.UnicodeUTF8)) - self.label_thickness.setText(QtGui.QApplication.translate("Form", "Thickness", None, QtGui.QApplication.UnicodeUTF8)) - self.thickness_cut_object.setToolTip(QtGui.QApplication.translate("Form", "Thickness of the Cut.\n" +"i.e. the thickness of a saw.", None)) + self.label_thickness_2.setText(_translate("Form", "Thickness", None)) + self.thickness_cut_object.setToolTip(_translate("Form", "Thickness of the Cut.\n" "\n" -"i.e. the thickness of a saw.", None, QtGui.QApplication.UnicodeUTF8)) - self.thickness_cut_object.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_apply.setToolTip(QtGui.QApplication.translate("Form", "Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_cut_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.cut_tab), QtGui.QApplication.translate("Form", "Cut", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select.setToolTip(QtGui.QApplication.translate("Form", "- Select one or several object(s) in the view and \n" +"i.e. the thickness of a saw.", None)) + self.thickness_cut_object.setText(_translate("Form", "0.0", None)) + self.button_cut_reset.setText(_translate("Form", "Reset", None)) + self.button_cut_apply.setToolTip(_translate("Form", "Cut an object by selecting a Line cut, a Plane and an Angle regarding the Plane.", None)) + self.button_cut_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.cut_tab_2), _translate("Form", "Cut", None)) + self.ObjRot_button_select.setToolTip(_translate("Form", "- Select one or several object(s) in the view and \n" "- Click on this button.\n" "\n" "NB\n" "Once object(s) are selected an other Click will unselect them !\n" -"Selected Object(s) will be displayed with 75% of transparency.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select.setText(QtGui.QApplication.translate("Form", "Select Object(s)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_axis.setItemText(0, QtGui.QApplication.translate("Form", "X", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_axis.setItemText(1, QtGui.QApplication.translate("Form", "Y", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_axis.setItemText(2, QtGui.QApplication.translate("Form", "Z", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_axis.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select_axis.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.tab_8), QtGui.QApplication.translate("Form", "Axis", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_center.setItemText(0, QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_center.setItemText(1, QtGui.QApplication.translate("Form", "Base Obj.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_center.setItemText(2, QtGui.QApplication.translate("Form", "Center Obj.(s)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_comboBox_center.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select_center.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.tab_9), QtGui.QApplication.translate("Form", "Center", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_2.setTitle(QtGui.QApplication.translate("Form", "Angle of rotation :", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_7), QtGui.QApplication.translate("Form", "Define", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select_angle.setToolTip(QtGui.QApplication.translate("Form", "Calculate angle from 2 objects.\n" +"Selected Object(s) will be displayed with 75% of transparency.", None)) + self.ObjRot_button_select.setText(_translate("Form", "Select Object(s)", None)) + self.ObjRot_comboBox_axis.setItemText(0, _translate("Form", "X", None)) + self.ObjRot_comboBox_axis.setItemText(1, _translate("Form", "Y", None)) + self.ObjRot_comboBox_axis.setItemText(2, _translate("Form", "Z", None)) + self.ObjRot_comboBox_axis.setItemText(3, _translate("Form", "To select", None)) + self.ObjRot_button_select_axis.setText(_translate("Form", "Select", None)) + self.tabWidget_10.setTabText(self.tabWidget_10.indexOf(self.tab_18), _translate("Form", "Axis", None)) + self.ObjRot_comboBox_center.setItemText(0, _translate("Form", "Origin", None)) + self.ObjRot_comboBox_center.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjRot_comboBox_center.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjRot_comboBox_center.setItemText(3, _translate("Form", "To select", None)) + self.ObjRot_button_select_center.setText(_translate("Form", "Select", None)) + self.tabWidget_10.setTabText(self.tabWidget_10.indexOf(self.tab_19), _translate("Form", "Center", None)) + self.groupBox_21.setTitle(_translate("Form", "Angle of rotation :", None)) + self.tabWidget_11.setTabText(self.tabWidget_11.indexOf(self.tab_20), _translate("Form", "Define", None)) + self.ObjRot_button_select_angle.setToolTip(_translate("Form", "Calculate angle from 2 objects.\n" "Angle measurement between two Edges or two Planes\n" "- Select the 2 Edges and\n" "- Click this button\n" @@ -2519,22 +3144,22 @@ class Ui_Form(object): "- Click this button\n" "\n" "NB:\n" -" Normals of Planes will be used. ", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_select_angle.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_5.setTabText(self.tabWidget_5.indexOf(self.tab_10), QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_lineEdit_angle.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_angle_2.setText(QtGui.QApplication.translate("Form", " (deg)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjRot_button_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.rotate_tab), QtGui.QApplication.translate("Form", "Rotate", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_select.setToolTip(QtGui.QApplication.translate("Form", "- Select one or several object(s) in the view and \n" +" Normals of Planes will be used. ", None)) + self.ObjRot_button_select_angle.setText(_translate("Form", "Select", None)) + self.tabWidget_11.setTabText(self.tabWidget_11.indexOf(self.tab_21), _translate("Form", "Select", None)) + self.ObjRot_lineEdit_angle.setText(_translate("Form", "0.0", None)) + self.label_angle_4.setText(_translate("Form", " (deg)", None)) + self.ObjRot_button_reset.setText(_translate("Form", "Reset", None)) + self.ObjRot_button_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.rotate_tab_2), _translate("Form", "Rotate", None)) + self.ObjTrans_button_select.setToolTip(_translate("Form", "- Select one or several object(s) in the view and \n" "- Click on this button.\n" "\n" "NB\n" "Once object(s) are selected an other Click will unselect them !\n" -"Selected Object(s) will be displayed with 75% of transparency.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_select.setText(QtGui.QApplication.translate("Form", "Select Object(s)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_duplicate.setToolTip(QtGui.QApplication.translate("Form", "Toggle this check box to generate copies the object during the Translation.\n" +"Selected Object(s) will be displayed with 75% of transparency.", None)) + self.ObjTrans_button_select.setText(_translate("Form", "Select Object(s)", None)) + self.ObjTrans_duplicate.setToolTip(_translate("Form", "Toggle this check box to generate copies the object during the Translation.\n" "Copy means that the original Object will be left in his original location.\n" "NB:\n" "\n" @@ -2553,10 +3178,10 @@ class Ui_Form(object): " - If one starting point and several ending points are selected.\n" " One copy is done at each ending points selected, then at double distance\n" " of each ending points along the line defined by starting and the current \n" -" ending point, and so on!", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_duplicate.setText(QtGui.QApplication.translate("Form", "Copy", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_spin.setToolTip(QtGui.QApplication.translate("Form", "The number of copies.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_deepCopy.setToolTip(QtGui.QApplication.translate("Form", "Toggle this check box to realize \"deep\" copies. \n" +" ending point, and so on!", None)) + self.ObjTrans_duplicate.setText(_translate("Form", "Copy", None)) + self.ObjTrans_spin.setToolTip(_translate("Form", "The number of copies.", None)) + self.ObjTrans_deepCopy.setToolTip(_translate("Form", "Toggle this check box to realize \"deep\" copies. \n" "Means that all children and parents of selected Object(s) will be copied too! \n" "\n" "If the object selected is Pad and his link is on Sketch, and Skecth parent is Box\n" @@ -2578,65 +3203,59 @@ class Ui_Form(object): "Pad001 \n" " |_Sketch \n" "\n" -"On the last result the same Sketch is both link to Pad001 but also still to Pad.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_deepCopy.setText(QtGui.QApplication.translate("Form", "Deep", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_3.setTitle(QtGui.QApplication.translate("Form", "Starting Point :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_start.setItemText(0, QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_start.setItemText(1, QtGui.QApplication.translate("Form", "Base Obj.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_start.setItemText(2, QtGui.QApplication.translate("Form", "Center Obj.(s)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_start.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_start.setItemText(4, QtGui.QApplication.translate("Form", "To define", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_select_start.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.label_3.setText(QtGui.QApplication.translate("Form", "X :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_start_x.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_4.setText(QtGui.QApplication.translate("Form", "Y :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_start_y.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_6.setText(QtGui.QApplication.translate("Form", "Z :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_start_z.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_4.setTabText(self.tabWidget_4.indexOf(self.tab_5), QtGui.QApplication.translate("Form", "Start", None, QtGui.QApplication.UnicodeUTF8)) - self.groupBox_4.setTitle(QtGui.QApplication.translate("Form", "Ending Point :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(0, QtGui.QApplication.translate("Form", "Origin", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(1, QtGui.QApplication.translate("Form", "Base Obj.", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(2, QtGui.QApplication.translate("Form", "Center Obj.(s)", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(3, QtGui.QApplication.translate("Form", "To select", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(4, QtGui.QApplication.translate("Form", "To define", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_comboBox_end.setItemText(5, QtGui.QApplication.translate("Form", "Relative", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_select_end.setText(QtGui.QApplication.translate("Form", "Select", None, QtGui.QApplication.UnicodeUTF8)) - self.label_7.setText(QtGui.QApplication.translate("Form", "Z :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_end_z.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_8.setText(QtGui.QApplication.translate("Form", "Y :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_end_y.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.label_9.setText(QtGui.QApplication.translate("Form", "X :", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_end_x.setText(QtGui.QApplication.translate("Form", "0.0", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_4.setTabText(self.tabWidget_4.indexOf(self.tab_6), QtGui.QApplication.translate("Form", "End", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_reset.setText(QtGui.QApplication.translate("Form", "Reset", None, QtGui.QApplication.UnicodeUTF8)) - self.ObjTrans_button_apply.setText(QtGui.QApplication.translate("Form", "Apply", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.translate_tab), QtGui.QApplication.translate("Form", "Translate", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.Modif_Tab), QtGui.QApplication.translate("Form", "Modif.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_alignview.setToolTip(QtGui.QApplication.translate("Form", "Set the current view perpendicular to the selected Face, \n" +"On the last result the same Sketch is both link to Pad001 but also still to Pad.", None)) + self.ObjTrans_deepCopy.setText(_translate("Form", "Deep", None)) + self.groupBox_22.setTitle(_translate("Form", "Starting Point :", None)) + self.ObjTrans_comboBox_start.setItemText(0, _translate("Form", "Origin", None)) + self.ObjTrans_comboBox_start.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjTrans_comboBox_start.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjTrans_comboBox_start.setItemText(3, _translate("Form", "To select", None)) + self.ObjTrans_comboBox_start.setItemText(4, _translate("Form", "To define", None)) + self.ObjTrans_button_select_start.setText(_translate("Form", "Select", None)) + self.label_11.setText(_translate("Form", "X :", None)) + self.ObjTrans_start_x.setText(_translate("Form", "0.0", None)) + self.label_12.setText(_translate("Form", "Y :", None)) + self.ObjTrans_start_y.setText(_translate("Form", "0.0", None)) + self.label_13.setText(_translate("Form", "Z :", None)) + self.ObjTrans_start_z.setText(_translate("Form", "0.0", None)) + self.tabWidget_12.setTabText(self.tabWidget_12.indexOf(self.tab_22), _translate("Form", "Start", None)) + self.groupBox_23.setTitle(_translate("Form", "Ending Point :", None)) + self.ObjTrans_comboBox_end.setItemText(0, _translate("Form", "Origin", None)) + self.ObjTrans_comboBox_end.setItemText(1, _translate("Form", "Base Obj.", None)) + self.ObjTrans_comboBox_end.setItemText(2, _translate("Form", "Center Obj.(s)", None)) + self.ObjTrans_comboBox_end.setItemText(3, _translate("Form", "To select", None)) + self.ObjTrans_comboBox_end.setItemText(4, _translate("Form", "To define", None)) + self.ObjTrans_comboBox_end.setItemText(5, _translate("Form", "Relative", None)) + self.ObjTrans_button_select_end.setText(_translate("Form", "Select", None)) + self.label_14.setText(_translate("Form", "Z :", None)) + self.ObjTrans_end_z.setText(_translate("Form", "0.0", None)) + self.label_15.setText(_translate("Form", "Y :", None)) + self.ObjTrans_end_y.setText(_translate("Form", "0.0", None)) + self.label_16.setText(_translate("Form", "X :", None)) + self.ObjTrans_end_x.setText(_translate("Form", "0.0", None)) + self.tabWidget_12.setTabText(self.tabWidget_12.indexOf(self.tab_23), _translate("Form", "End", None)) + self.ObjTrans_button_reset.setText(_translate("Form", "Reset", None)) + self.ObjTrans_button_apply.setText(_translate("Form", "Apply", None)) + self.tabWidget_9.setTabText(self.tabWidget_9.indexOf(self.translate_tab_2), _translate("Form", "Translate", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Modif_Tab_2), _translate("Form", "Modif.", None)) + self.button_alignview.setToolTip(_translate("Form", "Set the current view perpendicular to the selected Face, \n" "or aligned to the selected Axis, \n" "or aligned on 2 Points.\n" -"ReClick with same selection, will reverse the direction.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_alignview.setText(QtGui.QApplication.translate("Form", "Align View to ...", None, QtGui.QApplication.UnicodeUTF8)) - self.button_trackcamera.setText(QtGui.QApplication.translate("Form", "Camera Track", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.View_Tab), QtGui.QApplication.translate("Form", "View", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isView.setToolTip(QtGui.QApplication.translate("Form", "Detect the position of the camera.\n" +"ReClick with same selection, will reverse the direction.", None)) + self.button_alignview.setText(_translate("Form", "Align View to ...", None)) + self.button_trackcamera.setText(_translate("Form", "Camera Track", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.View_Tab_2), _translate("Form", "View", None)) + self.button_isView.setToolTip(_translate("Form", "Detect the position of the camera.\n" "The returned value is the value provided \n" -"by the function getCameraOrientation().", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isView.setText(QtGui.QApplication.translate("Form", "View ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isCoplanar.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Coplanar:\n" +"by the function getCameraOrientation().", None)) + self.button_isView.setText(_translate("Form", "View ?", None)) + self.button_isParallel.setToolTip(_translate("Form", "Check if two faces or two Edges are Parallel:\n" "- Select the 2 faces/planes or 2 Edges/Lines and\n" "Click this button\n" "\n" -"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isCoplanar.setText(QtGui.QApplication.translate("Form", "are Coplanar ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isParallel.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Parallel:\n" -"- Select the 2 faces/planes or 2 Edges/Lines and\n" -"Click this button\n" -"\n" -"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isParallel.setText(QtGui.QApplication.translate("Form", "are Parallel ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isAngle.setToolTip(QtGui.QApplication.translate("Form", "Check for two Edges/Planes angle:\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isParallel.setText(_translate("Form", "are Parallel ?", None)) + self.button_isAngle.setToolTip(_translate("Form", "Check for two Edges/Planes angle:\n" "Angle measurement between two Edges or two Planes\n" "- Select the 2 Edges and\n" "- Click this button\n" @@ -2648,38 +3267,43 @@ class Ui_Form(object): "- Click this button\n" "\n" "NB:\n" -" Normals of Planes will be used. ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isAngle.setText(QtGui.QApplication.translate("Form", "Angle ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isLength.setToolTip(QtGui.QApplication.translate("Form", "Check for Line Length:\n" +" Normals of Planes will be used. ", None)) + self.button_isAngle.setText(_translate("Form", "Angle ?", None)) + self.button_isLength.setToolTip(_translate("Form", "Check for Line Length:\n" "Length measurement and Delta values (on main Axes) for a Line\n" "- Select the Line and\n" "Click this button\n" -" ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isLength.setText(QtGui.QApplication.translate("Form", "Length ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isDistance.setToolTip(QtGui.QApplication.translate("Form", "Check for two Points distance:\n" -"Distances measurement and Delta values (on main Axes) between two Points\n" -"- Select the 2 Points and\n" -"Click this button\n" -" ", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isDistance.setText(QtGui.QApplication.translate("Form", "Distance ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isPerpendicular.setToolTip(QtGui.QApplication.translate("Form", "Check if two faces or two Edges are Perpendicular:\n" +" ", None)) + self.button_isLength.setText(_translate("Form", "Length ?", None)) + self.button_isPerpendicular.setToolTip(_translate("Form", "Check if two faces or two Edges are Perpendicular:\n" "- Select the 2 faces/planes or 2 Edges/Lines and\n" "Click this button\n" "\n" -"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isPerpendicular.setText(QtGui.QApplication.translate("Form", "are Perpendicular ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isClearance.setToolTip(QtGui.QApplication.translate("Form", "Check for two Objects Clearance distance:\n" -"Quick measurements between parallel faces and similarly placed objects\n" -"- Select the 2 Objects and\n" -"Click this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isClearance.setText(QtGui.QApplication.translate("Form", "Distance Clearance ?", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isArea.setToolTip(QtGui.QApplication.translate("Form", "Check for surface Area:\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isPerpendicular.setText(_translate("Form", "are Perpendicular ?", None)) + self.button_isDistance.setToolTip(_translate("Form", "Check for two Points distance:\n" +"Distances measurement and Delta values (on main Axes) between two Points\n" +"- Select the 2 Points and\n" +"Click this button\n" +" ", None)) + self.button_isDistance.setText(_translate("Form", "Distance ?", None)) + self.button_isArea.setToolTip(_translate("Form", "Check for surface Area:\n" "Area measurement for a Plane or a set of Planes.\n" "- Select One or several Planes and\n" -"Click this button", None, QtGui.QApplication.UnicodeUTF8)) - self.button_isArea.setText(QtGui.QApplication.translate("Form", "Area ?", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QtGui.QApplication.translate("Form", "Check", None, QtGui.QApplication.UnicodeUTF8)) - self.tabWidget_0.setTabText(self.tabWidget_0.indexOf(self.tab_2), QtGui.QApplication.translate("Form", "W. F.", None, QtGui.QApplication.UnicodeUTF8)) - self.button_WF_quit.setText(QtGui.QApplication.translate("Form", "Close", None, QtGui.QApplication.UnicodeUTF8)) - self.label_release.setText(QtGui.QApplication.translate("Form", "2015", None, QtGui.QApplication.UnicodeUTF8)) +"Click this button", None)) + self.button_isArea.setText(_translate("Form", "Area ?", None)) + self.button_isCoplanar.setToolTip(_translate("Form", "Check if two faces or two Edges are Coplanar:\n" +"- Select the 2 faces/planes or 2 Edges/Lines and\n" +"Click this button\n" +"\n" +"NB: You can change the tolerance in \"Ori. Pref.\" TAB", None)) + self.button_isCoplanar.setText(_translate("Form", "are Coplanar ?", None)) + self.button_isClearance.setToolTip(_translate("Form", "Check for two Objects Clearance distance:\n" +"Quick measurements between parallel faces and similarly placed objects\n" +"- Select the 2 Objects and\n" +"Click this button", None)) + self.button_isClearance.setText(_translate("Form", "Distance Clearance ?", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_24), _translate("Form", "Check", None)) + self.button_WF_quit.setText(_translate("Form", "Close", None)) + self.label_release.setText(_translate("Form", "2015", None)) diff --git a/WorkFeature/WF_2015.py b/WorkFeature/WF_2015.py index 454795e..76540ee 100644 --- a/WorkFeature/WF_2015.py +++ b/WorkFeature/WF_2015.py @@ -4,7 +4,7 @@ *************************************************************************** * Thanks to original ideas, codes, and support from : * * - Javier Martinez Garcia 2014, 2015 for ideas and first WF codes * -* for tje code on parallelism of two faces, forTour camera code * +* for tje code on parallelism of two faces, forTour camera code... * * - Jonathan Wiedemann for Gui ideas and for view codes 2014 * * and support * * - NormandC for his support * @@ -13,6 +13,7 @@ * - Eriossoltero for macro Ellipse-Center+2Points * * - Ulrich Brammer for Geodesic dome code * * - Wmayer Many Thanks for active help on testing and debbuging * +* - GaĆ«l Ecorchard for HighlightDifference Macro * * Special thanks to Mario52 for diverse MACRO codes as FCCamera, * * cutCircle, cutWire, Delta xyz, bounding box ... * * and other diverse pieces of codes * @@ -29,6 +30,7 @@ * Copyright (c) 2013 galou_breizh * * Copyright (c) 2015 Ulrich Brammer * * Copyright (c) Eriossoltero * +* Copyright (c) 2015 GaĆ«l Ecorchard * * * * This file is a supplement to the FreeCAD CAx development system. * * * @@ -51,15 +53,18 @@ """ # First two lines to be able to launch with python import sys +from WorkFeature import WF_ObjParCurve_2015 # change this by your own FreeCAD lib path import FreeCAD if not sys.path.__contains__("/usr/lib/freecad/lib"): sys.path.append("/usr/lib/freecad/lib") import WFGui_2015 as WFGui from WF_ObjRot_2015 import * +from WF_Utils_2015 import * +from WF_ObjParCurve_2015 import * global myRelease -myRelease = "2015_10_05" +myRelease = "2015_10_20" import os.path import time @@ -84,9 +89,13 @@ ICONS_PATH = os.path.dirname(__file__) + "/Icons" QtCore.QDir.addSearchPath("icons", ICONS_PATH) # LineColor -red = 1.0 # 1 = 255 -green = 0.0 # -blue = 0.0 # +#red = 1.0 # 1 = 255 +#green = 0.0 # +#blue = 0.0 # +red=(1.00,0.00,0.00) +green=(0.00,0.67,0.00) +blue=(0.33,0.00,1.00) +orange=(1.00,0.67,0.00) flag_for_face=True # Some Global variables @@ -1708,7 +1717,7 @@ def properties_point(Point_User_Name): return -def properties_line(Line_User_Name): +def properties_line(Line_User_Name, color=(1.00,0.67,0.00)): """ Define the properties of a Work feature Line. PointColor LineColor @@ -1717,11 +1726,11 @@ def properties_line(Line_User_Name): Transparency """ try: - Gui.ActiveDocument.getObject(Line_User_Name).PointColor = (1.00,0.67,0.00) + Gui.ActiveDocument.getObject(Line_User_Name).PointColor = color except: print_msg("Not able to set PointColor !") try: - Gui.ActiveDocument.getObject(Line_User_Name).LineColor = (1.00,0.67,0.00) + Gui.ActiveDocument.getObject(Line_User_Name).LineColor = color except: print_msg("Not able to set LineColor !") try: @@ -1788,14 +1797,14 @@ def plot_point(Vector_point, part="Part::Feature", name="Point", grp="WorkPoints return point_User_Name -def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAxis"): +def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAxis", color=(1.00,0.67,0.00)): if not(App.ActiveDocument.getObject( grp )): App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) axis = App.ActiveDocument.addObject(part, name) axis.Shape = Part.makeLine(Vector_A, Vector_B) App.ActiveDocument.getObject( grp ).addObject(axis) axis_User_Name = axis.Label - properties_line(axis_User_Name) + properties_line(axis_User_Name, color) return axis_User_Name, axis @@ -3303,10 +3312,11 @@ def point_toSketch(): num_point, return_points = vertexToSketch(m_pointList,m_sketch) if m_num_point != num_point: printError_msg(error_msg) - return - createFolders('WorkPoints') - for point in return_points: - plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints") + return + if msg != 0: + createFolders('WorkPoints') + for point in return_points: + plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints") # Refresh App.getDocument(str(m_actDoc.Name)).recompute() print_msg(str(num_point) + result_msg ) @@ -3449,9 +3459,94 @@ def plot_2PointsAxis(): except: printError_msg(error_msg) +def plot_NPoints_axis(): + """ Create an Axis based on a linear regression from a set of Points. + """ + global verbose + msg=verbose + import numpy as np + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + createFolders('WorkAxis') + error_msg = "Unable to create Axis : \nSelect at least two points!" + result_msg = " : Axis created !" + name = "Line from N Points" + part = "Part::Feature" + grp = "WorkAxis" + + Selection = get_SelectedObjects(info=msg, printError=False) + + try: + SelectedObjects = Selection + Number_of_Points = SelectedObjects[0] + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + if Number_of_Points > 1: + m_x = [] + m_y = [] + m_z = [] + Point_List = SelectedObjects[3] + if msg != 0: + print_msg("Point_List=" + str(Point_List)) + for Selected_Point in Point_List: + m_point = Selected_Point.Point + m_x.append(m_point.x) + m_y.append(m_point.y) + m_z.append(m_point.z) + + m_np_x = np.asfarray(m_x) + m_np_y = np.asfarray(m_y) + m_np_z = np.asfarray(m_z) + if msg != 0: + print_msg(" m_np_x=" + str(m_np_x)) + print_msg(" m_np_y=" + str(m_np_y)) + print_msg(" m_np_z=" + str(m_np_z)) + m_data = np.concatenate((m_np_x[:, np.newaxis], + m_np_y[:, np.newaxis], + m_np_z[:, np.newaxis]), + axis=1) + if msg != 0: + print_msg(" m_data=" + str(m_data)) + # Calculate the mean of the points, i.e. the 'center' of the cloud + m_datamean = m_data.mean(axis=0) + if msg != 0: + print_msg(" m_datamean=" + str(m_datamean)) + Axis_E0 = Base.Vector(m_datamean[0], m_datamean[1], m_datamean[2]) + + # Do an SVD on the mean-centered data. + m_uu, m_dd, m_vv = np.linalg.svd(m_data - m_datamean) + if msg != 0: + print_msg(" m_uu=" + str(m_uu)) + print_msg(" m_dd=" + str(m_dd)) + print_msg(" m_vv=" + str(m_vv)) + # Now vv[0] contains the first principal component, i.e. the direction + # vector of the 'best fit' line in the least squares sense. + Axis_dir = Base.Vector(m_vv[0][0],m_vv[0][1],m_vv[0][2]) + Axis_E1 = Axis_E0 - Axis_dir.normalize().multiply(m_dd[0]/2.) + Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[0]/2.) + Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name, grp, orange) + print_msg(str(Axis_User_Name) + result_msg ) + Axis_dir = Base.Vector(m_vv[1][0],m_vv[1][1],m_vv[1][2]) + #Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[1]/2.) + Axis_E2 = Axis_E0 + Axis_dir + Axis_User_Name, axis = plot_axis(Axis_E0, Axis_E2, part, name, grp, red) + print_msg(str(Axis_User_Name) + result_msg ) + Axis_dir = Base.Vector(m_vv[2][0],m_vv[2][1],m_vv[2][2]) + #Axis_E2 = Axis_E0 + Axis_dir.normalize().multiply(m_dd[2]/2.) + Axis_E2 = Axis_E0 + Axis_dir + Axis_User_Name, axis = plot_axis(Axis_E0, Axis_E2, part, name, grp, green) + print_msg(str(Axis_User_Name) + result_msg ) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) def plot_cylinderAxis(): - msg=1 + global verbose + msg=verbose createFolders('WorkAxis') error_msg = "Unable to create Cylinder Axis : \nSelect one cylindrical face only !" result_msg = " : Cylinder Axis created !" @@ -3471,55 +3566,56 @@ def plot_cylinderAxis(): if msg != 0: print_msg("Number_of_Faces=" + str(Number_of_Faces)) print_msg("Number_of_Edges=" + str(Number_of_Edges)) - if Number_of_Faces == 1: + if Number_of_Faces >= 1: Face_list = SelectedObjects[5] - Face = Face_list[0] - Face_Wire = Face.OuterWire - Face_Edges = Face_Wire.Edges - try: - Circle_Center_1 = None - Circle_Center_2 = None - for i in range(len(Face_Edges)): - Current_Edge = Face_Edges[i] - Edge_Info = Current_Edge.Curve - Edge_Type_Name = str(Edge_Info) - #print_msg("Edge_Type_Name = " + str(Edge_Type_Name)) - Edge_Circle = Edge_Type_Name[0:6] - Edge_Line = Edge_Type_Name[1:5] - if Edge_Circle == "Circle": - Circle_Axis = Current_Edge.Curve.Axis - Circle_Axis = Circle_Axis.normalize() - if Circle_Center_1 == None: - Circle_Center_1 = Current_Edge.Curve.Center - #Circle_Radius_1 = Current_Edge.Curve.Radius - else: - Circle_Center_2 = Current_Edge.Curve.Center - #Circle_Radius_2 = Current_Edge.Curve.Radius - if Edge_Line == "Line": - Line_Start = Current_Edge.Curve.StartPoint - Line_End = Current_Edge.Curve.EndPoint - Edge_Length = ( Line_End - Line_Start ).Length - except: - printError_msg("Not valid cylinder !") - #print_msg("Circle_Center_1 = " + str(Circle_Center_1)) - #print_msg("Circle_Center_2 = " + str(Circle_Center_2)) - Axis_A = Circle_Center_1 - Axis_B = Circle_Center_2 - Axis_dir = Axis_B - Axis_A - if m_extensionFaceNormal != 0.0: - Axis_dir_norm = Axis_B - Axis_A - Axis_dir_norm = Axis_dir_norm.normalize() - Axis_dir_norm = Axis_dir_norm.multiply(m_extensionFaceNormal) - Axis_E1 = Axis_B + Axis_dir_norm - Axis_E2 = Axis_A - Axis_dir_norm - else: - Axis_E1 = Axis_B + Axis_dir.multiply(0.1) - Axis_E2 = Axis_A - Axis_dir.multiply(0.9) - - - Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name) - - print_msg(str(Axis_User_Name) + result_msg ) + for Face in Face_list: + #Face = Face_list[0] + Face_Wire = Face.OuterWire + Face_Edges = Face_Wire.Edges + try: + Circle_Center_1 = None + Circle_Center_2 = None + for i in range(len(Face_Edges)): + Current_Edge = Face_Edges[i] + Edge_Info = Current_Edge.Curve + Edge_Type_Name = str(Edge_Info) + #print_msg("Edge_Type_Name = " + str(Edge_Type_Name)) + Edge_Circle = Edge_Type_Name[0:6] + Edge_Line = Edge_Type_Name[1:5] + if Edge_Circle == "Circle": + Circle_Axis = Current_Edge.Curve.Axis + Circle_Axis = Circle_Axis.normalize() + if Circle_Center_1 == None: + Circle_Center_1 = Current_Edge.Curve.Center + #Circle_Radius_1 = Current_Edge.Curve.Radius + else: + Circle_Center_2 = Current_Edge.Curve.Center + #Circle_Radius_2 = Current_Edge.Curve.Radius + if Edge_Line == "Line": + Line_Start = Current_Edge.Curve.StartPoint + Line_End = Current_Edge.Curve.EndPoint + Edge_Length = ( Line_End - Line_Start ).Length + except: + printError_msg("Not valid cylinder !") + #print_msg("Circle_Center_1 = " + str(Circle_Center_1)) + #print_msg("Circle_Center_2 = " + str(Circle_Center_2)) + Axis_A = Circle_Center_1 + Axis_B = Circle_Center_2 + Axis_dir = Axis_B - Axis_A + if m_extensionFaceNormal != 0.0: + Axis_dir_norm = Axis_B - Axis_A + Axis_dir_norm = Axis_dir_norm.normalize() + Axis_dir_norm = Axis_dir_norm.multiply(m_extensionFaceNormal) + Axis_E1 = Axis_B + Axis_dir_norm + Axis_E2 = Axis_A - Axis_dir_norm + else: + Axis_E1 = Axis_B + Axis_dir.multiply(0.1) + Axis_E2 = Axis_A - Axis_dir.multiply(0.9) + + + Axis_User_Name, axis = plot_axis(Axis_E1, Axis_E2, part, name) + + print_msg(str(Axis_User_Name) + result_msg ) elif Number_of_Edges >= 1: m_selEx = Gui.Selection.getSelectionEx(m_actDoc.Name) m_objs = [selobj.Object for selobj in m_selEx] @@ -4907,10 +5003,10 @@ def vertexToSketch(points,sketch): Projection2 = m_p2.projectToPlane(m_sketch.Placement.Base, m_rec2N) # Append the Projection geoList.append(Part.Point(Projection1)) - return_points.append(Part.Point(Projection2)) - m_sketch.addGeometry(geoList) + return_points.append(Part.Point(Projection2)) num_point = num_point + 1 + m_sketch.addGeometry(geoList) return num_point, return_points @@ -5320,12 +5416,13 @@ def line_toSketch(): if m_num_line != (num_edge + num_point): printError_msg(error_msg) return - createFolders('WorkPoints') - createFolders('WorkAxis') - for point in return_points: - plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints") - for edge in return_edges: - plot_axis(edge.StartPoint,edge.EndPoint, part="Part::Feature", name="Sketch_Proj", grp="WorkAxis") + if msg != 0: + createFolders('WorkPoints') + createFolders('WorkAxis') + for point in return_points: + plot_point(point, part="Part::Feature", name="Sketch_Proj", grp="WorkPoints") + for edge in return_edges: + plot_axis(edge.StartPoint,edge.EndPoint, part="Part::Feature", name="Sketch_Proj", grp="WorkAxis") # Refresh App.getDocument(str(m_actDoc.Name)).recompute() @@ -7587,7 +7684,8 @@ def plot_sectionSweep(): - All option (means if the trajectory selected is a compound, all sub wires will be used for the sweep) - Transition Option (Select a Transition option in case of trajectory with several wires; Transition can be: # 0 (default), 1 (right corners) or 2 (rounded corners).) - """ + """ + global verbose msg=verbose # Variable makeSolid = 1 to create solid if section is closed, 0 to create surfaces @@ -7600,11 +7698,11 @@ def plot_sectionSweep(): # will be processed allSubProfile=sweep_all -# if msg != 0: -# print_msg("makeSolid = " + str(makeSolid)) -# print_msg("isFrenet = " + str(isFrenet)) -# print_msg("transition = " + str(transition)) -# print_msg("allSubProfile = " + str(allSubProfile)) + if msg != 0: + print_msg("makeSolid = " + str(makeSolid)) + print_msg("isFrenet = " + str(isFrenet)) + print_msg("transition = " + str(transition)) + print_msg("allSubProfile = " + str(allSubProfile)) createFolders('WorkAxis') createFolders('WorkPoints') @@ -7649,13 +7747,30 @@ def plot_sectionSweep(): # Get the list of sections in case of first section is a Compound m_sections = [] - if isinstance(shape0,Part.Compound): - m_msg = "Compound Section Found !" + if isinstance(shape0,Part.Compound): + if msg != 0: + print_msg("Compound Section Found !") for wire in shape0.Wires: m_sections.append(Part.Wire([wire])) else: - m_msg = "NO Compound Found !" - m_sections.append(Part.Wire([shape0])) + if msg != 0: + print_msg("NO Compound Section Found !") + print_msg(str(getShapeType(shape0))) + try: + if len(shape0.Wires): + for wire in shape0.Wires: + m_sections.append(Part.Wire([wire])) + elif len(shape0.Edges): + for edge in shape0.Edges: + m_sections.append(Part.Wire([edge])) + elif len(shape0.Vertexes): + for vertex in shape0.Vertexes: + m_sections.append(Part.Wire([vertex])) + else: + print_msg("Not able to transform " + str(shape0) + "in wire !") + return + except: + pass if msg != 0: print_msg("03-Get the list of sections in case of first section is a Compound") @@ -7744,7 +7859,21 @@ def plot_sectionSweep(): for wire in shape3.Wires: m_sections3.append(Part.Wire([wire])) else: - m_sections3.append(Part.Wire([shape3])) + try: + if len(shape3.Wires): + for wire in shape3.Wires: + m_sections3.append(Part.Wire([wire])) + elif len(shape0.Edges): + for edge in shape3.Edges: + m_sections3.append(Part.Wire([edge])) + elif len(shape0.Vertexes): + for vertex in shape3.Vertexes: + m_sections3.append(Part.Wire([vertex])) + else: + print_msg("Not able to transform " + str(shape3) + "in wire !") + return + except: + pass # if msg != 0: # print_msg("m_sections3 = " + str(m_sections3)) @@ -8978,6 +9107,16 @@ def object_perpendicular(): def object_coplanar(): two_objects_are("coplanar") + + +def object_highlightCommon(): + """ + Compute the common parts between selected shapes: + Quick measurements between parallel faces and similarly placed objects + + Original code from : 'JMG, galou and other contributors' 10/2015 + Adapted to WF by : Rentlau_64 10/2015 + """ def object_clearance(): """ @@ -9026,6 +9165,7 @@ def object_angle(): NB: Normals of Planes will be used. """ + global verbose msg=verbose error_msg =\ @@ -9262,8 +9402,244 @@ def camera_orientation(): "Degrees Angle : " + str(math.degrees(pl.Rotation.Angle)) print_gui_msg(msg) - + + +def object_common(): + """Compute the common parts between selected shapes. + - Select at least two objects. + Original code from HighlightCommon.FCMacro + https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightCommon.FCMacro + Authors = 2015 Javier Martinez Garcia + """ + global verbose + msg=verbose + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + createFolders('WorkObjects') + error_msg =\ + "INCORRECT Object(s) Selection :\n" +\ + "You Must Select at least Two(2) Objects !" + result_msg = " : Common object created into WorkFeatures/WorkObjects/" + name = "Part" + part = "Part::Feature" + grp = "WorkObjects" + + try: + selectionObjects = Gui.Selection.getSelection() + if len(selectionObjects) < 2: + printError_msg(error_msg) + return + object_list = [] + for obj in selectionObjects: + object_list.append(obj) + for i, object_a in enumerate(object_list): + shape_a = object_a.Shape + label_a = object_a.Label + for object_b in object_list[(i + 1):]: + shape_b = object_b.Shape + label_b = object_b.Label + common = shape_a.common(shape_b) + if common.Volume > 1e-6: + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + intersection_object = FreeCAD.ActiveDocument.addObject(part) + intersection_object.Label = "Common (" +\ + str(label_a.encode('utf-8')) +\ + "-" +\ + str(label_b.encode('utf-8')) +\ + ")" + intersection_object.Shape = common + App.ActiveDocument.getObject( grp ).addObject(intersection_object) + intersection_object.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0) + object_a.ViewObject.Transparency = 80 + object_b.ViewObject.Transparency = 80 + + print_msg( str(intersection_object.Label.encode('utf-8')) + result_msg ) + print_msg("Volume of the intersection between " +\ + str(label_a.encode('utf-8')) +\ + " and " +\ + str(label_b.encode('utf-8')) +\ + " : " +\ + str(common.Volume) + "\n") + else: + print_gui_msg("No intersection between " +\ + str(label_a.encode('utf-8')) +\ + " and " +\ + str(label_b.encode('utf-8'))) + except: + printError_msg(error_msg) + + +def object_difference(): + """Compute the difference parts between selected shapes. + - Select two objects. + + Original code from HighlightDifference.FCMacro + https://github.com/FreeCAD/FreeCAD-macros/blob/master/Utility/HighlightDifference.FCMacro + Authors = 2015 GaĆ«l Ecorchard (Galou) + """ + global verbose + msg=verbose + msg=1 + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + createFolders('WorkObjects') + error_msg =\ + "INCORRECT Object(s) Selection :\n" +\ + "You Must Select Two(2) Objects !" + result_msg = " : Difference object created into WorkFeatures/WorkObjects/" + name = "Part" + part = "Part::Feature" + grp = "WorkObjects" + + try: + selectionObjects = Gui.Selection.getSelection() + + if len(selectionObjects) < 2: + printError_msg(error_msg) + return + object_list = [] + for obj in selectionObjects: + object_list.append(obj) + for i, object_a in enumerate(object_list): + shape_a = object_a.Shape + label_a = object_a.Label + for object_b in object_list[(i + 1):]: + shape_b = object_b.Shape + label_b = object_b.Label + shape_addition = shape_a.cut(shape_b) + if shape_addition.Volume < 1e-6: + print_gui_msg("No Cut of " +\ + str(label_a.encode('utf-8')) +\ + " by " +\ + str(label_b.encode('utf-8'))) + else: + print_msg("Volume of the red " +\ + str(label_a.encode('utf-8')) +\ + " Cut by " +\ + str(label_b.encode('utf-8')) +\ + " : " +\ + str(shape_addition.Volume) + "\n") + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + + added = FreeCAD.ActiveDocument.addObject(part) + added.Label = "Cut red (" +\ + str(label_a.encode('utf-8')) +\ + "-" +\ + str(label_b.encode('utf-8')) +\ + ")" + added.Shape = shape_addition + App.ActiveDocument.getObject( grp ).addObject(added) + added.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0) + + shape_removal = shape_b.cut(shape_a) + if shape_removal.Volume < 1e-6: + print_gui_msg("No Cut of " +\ + str(label_b.encode('utf-8')) +\ + " by " +\ + str(label_a.encode('utf-8'))) + else: + print_msg("Volume of the green " +\ + str(label_b.encode('utf-8')) +\ + " Cut by " +\ + str(label_a.encode('utf-8')) +\ + " : " +\ + str(shape_removal.Volume) + "\n") + + if not(App.ActiveDocument.getObject( grp )): + App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) + + removed = FreeCAD.ActiveDocument.addObject(part) + removed.Label = "Cut green (" +\ + str(label_b.encode('utf-8')) +\ + "-" +\ + str(label_a.encode('utf-8')) +\ + ")" + removed.Shape = shape_removal + App.ActiveDocument.getObject( grp ).addObject(removed) + removed.ViewObject.ShapeColor = (0.0, 0.5, 0.0, 1.0) + + object_a.ViewObject.Transparency = 80 + object_b.ViewObject.Transparency = 80 + except: + printError_msg(error_msg) + + +# object_a = FreeCAD.Gui.Selection.getSelectionEx()[0].Object +# object_b = FreeCAD.Gui.Selection.getSelectionEx()[1].Object +# shape_a = object_a.Shape +# shape_b = object_b.Shape +# label_a = object_a.Label +# label_b = object_b.Label +# shape_addition = shape_a.cut(shape_b) +# if shape_addition.Volume < 1e-6: +# FreeCAD.Console.PrintMessage('No addition from {} to {}\n'.format( +# label_a, label_b)) +# else: +# FreeCAD.Console.PrintMessage( +# 'Volume of the addition from {} to {}: {}\n'.format( +# label_a, label_b, shape_addition.Volume)) +# +# shape_removal = shape_b.cut(shape_a) +# if shape_removal.Volume < 1e-6: +# FreeCAD.Console.PrintMessage('No removal from {} to {}\n'.format( +# label_a, label_b)) +# else: +# FreeCAD.Console.PrintMessage( +# 'Volume of the removal from {} to {}: {}\n'.format( +# label_a, label_b, shape_removal.Volume)) +# +# if (shape_addition.Volume < 1e-6) and (shape_removal.Volume < 1e-6): +# FreeCAD.Console.PrintMessage('{} and {} have the same shape\n'.format( +# label_a, label_b)) +# +# added = FreeCAD.ActiveDocument.addObject('Part::Feature') +# added.Label = 'Addition ({} āˆ’ {})'.format(label_a, label_b) +# added.Shape = shape_addition +# added.ViewObject.ShapeColor = (1.0, 0.0, 0.0, 1.0) +# removed = FreeCAD.ActiveDocument.addObject('Part::Feature') +# removed.Label = 'Removal ({} āˆ’ {})'.format(label_b, label_a) +# removed.Shape = shape_removal +# removed.ViewObject.ShapeColor = (0.0, 0.5, 0.0, 1.0) +# +# object_a.ViewObject.Transparency = 80 +# object_b.ViewObject.Transparency = 80 + +def object_align2view_old(): + """ Align the object(s) selected to the actual view. + - Click first to select a Face of an object. + + The changed values are : Rotation Axis((X, Y, Z), Angle) + Same Euler angles : Yaw, Pitch, Roll + The Translation is not modifylace your object selected to the position ActiveView (camera) + + Original Code from Mario52 + """ + # revoir le point de rotation + msg=verbose + error_msg = "INCORRECT Object(s) Selection :\n\nYou Must at least one object !" + + try: + m_sel_list = Gui.Selection.getSelection() + pl = App.Placement() + pl.Rotation = FreeCADGui.ActiveDocument.ActiveView.getCameraOrientation() + for m_sel in m_sel_list: + m_Nameelement = m_sel.Name + if msg!=0: + print_msg("Object selected =" + str(m_Nameelement)) + pl.Base = m_sel.Placement.Base + App.ActiveDocument.getObject(m_Nameelement).Placement=pl + except: + printError_msg(error_msg) + def object_align2view(): """ Align the face of selected object(s) to the actual view Plane. @@ -9763,10 +10139,14 @@ class WorkFeatureTab(): self.m_tab.setCurrentIndex(3) #---------------------------------------------------------------- - # Create a Rotation object - self.rot = Rotation(self.ui) - # Create a Translation object - self.trans = Translation(self.ui) + # Create a Rotation object and connect + self.eventsRot = RotationEvents(self.ui) + # Create a Translation object and connect + self.eventsTrans = TranslationEvents(self.ui) + # Create a Parametric 2D Curve object and connect + self.events2D = ParametricCurve2DEvents(self.ui) + # Create a Parametric 3D Curve object and connect + self.events3D = ParametricCurve3DEvents(self.ui) ### Connect to functions self.connections_for_checkbox_toggled = { @@ -9803,6 +10183,7 @@ class WorkFeatureTab(): "button_object_axis" : "plot_centerObjectAxes", "button_twopoints_axis" : "plot_2PointsAxis", + "button_Npoints_axis" : "plot_NPoints_axis", "button_cylinder_axis" : "plot_cylinderAxis", "button_plane_axis" : "plot_planeAxis", "button_face_normal" : "plot_faceNormal", @@ -9849,6 +10230,8 @@ class WorkFeatureTab(): "button_dome_create" : "plot_centerDome", "button_letter" : "plot_letter", "button_revolve" : "plot_revolution", + "button_common" : "object_common", + "button_difference" : "object_difference", "button_sweep" : "plot_sectionSweep", "button_alignview" : "view_align", @@ -9874,7 +10257,7 @@ class WorkFeatureTab(): "button_align_faces" : "object_alignFaces", "button_align_edges" : "object_alignEdges", "button_joint_points" : "object_jointPoints", - "button_joint_faces" : "object_jointFaces", + "button_joint_faces" : "object_jointFaces", } self.connections_for_text_changed = { @@ -9983,117 +10366,6 @@ class WorkFeatureTab(): #print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) ) QtCore.QObject.connect(getattr(self.ui, str(m_key)), QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),globals()[str(m_val)]) - -#============================================================================== -# Define Connections to Translation Object -#============================================================================== - self.connections_for_ObjTrans_button_pressed = { - "ObjTrans_button_select" : "initialize", - "ObjTrans_button_select_start" : "select_start", - "ObjTrans_button_select_end" : "select_end", - "ObjTrans_button_reset" : "reset", - "ObjTrans_button_apply" : "application", - } - - self.connections_for_ObjTrans_combobox_changed = { - "ObjTrans_comboBox_start" : "select_start_type", - "ObjTrans_comboBox_end" : "select_end_type", - } - - self.connections_for_ObjTrans_checkbox_toggled = { - "ObjTrans_duplicate" : "copyFlag", - "ObjTrans_deepCopy" : "deepCopyFlag", - } - - self.connections_for_ObjTrans_spin_changed = { - "ObjTrans_spin" : "numberCopies", - } - - self.connections_for_ObjTrans_return_pressed = { - "ObjTrans_start_x" : "start_x_entered", - "ObjTrans_start_y" : "start_y_entered", - "ObjTrans_start_z" : "start_z_entered", - "ObjTrans_end_x" : "end_x_entered", - "ObjTrans_end_y" : "end_y_entered", - "ObjTrans_end_z" : "end_z_entered", - } -#============================================================================== -# Connect to Translation functions -#============================================================================== - for m_key, m_val in self.connections_for_ObjTrans_button_pressed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("pressed()"),getattr(self.trans, str(m_val))) - - for m_key, m_val in self.connections_for_ObjTrans_combobox_changed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.trans, str(m_val))) - - for m_key, m_val in self.connections_for_ObjTrans_checkbox_toggled.items(): - #print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) ) - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL(_fromUtf8("toggled(bool)")),getattr(self.trans, str(m_val))) - - - for m_key, m_val in self.connections_for_ObjTrans_spin_changed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("valueChanged(int)"),getattr(self.trans, str(m_val))) - - for m_key, m_val in self.connections_for_ObjTrans_return_pressed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("returnPressed()"),getattr(self.trans, str(m_val))) -#============================================================================== -# Define Connections to Rotation Object -#============================================================================== - self.connections_for_ObjRot_slider_changed = { - "ObjRot_horizontalSlider" : "angle_value_changed", - } - - self.connections_for_ObjRot_button_pressed = { - "ObjRot_button_select" : "initialize", - "ObjRot_button_select_center" : "select_center", - "ObjRot_button_select_axis" : "select_axis", - "ObjRot_button_select_angle" : "select_angle", - "ObjRot_button_reset" : "reset", - "ObjRot_button_apply" : "application", - } - - self.connections_for_ObjRot_combobox_changed = { - "ObjRot_comboBox_center" : "center_value", - "ObjRot_comboBox_axis" : "axis_value", - } - - self.connections_for_ObjRot_return_pressed = { - "ObjRot_lineEdit_angle" : "angle_value_entered", - } - -#============================================================================== -# Connect to Rotation functions -#============================================================================== - for m_key, m_val in self.connections_for_ObjRot_button_pressed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("pressed()"),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_combobox_changed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_slider_changed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("valueChanged(int)"),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_return_pressed.items(): - #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("returnPressed()"),getattr(self.rot, str(m_val))) -#============================================================================== self.m_dialog.show() m_text=str(myRelease) diff --git a/WorkFeature/WF_ObjParCurve2DEditGui_2015.py b/WorkFeature/WF_ObjParCurve2DEditGui_2015.py new file mode 100644 index 0000000..75fc49b --- /dev/null +++ b/WorkFeature/WF_ObjParCurve2DEditGui_2015.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjParCurve2DEditGui_2015.ui' +# +# Created: Tue Oct 27 06:56:40 2015 +# by: PySide UI code generator 4.11.2 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1039, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(10) + self.tableWidget.setRowCount(2) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setFrame(True) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "2D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric2D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a (t) ", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "X (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "Y (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "t min", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "t max", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "t step", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "Polar", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "Comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Circle", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "10 # Radius", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "a", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "a*cos(t)", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "a*sin(t)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "0", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) + diff --git a/WorkFeature/WF_ObjParCurve3DEditGui_2015.py b/WorkFeature/WF_ObjParCurve3DEditGui_2015.py new file mode 100644 index 0000000..c25afcd --- /dev/null +++ b/WorkFeature/WF_ObjParCurve3DEditGui_2015.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WF_ObjParCurve3DEditGui_2015.ui' +# +# Created: Tue Oct 27 06:56:50 2015 +# by: PySide UI code generator 4.11.2 +# +# WARNING! All changes made in this file will be lost! + +from PySide import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_Form(object): + def setupUi(self, Form): + Form.setObjectName(_fromUtf8("Form")) + Form.resize(1039, 460) + self.gridLayout_3 = QtGui.QGridLayout(Form) + self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) + self.groupBox_2 = QtGui.QGroupBox(Form) + self.groupBox_2.setObjectName(_fromUtf8("groupBox_2")) + self.gridLayout = QtGui.QGridLayout(self.groupBox_2) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) + self.button_load = QtGui.QPushButton(self.groupBox_2) + self.button_load.setObjectName(_fromUtf8("button_load")) + self.horizontalLayout.addWidget(self.button_load) + self.button_save = QtGui.QPushButton(self.groupBox_2) + self.button_save.setObjectName(_fromUtf8("button_save")) + self.horizontalLayout.addWidget(self.button_save) + spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget.setObjectName(_fromUtf8("tableWidget")) + self.tableWidget.setColumnCount(11) + self.tableWidget.setRowCount(3) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(10, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(0, 9, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 0, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 1, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 2, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 3, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 4, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 5, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 6, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 7, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 8, item) + item = QtGui.QTableWidgetItem() + self.tableWidget.setItem(1, 9, item) + self.gridLayout_3.addWidget(self.tableWidget, 1, 0, 1, 1) + self.groupBox = QtGui.QGroupBox(Form) + self.groupBox.setObjectName(_fromUtf8("groupBox")) + self.gridLayout_2 = QtGui.QGridLayout(self.groupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_addRow = QtGui.QPushButton(self.groupBox) + self.button_addRow.setObjectName(_fromUtf8("button_addRow")) + self.horizontalLayout_2.addWidget(self.button_addRow) + self.button_removeRow = QtGui.QPushButton(self.groupBox) + self.button_removeRow.setObjectName(_fromUtf8("button_removeRow")) + self.horizontalLayout_2.addWidget(self.button_removeRow) + spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.gridLayout_2.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) + self.gridLayout_3.addWidget(self.groupBox, 2, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4")) + self.comboBox_select = QtGui.QComboBox(Form) + self.comboBox_select.setEnabled(False) + self.comboBox_select.setMaximumSize(QtCore.QSize(0, 0)) + self.comboBox_select.setModelColumn(1) + self.comboBox_select.setObjectName(_fromUtf8("comboBox_select")) + self.horizontalLayout_4.addWidget(self.comboBox_select) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem2) + self.gridLayout_3.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) + self.button_quit = QtGui.QPushButton(Form) + self.button_quit.setObjectName(_fromUtf8("button_quit")) + self.horizontalLayout_3.addWidget(self.button_quit) + spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.gridLayout_3.addLayout(self.horizontalLayout_3, 4, 0, 1, 1) + + self.retranslateUi(Form) + QtCore.QMetaObject.connectSlotsByName(Form) + + def retranslateUi(self, Form): + Form.setWindowTitle(_translate("Form", "Form", None)) + self.groupBox_2.setTitle(_translate("Form", "3D Database", None)) + self.button_load.setToolTip(_translate("Form", "Click to load common and customs curves.", None)) + self.button_load.setText(_translate("Form", "Load", None)) + self.button_save.setToolTip(_translate("Form", "This will save customs curves only in your HOME directory under \"Parametric3D.dat\".", None)) + self.button_save.setText(_translate("Form", "Save", None)) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("Form", "2", None)) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("Form", "3", None)) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("Form", "Name", None)) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("Form", "a (t) ", None)) + item = self.tableWidget.horizontalHeaderItem(2) + item.setText(_translate("Form", "b (a, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(3) + item.setText(_translate("Form", "c (a, b, t) ", None)) + item = self.tableWidget.horizontalHeaderItem(4) + item.setText(_translate("Form", "X (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(5) + item.setText(_translate("Form", "Y (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(6) + item.setText(_translate("Form", "Z (a,b,c,t)", None)) + item = self.tableWidget.horizontalHeaderItem(7) + item.setText(_translate("Form", "t min", None)) + item = self.tableWidget.horizontalHeaderItem(8) + item.setText(_translate("Form", "t max", None)) + item = self.tableWidget.horizontalHeaderItem(9) + item.setText(_translate("Form", "t step", None)) + item = self.tableWidget.horizontalHeaderItem(10) + item.setText(_translate("Form", "Comments", None)) + __sortingEnabled = self.tableWidget.isSortingEnabled() + self.tableWidget.setSortingEnabled(False) + item = self.tableWidget.item(0, 0) + item.setText(_translate("Form", "Cylindrical helix", None)) + item = self.tableWidget.item(0, 1) + item.setText(_translate("Form", "10*0.05 #Vert. step", None)) + item = self.tableWidget.item(0, 2) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.item(0, 3) + item.setText(_translate("Form", "10 # Radius", None)) + item = self.tableWidget.item(0, 4) + item.setText(_translate("Form", "c*sin(t)", None)) + item = self.tableWidget.item(0, 5) + item.setText(_translate("Form", "c*cos(t)", None)) + item = self.tableWidget.item(0, 6) + item.setText(_translate("Form", "a*t", None)) + item = self.tableWidget.item(0, 7) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(0, 8) + item.setText(_translate("Form", "5*2*pi #5 circles", None)) + item = self.tableWidget.item(0, 9) + item.setText(_translate("Form", "0.01", None)) + item = self.tableWidget.item(1, 0) + item.setText(_translate("Form", "Circle with Teeth", None)) + item = self.tableWidget.item(1, 1) + item.setText(_translate("Form", "37", None)) + item = self.tableWidget.item(1, 2) + item.setText(_translate("Form", "1", None)) + item = self.tableWidget.item(1, 3) + item.setText(_translate("Form", "(a+cos(a*t)*2)*b", None)) + item = self.tableWidget.item(1, 4) + item.setText(_translate("Form", "c*cos(t)", None)) + item = self.tableWidget.item(1, 5) + item.setText(_translate("Form", "c*sin(t)", None)) + item = self.tableWidget.item(1, 6) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(1, 7) + item.setText(_translate("Form", "0", None)) + item = self.tableWidget.item(1, 8) + item.setText(_translate("Form", "2*pi", None)) + item = self.tableWidget.item(1, 9) + item.setText(_translate("Form", "0.01", None)) + self.tableWidget.setSortingEnabled(__sortingEnabled) + self.groupBox.setTitle(_translate("Form", "Row", None)) + self.button_addRow.setToolTip(_translate("Form", "Add a row into the table.", None)) + self.button_addRow.setText(_translate("Form", "add", None)) + self.button_removeRow.setToolTip(_translate("Form", "Remove a row from the table.", None)) + self.button_removeRow.setText(_translate("Form", "remove", None)) + self.button_quit.setText(_translate("Form", "Quit", None)) + diff --git a/WorkFeature/WF_ObjParCurveEdit_2015.py b/WorkFeature/WF_ObjParCurveEdit_2015.py new file mode 100644 index 0000000..c1309ac --- /dev/null +++ b/WorkFeature/WF_ObjParCurveEdit_2015.py @@ -0,0 +1,388 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 30 18:53:08 2015 + +@author: laurent +""" +import sys +import os.path +sys.path.append(os.path.dirname(__file__)) +#from ParCurve2DEditGui_2015 import Ui_Form +import WorkFeature.WF_ObjParCurve2DEditGui_2015 as EDIT_2D +import WorkFeature.WF_ObjParCurve3DEditGui_2015 as EDIT_3D +from WorkFeature.WF_Utils_2015 import read_text_into_list, write_text, append_text + +from PySide import QtCore, QtGui +import FreeCAD as App + +global myDatabase2DName +myDatabase2DName = "Parametric2D.dat" +global myDatabase3DName +myDatabase3DName = "Parametric3D.dat" + +#################################################################################### +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + + +index = ['Name', 'a' , 'b' , 'c' , 'X' , 'Y', 'Z', 'tmin', 'tmax', 'tstep'] +d1 = ["default",37, 1, '(a+cos(a*t)*2)*b', 'cos(t)*c', 'sin(t)*c', 0, 0., '2*pi', 0.01] +d2 = ["spiral", 5, 0, 10, 'c*sin(t)', 'c*cos(t)', 'a*0.05*t', .0, '20*pi', '0.05*pi'] +d3 = ["Seam of a tennis ball", '5', '5', '2*(sqrt(a*b))', 'a*(cos(t))+b*(cos(3*t))', + 'a*(sin(t))-b*(sin(3*t))', 'c*(sin(2*t))', 0., '2*pi', '0.05*pi'] + + +class Model(QtCore.QAbstractTableModel): + def __init__(self,tableWidget): + super(Model, self).__init__() + self.table = [] + #print "Initialize table " + str(self.table) + for i_row in range(tableWidget.rowCount()): + m_line = [] + for i_column in range(tableWidget.columnCount()): + #print str(i_column) + m_item = tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + #print str(tableWidget.item(i_row, i_column).text()) + m_line.append(str(tableWidget.item(i_row, i_column).text())) + + if len(m_line) != 0: + self.table.append(m_line) + #print str(self.table) + self.columnNumber = 0 + self.rowNumber = 0 + self.rowNumber = len(self.table) + if self.rowNumber != 0: + self.columnNumber = len(self.table[0]) + + + #print "self.rowNumber=" + str(self.rowNumber) + #print "self.columnNumber=" + str(self.columnNumber) + + def rowCount(self, index=QtCore.QModelIndex()): + return self.rowNumber + def columnCount(self, index=QtCore.QModelIndex()): + return self.columnNumber + def flags(self, index): + return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable + + def data(self, index, role): + if role == QtCore.Qt.DisplayRole: + return self.table[index.row()][index.column()] + def setData(self, index, role, value): + if role == QtCore.Qt.DisplayRole: + self.table[index.row()][index.column()] = value + + +class tableWidget(): + def __init__(self, database): + """ + parameter database : the name of database file without path. + """ + # Flag for common database + self.database_exists = False + self.database_name = None + self.curves_number = 0 + self.curves_loaded = False + # Flag for user database + self.database_user_exists = False + self.database_user_name = None + self.curves_user_number = 0 + self.curves_user_loaded = False + if database : + # Check if database file exists in current script directory + m_current = os.path.dirname(__file__) + m_dirs_to_look = [str(m_current), str(m_current) + "/Ressources",] + for m_dir in m_dirs_to_look: + self.database_path = m_dir + "/" + #print self.database_path + self.database_name = str(self.database_path) + str(database) + if os.path.exists(self.database_name): + self.database_exists = True + + # Check if database file exists in home directory + m_home = os.path.expanduser("~") + self.database_path = m_home + "/" + self.database_user_name = str(self.database_path) + str(database) + if os.path.exists(self.database_user_name): + self.database_user_exists = True + + self.header = None + + # This Object ill be created with the setupUi + #self.tableWidget = QtGui.QTableWidget(Form) + self.tableWidget = None +#=============================================================================== +# class tableWidget2D(EDIT_2D.Ui_Form, tableWidget): +# def __init__(self, database="Parametric2D.dat"): +# EDIT_2D.Ui_Form.__init__(self) +# tableWidget.__init__(self, database) +# self.header = "Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep" +# +# def setupUi(self, Form, combox): +# EDIT_2D.Ui_Form.setupUi(self,Form) +# tableWidget.setupUi(self, Form, combox) +#=============================================================================== + self.dialog = None + self.comboBox = None + self.connections_for_button_pressed = None + self.connections_for_combobox_changed = None + self.model = None + + def setupUi(self, Form, combox): + self.dialog = Form + self.comboBox = combox + self.updateModel() + + # Connect to functions + self.connections_for_button_pressed = { + "button_addRow" : "insertRowAfter", + "button_removeRow" : "removeSelectedRow", + "button_load" : "loadDatabase", + "button_save" : "saveDatabase", + "button_quit" : "widgetQuit", + } + self.connections_for_combobox_changed = { + "comboBox_select" : "selectCurve", + } + + for m_key, m_val in self.connections_for_button_pressed.items(): + #print_msg( "Connecting : " + str(getattr(self, str(m_key))) + " and " + str(getattr(self, str(m_val))) ) + QtCore.QObject.connect(getattr(self, str(m_key)), + QtCore.SIGNAL("pressed()"),getattr(self, str(m_val))) + + for m_key, m_val in self.connections_for_combobox_changed.items(): + #print_msg( "Connecting : " + str(getattr(self, str(m_key))) + " and " + str(getattr(self, str(m_val))) ) + QtCore.QObject.connect(getattr(self, str(m_key)), + QtCore.SIGNAL("currentIndexChanged(QString)"),getattr(self, str(m_val))) + self.curves_number = 0 + self.curves_user_number = 0 + if self.database_exists: + self.curves_number = self.loadDatabase(self.database_name) + print "Loaded from common database : " + str(self.curves_number) + " curves !" + if self.curves_number != 0: + self.curves_loaded = True + + if self.database_user_exists: + self.curves_user_number = self.loadDatabase(self.database_user_name) + print "Loaded from user database : " + str(self.curves_user_number) + " curves !" + if self.curves_user_number != 0: + self.curves_user_loaded = True + + + def updateModel(self): + self.model = Model(self.tableWidget) + self.comboBox.setModel(self.model) + self.comboBox.setModelColumn(0) + + + def insertRow(self,row): + self.tableWidget.insertRow(row) + + + def insertRowAfter(self): + self.insertRow(self.tableWidget.rowCount()) + + + def setRowCount(self,row): + self.tableWidget.setRowCount(row) + + + def removeSelectedRow(self): + m_index = self.tableWidget.currentRow() + self.removeRow(m_index) + + + def removeRow(self,row): + self.tableWidget.removeRow(row) + self.updateModel() + + + def removeLastRow(self): + self.removeRow(self.tableWidget.rowCount()-1) + + + def insertDataAfter(self, data, rowCount): + if isinstance(data,list) !=True: + print "Type of input data must be a 'list'" + return + m_rowNumber = len(data) + m_columnNumber = len(data[0]) + m_widget = self.tableWidget + for i in range(m_rowNumber): + self.insertRowAfter() + for j in range(m_columnNumber): + item = QtGui.QTableWidgetItem(str(data[i][j])) + m_widget.setItem(rowCount + i, j, item) + self.updateModel() + + + def insertData(self, data): + if isinstance(data,list) !=True: + print "Type of input data must be a 'list'" + return + #print str(data) + m_rowNumber = len(data) + m_columnNumber = len(data[0]) + m_widget = self.tableWidget + m_widget.setRowCount(m_rowNumber) + #m_widget.setColumnCount(columns) + #m_widget.setHorizontalHeaderLabels(['name', 'num','x','y','z']) + for i in range(m_rowNumber): + for j in range(m_columnNumber): + item = QtGui.QTableWidgetItem(str(data[i][j])) + m_widget.setItem(i, j, item) + self.updateModel() + + + def addCurveData(self,data): + m_curveList = self.selectAllCurves() + m_curveList.append(data) + self.insertData(m_curveList) + + + def loadDatabase(self, my_database_name): + try: + m_lines = read_text_into_list(my_database_name) + del m_lines[0] + m_data = [] + for m_line in m_lines: + d = eval(m_line) + #print str(d) + m_data.append(d) + + #print str(self.curves_number + self.curves_user_number) + if (self.curves_number + self.curves_user_number) == 0: + self.insertData(m_data) + else: + self.insertDataAfter(m_data,(self.curves_number + self.curves_user_number)) + + return len(m_data) + except: + message = "Unable to load the database file :" + str(my_database_name) + print message + App.Console.PrintError("\nERROR : " + message) + + + def saveDatabase(self, my_database_name = None): + if my_database_name in [None]: + my_database_name = self.database_user_name + + if (self.curves_number) != 0: + m_curves = self.selectAllCurvesFrom(self.curves_number) + else: + m_curves = self.selectAllCurves() + + #print str(m_curves) + write_text(filename=my_database_name, text=str(self.header)) + append_text(filename=my_database_name, text="") + for m_curve in m_curves: + append_text(filename=my_database_name, text=str(m_curve)) + + + def selectCurve(self, *argc): + #print str(*argc) + m_curveRow = self.tableWidget.row(self.tableWidget.findItems(str(*argc), QtCore.Qt.MatchExactly)[0]) + print str(m_curveRow) + m_line = [] + for i_column in range(self.tableWidget.columnCount()): + #print str(i_column) + m_item = self.tableWidget.item(m_curveRow, i_column) + if m_item is None: + break + else: + #print str(tableWidget.item(i_row, i_column).text()) + m_line.append(str(self.tableWidget.item(m_curveRow, i_column).text())) + #print str(m_line) + return m_line + + def selectAllCurvesFrom(self,row): + m_lineList = [] + m_total_rows = self.tableWidget.rowCount() + m_total_cols = self.tableWidget.columnCount() + for i_row in range(row, m_total_rows): + m_line = [] + for i_column in range(m_total_cols): + m_item = self.tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + m_line.append(str(self.tableWidget.item(i_row, i_column).text())) + m_lineList.append(m_line) + #print str(m_lineList) + return m_lineList + + + def selectAllCurves(self): + m_lineList = [] + m_total_rows = self.tableWidget.rowCount() + m_total_cols = self.tableWidget.columnCount() + for i_row in range(m_total_rows): + m_line = [] + for i_column in range(m_total_cols): + m_item = self.tableWidget.item(i_row, i_column) + if m_item is None: + break + else: + m_line.append(str(self.tableWidget.item(i_row, i_column).text())) + m_lineList.append(m_line) + #print str(m_lineList) + return m_lineList + + def widgetQuit(self): + self.dialog.hide() + + +class tableWidget2D(EDIT_2D.Ui_Form, tableWidget): + def __init__(self, database="Parametric2D.dat"): + EDIT_2D.Ui_Form.__init__(self) + tableWidget.__init__(self, database) + self.header = "Name, a (t), b (a,t), X (a,b,t), Y(a,b,t), Polar, tmin, tmax, tstep" + + def setupUi(self, Form, combox): + EDIT_2D.Ui_Form.setupUi(self,Form) + tableWidget.setupUi(self, Form, combox) + + +class tableWidget3D(EDIT_3D.Ui_Form, tableWidget): + def __init__(self, database="Parametric3D.dat"): + EDIT_3D.Ui_Form.__init__(self) + tableWidget.__init__(self, database) + self.header = "Name, a (t), b (a,t),c (a,b,t), X (a,b,c,t), Y (a,b,c,t), Z (a,b,c,t), tmin, tmax, tstep" + + def setupUi(self, Form, combox): + EDIT_3D.Ui_Form.setupUi(self,Form) + tableWidget.setupUi(self, Form, combox) + + +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + #app = QtGui.qApp + #app.exec_() + myNewWidget = QtGui.QDockWidget() + myNewWidget = QtGui.QWidget() + #myNewWidget.ui = Ui_Form() + myNewWidget.ui = tableWidget() + myNewWidget.ui.setupUi(myNewWidget) + #myNewWidget.ui.insertRow(1) + #myNewWidget.ui.insertRow(3) + #myNewWidget.ui.removeRow(3) + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.insertRowAfter() + myNewWidget.ui.removeLastRow() + #myNewWidget.ui.setRowCount(20) + mydata = [] + mydata.append(d1) + mydata.append(d2) + mydata.append(d3) + myNewWidget.ui.insertData(mydata) + myNewWidget.show() + + #mw = app.activeWindow() + #mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewWidget) + app.exec_() \ No newline at end of file diff --git a/WorkFeature/WF_ObjParCurve_2015.py b/WorkFeature/WF_ObjParCurve_2015.py new file mode 100644 index 0000000..f8a8e84 --- /dev/null +++ b/WorkFeature/WF_ObjParCurve_2015.py @@ -0,0 +1,545 @@ +# -*- coding: utf-8 -*- +""" +""" +from WorkFeature.WF_Utils_2015 import DefineAndConnectEvents +import WorkFeature.WF_ObjParCurveEdit_2015 as ParCurveEdit + +import FreeCAD +import FreeCADGui +import Draft +import Part + +from PySide import QtGui +from math import * + +#################################################################################### +# Classes +class Parametric(): + def __init__(self, gui): + """ A Parametric object + """ + self.debug = 1 + self.close = False + self.face = False + self.points = False + self.poly = True + self.bspline = False + self.bezier = False + self.meshes = False + self.polar = False + + self.dialog = None + self.combox = None + + self.gui = gui + + + def updateOptions(self): + pass + + + def ccloseState(self, flag): + if self.debug != 0: + print self.ccloseState.__name__ + self.close = flag + self.updateOptions() + + + def cfaceState(self, flag): + if self.debug != 0: + print self.cfaceState.__name__ + self.face = flag + self.updateOptions() + + + def cpointsState(self, flag): + if self.debug != 0: + print self.cpointsState.__name__ + self.points = flag + self.updateOptions() + + + def cpolyState(self, flag): + if self.debug != 0: + print self.cpolyState.__name__ + self.poly = flag + self.updateOptions() + + + def cbsplineState(self, flag): + if self.debug != 0: + print self.cbsplineState.__name__ + self.bspline = flag + self.updateOptions() + + + def cbezierState(self, flag): + if self.debug != 0: + print self.cbezierState.__name__ + self.bezier = flag + self.updateOptions() + + + def cmeshesState (self, flag): + if self.debug != 0: + print self.cmeshesState.__name__ + self.meshes = flag + self.updateOptions() + + + def cpolarState(self, flag): + if self.debug != 0: + print self.ccloseState.__name__ + self.polar = flag + self.updateOptions() + + + def plot_matriz(self, matriz): + """ Plot the dataset with different options. + """ + if self.debug != 0: + print self.plot_matriz.__name__ + + if self.points == True: + for point in matriz: + Draft.makePoint(point) + else: + curva = Part.makePolygon(matriz) + if self.bspline == True: + Draft.makeBSpline(curva,closed=self.close,face=False) + #Draft.makeBSpline(Draft.makeWire(curva,closed=self.close,face=False),closed=self.close,face=False) + if self.bezier == True: + Draft.makeBezCurve(curva,closed=self.close,face=False) + if self.poly == True: + Draft.makeWire(curva,closed=self.close,face=False) + if self.close == True and self.face == True: + Draft.upgrade(FreeCADGui.Selection.getSelection(),delete=True) + FreeCAD.ActiveDocument.recompute() + + + def edit(self): + """ Launch the edit panel curve. + """ + if self.debug != 0: + print self.edit.__name__ + + self.dialog.show() +# self.dialog.exec_() + +class ParametricCurve2D(Parametric): + """ A ParametricCurve2D object + """ + def __init__(self, gui): + Parametric.__init__(self, gui) + + self.name = self.gui.ParCurve_name_2 + self.la = self.gui.ParCurve_a_2 + self.lb = self.gui.ParCurve_b_2 + self.lx = self.gui.ParCurve_x_2 + self.ly = self.gui.ParCurve_y_2 + self.ltmin = self.gui.ParCurve_tmin_2 + self.ltmax = self.gui.ParCurve_tmax_2 + self.ltstep = self.gui.ParCurve_tstep_2 + + self.lpolar = self.gui.checkBox_polar_2 + self.cb_points = self.gui.checkBox_points_2 + self.cb_polyline = self.gui.checkBox_polyline_2 + self.cb_bspline = self.gui.checkBox_bspline_2 + self.cb_bezier = self.gui.checkBox_bezier_2 + + self.cb_close = self.gui.checkBox_close_2 + self.cb_face = self.gui.checkBox_face_2 + + self.cb_face.setEnabled(False) + self.close = False + self.face = False + + self.combox = self.gui.ParCurve_comboBox_2 + + self.dialog = QtGui.QDialog() + self.dialog.resize(280,110) + self.dialog.setWindowTitle("2D Parametric Curve Editor") + self.dialog.ui = ParCurveEdit.tableWidget2D(database="Parametric2D.dat") + self.dialog.ui.setupUi(self.dialog, self.combox) + + + def updateOptions(self): + if self.points: + self.cb_close.setEnabled(False) + self.cb_face.setEnabled(False) + self.cb_close.setChecked(False) + self.cb_face.setChecked(False) + self.close = False + self.face = False + else: + self.cb_close.setEnabled(True) + if self.poly and self.close: + self.cb_face.setEnabled(True) + else: + self.cb_face.setEnabled(False) + self.cb_face.setChecked(False) + self.face = False + + + def select_curve(self, *argc): + """ Selection of Curve by combo box. + """ + if self.debug != 0: + print self.select_curve.__name__ + + m_line = self.dialog.ui.selectCurve(*argc) + if self.debug != 0: + print str(m_line) + self.name.setText(str(m_line[0])) + self.la.setText(str(m_line[1])) + self.lb.setText(str(m_line[2])) + self.lx.setText(str(m_line[3])) + self.ly.setText(str(m_line[4])) + self.ltmin.setText(str(m_line[5])) + self.ltmax.setText(str(m_line[6])) + self.ltstep.setText(str(m_line[7])) + m_polar = int(str(m_line[8])) + if self.debug != 0: + print str(m_polar) + print str(self.lpolar) + self.polar = False + if m_polar == 1: + print str(m_polar) + self.polar = True + self.lpolar.setChecked(self.polar) + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + + msgBox = QtGui.QMessageBox() + + fa = str(self.la.text()) + fb = str(self.lb.text()) + fx = str(self.lx.text()) + fy = str(self.ly.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "x=" + str(fx) + print "y=" + str(fy) + + code = """ +def f(fa,fb,fx,fy,t): + value="" + msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + + return fxx, fyy + """ +#============================================================================== +# for i in range(int(d)): +# try: +# value="a" +# a=eval(fa) +# value="b" +# b=eval(fb) +# value="X" +# fxx=eval(fx) +# value="Y" +# fyy=eval(fy) +# #print fxx,fyy +# except ZeroDivisionError: +# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !") +# msgBox.exec_() +# except: +# msgBox.setText("Error in the formula of "+value+"() !") +# msgBox.exec_() +# +# if self.polar == True: +# matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0)) +# else: +# matriz.append(FreeCAD.Vector(fxx,fyy,0.0)) +# t+=intt +#============================================================================== + + if self.debug != 0: + print code + exec code + + for i in range(dmax): + fxx, fyy = f(fa,fb,fx,fy,t) + if self.polar == True: + matriz.append(FreeCAD.Vector(fxx*cos(fyy),fxx*sin(fyy),0.0)) + else: + matriz.append(FreeCAD.Vector(fxx,fyy,0.0)) + t+=intt + + self.plot_matriz(matriz) + + + def store(self): + """ Store the parametric curve. + """ + if self.debug != 0: + print self.store.__name__ + m_line = [] + m_items = [self.name, self.la, self.lb,self.lx, self.ly, + self.ltmin, self.ltmax, self.ltstep,] + + for m_item in m_items: + m_val = "" + m_val = m_item.text() + m_line.append(str(m_val)) + if self.polar: + m_line.append("1") + else: + m_line.append("0") + # append comment + m_line.append("") + print str(m_line) + self.dialog.ui.addCurveData(m_line) + + +class ParametricCurve3D(Parametric): + """ A ParametricCurve3D object + """ + def __init__(self, gui): + Parametric.__init__(self, gui) + + self.name = self.gui.ParCurve_name_3 + self.la = self.gui.ParCurve_a_3 + self.lb = self.gui.ParCurve_b_3 + self.lc = self.gui.ParCurve_c_3 + self.lx = self.gui.ParCurve_x_3 + self.ly = self.gui.ParCurve_y_3 + self.lz = self.gui.ParCurve_z_3 + self.ltmin = self.gui.ParCurve_tmin_3 + self.ltmax = self.gui.ParCurve_tmax_3 + self.ltstep = self.gui.ParCurve_tstep_3 + + self.combox = self.gui.ParCurve_comboBox_3 + + self.dialog = QtGui.QDialog() + self.dialog.resize(280,110) + self.dialog.setWindowTitle("3D Parametric Curve Editor") + self.dialog.ui = ParCurveEdit.tableWidget3D(database="Parametric3D.dat") + self.dialog.ui.setupUi(self.dialog, self.combox) + + + def select_curve(self, *argc): + """ Selection of Curve by combo box. + """ + if self.debug != 0: + print self.select_curve.__name__ + + m_line = self.dialog.ui.selectCurve(*argc) + if self.debug != 0: + print str(m_line) + self.name.setText(str(m_line[0])) + self.la.setText(str(m_line[1])) + self.lb.setText(str(m_line[2])) + self.lc.setText(str(m_line[3])) + self.lx.setText(str(m_line[4])) + self.ly.setText(str(m_line[5])) + self.lz.setText(str(m_line[6])) + self.ltmin.setText(str(m_line[7])) + self.ltmax.setText(str(m_line[8])) + self.ltstep.setText(str(m_line[9])) + + + def draw(self): + if self.debug != 0: + print self.draw.__name__ + msgBox = QtGui.QMessageBox() + fa = str(self.la.text()) + fb = str(self.lb.text()) + fc = str(self.lc.text()) + fx = str(self.lx.text()) + fy = str(self.ly.text()) + fz = str(self.lz.text()) + t = float(eval(str(self.ltmin.text()))) + tf = float(eval(str(self.ltmax.text()))) + intt = float(eval(str(self.ltstep.text()))) + + d = (tf + intt -t)/intt + dmax = int(d) + matriz = [] + + if self.debug != 0: + print "t=" + str(t) +" to " + str(tf) + " with step of " + str(intt) + print "d=" + str(d) + print "a=" + str(fa) + print "b=" + str(fb) + print "c=" + str(fc) + print "x=" + str(fx) + print "y=" + str(fy) + print "z=" + str(fz) + + code = """ +def f(fa,fb,fc,fx,fy,fz,t): + value="" + msgBox = QtGui.QMessageBox() + try: + value="a() = """+str(fa)+"""" + a="""+str(fa)+""" + value="b() = """+str(fb)+"""" + b="""+str(fb)+""" + value="c() = """+str(fc)+"""" + c="""+str(fc)+""" + value="X() = """+str(fx)+"""" + fxx="""+str(fx)+""" + value="Y() = """+str(fy)+"""" + fyy="""+str(fy)+""" + value="Z() = """+str(fz)+"""" + fzz="""+str(fz)+""" + except ZeroDivisionError: + msgBox.setText("Error division by zero in calculus of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + except: + msgBox.setText("Error in the formula of "+value+" for (t) = "+str(t)+" !") + msgBox.exec_() + return + return fxx, fyy, fzz + """ +#============================================================================== +# for i in range(int(d)): +# try: +# value="a" +# a=eval(fa) +# value="b" +# b=eval(fb) +# value="c" +# c=eval(fc) +# value="X" +# fxx=eval(fx) +# value="Y" +# fyy=eval(fy) +# value="Z" +# fzz=eval(fz) +# except ZeroDivisionError: +# msgBox.setText("Error division by zero in calculus of "+value+"() for t="+str(t)+" !") +# msgBox.exec_() +# except: +# msgBox.setText("Error in the formula of "+value+"() !") +# msgBox.exec_() +# matriz.append(FreeCAD.Vector(fxx,fyy,fzz)) +# t+=intv +#============================================================================== + + if self.debug != 0: + print code + exec code + for i in range(dmax): + fxx, fyy, fzz = f(fa,fb,fc,fx,fy,fz,t) + matriz.append(FreeCAD.Vector(fxx,fyy,fzz)) + t+=intt + self.plot_matriz(matriz) + + + def store(self): + """ Store the parametric curve. + """ + if self.debug != 0: + print self.store.__name__ + m_line = [] + m_items = [self.name, self.la, self.lb, self.lc, self.lx, self.ly, self.lz, + self.ltmin, self.ltmax, self.ltstep,] + for m_item in m_items: + m_val = "" + m_val = m_item.text() + m_line.append(str(m_val)) + # append comment + m_line.append("") + print str(m_line) + self.dialog.ui.addCurveData(m_line) + + +class ParametricCurve2DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Parametric Curve 2D object + self.parcurv2D = ParametricCurve2D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.parcurv2D) + + def defineEvents(self): + #====================================================================== + # Connect to 2D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "ParCurve_button_edit_2" : "edit", + "ParCurve_button_apply_2" : "draw", + "ParCurve_button_store_2" : "store", + } + self.connections_for_combobox_changed = { + "ParCurve_comboBox_2" : "select_curve", + } + self.connections_for_checkbox_toggled = { + "checkBox_close_2" : "ccloseState", + "checkBox_face_2" : "cfaceState", + "checkBox_points_2" : "cpointsState", + "checkBox_polyline_2" : "cpolyState", + "checkBox_bspline_2" : "cbsplineState", + "checkBox_bezier_2" : "cbezierState", + "checkBox_polar_2" : "cpolarState", + } + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = {} + + +class ParametricCurve3DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Parametric Curve 3D object + self.parcurv3D = ParametricCurve3D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.parcurv3D) + + def defineEvents(self): + #====================================================================== + # Connect to 3D functions + #====================================================================== + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "ParCurve_button_edit_3" : "edit", + "ParCurve_button_apply_3" : "draw", + "ParCurve_button_store_3" : "store", + } + self.connections_for_combobox_changed = { + "ParCurve_comboBox_3" : "select_curve", + } + self.connections_for_checkbox_toggled = { + "checkBox_close_3" : "ccloseState", + "checkBox_points_3" : "cpointsState", + "checkBox_polyline_3" : "cpolyState", + "checkBox_bspline_3" : "cbsplineState", + "checkBox_bezier_3" : "cbezierState", + } + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = {} + + +if __name__ == '__main__': + myObject = Parametric(None) \ No newline at end of file diff --git a/WorkFeature/WF_ObjRot_2015.py b/WorkFeature/WF_ObjRot_2015.py index c401413..2621a22 100644 --- a/WorkFeature/WF_ObjRot_2015.py +++ b/WorkFeature/WF_ObjRot_2015.py @@ -5,9 +5,11 @@ import sys if not sys.path.__contains__("/usr/lib/freecad/lib"): sys.path.append("/usr/lib/freecad/lib") -import __init__ as func +import WF_2015 as func +from WF_Utils_2015 import * + global myRelease -myRelease = "2105_02" +myRelease = "2015_10" import os.path import math @@ -21,33 +23,7 @@ from FreeCAD import Base from PySide import QtCore, QtGui -#################################################################################### -# Functions -def print_attributes(obj, doc=False): - """ Print all the attributes of this object and their value """ - __m_type = obj.__class__.__name__ - print '* Attributes print for '+ str(__m_type) + '*' - for names in dir(obj): - attr = getattr(obj,names) - if not callable(attr): - if doc: - print names,':',attr - else: - print names - -def print_methods(obj, doc=False): - """ Print all the methods of this object and their doc string""" - __m_type = obj.__class__.__name__ - print '\n* Methods print for '+ str(__m_type) + '*' - for names in dir(obj): - attr = getattr(obj,names) - if callable(attr): - if doc: - print names,':',attr.__doc__ - else: - print names - def plot_point(Vector_point, part="Part::Feature", name="CenterObjects", grp="Rot_Trans"): if not(App.ActiveDocument.getObject( grp )): @@ -1406,7 +1382,70 @@ try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s + +class RotationEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create a Rotation object + self.rot = Rotation(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.rot) + def defineEvents(self): + self.connections_for_slider_changed = { + "ObjRot_horizontalSlider" : "angle_value_changed", + } + self.connections_for_button_pressed = { + "ObjRot_button_select" : "initialize", + "ObjRot_button_select_center" : "select_center", + "ObjRot_button_select_axis" : "select_axis", + "ObjRot_button_reset" : "reset", + "ObjRot_button_apply" : "application", + } + self.connections_for_combobox_changed = { + "ObjRot_comboBox_center" : "center_value", + "ObjRot_comboBox_axis" : "axis_value", + } + self.connections_for_checkbox_toggled = {} + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = { + "ObjRot_lineEdit_angle" : "angle_value_entered", + } + +class TranslationEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create a Translation object + self.trans = Translation(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.trans) + + def defineEvents(self): + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = { + "ObjTrans_button_select" : "initialize", + "ObjTrans_button_select_start" : "select_start", + "ObjTrans_button_select_end" : "select_end", + "ObjTrans_button_reset" : "reset", + "ObjTrans_button_apply" : "application", + } + self.connections_for_combobox_changed = { + "ObjTrans_comboBox_start" : "select_start_type", + "ObjTrans_comboBox_end" : "select_end_type", + } + self.connections_for_checkbox_toggled = { + "ObjTrans_duplicate" : "copyFlag", + "ObjTrans_deepCopy" : "deepCopyFlag", + } + self.connections_for_spin_changed = { + "ObjTrans_spin" : "numberCopies", + } + self.connections_for_return_pressed = { + "ObjTrans_start_x" : "start_x_entered", + "ObjTrans_start_y" : "start_y_entered", + "ObjTrans_start_z" : "start_z_entered", + "ObjTrans_end_x" : "end_x_entered", + "ObjTrans_end_y" : "end_y_entered", + "ObjTrans_end_z" : "end_z_entered", + } #################################################################################### class ObjectRotationTab(): def __init__(self): @@ -1438,12 +1477,11 @@ class ObjectRotationTab(): self.ui.setupUi(self.m_dialog) self.m_tab.setCurrentIndex(i+1) - # Create a Rotation object - self.rot = Rotation(self.ui) # Create a Translation object self.trans = Translation(self.ui) - # Connect to functions + # Create a Rotation object and connect + self.eventsRot = RotationEvents(self.ui) self.connections_for_ObjTrans_button_pressed = { @@ -1476,57 +1514,16 @@ class ObjectRotationTab(): "ObjTrans_end_z" : "end_z_entered", } - self.connections_for_ObjRot_slider_changed = { - "ObjRot_horizontalSlider" : "angle_value_changed", - } - - self.connections_for_ObjRot_button_pressed = { - "ObjRot_button_select" : "initialize", - "ObjRot_button_select_center" : "select_center", - "ObjRot_button_select_axis" : "select_axis", - "ObjRot_button_reset" : "reset", - "ObjRot_button_apply" : "application", - } - - self.connections_for_ObjRot_combobox_changed = { - "ObjRot_comboBox_center" : "center_value", - "ObjRot_comboBox_axis" : "axis_value", - } - - self.connections_for_ObjRot_return_pressed = { - "ObjRot_lineEdit_angle" : "angle_value_entered", - } - + self.connections_for_button_clicked = { "button_quit" : "quit_clicked", } for m_key, m_val in self.connections_for_button_clicked.items(): - #func.print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) ) + #print_msg( "Connecting : " + str(m_key) + " and " + str(m_val) ) QtCore.QObject.connect(getattr(self.ui, str(m_key)), QtCore.SIGNAL("clicked()"),getattr(self,str(m_val))) - - # Connect to Rotation functions - for m_key, m_val in self.connections_for_ObjRot_button_pressed.items(): - #func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("pressed()"),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_combobox_changed.items(): - #func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_slider_changed.items(): - #func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("valueChanged(int)"),getattr(self.rot, str(m_val))) - - for m_key, m_val in self.connections_for_ObjRot_return_pressed.items(): - #func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.rot, str(m_val))) ) - QtCore.QObject.connect(getattr(self.ui, str(m_key)), - QtCore.SIGNAL("returnPressed()"),getattr(self.rot, str(m_val))) - + # Connect to Translation functions for m_key, m_val in self.connections_for_ObjTrans_button_pressed.items(): #func.print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.trans, str(m_val))) ) diff --git a/WorkFeature/WF_Utils_2015.py b/WorkFeature/WF_Utils_2015.py new file mode 100644 index 0000000..a347b75 --- /dev/null +++ b/WorkFeature/WF_Utils_2015.py @@ -0,0 +1,238 @@ +# -*- coding: utf-8 -*- +""" +""" +import os.path + +from PySide import QtCore +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + _fromUtf8 = lambda s: s + + +############################################################################### +# Functions +def print_attributes(obj, doc=False): + """ Print all the attributes of this object and their value """ + __m_type = obj.__class__.__name__ + print '* Attributes print for '+ str(__m_type) + '*' + for names in dir(obj): + attr = getattr(obj,names) + if not callable(attr): + if doc: + print names,':',attr + else: + print names + +def print_methods(obj, doc=False): + """ Print all the methods of this object and their doc string""" + __m_type = obj.__class__.__name__ + print '\n* Methods print for '+ str(__m_type) + '*' + for names in dir(obj): + attr = getattr(obj,names) + if callable(attr): + if doc: + print names,':',attr.__doc__ + else: + print names + + +def write_text(filename=None, text=None): + """ + Write the text into an ASCII file. + + Return True if success, false if not. + + *filename* : (string) full path name. + + *text* : (string) the text to write. + """ + if filename != None and text != None: + try: + __m_f=open(filename,'w') + __m_f.write(text) + __m_f.close() + return True + except: + print "\nERROR : The file " + str(filename) + \ + " cannot be opened in write mode !" + return False + else: + return False + + +def append_text(filename=None, text="" ): + """ + Print/Add text either on screen or on at the end of an existing ASCII text file. + + *filename* : (string) full path name. + + *text* : (string) the text to add at the end of the file. + """ + if text.__class__.__name__ != 'str': + return None + if filename and os.path.exists(filename): + try: + __m_f=open(filename,'r+') + __m_f.readlines() + __m_f.write(text+'\n') + __m_f.close() + except: + print "\nERROR : The file " + str(filename) + \ + " can not be opened for append mode !" + return False + else: + print text +'\n' + +def read_text_into_list(filename): + """ + Read the complete ASCII file *filename* (if possible) into a unique + list of strings and return the list + (or None in case of error). + + Controls are done on *filename*. + + *filename* : (string) full path name. + """ + if filename and os.path.exists(filename): + try: + __m_f=open(filename,'r') + # read the complete ASCII file if possible into a unique list of strings + try: + #m_strings = __m_f.readlines() + m_strings = __m_f.read().splitlines() + except: + __m_f.close() + print "\nERROR : The file " + str(filename) + \ + " cannot be fully read !" + return None + finally: + __m_f.close() + __m_f.close() + return m_strings + except: + print "\nERROR : The file " + str(filename) + \ + " cannot be opened in read mode !" + return None + else: + if os.path.exists(filename) == False: + print "\nERROR : " + str(filename) + " not a valid file !" + return None + + +def read_text(filename): + """ + Read the complete ASCII file *filename* (if possible) into a unique + string and return the string + (or None in case of error). + + Controls are done on *filename*. + + *filename* : (string) full path name. + """ + if filename and os.path.exists(filename): + try: + __m_f=open(filename,'r') + # read the complete ASCII file if possible into a unique string + try: + m_string = __m_f.read() + except: + __m_f.close() + print "\nERROR : The file " + str(filename) + \ + " cannot be fully read !" + return None + finally: + __m_f.close() + __m_f.close() + return m_string + except: + print "\nERROR : The file " + str(filename) + \ + " cannot be opened in read mode !" + return None + else: + if os.path.exists(filename) == False: + print "\nERROR : " + str(filename) + " not a valid file !" + return None + + +############################################################################### +# Classes +class DefineAndConnectEvents(): + def __init__(self, ui, obj): + """ + Definition of communications between a Gui and an python Object. + This class is a base class and must be derived like : + + class ParametricCurve2DEvents(DefineAndConnectEvents): + def __init__(self,ui): + self.ui = ui + # Create Parametric Curve objects + self.parcurv2D = ParametricCurve2D(self.ui) + DefineAndConnectEvents.__init__(self, self.ui, self.parcurv2D) + + + def defineEvents(self): + #============================== + + # Definition of connections + + # by type of actions on widgets of the Gui. + #============================== + self.connections_for_button_pressed = { + "ParCurve_button_edit_2" : "edit", + "ParCurve_button_apply_2" : "draw", + "ParCurve_button_store_2" : "store", + } + ... + """ + if self.__class__ is DefineAndConnectEvents: + raise Exception("Direct construction not allowed !\nSee doc of the Class.") + self.ui = ui + self.obj = obj + self.defineEvents() + self.connectEvents() + + def defineEvents(self): + """ + Definition of connections by type of actions on widgets of the Gui. + """ + self.connections_for_slider_changed = {} + self.connections_for_button_pressed = {} + self.connections_for_combobox_changed = {} + self.connections_for_checkbox_toggled = {} + self.connections_for_spin_changed = {} + self.connections_for_return_pressed = {} + + def connectEvents(self): + for m_key, m_val in self.connections_for_slider_changed.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL("valueChanged(int)"),getattr(self.obj, str(m_val))) + + for m_key, m_val in self.connections_for_button_pressed.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL("pressed()"),getattr(self.obj, str(m_val))) + + for m_key, m_val in self.connections_for_combobox_changed.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL(_fromUtf8("currentIndexChanged(QString)")),getattr(self.obj, str(m_val))) + + for m_key, m_val in self.connections_for_checkbox_toggled.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL(_fromUtf8("toggled(bool)")),getattr(self.obj, str(m_val))) + + for m_key, m_val in self.connections_for_spin_changed.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL("valueChanged(int)"),getattr(self.obj, str(m_val))) + + for m_key, m_val in self.connections_for_return_pressed.items(): + #print_msg( "Connecting : " + str(getattr(self.ui, str(m_key))) + " and " + str(getattr(self.obj, str(m_val))) ) + QtCore.QObject.connect(getattr(self.ui, str(m_key)), + QtCore.SIGNAL("returnPressed()"),getattr(self.obj, str(m_val))) + +if __name__ == '__main__': + myObject = DefineAndConnectEvents(None, None) \ No newline at end of file diff --git a/start_WF.py b/start_WF.py new file mode 100644 index 0000000..59ab6c7 --- /dev/null +++ b/start_WF.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +import sys +import os.path + +try: + # try import + import WorkFeature.WF_2015 as WF +except: + # get the path of the current python script + m_current_path = os.path.realpath(__file__) + m_current_path = os.path.dirname(m_current_path) + # check if this path belongs to the PYTHONPATH variable and if not add it + if not sys.path.__contains__(str(m_current_path)): + sys.path.append(str(m_current_path)) + # retry import now + import WorkFeature.WF_2015 as WF + +WF.myDialog = WF.WorkFeatureTab()