From 90094dc57ea5f5f71389c351e5eb3c2597cef106 Mon Sep 17 00:00:00 2001 From: Rentlau <6ckc7kc> Date: Wed, 30 Mar 2016 07:22:08 +0200 Subject: [PATCH] Release of 2016-03-29 : Modification: "Point 1/2" TAB and "Point 2/2" TAB gathered into sub tabs of one "Point" TAB idem for "Axis" and "Plane" TABs. Addition: into "Point"/"Point2/3" TAB : Object(s) Mass Center Point Object(s) N Point(s) into "Point"/"Point3/3" TAB : Load Points Save Points into "Axis"/"Axis3/3" TAB : Object(s) N Axes(s) Object(s) 3 Axes(s) into "Modif." TAB : Align Main Axis nto "Plane"/"Plane1/2" TAB : Plane=(N Points) Plane=(2 Points) --- WorkFeature/Doc/WF_releasesDocumentation.pdf | Bin 2701728 -> 3082250 bytes WorkFeature/Icons/WF_BeamMiterCut.svg | 558 ++ WorkFeature/Icons/WF_NpointsPlane.svg | 1034 ++++ WorkFeature/Icons/WF_object3Axes.svg | 629 +++ WorkFeature/Icons/WF_objectAlignMainAxis.svg | 450 ++ .../Icons/WF_objectCenterMassPoint.svg | 613 ++ WorkFeature/Icons/WF_objectNAxes.svg | 643 +++ WorkFeature/Icons/WF_objectNPoints.svg | 717 +++ WorkFeature/Icons/WF_pointsSetLoad.svg | 1548 +++++ WorkFeature/Icons/WF_pointsSetSave.svg | 1603 ++++++ WorkFeature/Icons/WF_twoPointsPlane.svg | 892 +++ WorkFeature/Icons/WF_wire.svg | 585 ++ WorkFeature/Ui/WFGui_2015.py | 2173 +++---- WorkFeature/Ui/WFGui_2015.ui | 5015 +++++++++-------- WorkFeature/Utils/WF_Utils.py | 238 + WorkFeature/Utils/WF_points_set.py | 232 + WorkFeature/Utils/__init__.py | 0 WorkFeature/WFGui_2015.py | 2173 +++---- WorkFeature/WF_2015.py | 1211 +++- WorkFeature/WF_ObjRot_2015.py | 100 +- WorkFeature/WF_Utils_2015.py | 5 + 21 files changed, 16063 insertions(+), 4356 deletions(-) create mode 100644 WorkFeature/Icons/WF_BeamMiterCut.svg create mode 100644 WorkFeature/Icons/WF_NpointsPlane.svg create mode 100644 WorkFeature/Icons/WF_object3Axes.svg create mode 100644 WorkFeature/Icons/WF_objectAlignMainAxis.svg create mode 100644 WorkFeature/Icons/WF_objectCenterMassPoint.svg create mode 100644 WorkFeature/Icons/WF_objectNAxes.svg create mode 100644 WorkFeature/Icons/WF_objectNPoints.svg create mode 100644 WorkFeature/Icons/WF_pointsSetLoad.svg create mode 100644 WorkFeature/Icons/WF_pointsSetSave.svg create mode 100644 WorkFeature/Icons/WF_twoPointsPlane.svg create mode 100644 WorkFeature/Icons/WF_wire.svg create mode 100644 WorkFeature/Utils/WF_Utils.py create mode 100644 WorkFeature/Utils/WF_points_set.py create mode 100644 WorkFeature/Utils/__init__.py diff --git a/WorkFeature/Doc/WF_releasesDocumentation.pdf b/WorkFeature/Doc/WF_releasesDocumentation.pdf index a857023a91b3c2d76707f9cc573e9576307abf33..d87fe8c128035b19c0e85eadfed465c54fc95178 100644 GIT binary patch delta 511452 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 @zVc2fZ&3|qi^-kshdB; zdxEd$d;k8Od!?5N2`#389x6fEtC3dLst@xt@hV?AqLW{TwO6IjrszYinFb#31@WsDBd+n~^32_$@-+yPK_br1n0<_|YD zE_7{P{V6gB=?)kl-8GF?|7JK`SZ`XlYHPMN+Ple1J*}yQ96#r@LQX+(@0JF4=LIuR zT~hMw+kyyx9s!CUb%^%LZJnZrxhmQhNY{#)e^z+2)Ew0F)drV+x?uOQ6?~#Uup=$? zjy&}HtKXa@KVy`6yvxMeJKI_xvE=66VJDcH?fuSrcD_W=+kjpr^LjokMx?mk!HEOk zJxjt-;qXw?Hu+-~wcsnLfbr`F$5p!PlG~{3X9?d{2VLPdxyfH;q$5g`43+i!KpWo0 znsf8EvHTq+p-{n^E&1?c#`X5M1B;sJUJl?r zIrg_Z&)+lDfX$}Ho);f!LEdNTzPzcsj>TU5af*;yHQDDUc=1+nQ4rQY=!<$m-4TA- zRg*RzQ`~sKz;OyHRlO*nmLfJ}3EyM&R=bqOuI<;Jn5}43FbPP#QGRBuN?M1o+*^#k z$eMTk<}G`?+=m4gGE|>@O-yZjGpS$T(J~$QdPe3kU0^}6Jnp0I=T&xU+@A}L8X5kYnJOgR5Hk`TqXZ2p)=zphpjWBn9_PB~ z-qdDHdk0Vv`auO3+md!)@1E2k`b&E~daftf0nrETnEE}wsFm80cW{@ZC;C7+&B50L zz)u;TdSjUC58^}g@w8g1JuZq1-M3>NOZD#~eta;GxbYBr>-x)rQd`#x65*F3w=7kr zS9qP8I~tO!+7r}@-hnm%sPhyPJXrmG&L4%S(dG_XG0Hi(&7xO? ztxWLnuI&?eUC0?Tk6Wwep3sZed+V(eA&fRjIutT;l)TYdHKIPvv`1}P7Or+gCvPAH ziFkjVzCqnrZYzi}Mie0e?yGQZ3IV2)B=$Z(#YP;*(|kF?+f|RKL|-aoJILUbe#4f) z8V&}1EgfjlVZLCyDMWMmjJmTC`hd5&Bq;Ffg8`5Ry>M(D-aushQclOEyHp;6Y}tQO zlKEzpdh^uYC^zc*N$Gcf)a+#5Mu=z9pt@8$1sGnn-8SOVJTx8v@Z>59>#M7xe<{bG zHxWjqW~9=8r)|HuYkJhu?5T9Z%0(4YN`~lJ8 zgfyS4kr!{KEn!PHrYr{qth3b(CEN^K=gr+|=482e-J)tBmq4->@U)QuJ{?^+;cA7nvx z)AI?F>A2)oEe6CR9w}3;L|q+sQA7zuLJ@|F<17Tk!a`|Twt!~;ZtH_+ZX%~CxW9(s z7@BGJ+h=swh|Nk>R^@mE#m3qd9OcQn9K!+NsB{I0>K*98r%+TSy0f}XcehiQMN-cK zGb9ysDqp9JH$puK7ZrrN=e|L80H7ETqD5DK<6N_FLCePuHlJ@}9ro??zaMO-1Edy9 zm@@N!Tg|(B!8eYX8|lXRn^a(Vq*k^$v8*TjQZZNUGY8SJqWQFa8tc-Va3;|4-OwDG zNfk|v)6`c?P)NM2Mw$&P?JFOv6N^?w%{`70mTWJhPMS%%9)&{?Xq8h^KnN#`3lNF+ zg*WhdMtD$1&DQ!~M@Ll3$21>iL2a#d z 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�FyFV+p`Y-E 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

x9Tgce2QOd+uS1rl3Zg!>`~?RA|6)Cp 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 z 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 @0l`2185Jv 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⁡)VZ#PkWoVv3WeS{bCUp*+zyEAn1ClJ!> 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�h9G^2V}?PT$sJwaW8aY!LP){P#`gz_3Mvv9+X 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 W-@ap?IKhN);biLc>5Cs-pZYIhCNq2h delta 157959 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

s_Y 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Þ=rnPPR7_Vat%SNfF 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 z z!Jyh#QrF^SOZ?tnS*Bk#zQ~rm=1}@DNgTJ2`Mz;8qLJW_UT!7LZ3%E(we9Q`EWqm_ z!($n+6(JXLP^^@(6RLewd_WVSc}!@>CCz-$ipAa};16ME(BU@6l5j)P3;#MAb1<5! zDD`4p7X5pPhpe|-4uu(;<0;oz!%bkzB?eF7pG)vJ%O;CD=I^!T(--Y%IMz4Y#^-+b%PqqP1k48>Z2Hn~)2>)YHJZAAfqB$ZgXz}7lF8cm0nzxPCCEq-n zSjOi;V{&u0>BH1b;z~PEIGLe8o6h<_XcA_P(`0Cl-`;WI>LD05+7VcnAa0zeh(_|u zJ$Y2K?&#w!3YMNqU|~^poPd(eTFVdUo?md*dVANB`jE<;JOF=ArX%L_`zCM8@ENA~ zD!qnc(l3K1)Apy$OQHNO>|Fxc0!8ZR?uaz)s@ma&4_LDf`IXu{GS{sv07y*9J{I{x zmJQ)uZ-PoK0iw5zyJ0bU%iVb8{aR@i1-c%8@L7^I&N?ju4r&~j;(ByS8rH(NkzUtf z(yxQwq!SCOVI)S?T~`K1<|`QmrYVhdsgtGuNH5Q|Zk1k`qPQ}pf)5|)j-jO zN6Sz4C=KMpcacr;X{kpQ+dW*GOUigiBrh@PeqHuk<51bhBXq@pO6QK)**{+<{0wv; zMR`51fpQlx*0FWSLN$e>GQ4baJZ`6fHsvymIIAPUELXYzc8fm^UpTooJqaQkmu9!v z3I6;paN+|b<{Hj_jBaQDSo&TXIX7MWinZ+M>v{6S&4;a~ zNifesWCD(aXL3OcoeY8M@*V{obsit4I~x)Ye6ZUfcr&U_DJFI6j#*fOeOTviWtC=t zSv#6pYQCVd^*3kj{ zhnS`N87(Dlw!X`jyOKJ;zlm74!OAf<-z~z0=kjej=8%&qLp0QNx!&~K;^8noH(LTR za$&?9o?$bOj!S66&s(1>T1IO>w=4ADo)P;Ah+o{ejP7jYE zW>isAGC%7F%f20>Ij!5DRi$P@F_@{OP%gDBOIJw*V0Gn;PVobhLvK|x_G{sDqe^Pb z?%+Ifw4TPn>q&j8<$oG($K{HPq#&Rg|1)2_t7f)IGm+OxtqQHcLa>acL+wA~vd`GL z>neXa*M+FD+7tGS^r_bWmAkFH9jEv(MQ+PI=bS#o@p+e>jv1$)3SNgJshmRp%X5L9 zk!6-1V}6*mU+=3OJUu&GGZw%-Gbpb!#0_3gzQC*)ou_Hu9r2;y<-$`H9EJhXTprHb zN+jwXHo{c#yrSuUcsT~Lt6JQTOoMTNsrkuli~brED>VA@Te3L}T2sV6vo)g|I)9R_zIuB|v!C{Azfa-OwPmJr zXjcDT*juiL_GxTx-)VQnu52VogM0%t^cX1N*CL(9x6wSYzzRHyyhhEL(Nig zFDQ5j@r`KT+SQ|IEBnlLS~6Ddk>n`a4SJ-HPcy7em7{L(5s!JAJX7VzCwWt#+HM%D z7umP6)1b*GI$ooo+$M_5QX+tNNm!;jP1rfK<7tAEv?$S*Cxw-8qTsY#Uh0ZA*r5xM!XHT|Yzg!1vuNeR3<3s#I(Af;BN`mJjuF0xvSO?>jKnw}uGI z<37)P|H@_pSFifa`uV8hE)<_am?*YsKrdKl*QD!H`vONJ2|x8-;3+G^@IJOgOER|g z?WI54OW{<7X)Gb}?i-*Rh9;p;2Fpglu$9X?;Kb}1=$0fyl}ueic6vjZG5~MQ*#idW_sMsn1XQ;T6j85Q zFt;6w-YB8{cKmn6$t;$4EIy(#|L?=X@`qOs-uv06%o)x>3G)?*&Z&xU`R`#X(N;Ra zMgBgIESme_Yn3p*&4dxj7qJ1Qm_u{)3_s&WiSpvgCR-NV`_Pag8wX{2fA?`CD07KW zKVia1&(C7!bxeTPp~fzS+X#m10$T88bCtC$N%=av>^%Mbhlj$&VR?hho|+u0;$e$q z+U;MV+bz!A4`t)UW^f4=AxDa@Chhn;LA^S-n%ptSwyaaV9!&)KcYh=@aPI4i>#H6D ziCbkLFuFs#!fIJGe6l?*h`MvqTM+-NvvKM7#Wn4|pEZE;OsFf)l*v5>A+@4Rqf#;A zCmNl6%L26LH*e>$25Z`FGiTZ4|5&QUE`p)ME_ghfx`rHS*B@>&8SOysxu^R-ylp|#*fXGs6;mW5v||W zKU!EdN%c?jCOS7s^e{x@)QAs-(oXDERNQftY-RwkFNdrA`KXD^<|+8z;oyho_%}nI z+4D1(V#Ve(BV+sinj$$L@N$x&=9PL{%v6j;Z4coc`ox;q;#k85-`IERV?}uTy4SE^ zR=10W@$-m2SZ+w4V_09IrSHH_yvDFrQKLdp@}0Th#C~~*TE|2D2!bAuf4UD>l#syV z73KwC@ed4ZWfy56*Bje(-1=2X1a(M96Wf z3k#Z~09I6xUXk|^dRP8SoKz+~yYwR6Pmd@9gCl`fiW!l|TOThC;CT*sz@a05xdJGF z=ja!`(annIzOx&VXG4{sLxe=?Jq-M~KbaVaoIG&_nQ?L5`QYlJEE$A2*Fx?%`W%Y5 z{zAp-Upc=K<3vhc$Fbxm#4VNBRI?OFA;gJ8nc^}FKgK0M6{_DBF(M*x#fg@r#?7== zR7aFT(G#OBKumEC(2t2b79fS{4X6rABCajybsT?d3IcE3a!Gk26*3L-_pr8*ur>r} zSQ{crL86!)h$t~&1eYkW#RBvRfiIC+9+@F=y!aC>l+zNl1VZ40;@N`gvEt6Mi4u*3 zkO^^_KYwPY;$&x|;$h?cZt`4Lqv6eXfVERt6yEJ05j9DLzSnafCC;mG;`UZDig5k zm*hn!@qLV-Q5Z8?QquWJFB96ghj~-)`z~t8aWJ2e3ntHR*>B2E?-nySdMS(A~bbdb#6$r-kwc@&|9PFr4 zl_T_R!29zWoF?^AqgvJizWElm`G?=L<_u~@Smgyw*pdJ$T- z$H-}~HFrOJxZtI%;UB6oMd9qovo?@!H+*CL|Mw7q3SWPRH7bF&tX;M3=FBbFbtR5f zEW`(b6LLS|e@R2>7m%%fUYH{c3SN%XbFdu;zM3{9(9v(nIC}vy#D!Duo<4b*53$OO zZr9D8f@PEjv|-XbC*i-Yz7-gsJ4LL3|7DMv*J+G@anrUC|I~j8W>-FpKZ-sPksC<& zuY7V&2wZNfoI1texKft>AA=&~WT#@I0-M;Nb8&N_n>(2Ow~Ef0h$n!|{C{JooQbjG z$R7zfx&Qa*f`Y6H<_?ywR#cok|BuzqXvu>~d2m|~G*9(JZAVYBUSoWTeOm+NMDhOU zZ8NC{BXq;Ldq_iVkhj(};Q5G-6m0Iz_k26TgEP8-ZPa@B%s#876Z8g!^IuoY$VI`j z@@le(YjkV6$VpUm6RtI5kV0=XkEWYS_(UoWdx(8xxA4o!E<(CfW4nS z%CXXENy6{dxrYg6P$JmOi_Fi50Y&;5LpwWdqCKij@VQbz&GM+@$*py!?#Y*!V5N z+mBpPG^zsen(91=yU5;A;BQi{vkGVeQZ6Rka(}QHg5DqaY168r;7(}Z11=wxU16lM z+Gi)*R11F+4(N52Z=jK9uU@Kp^U@Fh{*>1G%iB`% zub$eWe@d(gHkyIbO#P_-pPmv`O-o&$ESZDH2k=?xOwMI0M(Va3lJASSUXu zLS}WxxvY$f`w^3i58$lw0g*p~kUqVBW8xQY>k^=> zxhVc#TPA#d;b-+kHsnKUPi(xJ?D`=>lC$?g4|3E)H8Y*sBkh}5+!T_>s=sbh=O0S`ThQ$Nij3W1cm2k1 z?1FLm=03AjdVrK^Jm+>06{C%bwk@x^C>u#2Ct&15umTIxW`Na=fqI7LM^MUZ+CdQ| z26WetF}KKpOrH>g^e}ktGii{&(#Q7M=*Ct`(@+GJh8M(j*HZN15DduchaC;~U-3>d zz+ugumVDUK(a2asu`zZTC4Q0@91C4{%OSWUyKN&~n`kbt8_#gmX^ubt&peoDR1ZQ! z`uv%TGqIQui5E(k02;n_u@fJP|pC6BSGS3K8OWMcnb=}PSkvj^ndLEAaZdh z&bWf;3AlLwe^Vl znvY{;3=5!1bFMq_nQzFXzGa#X2sq#Q#ew0qGX(r zXRuALC}!7zscEe3Rsu<#m+|G6t^-@0xt$rlxoHtI-P>`~Ztr4XMs1ICn@b_BTP`Cy zuWm_0rO(M1O;GJHwn#d~tJg)2+cqP(DVs9<&f_XwF(5#xnWCf*TWBiE_Qz5K-dSFX zLZKo-$bKo_fwQ?_4B-NMY88XU=-`aS!DsP?tP*=K7hDFV{TwS>TkI`Uq@%`^L;Nap)gz+I$CsMhi5J5Kxkwozl`}vSD;~ulA6LAVaSkRc) zNVM1p+=<3+^#AuZz|HYLHjv0Hh>VH$zt2@}?*F~`ExKdxhn&+rMB1{;kt?;6W2KEu zL4x+3h^}I>0W6q?wdQD@2JA8*!pDl!zfjh(K zHsD!}U$v?H1^RM_vrqY)^x}9eGDxXsDt_U4`TVqQ2RxSi5Rth* zxg4@KNCa{cfrq|8k&&zWskWBqo=u!BoQATA$-BOnZNulMXt;zX<;&%@d-YP|vV*Yd zY)X9ZBJT^8dlPeQAIPlXxK!kLx8i;i7#lsSe}3p&jXXFR+@yR|hwEaE=};KXoQSke zP%6jWQ|5{YhYPv>vIgz8H8|*QMc;q<6n}7bPPqj>tvz6+5V$Eb%Pqt<~$io**{l!v+AE3O>`x4TJmy638eM`hIy#V zt5M!hEe0=lx4SqVv%O`)E#`hXMF&GoD={remp9kDyPHBv$oDtgl)YEdbGp9G>0jfo zH*JBNzBZC;Z{g;o-w$PESD*1RJ}sU`hw<>9*tLGN+I;eqjfOh#{W~ByOrETMv>ywI*I`HC&h{e|C6J47hyfLp0 zt8MXOOfoC|j=L@3vd`O~qV<{j#l9J`ik1KSnZchvnFy%xWxPHve|UGBS3ruO?gPh? zPDP}@)NJv*d>4OzzN3UyD?{$)h;%90%l-78!fw zbBwJ7mWH{hUf6Y2Nbg@aQ}PugP*yaBHU|j52-5>Dwv7ue=XC=9Yn!Y?tLx9RJR-l) zSrH6*!jb{I3h-eT8N=0i_0Mg{9ZkLf1^yGIuR-g}6)Ry-$d*d1zlLVPQ`jg)oGKc} zRdj>@o6tvmAqQ3JNkhQ@g#C>IMDdG6r)wYJSTY~1(K95}qp6i2XJ%j~jVdeKJK5s{GNV-uUPG|jT1g~dD z?;3wUVj0E{_L@E?w>peVsIaNvlt+}4hVvvP5LQ=gK*Cv69m0Uet~dNFGAD+^`Rthw zmt(D}xOc{|7KYag4DAtf=5gCY{}AHUSB1L9eth!leEfNG$tsM}%=wD&%VRZXtLIio zJiOxcd@|hOsc7)tc^gPZo+|~I4(ttk5e|2GZrC!?uR7dZwA?B(@`j)GNiyzF*by9c zQ(z;J_#GDgruo2=>!?WYoyllM^s2Am86vi#@4!i`u*jOD+!n>^>gKFs*d|tZ(K$p? z&yfFTc1Qwy+@Pe~E|S582dA%+_|nj~^u!{)v9^f}K+vGcH}2s6jR$7+Mb&FkeF!Y{RI2E^807<*G3ReWRi8 z0c!dYS@esKengb_vSAlkpO&B{r}#zZ^53EN@&wo9z3VbmX&A@1oX1UZD!>;i*nnx$<)QJ%d?j=kJ9nIv9qNg^4xb}gH^sOF;--{=nl&0wDQwvKksIW$U{M4 zAkSGb40XH+a8ZoT2kzf7l9mq*`fBM#YhLcsJ`ZZDxz65u4sc6Oovl8LG)iO`@FSOp zWlqT#44QTdO4(d5_Pu!R?bx7lahf={t404ovu@6%kNqvn{xGaJ$^GD30U4L4FO;8V%=}dZVzl)p`(aom~O-6O zmG8grk(v(6)kUvR-agaCn!~A-q)ueiI&U|e_Wq<9u+ymI4Y=Fi6wkEX&R*%xwNc*l z#BC-V93S6*QSWQ?|C&(%Ske78q$ihG(`P>;3^sguoT+mXCJQ}vcmbYES)NU(#~jeR zgwq_S@>=}m>I}u@Hm-1*r2etC)&iYOjO5i!zLRA*z%$;-=2+kJep{o;%A^L^CCotm z;hQZc<&7b8s!I`L5g~u;%JY@Mmes}mvHq&9z(V~B?8;%WemVl^pFXfVQF85boeTGA zcr2X_F)&=OI#?*4t7yN!VxHj27kqAEpO|?fnX?(KSoM2caifO~>3RHG)@)68o2l?1 zu^3>uNOqZP8ce`FnDY~~GN^iVbad;*B9(OAW||{6RCXN+&Z<@bxnKS9n;TZyFY_kK zN3)sn$VYh8Iot<|gXLgcniV%om#ZQxI_gt0mUE`1#kRJ1Poy^SxpP=Io^#5HJ&ymd z;BgR{Ess^Js=`K_OEnBE)^>WiwMOw4gCt>_h7UR^MB@0h_qX2&{ALeIvz=Rdxs}z7 zCkckG-q8@u$r|oW+Y;z{t&xD#&I9MM7Y&>u{~`4F+lvCR1~Bz`!o~;-`5_V6$BwXx?`FuEa)03bQ^)^0G`5gY%#3gi-d6JZ;BA?^OJ8 zm}=OTB$x$Q`Sa!VrMAqA+zYh~=>y^XT)P3{Ll$@z4!&(=J-^>I6G41HyH*738P>_> ziCUVf{t^}b>}h>Y^`kQ6KBt8%Q2Q?Q%Tr~5yzo!dDqPl9e(SAg=PgA%8+>h*I5BH> ztbo9Yl?S~o{v%J$0j*mrrxvR&a4}|_CHbxLZ?eGi!h!y!4bpM8Z=-WYh<%QYn&?xb zL(Ex(7sfDS60}{^*w5e6`PSK3psG&5sZ zPqjNd0y3iF*GM}S-#T9^Qe!2d)+wI{0vQOv$4AW1U>B1HsDNF-Sk3I!$yE_smT=Z? z#M6&fluNG669hj9AUdOTS(QbJ{%HzYXoEwTB(6SXnY|Mo);Mo+`qRKaP#C=Ty~#WK z_bIt|7#y(>KGz7xHLsF2A?=xd_eZcFhb5wAWP&go_irgO5N8H*F-g0Lu%fUrjWf=KNK2qia{ozX0efJ?^!0;`*LW zdyaP0jaZMl0``K!FDu2%qIwkrz7E4p92pR=e@Q9a>6K_K7HZPW$42^XntIh4Ec0XC zCC>-2?mp$P8%f_yW{3xNGlnNXZ(j6ERA8CxK~>CWkB33u0OQ@aG6R)@Yo$Id61!{k zi1TgY+;a6`? zAf7(d@V)z+_)hME;ReWjO0l-wko(IcGmU4V$9h+^>AU-!GOWP(tj$Ja!Aue>ul3BTBHKs4 z=N5ZO)D&@rhT#Ac8hzE=u?FA>w!NxAZ*D`RcTjJ^@LUM6M6`S?YY%o^8gSC=v(I{m zRc2)t|KUM*E!?MhO^NjQGLUo;=Z%MLQN(k?-RoiG6SZ(U0HUm5z+M4?-)$peq@z_0 zi1cS@E0S$+-F@_$T`8Y>nGCjNmQI4Rh0EYN$-JpvevYd9?ncyEd*romN8#7zM}vZs zN+d4sM8jcId`%YO6Dnkh{u43>TsF%|bM1l+T3y}$k}weE4cX_cuLHRRW=S%muxu(j z@vJ`=GK(?;2sV}<^?L+N?8D;^9*{M@Z?${t-@K|7wOXYnKNZNx8pN1>lUauad#$1y zz>oNCCKtPwQU)=8!$ETj92qcUgqa(Tc`$Cs^wtp1=)EfApxGC0(MTD?p!va8d>+Z- z6MON}Rf5W65n~~qS)ob_2pr(7Yb1ntfH|u!a@Eccu+D~7DLl1Axp}ceOq=az&5oU5 zW8L74XCGyu%@+R+;Z&cReyPlIVa?MrnHIb0kaN7Jxw>{8aV2gTajvqA%R-@i zrf?gOnU3fd@qpzwXP&cyc=e`mP82RkZ2omMX|6{v%;SB>&-y0~?CucxYqot)ll0U( z6OUCHmg9Mx-KCiu|Dk2tIOU~^gPN~~#PN_w?% z?iX0ToEFfeeqSW}!VJ5>fYGUpK^l?Z3uOrZQ{{$}iz?-?!(hGr(tyq?dLAjYCGddV zfC@9s5jH4Ve4g%RzJWp7@|`qkFw#wou(^Wa*eg_9KuM1_&hOXl;Dj_o(o ze}A0<77=d{jx`m^I@_YQ9$s9wfD4YRXJ(je(U6o7D*Qa5O#Ah8^b3{gn$8)!QpVAIHH@r8T-*3{j!7FXLuF4K z+7xq_`2!=>%@lh>JxsIFmE>FK;W6nz`;vPE>BYa+FHv(10f|`k$a6>lVne_j797<3 zfOveYBdrtP-@@BzQ-XMUoSn9^=78XVUC*V8FdvD)IDva5PA-NzJoF-^Bih06<=X}t zSuMI`tEeTfje+`Z;XXhlxeT&Vj@XK-xyAN*#GXGSeiH!2;^q14i`9&@CiDtSdP*3O zGBz87$hFqBS%~JwIuHxENS@sL$R}1K+s_D;QpWDG##FN(1f~my3m00F!)1e|UuCTS zb(^i@_4c;=w^{V%WQL7>Nt)#{B-e88NOL(+M8<18Q;APGk!`Ng);S*~)Q z$1ThbKt)^aw|uC;w%&hrlG|H8WgyzV@?s`7l01$#DNpFxPXfmx?>cUV7u?*TK< zF)%31xlypNEFPP_z_>b|?vwIkfl*7*Ud~ByrX9)~fhXxGf)wQhbbG&PYerAKyQ5p* z*I0>Zvs=WU6?DVep1(D&DbV^7)AE@9wp}k49Zfub0 zPI~33pgEa#@0TE=NRd;TCwljklpvo|^>II$0Vz$Tjj>K`E?x7q!?%rlU6#dPYkzkm z;oC3@j>{aie#Y#s)fATssUK^e!T^sk1E~YFr(q;>$%*aFcEcl1B@T1@32|YsGd^Gt z2PqEfRAcMVeKjUXzipvgL^EjGr>^cC6>ag$6b89@WjS1LXSUK^NRl<~^K_Q&XmP90=Nz+D?H|8a z#AyGzxx7-Vz}?&W#K;FOTD#dKz=-4q?N}QqLq67^nHjqd_Ihd86UH68&!@vxhTOjH zevoQL-7v>n^@O$y2%Mm=NO(0l%InAyEGK$c-j0L~olr;3CXV>-Q5$aJCjN$R>QlHgJ|~ z_Fyb`0;c)BVwENhwEsq?Vom-#slz(7c_NCveCEgaa;zI)rEJIGz6$?@(H`jm-3(^; zNlnBgi%4D?apSK*mHg#2rUeF5WHBDOjSWTmW)4^M6*OBz6R{o|3Qr!3FS*~{rwnz~ zqtVLeJhv4=FST`!ODV z4up;#LuKN}v={D~&VC7^&Gy}i*no1gFdnNRF4!|C;&wh1wPeH#=cb=f@lAzN>ht_U zjKW3`8ZL8wWH-mQPLlK2jWxd!CB~3P#W?TaYQ z0*)p8asaL$=-4L~jqL2oTZ`-H3AMTqKcc!lG(al@%M{N`Nb5k$x2O{T4OSzYh2$QB z*J=!r^vYT=2ZSOkMeTz_Czne%_ui4HP|=Ul#I?H^=^l+>EN>qS@)VY+{^QnI-yVnk zw*p<8Df2`0hp%h5zxNy=t@50j!kvtOR)@VAR-nmCJ3hw}DgS^qA)pnPTbWaGI%w~L zHJdfO)qamIlM=yibsQRCKqe&r-R*$lnl_}9LEb~wB|~prt=Aj^mPyuKJY0pW@N>49 zgYhCzu8)HJ%tg=4RAbL_Npx#tpcjPXeev<<-wGC(LjBPp z@PK+<^_TUhb*LMneZ6#!A+aW7F+1o_@ChZS{D-W=una>71j@V!ed$H&95 z$K_{KfV~;~#qf@{C42Ya5ecwZx`qa; zp=5O>>!bQV_V6VhyC6JU<7JE@XE)$Y={b?hyr|1XqRW)2#7IB1L(Q0c?+>-S>Q!LK z)6zWr@uZZhF1;P;hjS=kje5PQdw76)t-k6Rb_lv7>7Q~kY#L)^|3q8K8v6u5sw7I9 zs)j?UsMfcdh{iwf+H5uK>_WE|rCR-DpTh@RB@Kx$JjH<)M?wHispaO@dN|4` z)=)2nG82O+9<*zRhvX{Agn=CHeWTTwtyxs$Cu08_nj)u%5B>tGw6r8`XBCupmd(pO zBH+ix4NAd#7)8s8nucleHKnEKiiIc!N4u{#V>E~I1WA{o<>>UoxBwaWb}ssHQTc8+ z^5ym8#YWrSccwdCZDY&xr}iDuLr1!o!Qrr)NPn!$l8a!QYH&-QA;5Eg6(o!;I1oC{ z^K_znza8{^E7OL0|7LG4(%@V-H22HcVFHixb^NS!~?{y`=^UkMA ztG_KXl0x>=KAGvM-X3GEga_>9-J%)QfvA8MJ5!D2V z_0rc=WsxJ;qgn0uXaaq+;(wYO+okI{+D8z|BYUKB2C}^CpMLzsXfDn7>s^FEMb^1$ zr&iW#MbjM6aU4Ce>Lkb1@>l*OIOth;j-FZM%Oj~%%e4L_{LocJrOL}Vb6Q8#Y~H17 z5VSB#JotKOQ9BM7me$-HbCWqeAVm6JMH|%{;pml- zUqo(ib&z0C<)sIYhVP9k4T0WRu_?#L4+{fw#}-{`^Ryl=Yg)(+_0UKk>?Jx!=webm2IazjQ&8Y zMUv<=dr0=ULjQFBq546J?X=FNK}#%aesyE?r?=kM9W3sg^R&TPC)SV_`^xGr?vThp zO5>C+?!TODi*k5S=CjbcjFS8vo16^pr3>VndB^AsV2y(Gn9Nan+kkrsR@$Hrf9%pa z3^o3Jj3wrMd;P|3HvV_V zwll;%_*WDBS}xrmm(dgOi24>lvz09h zf{`@9E@`2VsQE`e_9ifremMRgG4mg5Bt!Ftj`S#OOx}C#+gOfHYhqE$AVcGt;~{sq zJA?XK$T7sCvcI&mk4yR9Oq8y}OsoEabctgvo%DEME$AClFyAXMo@cv0;_+KY(otBx zmdl+%JHcoN18Fr3FI{{vsN?s3JL)kLB5NB!$}7%_=XsCliQV3Z(#*7$WfmBO{l&in zcF(L^MB2F@zVxiOO(Mx1mD*BMW(${6WlH&lb!VQO`>Od#vYjK4`M0!mE5Zpjd{+by zmnHLc6q)bK`uW-{=4WkebYvdr^#g~ke(3c_mjgi$zb?RVH`d3Y*>)`r1m^$8Xa=CH zoOY9Z5qXn=Dz8sE$)s_s!2_d(dlHQSa47cSFdZ(dt43aDr1?^tr91E67%eGBb8)JH zriK*#w8DjJt$NbHkJssTs6PlWZ1(X6?U@>a$&gf;YHCq2Ln5Efn6E{IE1@F{p;eNX zc!D`^38`HV=So;eFA3p6xE1a_4nQ>V6+8k*H_1iCGnLBa9=t@tr_?tLE6Tpnq&Z&{ z*gGN}A3|wi-9z9DTG}*?5=7qelQ2L$e;b2C1zo*BC*k_|x&fh{ZX9_=rB#P%K0}2z zclO&t8>EqGn&Jz1x(a(y@YuQ3jAu+n27z0^=`M@uhhMcn3o&D7=Q8N{EntMRfmOK} z7@54n7KV6A@EacMgNOJS7gPgRBL@!qdtw)}mA0_@QB9dN{NGzNX`kt?1|+^}Zh6Iu z6cw0sLe+=X2u{K&^%Wenn)G=>xgoBHw);6O&0sZ|8_o>C*XSI1s!J#|oGq8^rGG)g zJZTI8RIjE)M!v5?e^)txhnYw^-%)?0Yd6yjkdKcCB0}_GTs4?+pSs7C#X=$!-||ea zN9g(I%ZBG_VQVso(8szM)|Lt)Kk*oWknM<~b7VeX?vVm$k4+a9m$MG7P^`R4ERCcy z%cY*Wl3R-NIP*CB&DD57SnIvS^PTSFF6lGf=?Me~dyIc}JOH9DkuT>G3f3c#FA5ha zI4e2F#Fv`0=yR|z z`E?TIyl8+-q()vQ%J)l-y~R4hiu{2?EDMge^xW&C!16a&xRxPAA7;Bz$Q+qa0n$cGGxIPx=JwZaDF@yDXSY{9em`vOk3J zbbQ%ozgwY<{K@V9zchjmSaSb(kqc)jrnPLzSxZqPR|N6tG1wpda`7Y!{OqTO@#=CB zQ_0GZg{(xSYPT;khQ5AZ1KDjL{?PGoaNT>m-Ed7sl|LR$N%Y^(ni? zgz>PvE}VL5H%o`@H%F(g9_z%iJ1cHbm`n?JdZeWURi0IJIf-&9!R~jL#q`gc3;Ydx z+7*K^-PmbXyb8}8k~HsieGnL}*=KDT5jc8d6)i(bVbH_hp+{PW^=H}N8T9bFdlz-% zD##Q0>>PhX2v@nzU5tk4qV+S8^8Gxw#7=LdxmJX?%jDFj5VZy8e79S_ z6`b}#pVqZ<(&OtNKK#e6>+lE;TD^2P)|^8!7)fbv6qY_xYpX?)l+ZD1ger{a2*@`r zJS{IL%iqp1zp4NS$iFfWc}0mt;RwZohkm5n^|_aJCbd1^Whq~&4d~5qU$0&lFKP*mtgl1&NV4t+T~lY4Qx=E^MzertirkIhP?+G*rp@D< zBN8j9r0y!qSQp(1_6j2X3jDnbfWMhf*vU5vI3ZJ$PF`0QuZdFsfK8#d?sRbatVC^q zPR={w^QGk)vu6D{=%nhb9O5zI5k8KjEaiP0w6EJA&>8X;F}oM>ik5kT!J#Rev&!7aPskgba~O2k@E5r>o|O?Vo&rVb5l&H@ zni;FP4N_Bkf#hFP#}U_<1~#&7{kEyYTG7KTpm7K)B6k6c7(;@HipPKn%BV(J4@GN7CaLHjN0N3~)YIwaN1dqxsE^=XX4gxX17N?FD~ z*C8rdy{6m_Q>U2EW3??kHeG%8wb4IlDx5)TPRnW-*EW0w27Zl2G>2?sY*(25?vC~Q zH=m-b;U`J&(`XKI;O*}+Q~o#}cG%+;CvYII)i_JDY?Lo6y7{Afiz9T!qiGUQesMZo(o^lymtnxm4E^g)SeF3REd)59S= z-39;XJa4?Fw>{8me;Db}Dc4bhnYY3K^Ajm1Cr9El>?@UmpUfEP!((#Gztd%&%4bZ! z-V*&ia|zZcVYug=-4{{TI*u>AT)V$Y<7;8=NOJ(-yxXED)e2=1{Dz9*=XQCH*y@Xv zfp}X3QN|WVKJ^1-fIJt8+R4FqzB+5<0{rg>hj#_@ zL%}V)*KaDLv6_$$m;Y7|$IjOpBB|YCx7d#_21dQNop~^wa=hSrz`t%VrrdeKy%)z` zn`Z|84@+kr57qnrf4gK0MT}jNY)P5yqe3MV*%?%}EMwm}CMDjsO7^u7${Jb6kX`n5 zEMx3DGxot4eUH!Y_t*S$JePsk(P~E%g@0{7k{-+W2q!CHm%J2J@^Y?yFh+Ufnl--0Bm( z;0?UbYVV_pl2iG;h^`?Pcnn4VIf6eN;Dg3hzdmU_DUR`uDFRToDta-0n*NI_Qu`>c z*BRC!lbaR~=U0eR6WUlV3KX=YTH}92gatU~<`1_mb0+L~`+5AMTdVzKr;=38580S2 z(z4dc3VJRHbrsc0V);|I1@~iJGco7)y9d<0$4sPrv*8w+(lGntmD8p*7PZf@ax#E{ ztaOV2bLp!~s3oj?-?Rd;Ndb{gnh)wmdNJn~|8ufC85Mpl7N=nxMf$>;KGp6&@K;;2 z+}b88m*X?hs=Uhn$;Uq$N{Gt9>@9Lt?vR?NS~^&E>5w-eLxQ~`1N;bwIIC=CKtgJu zsyP{o+EL}&LJ#um2GW3{M<%k$|26GUNhJa;M1|sVIhn8G7FV!wh7T#3RdzrfjP0kl zuS@CA7H?;GG3F+T!R7nB-C4eDF*^nvE9kVXLI#lR^KAMsU)Del11!gsle^B|BM)(O>sTz zW_$tZ^0`?S=@vj~4lQGEdP1QjU$$%&DKkoAPMJ8RZ?f~^zDG2D_6FS*$-fqg7d-fo znX1-&lp7V3Xcm;Ax_nNNJ%NcM5{gnW&@hw!e4wDbkLKmz8|-1_WJ7jNW5qhLoE!Pmq=V ziw!&@Da9{ubAD<=(Ji9~lstdcBd$>szq!j5O<1Ue%YnfsFsH<)hu%{IL$uc| zJWJRAjEK+4H~pU3pmcSw!M<^QtT*?B;5J29-SBtU0WcN{gC+SgC#xs>;_=yU19PPz z;Ax3Om?hN#8|VIqMM!CJ!$iiIUQX%OOOZQkpo#7Yw9cg3 zs{`viOPMQ-&)hGje;ituWUhrs4L`B?eME-}p$SQO?5Pnr!C6fc zv)-u%z~H>cOifM{U@gM`awb`cqx+lIxOSOobFw?amslD?TRWSVIujRO!-Arp{rN-a zKRm`v9}Q>>$ZJrh#jJZeWV8VW8Q2 zb>gcWQFBwu8tP*7AmjT$D z@R<01WYBb{o>&$&vC2IObbEX+iq~q-N;3f&%6quxH=-95v`uEp`w&`qG53q0-H zii*TPo@Q~)s=+Ytg2t6i*2L=MZF7b+NLLQ?V zJ|d8(zn01b7TPV(J_Rv=2Mg=X6xFKPJ(kamaR4{?#%mdEMH+->Fwou_?jptn1q=0G z_(W{--WC1Wk3>z_Oi;}tg8=45Pr?59%?7Ub!+O~W(%)Yk#P!{th6ZZiOh>+;H1a*$ zke4ziTTF+ek}t(%ydI8UNLYM8bG_ae&CdJUDx<+M#A)ma{PheKsXZcvZ>4$pzi}r) z^ls2gnHg&<)v_6`0ESHiYb)wN_)l-87rU%5?is zaOX}E*{w(1nJMcqE1la%l*=H=M+Gp6gc(;|58 z`I8|rbG2lG9X859K%mg+jlwM`;bq4i-oBOm1Uscxr#L(!1y_@6Wb24k9F$##GkU^TMmP zC~{5P`|3&DM3j5Km1pD2t=UX??To&l6}A7v331=P23i0=k1h5tsov1U^sTXAo1jmX z1gktsN=~ct3TSb`E96%@(lRJ9e*v`xm#wN*uhfxGhZibcVnny7CaIKexLy|m8wu^% z-oDuOKpGtSv1pVNmAA4Z>pcW0sAN$QK6x`z)%<%0q9Ijq`2cZy)=H=BX=)c#Z5mhU zUqw+QfU;jKKEa*2yzV=SmbFSZ?ZmkwROQnBLpo0B89#TS_>>z|Z+(dNqz_Uxp`lz) zdlw}~Kq>@RZ=RVEozvf2>BSA21TTKWy23ruC!BiG2ORTiIF2j@M|H(ct$Bps3K7L^ zosXR;*T3;jaHo!~{{x@FeZCp)V&>K**w_NFsGfp(REc#78~%p9RK^Y2IZpHoZczee zrI5r6sHEz?*?W;W>zoW2xXY7gyOwe@0O~D% zha?b_ISlQPQm;4etSHyTCz*0TWGUKf57=Rzx=gik*@Q^=<(hx8Y|U?Cp6NB%hpa*k zB*H*%>km{9pB6argYQ1gbYG|TqRZ5Wy+5j~oY5La5By6l-iS@d8^QebcvO4NHyq~7 z9Nz)CD3OY+(VNP`TbvGQn(;vP#7|mB>aDp-4nI?cH!pWg`H^np$sgM=N5o35-=y|! zW_J<-)4HZ2-hq)_3&GqV=#kVtG z#ypgz=iEAFp6uPk##C-yPlY%NIldlvtcb|%M()v+>Bf6A78QSK42%sg>iA)Ff9|-c z?*7mc^V$hxu7GRxP&)vfS7Faja6%nqn+JBgyvm>kHaJbRUk683PINKKj%z?(mmQBg z=H%de--!G-3=cW1Eyr8Xr~f{E=j}fB3cP-U%_KhttT$B3>q6I-<}Za`jbQvLbL5cjo?o?Qe@uV1|o1u;u+D= zKQPSORgTWKMm0-MRo@aQgCb{>+DLRD8w4^_N4wN5~H!P5s`7t*}sKL;n0 zS%W!G<^^Y{k2yOlOrs~(!+y5tp1luL^Q+4dCi#w?n!cT(KSV_z_1jJvV_bFgF?G|1b#Id_BG_EgZVs#O)y%!UbIdgUez>c=yV+GJF4R&UEJ^ez>z&7=Ug^0_-s2PY^PC!E zu|W{KJvhJA^Q>R2NnNDgXV1>3XmB3rme`*V-m@Or>QT}W@zikJ0c{EG>`dwd zCge?^q^G_=9L6Uk$J|b{{#A|fCR}HUb>%cRfVqdnxOdj7EP&JQNWruzU&`MY!?JN$ zkiM%t#@9)aGFoHKV3X~PkY_t@(rZ}{>g?_za?Un-Dn?G3EYYEG$5K^w;@LuH4!i%v z$CXel6rWkSkhBFi9^rRSoyXM)^&>u&9s<@@LNa=ta$i2G+gApw-&z%UXy3;izydC7 zP^BJ?AwK*PBpAr?b%nx`ckiw1@NZ@HB<4C4jDG9wE0+4P$EZAzTHCpA37gjFuLV(A zSFHAI-yu9=iuQkHj&g=?hW+*y4<}>@zFDfoX-3xWUnBKOCKwAE{?g zK)LLbb0g(S_Ik>UpaWV1>(k`@PJS1@K5rW7Ne#0F`Vm!5jLK`B-Mel{GBp@htkx{< zR@##FVa(!&CR%D2NgA)o;nQLf%Uk|a)BESI)`A7~&Y{7)qevz^;z3`xq2|}t(!VJ& zpuP$0-VdUg4;F!Q?aVeL#T+q#8@n!7EZzTPGZvH*cNVr#)g3|b=Yq%%xXM(TXHP>X zMZn#+-nsJUuqxsw!(}I4CveKukTyn5h08Q8YGW!p`h(J=G`8ocv(v+t2_Rd>h!G%cNEzSCx;aD*wuz*{QH%$|^ zNwh}WSaLa$_cZDo2TBASO9gu`6b-je23613HQbx-1nY-3(}j|Bd5axr5#;tp^!u9eDdg>eDfLpX)VDizx*)D*0Cpxph8PS5j4sssDFJsM^^z{H_fE9!LNHh0_$KK7lo`+<@ z5{pZSiy==xwxeBTm`?cE+?w!*sL9jUNPo6JoVcYTIKzH~iBX#ZLpMCftlQPu^~NyM ze;m7wkAaOeHj_f z?MgF4?e~0}sjr6u-4NOjIpS@qrU2!@UPF!>2lL{&N4WkHH=|kt}@LMYuwp<5h3C3V;|Fwa%g>VaxhMr=9flMhH&idIF28 z|IHGOmnJP{tcki`?_-42L_jW{9HC6Vs32%BSyi{m=Fi-@mN9HhzuTkeZZvztt9k|u z5lh?;i&sZh2*ZcJdZQT|5CbIpRaX10ZzXrVAjgMNyU{I5j32Eef|*COt#QYsSeN_u-QZK;|b*Xu5cm z-nmXdzbXoof$Z01r&-HJc$QgLVaIKv%}sgU-u7-$y?`+jzIQlU^LBhnZ1sYb%x2M! z?Di|_87{w$zOpAiA6#uPK()`2`)a7FE6$z?+3?>-Ch9wh@IprA=k}a46Zg+pf~K1= z#@kiNR!$_p>sGjr#50FgEIIS^!lIL4Kh4kl=?v7p_%{?b5f5OB-k5 zL4m?E@UGz`H@wmPj_p8CHf5XMepra}qLyIXZ4dr;E`?8$-30aOfhn_zTe9Kn+&NOS z5{OQ@YZ#34MQnEx_VT|!|Vu#l5-H&m%_40#7r`2(_aWVB!?(RPee|s%`L}ZZQeV1$K zI^H^!+j%%+6ZgIWFiG@&AOktsd5fmqk8bCpo}1N?8hRf$Yfmvlb%aJ{Q3f&2u2of7 zcz#8&1b)pD81M~#9{g1gRL;|6wx{SCX^y0t5Rf2_*vl`PasvUuDB7r4jwYo$%RY?U zaxY$7^+Fcslf_(v(qbaVU#DcsvS6d4Oi$}@ zg=Z~Ht2T5!x2PQ^{AuNblwR4TAfL`xMe(CJ_BOH!%o!Z^L%LS*RU)j>bzgL#6d5wH zs+~PUO|Bb+PPtxLNcF|I+U5`vZVRmD!+_I^!E(E}p=#ez^+w=3LWwD(0otOPv@f@Q z+gNvOq7=yJwZLoN!lSMxEh5CrxZ*aRCI_|ibCY0js^cA6f2d|n_dpkzg`(O0^$8S~ zm>1VZe_P{Ct6ms_H=Ebp9k5h{z~r4+N$rIj`hDU&8R?SAz2bN zAY(F2t2R8!+S!|z#!11R`8|`(t^CVVhR(Tl8DRDTH26Kr?e~`*D$sWqr%0kuMl=~v z;34V$Ro9UM(PKUZL5vrc6P~F*e{WL-oq>l2<`SoxY%mEs0|$Cd!*nS349O+#>JQ6| zLie_LLx(>I#10ctN*;BdcauG%d!#{KG(X2janbN4qVq$?n~0#Z%iz0<`wQWt0+p3J zkmfLwlENvPK^kQCVg7ERc=aD8o>`vBd&-`9#0F8>;!5c=X`L@)<21Ti?a&Vc1%0P% zDI{puLGxY8AquBQD*43;QPHPODH~Tmblf@dhg7W`zV|(2^y}xs6`j3Km#>xMieweT zr=|Okf8#LL3A(jwz?PFD;odB%G{OX|P`-RVFy9zeoA9Vlu2*akvi)S*WS}O}EGq5q z#eObV%Kr}wZnK9DdpglWWdgcHpZX_vH4i6tFuJ)Imd$1IXYD+`Y;7$4etfBQYb;#J zr6xGaXPIAsbBKG}_P_F3P3;~(x~v7)RzB-EW*^U1hnLh@9vzm2yr1>H0<@$nzq#Mo zCVu&H(00aUniTWDfXFm-Y|r{0AQ|U0v)|{p?817Cap9mneHEznR_y$i@*9teG>cV+k@qlWV>Sq z>7R0u)wC#;*H=CvZR&nY!?ixpS(GZ1fslB|)1YIk#R88kXU*FlAohEVSg_+!dx@}2Z(pC4CF1AO z{4Gapr}>%xY5M6L=|hu>zSR!bNgu~y)jeWWLA`d>W+nbPbaLHBY^bYmmbQYB5D=`b zf*2t|3s?br7?`?9iV3)Q-V%u%G+{}>uYIl*Kod7VdcnCX(_L+VF9u1lj72=812!$W ze{yU5?q-SMAfk};c6Fq!kobtaY+lnZxPcEZCEIg+b`CMkBlwgB{Y^wH;1G`PzV=vl zN%qeA?#!xScR@9@Ai+|9z_<@2&_Ekj^dq2$M72R4R7 zfXag6NZ((wE;7RQfpR9B(rgu_E~Ohh6bY?eN|+1v-x7=qI9~!9)LlI}cYDkLE7|1e zHuxZw^D#vg!kQHItcCu;bnAebL+5_1a-*P3Y>;cGs9;hk%C$2Pd?$I7%nuv83Ug_} zLxV*7nKu3RzBs{f)Vtgtlc1g5v8Q(R@87)R|0t%V+n6#?{{Z1fE;iaOigy7%yZE`KZ#T8 z*A!O;WkAl4uc=>}&x#eDUySgbId>yGU5a2zS8nMkmH_L2#@ditJ$ec$=H`=F9 ze=kkO2VQt@pGhS+pp1eCTJFuCNsRPr|HL3I`bRb-4$LoNr{+VZx`;3|?XKKsDCx%d zVwfsl*9_|Bl`DYT>wZ|z-{d)Gn0><`v|oc?wxbj6x;fnmn-X%mTQRODrVf(3rI5fq zOr5s;M2poP;p6GA`KZ8k346_5+|L8;U2hR9wa<-aI^xF?IR~*pvv6wPpE{ioB3q42 z_cVTPe{?dLsBzlv=`?IMs2*HHR>f+uK9<9_nYB4O0rB-HHw2R8_Z8GiP|rbvopA(= zBGImY7g^fgql8UY#e4}{g68(!4aw{M(ch@i5LUPJm*b$#x0VsLSB;fol~r>iAeE@M zA|=yFyThh30sPpn6uX^i#FoHzCDOVoNf?1OtX7)v?Fkgj1fD1Zf|>I3cQ3^`DSiI_ z!4@!kq(ncdd@m^cH>xJz>Jm|$DPGvqC>ZC?iON@@a$&DWoZ<%B(VV|mX9g1U#4{LEV?RNI;Ae!aDOT2@du_wb0RA%wL~)9wdp?UCxb~BrM*W%qsqQ@PIf>+ZMUlHPcoBP?L7j!pRt%^V_KDqt2nZXVP%aVP(%$n z`$@1m+97X|t@kZ%r0C!G#PYVHCv3guarlxx`m^t}^Zp{4YV3`66B?&CegAQKfLSs+ ztkXZ;%$q9K^%8Ea#yxs_l1$lg5xjLlLkpg(`^8eiHL(1pZY8fl5>SHAkY!VYuI?JF z2CMrnDzjOtcR_abwx4B}nhd(rqXPjD$?Yoa^_qUuO*;J3xo94-UzOvI}$P?AAFO&=364Q1>wdtqAM_k{mW;mHTv~RjT$_INr+D+ zh{wQ6lRr(LoLgcH7!3aD`5iDKE6qmVCC_`hrrXbMDx|c2-iu5B6yv8g$#kt+F7r_} zOfePVC^DT<*;NMFqu+C0syZyaT(r*3Z~eMq_tsh!Q@~hk8mE}k@s%+QcP-b3)5_al z@=4KP*_OfL`lK(SJ-2D9+MyXL25J@jNPzew27=G@N3oPlzT=RW#s7G<3;!eDIOkF^ zqC#RtZRq(=z3~sQ^JcT+SLk(SuU<8G=k_5@USBKJ8|h#?;4DajP3J0`o=TiE1&ky1;1AhT(SdnJ2#iw?3qgTES%oRy zlG^xHxr5X26B95^iISB;*3t@il>O=gyS_}|B|%})q(;8vRI)HX1{B@q52ugA{aJdn ztie!fN&VH3zSH+L59g~p!A`kmG27wuh-IeO@_lQTxW~#`s*cnKY1z$ z5XDP;Ro>Hu5LUDDn(7e%N^~1U+WsdF{Z#O-Tk1u{M;R_6Wr%^PFXDYpq+Oz_4OLVQ zBEdLSH^;Ap%v0W6QqZ_0$BOKPpfBUg!BSd4jB9y zJEz1JHCm+V9*7GAOvelXtml0@-Kq$zAL11V{1JIdAwA3%kUtokd!w9H&sh#7&&uzE zBeM`bzNsoYdKdJ}h!-3~z-Ca53EA71NxyTyAF_`hP@q&~t`Bqfaiuo9-YB&)G3^$H zPQ8%XU8cP`!CoHqf%SaOgY7SF+C26yL{Dc{A!Wj`zsitKFI)l`AzsfBee+;2uzFnAiNNYyvEy>|AV7Q(YpfMkx88h}*s>Y* z+P>wikC6P~-;HwZ*+c5e^p|`bCj`-313G&{r?}AFyJ8Tid)>$Rv z5FPd1aC1;<=z_KX3G?tr_$F-w1lj+E@2A>P^vi82!`s4O2D}=U!D4ptO+)k5Yo4Yh zcUqk3MUf2JQ zSMly%qM?@Bev`ZAo9I;5 z%r6d@%H!fAk>g6iN&bO4lY8UrO^M7!l4X=mF(#}=mEqB0S#Kmts@ina)T8ZPA0-KK z^+`P)9(^lx1v(h771M0JS zkbj&s%9fFln5erle z^Ho%|`blC5EwV=UUMz7Vg8$S{`b(l5I|3Q1^Yni37kD!ef6Fp7H^d7dQ4OXHi`|+y zsBIkQNp~tL{@f-jY_WduDfcvZZk;Vl(OfzRLt~bcb@VAULXH zDQtN2N!ib~6wGa31D(>|9gxQ2tiDJGojk5 z8stY-bsbtn6%WgciAnu{y55LHMM2!1zbMJ#pM(xfxzY!2#X+>CRp^Pa_t>Kd$WyaUrT|bZ!k|TYc2h3b*Y+c439Uj@f=PWi$1S9Bod8 zf5X}u`dbCKE-!JZie}t1%#zxfp{#|$`;ucbKc#%|j=SW)dV$T~I^ze-o5!@9i)9@y zb9e}z$1Oj!o({W@{T{{)F`LcEpJM7vYN(P``#ZtLSJol$`m5C@WctU~8 z0_PUg(0{qjcziW6vZ-p!X8`7hg(eA6k+mJ#Wk)SVtte=x=B5aw3^4uI_B)(k^~=XohGQrl@3n;>Z)#5 zL?ZAM)cM#tS7L$~7h_6GkC5PJTUVT|Z!O2NKcARdW*0sF)q<+3XQQrRZB4(}Ce>y_ zscTE-_WTN+D*d(!$he_ul@w-eFR8xGLZeo)Q!2DxEtg{}{LAPGFqKvov??-*IVhNF zhWe-u3F2z3vulx<+2-C*j4@T}pG&|VZ%-Ige&ldEI==jut~o>5Up^}r+c2x3eP4T#hvorl01jIKvkyz~mih!&Ciu~URa*9}KF z)?nN#zP3=FHjfE3Ygw=ci~I$psVT#erthrp`MNh>)5HBVd%ro=jt;g{)4`TDI9PqN z>e{6l7Dud3-DiD&FG=6$$ZnI?GfO+PwB)iI;o-vSt4lif=gb&@b{@Tja=p7x`M#Ax zPWT4`|6&L8naLMcJz+CcC!P&Lg5mbd;VSP@Cm!nigO}5)4Snu~eeE0e3sDPttv~ap z6cRMY7{q8Lf27hB_gQacTBLxbQSr3u4}$XSN2a=eVGDt>=JfrxR;ZO~Gl4SX;&wOP z%$-+O$+b6WPE}^DfGc+-S+Ads1~}2hyR?o=Ppa4{cl?(qb9!*4G0!k9vvyni)G6Ca z{zPQJN>v#;_wnok7`kO;_GAOnq8aZ69{zXbjHjdvr~gM{@4`;6r6>t>+*>b`s(g5I;$+++)lBKclMUEI}}PI)oK)QF4E^PNy*-4cS6D2=p|Z zCo%eA^>mZ|IV#j!OJa!Pa?56w>l6%ac5EwZ)I01qhBYN;tkH{Y$x$-`3nF5_EPhJ9 z+v?MQ)-O)8*V&-pdvk?1H&7vbg6s1m+%zf%6{L=KUhJ0e*UtX;E@+~YD7MRa(FGaA z0D9`uNT9x9l-(|L(sA|<^-ACG=3`=0kSRdB3_E^=qMIkDwRUKtXy!#O=|S8XS{bFR zWom^z<3emQI?*9Tv?*iQi(GrDBQaik02rS7p8{X9btJQlleqEf%C)`yR^>(;SA-fZ z$X}IyQbg5wNG`~@(_R3PODih>s>tGwU%*1J1m9V@Sn1BNnK-UID@sLqk$06CgQhu& z*&p72y777DU4j`^@QH``BL$U%pgpr?0jKMWO@Z&6VqeVs5^E%BdX{VHHaHrbA& zvAT_jb6J&&Ts4>k1CIBK2JVIBvX=0uvabFK4F1p`b|!TQKRs$i(;jva2r0n;3y7bp z$%F8vl`2{BrL+QJ^C#T|CWbt8;nf7v@#xW~;A8S;=~k3=R-?5{kbFRIUr5`=Hytgj z%qcCdWA@IZbJhUee=Q+~WJdoayE}(?k^{WqH**SbM^wl`Qs@7w!{6Fq5NgP^RMY~+#QMZrD?!J+gi#EHylX^%d zcYMoC?{_=S6-W-_w1QKMf5-{$1Wx&O78vIz#oth?%Fn_j`)mUrz?(%d6hSnzULD-& zR!vEt?FTZOlDIYU<_Zm{e6!VPS$dpMqRYFKwRFnzLSPn^c2*=pAwiW-Vz!;MHU|;8 z!KjyVCg}Q>_Xxon|Fv{BHtc#a>2R%I?E;T2hYslgo?FV?Idg4`%W+Hbx( zsf=b!s;mU*eM4&xAvGL|%_%nwTQ60o9qHXCsq|n}e2nQ@u1FSQU>V$oHyzM9Zi+?p z?vKIZT;*e2x9W=%b`==nO@DF z7-!=>6|nIn^RKds8Ce2L%c65onJ@ld5nnuO;O)oX8mp)?F4&F2z{IIRwhS_4`rPTH zKPiv!qY2BDi&TmgAz!|sb#}n~kL@UaE?9);$egWr9@w%WGyLN{>Tk;0b7P|f>OC_U zKK)}lZIJmzzuO6L6Qi#7R|%2Xmo*qMd(6SdwkJ<(=uVL5@1O4W5SK0Cxxd`(Xh#kc@2aOS@qkCWvU57m`(6j$xO<|Sh;II6(z2t( z?&a0cHc{sFkkRNq<6}AY>Pmy6bs_h7P~suNP#+AP-;KJso3&p}Db;|y6Dy3z1}|JKaN2r0EdMc1Y)GdY@iowuJ&x^b9CHBkK-7bz z3*- zqDcqadC{g__5AASGw9dAM4>70I3cRWa5bvabtmEva%Xdz-@&h&G$-0@y~0r(?j9Wcq5eA&JInB4L6bGJ=0VjTK#T=_YeKZOsgv@ z?T|WXUUw$~i@DvVp;CW#ZH>F6-hcoB<+cyD)4%OmXWqzQUghvVqE9_$T)rH81vqZC zkY9fBa@u}hxGkA`hOv};BWgse1`qN-uQk|8k%~HTdH3M|`wEUy>hLc^v@K)p*MAk% zpFE+*9NnUp*O$Aova_tHPnZj!Sug(~fBWg2qBOUZ1GE0h58~6{1op;!c)ItZz&WW! zzkbI<^tAWlrENt!Ti+pebV4)Jw?WORMJ4QWq0vg2Sq@+SmIk`9Pl2%jHtc!5*D1C} zMj`?eRheR8ADjtKf`PxPA*zY2e-eT(7Ds0^a|ow z3yQC<^R1sU7IcT3@p`iu2jr;VTuIxA5PZLZvXnu@WjAmNTXdAasfisR$&Xzi{=#mf zyL>%H6f883`zY&ZR$EhAs&SSw*-EPs$7fWE3;x2jr1qUFK%IO{eYRC#GIX79B)(A= zj)@zIsz`MEU7+n(PdXqk%slM-^y2uOew*q(z!vmpJtJ24_zL{1H@&S=7$Va zviDT`5z^O9}DoX?u20~Evb&X^Lc+56&VQZAyz%E9 zQ)1);H3ZRvTz|CIcyS@$3KPfaBT-snc@Y;`=wU48@udlqz^Ly zfzMi}82x77N{PbE-(JB_cH)2Rl+fzN$+ELL4K^y7*T8)PRFL!abe|Y1-{=ely-;hc9aOD!KUlnG% z)*|mZ8n0>&Ry|xSkrG?1Yr%S_r5=9z`@l1*?aM>{08Z0}o40odd|qt@oGA+clLLGQ zFN7^gS*u+=4Ngx@xW3@ZpKbX2HCWM_nuU*>G96zn^qd&7S~c4@ELFoWOM;;HSKwyu z-3F1~pLe8o3nycR2I>)#LVq>QJ*{$sd%Ip1WmLNOz3BT%d4B;sPglMOG&IAuBom!(~&!7hLE#O}a4Q91c) zZRb*0euCvw?OCPtQcfQ(Ick1SjkRTL;oa-Xn&{Majhy^|-r=a?yFXKJzSo%WSu%oFU2iijl@Uh+nzeQh zqMzO#a{^j5hG(&+1r)ImBSI=^&6(su72=SkP#=0zJ$RHq7q z>UWE0m1NLQs&806uhUsueq=mhm*801xB8T296R7*_(P@+y+A+RapmI9RNjYx(U1OV zPpSnzjR!AOv!TCb(WD)v# zs5Jvek(HSjv<1&3JUP~i8i$PZZd;~5Q^R@B81}_QsOY#i2$*{+3yN^mi{4 zaJk)E5ajCh+HP8n0+HGeau@~uo9+6phWp0*IwOVJTIO`0^{ev^b}Uxfw(IsvB(-LX z&oWp(3Y!w4kVNH3LghO1N%*Y7a6@wbtBmJ?7S~`l=&W z>v7JbKyiSXsnz+NGvP1x_Hhh`zp-nlmziJw`1%r592(z~3!rZ7l(dq}M1R~^%KbiQ zdy&Uw{h+XN>07aOnIhNnRqv5LrM-<>mp>~k^5zVR1@?LHgp<6954TJIV)yG*oecQ~ z_n|)y;~4hwknT?2^1hhbUS`>4O_a`~TDHdM$xWVi?F;7fY|X!a#4bI@8i<=Re7~{v zy;5#$Uqk6Z^A>ROnd5m3Y*ND!nm2uksO}86jMzLqawume+@S2y=%Fi%wMvle=Uj?y?{8Y3x!Ni=1w$1m9st<<7m^!rw34igR{qL847U$wU z$5*AgeO#VntA*4qS`Gg~e=fIv;HYjIuTmW;I!p!3zIzvlTu{1blUZ^YQ@}Akx^_j! z0M45e&DB{mcqko~5%Z>32jhCl5GXFhS5X+|P!}EMPqt%zOeR!2T79lZ@KO`J%wpCG z>m$DS8gRYvuA4aPn|h5}FO6=|BbR0WH+sb|a9FG%Djsk9d<XdEnFFRk0NJ<8P@f;e0ha6tAf}a)FOrHt>s| z(fl%%uiuBV?{`**N70|WZkB&-l`z`hSi32CXHem=2JO(ITmKDfN8Z2#%;^?Icc13v z#(eF)SB!NyK^c;%?R{7=kfonVha5}az5*D>^bC&=FO1LbYp$S{X|V|_%>SA3WQ@go z=-vc8#?hnSH)h)Wn=+n#sT(!?UJu! zo^{{&xSe_NI@^6HYUBoBW-liM5SzhS@Rs_-HVRVl## zk@l5gZ8crAMS{B)hvM$;THM`T6Wj{~cXxMp4O)t8ptw5)innMfm7Dkd?sw(yy}xpv z$xJfYC$nasJ!|h(@^dkOR9R<6p4nnO>99T;E94YTFN^VhCO&G52uA*Qrxh=ea`BhW zS>4w~T?ySn?ECKEub^YI^WsT;8kR8w%@Q(#-)bA$f_No(nV0sLyd%kS9rb<+UIANE(9VUbt&#hJ73O$M5$BP!0xyU`T zX5XjL3DWkiXlg`Gl5{Y`l1ymv_~4;^+&26YhVGH>6OsRM2}tw^Rqh|2O75&#D)wGY zw+vG+6$g7WPbqJQ`xE_YoeBcn1{!WF^x0Aen7(dsuJOnE@V5;PHWVUfMlhXK7b25W zdHvzYLK|<&Wz+Zu1eFb zb^Ishv}0%?{gmW0T)04;P=`^RwE5c)it|Kpse0QyCnJ&SdOl~7xpM1*%~ z-7lUbp7=63mC$s6)b!H?2Kl{txz{ggV_}U*ePV|UC%?~ED3E!D;A|@`gchED{;W=b z4;V?&#J74`ip8FV6IPPb%Cv3HD2}`cP z?LtpEeX{##CAFlH;1+)8HH9&QZRiuf1Eu|b9&T%YAvO9=KGNr@5huvS#BU##w%&J* zOVrC5hdk$nBvn23Qz&}FZM^T#26zZjvA|*HTeEMMxnk$%;AHbNug8!pfRiD$a(s}* z<<`hNZ$e>?tgHCYCZ}5+5`)zWhR-jtoi}9tNp08bl0F(O+-q)xI2>WEO7{mXww(hm zWmog2@S?>EUiH`{5$N2dHcg$V965#@1#pCAuT{Ms%jfCwj8chhQCb}DRU*t8y}+A# z!Upb;!oWl20;EoVttI#+m1>`x)XqWHSt19_uST)TyS-b6=nD&&CQZ1G#;bOzvwW#r zU&FeY+^ja_eo&y-5Fl!`->IW4nYkub*?ONE=F53Cx2Dh7DW&a*Yr^h((z3uBDV`?& zi=Z>yoPzl}`$BUJRp4Ih*{*5$B^YNUzf=X5xu-$tkgZAy(7p)MF1ybH33#6bIX$7y zAaHaRX1jKnKFNhXH8(gZ%s(y->~N>J8#kkrVX zjn|02L<9=ZzdbS&c0kn3;$5<3*vw<*Ei%b|;95#b_SW*#8}-sgcg9Cj1Ut-qlwcCO z(U)Bg+X}XMYvh8^RMZv18s?2!sn%TcTVaAGGOLNcV=MmjAa;pk%8d*ZRxQ7ps#I-w zJ@U;qb^(>vt;-eaDce!Lyu&JtlPZC}L$$b|hUBHT$n-tHa1?*a1vXXF#Ey9c8c+e1 z{$^Px>xh;S#n0x$KQU3I;7w59^Fmi32C-Rln4TZ7l0J1_c?;+Y=Tt`4l)WZz{5HRK zW4~#P9qvO@o}N>;jYmInG}-wq!LDL~0#{x(^)h^3@vo@F!oU+;TzR821oq2@X->gr zfv?6ZyCnjn=;``t_fko#Rh#sL8(R#U2)?`YW-P<`Pmu*5)W6<_gI8Sif3wDPiG;7% z-~X`;4(n3#J%ch;_p=LG6&C{7m%^MY;`#N9g1#D=^-^c`-I5YaZ^6^1o3>aq7R)EZ zt=W5h9!*CvTUSP8V#ybG@`p4qvXbhak2|L+!cxK%*0%H<9De^$m-!(VuG_Fr$2j>} zCfL)mKR()Rp?RQK5$v0N!d*P*GjFSnc=)|XA6wCT_$S*IcvyyWqObf9;P9+tX;PfA zv*)7UHj52tt;-BsPI3an0W#I1XHly`J=no4P9_wSVKWu+r~VhmvY)GQc9aqDBm|do zD37;-JRrBPUP{Q3uqBSO0~WHNfK{rg#>G2gB+=e| z>#MiKi2f$my(6hAd!|!=)n2yPG=gObx|a__8^nedAgq*6a8oFu6$EY#p^A(6vaGS; zrvyNrMd8D{muyCpsXpjwJj#rBZ*i)N2FMWiO|X-hFn^vAf3=r06M4Quljw36X<>wE zHC!Bf7(^lsOh-ho7&CvG76Gf5>}bMrZ%oXtXfWLO?vdfbLDG;aZ9BN4XK@hr+}+u7 zXHn6#e_?3`?~>(=2`OfM`5akrP2WP8&B->E!9K#$*+ivjna&Ik+C#WToo+TPq2K&8 zQ5IsLH5AaaqH3$YCRBq@x?^8N$Zjv*9rWMc$nyQWN$aJW>`l}Bc=tpNK0xaRaPe$ge>S;@`8%8xVUMMgRp4h2 z@QLrG>T`BZB@kAzhdd{pD(ohQ?bmK!)s}+I;e9f0q5IRdhRymH4q6|r=~-t6-0AhU zD`#VEPEzPws!lo)GoKnAz93HjSraJ|6uy--d(FvKL z$*ZVKiAm3}o+(Oqy>z}qVwEFhGSGTWb*aO(Z_`~mT6+$-taCSsNbp=wGKzZ`Q8?$G@)=LL>`1Ih`Khl<|c^~OsLXWn0gPJ zt)obTmbEurho>-KXJKkT;wh>8u?JjDRUjhnbtku=@a;o`j=WfBm~aBkm&U0;Iy(vM zVqwhf8Rzjih0kYm=sF$auDF7J7YyJt`8vPqKUsZ7av5u%j9|(l!!r_xgaR|4xNoLGTXjluvUnh@Nn=C80R6CsjxbeCd5i5lL1_(~2X$VF%?T_pe@qK`n}~&e zjja>5Fuu%P^+rFVJcFN^VyP?BS-jtdp%ElQkFEgl5c2XB= z4{Wc1j#oC4dgd|yDI$nA5EWrVr7%B zNV;B#=+IiUJun3`EFK`}%;H9)a%M)eZ@)!IUyR*i#g;b_>MGm5<`tedR~*thp`3A*p5VzONGbWd>uB10lsf)BLpupPY5QgHji0Y1 zEK!`zHzA}QBLhZuY#M30pp2@Xe&>m1{5L39uyIxi96i~{noo%LIl9QH71D8XsOf*x zqt?^WvPxo}XS{DWB*CRJJup16x)LO3cG0*rqHIXFN%?Lwa$A#lVy#O0rK7~D22=CF z?V{4ngxQ$%wf7~vFua`p%y*wjVMB<9Z)E;w7aWXPsSXF>viq9+wxJryB@=Dg>hRZ3 zm;KZ#@Rf$>a?*#uT+%j?FDmVMV`B=v_#b$d;`qzRQJjjh8P1V4Xl9pzNUY3@2IXaB zxm%mQ5*B|P*PDFZJK_4dL5j#wa#NM)m7tA5K*Jl}Wvx~V#q{edP5e38T_j`2cF~LQ zq@?u~6bB_i*6&<4z@c8d*t2Fx8vU2f#FJKWu46T-HXEuny-NV=Kt9 z5>S^l7SYb~VN-n{y(n18T9q*Gby@k0_v)(maIjMJxX}4r;I2z(yo7AP>HZ+gz-7OMqS?n6s`nB zNn3M5#Q|4QadOe$u3;fFEZ+_%l#1mpprYoxG_Z9FbmV*?VOpq}_gS~-YhF&SV?RLy zJAA!`y0lO?LZGZ7m9wykQr@bJ9~jY`$U6%xb*oCt;_2tvL|wn-YsSiWh&6V3`d+4`Np_TF0OA2@XP?p8}g?+U-B$ zK?>&+9#*(La|!SV^lvo4aQ=4TaUFB&{LR2O5{~Xa0zQ$zJx_0&@%QK>_ z*>9+vr6`mFe$2jz4GdDX@>Ys0?&H0BL3A6KRAj;;uCG`zF7jBw-A_39!>SG7r}FA> zor%$!HzprlLB#~Q9`8&FlPI4Z0vO4nh>cx^X@BizcE}r%j`eGPtD^DO&$TTt zXCi8yo7EP{BT_p6@8Z~YAc~8f0&QU;CY(nbfU_!%Y=K6IOZ=X>1J}p&?rbJz;xPAF z+;bSGEln`+7zmaBlrs!trcdWJ&}MAsyBTXorwZpka&wF1T<0|gRne-k01ZO%z9IW~ zb@0$jcxcSUh1!jj580zI5A!eWDk{gamx-==Kt7s4x~ssn^Giit^Gw{6YDJ&ZgZ6T1 zbaB}XF2_{ISQbq*KNzML0ACQtNfk}*)@{w72ZzIS=3NtriA0I2#nd7gSY@unIZuCe@J>i&Jqc z*Ow{V*Cr1k-i+1vIWNKTgEPCHi@vda**p5ag-$^?wf>vzy3!}HrYarrQ>wf3cv{o1Cn38Rf#Vg_FYMDcdU7>7N| zLWdWu=rHDqJHMoRZ0(EvOJK&=RIwEJ{U~lD9&vgtfB}L@&D}9%R4swoh*B6g^q4^b zD_2XF5!|}yXs1`xlrQPfcriGBB)1rQLIE_$yH0{=_vo0tX?11NmXV_~DSL^uHL(R$ zIUVc{7pRSCui%|-=bkv|FFG|i_?ontYDUW7`Ba=P)&PQC1LOo9#CQ~XJrU&ENA6w<#|q4odk=~ ztR)oy&}DuS#jq11g@|gFxpk!yx_0y;GK5TrTl6KK;N$r4ymfx-f?vMVYB2JS(XTqb z{w7}bt7;KR&*L*yY%@UvPKUC{+;1fN=W89rBpq6H5K~KKlds*o(vhE?a#if8i|tTD z-iW}91ujjI(rC6&WrPe=bh=<5RVf%`A^))!mkI~O;JlwTsdmJS* zHqJWoLF}WS=v=0NHUh)NBP=ygd~LQm>1t87i(B9bzVs~e)Y+=1E zQZxALFP$2;L`aSfz_qnVw&Z#~hVMhGi5Q^_WxWkrIs4{F6Ty^)1&ms8SgFJI+^c*)Sk$w+3sog8$oK(|)1v5ol4=OwRG z>JxlC3HWoky6OQFijQ?bS}^E^&_ye)k*6NEZ6Ke|NEKI&@EewGdV526RQe~C82fl*RbO%Hvk$WNX<{f*g-q7Cg|Uj zdgd_TU^EX0JV9QXjxfk|eYY0oMl^CYG`C-*nCS8Ki zR$vwmd40>5CKJg4Jny`&yVP1kw|zCGyz5&;=TJ<2ZVsA~x_A2UKDwF68I8)ZOj|7{ zL8-jzypbFB)NNnMngmSMS7Y13HXRn})w1_dg4bCO7kX+25eLY=nf=mF`JabYNb^Vn zWR5rwrMi?Ssn6uOZdiLtj9OMrXLonHl!VNA1>x*%F8I+Z-BB96Eo%F^hnHwU3##@d ziZ;hHyFi-Ha*loS^8$xQ2PH_u^3~dJcBbMKTft0iEES-W|(=#SD3sosB;iPze%P`5<^VD`tj_>hNH6WGt5Udh3oLbaMag_fBC{ zW^*To(3`Lls(HunQI{#;3SQ*O&9wab)6Gmwths}9Yjm5##Ryl|jj{yov=?UxHGeZ3CJ=4kGxoO}ruj|jzx!2#Kj2ZFeNVpSp$ZMrSI~ttW;<(13 zm6tdLN~5K!9Q5v8i{BfK|Lj^j;W|Y9u;)0@cQNvK+uK@FPQ~PMf@{A=M7aWL(taxl zs?AE+xgi^88YH~-3jcA@&F5@CV{}z|3i0Hv$#gnRPq#39EAEg9kF`DgWP>&>KH>RbrpU;UuJKrTeB2}>r(Wzt%HRzvr#gYsO68E}e9ZOaq;r9X z0nu-7SWW*D)(gir(p@lPIdjg^TMG8k-|#J_O00&-O<0XA(}WLMLLiQYp@v$HE)c?M z`i^~7L6?ml&(nlaTKd<0A~|;Hf1``OJc_ovT#RV2;`N}VU3T>X;pHAa0rV{wOs*$4 zh96H56aKcmveYcDciR8TkFxD4H~us7OU3=MBQ!evi1N z@4xoej#$o>y-QDQw_Jig{VO1iWZMb&_%UuyJ*t4B-oLXmuP6(dF0lQfx!ij8D1P+_ z3%_D(WW(}hfA^KA1?rr9hx?zyV{r;w+7LtZ&-)vI_c#eL-hLdEdGEo*KU%AONNv7k zXRE0$fqj3N$Kq~D=ZBAaAl$-lHirZ^n<^WVV7mmz^3_*m@P0gkTjtgh@cI~ls%8H- znbdZ>{xd0YaF~JD^(l|+lrn15w@K}bs@E-ToNXE4y05L#qv$NA)b^HldUuYs-bywa zFJ*0Ow|9LOJb^+B;`eV8hR#aRY?KfF-$dFW_+VMe#+JAF?GQmOwtQ=WkIMq*l;3I{ z1#;U=a2Fp@daqAs70XSOdAaRvO$2ycoC6#o_pUSBbR`aOFIrH2Bj9@j`mmIf5MKp? zn?joX)wD8|n8&$}i9$bLC0ysQpwgO(rr$hf2D{N%>K{)3qxhU>&KU0>pX;^rJA_YhtO(2H<_Fofy`m=R z5NMEy+{o({O289ij8CGe@baaTzeH7yKP+t3$aeaE4bGGiJJbN*oeh~}sOjBAepTBY z3OY*)W4otoWj_+nw+zbH`grJ6_nf{%;wjKORlW)UZxX9^*py8DWqcHRfSSYEo$%))b9cTJO81Cqia!H? zCNrsoMY<4@)9t9kIVBqYNKeYd1S8Zyju{zQyvL+*Sa|dePAD`upsFebKrzNge1R4mho(zVrT0xRWB?~8xcYOIfiv$;RgH(B~$<33l-n+FwI&;5D9Z(FlO@7 z!MxeA9bv}fgJzv5FyNrCJ+Y#^PnRVJ=<>-Oxim{r_~IMtGp+IVrJQ0TU;D;bcTwoO;a@i7)#id4e6lwcY2nDd zNiwic;IEd^{UqDWntcvNeBQDR7q8~MhEdX6%1e;K4iFq)CJM zSfW~b;Xx)}n0eg52V`5y#XT{1i-15WimrPld(no$Zn|3$;dd(m8@tRWb9w{+hQ_%N#~2 z{oWqf$72TRzkCi0SjgSs^tJ?=HVlKf0E((CDI_ar*02Mi zh9wW>Bc4O1Jh2phJnVO~9LqG>1g>;yDfG>-9D!s@uTS}`_1iNHq06TEk5k&qFT!Is zb6xyqRshTTYj9hzfQ?R3)JLdzCypv)PD}xR$rfoKR>jBcw0r1zAhI+1ERnO-nn*(++ ze%tTrxnN@WJv{${M2DP#@eF%|2PoH7wsr#6By_3&N9Dq9n8= z_buuW{To4C;`*#a47_qDiey9kHxq@hX)VpU-=2Ds^37gKMvl0D;HM3f9U`+imh6N` zXZ08eGTH-Gizg!QYhv@yV&&FE=rbQs z7n}dwHdO=P9f#KW8e*bjdQ$EPVo}B>pww5D&Fyx6>8bifa__swup@w+>M;dwMCj;E z)7O%&Ze1Py@JtWUz_V9*q=*=FZzPBmmF|gxXP=Uz2X-uiKS!%TQaeXe#=21I7u!Om z%e>CvdLmYuSUfBxyzP^eC;OF~$C^%3C@>vXm8J$zOc)4HRqetvzV{<%lX(;}llay}N50IXr48p-4fNW$ULr8Qr{X{B;maJp z{5v;c;PSECjz5!Fc(bTmLx@N)fqD4FWdaj=UMg>JB6i-6K7wt|I9~KR|TL&a`9@+Jg2?`Po9>w=~rUJGo0R*-92Jgw&GiaRp z9`X(c#>l~y*F=hqu05|at`5=%i3Cf;h|j|%P_=n{3bEk}7q3Zg2W#2_CH7G-Qyh2P zFQ0;`WXwSXL|)r|3+stPf>tR?(v zjENeGpWx_&35hsP`q;S3q%wnEDaM_u(6Damx?I@0uKvqY;#Xn{U$9S%McE^@;xo76 zDJ-POfx$(bUC$sC9H%7TKttR?|6{^P8U0mhqP-*vGW@fXdvcRD4aQK!98$#A-lI90 z1M7o^Ls+(#o${AYtxq}PJif`j`SQZMJ;|>O6DW!Y!Yt8mQLvh1t*6ppt6@l;xrMtS zn6!iANy2e|74DWk53iHq?LlGQ>x}L@TBYzY;5==lKHJy7#lPV*7Y|7s5kolIHvCd> z$xMGgWo{4AH;A%Q1OBw3=v(La>3TbGV8H-l7q9lIUBTou!Ov7i17xT2NH9r(;M=Iy z&uel;(R!g5Vtmthoi4*I4w1I%krur8sA6plyoNSQAHClgM8pY-9>y%X3ZfSPuqYal zK?#+l!7uJ36v2de91o}C>(0_MYvBRb*(KMkLT%a5(f;?N$PQgc=|0k7GL@hu@NUp* zN%4lj7UWeW*OuommGo1jAE=XzUd>VVKVg&!X1cxt#7>aC%ay!w>J8HQO(#Xvr(2O_ zdzvfX;lRDMfw@MbN{W;P9t{ciQ(7)6BFIc?C{#Cho&Q~}eaED~pTF%9+(v+GzpeBZ zQD6SRYZ!~#GJ3mx@^s3}UvPwHl$>KZJu0jES2L-#UOzWn;;Coj`x;)zbEoYV+j9_g z@$m1uQ{-Vrmslcs7*rfjke#Kn?dfN2OKsb3AKUAn$B;zhD@WBJ_SreLVHrA^W~t&K zH!YcxXxr01?5vTx#bj<5OC(qxXxbUdF)UZhHz~7&Ue^z*up=#3!5Lz$20CBQx~TV` zyuVyGP}_)EFBXJ71I;+eP&F?JjC0{7(U`;Dk-24jyI9AM1g)xYEDNX`_oer*LlMFy z^$(SvY})#flhXt=XyZCTEiDt~ktaZzPeTE(XkU56-3AK?p8|bFH_w`0&hr@k^(IKq z9!kQYJVb><+O ze_2(h1gO&kZMu98VvNv9zaVf9alV_^Tc8h=iSRn3z^5w$Z;|Iyti_EVvyDvs$+rZZ z#9zjbr%~McXqWSTP*PPcxQ+@n7cAH^{4V63anp--G}I^ChYXUC9zetc3G7#{Mk7x5 zJ|tCXr2VPZVD3C9>ipR;zg2lPc25cjMUJrTwVj>V|Auv9Kof zAMb+gMw<(KHqMNWimr^<^sr+49#Nn`erPhkrFWU9O(st4tLO>R??yb#KSg`2>HzDp zIs3#39oJfI2l)Xb&DNp0lum}b^?vK6KETM6EoFb&X)jJTW@*s)uWe|hu7yao;c+8| z8Al>s`y(YYm9KTS8RnQP%U-fOWJq7s&AePNq%vwMwHJ=xI2Ss#V5(zpBz6}PtL9JD= zh`}9LoGGZ!)84SCQ0OQC)Sw4ZHo`SgWuu_MjL(F^9E*izL;tj zR?Awh(Q{&sfM!#+(n%4_QH%i6nvggwaMBrJZ#% zj9*(ha8-IDecy!ZUl;~92{;`n6?Dk+4+w+(M@air4JNZ4wiQ4$=53XfI!;k=@A4NE z0zInljWo03sb}L_SqKFPgfAJ@@`1v*H)c2Q>HPME6oz54Fk#PDN-#YSgzKx$B+ii? zOCkm_=q+w^dq(?Xoa6B1g!FYMFEblipos~-Y=O^Gp2wJKgZ>Usbo9y->V1;CqH`h?4D7|K zf&|R$>*WZ8CxRO^8dGPUC9CGoNq%7T0W!?3#5;uL%u@wgpY~*wN8j4OvkZ*T+;5ibL*heDC`pWYancUVPsfvtn11tNRZl9s+V^E2OKu$`#d zKM%Q8BrYou+1c2;_>PD@D}(*5j+Xdou2C+}Xfo+}dnON82Muc&cQA4<@=!b5JOt{@ zJIW67wRgX2(&Re3C62Se&#!u`o&NS=j79)}iimq()RE8$Pvy=_0gi6Gvc*E53@=@H zKV#UMct{oYciEQ~VtF?X`5w$y``bLbuy_$dQul zhC8W6i9~{(6UL$Fe&um9#)>+D za*3$&i_#$z)^j68%cmM2B(!jJuu23Dgly>EbO$WLnL2!w1>B5=S3e_^aSf<<`1C%{ z(XmBM3XKK{DE|I-$0*zMmYuD^;MXfvW`P%dQk(SxG4u_esappq`v+nvd)JqIfwc4uF{*+z`3L*qw*>e6NOV483zt7+orZZpZuR#k$;h~Kskue`4g zakOZ2;6lV#GM;0kz45th)?W!n_%$+hIz|RemqGqB!{v-?&YT4+uRL^fHC}hji{Au` zW^*s&D6`SJJMO>5`T9M4-SBaIC&2~N&K6t{au}1wh9YCue>qGSANe`4pfjNXtGP>B zJ>rvRH4WW~04R1e1o{Tm;R>uAV62;xH@DTZg3ntI$-izAN0@aE#1DB2zF}}RW`D8o zaksKdp=NoCG7JJWH$!V0^lvW^C{_hFU30&zw)_^AWI}PN<5e3`^7V^r5yT!g+G9wC zrDD*!QgY+DZ#Uu`KwczMd_Y5aD1*oLY<7a=VxNI^{wQ#0A9^sT(3gTevn zAV0ZRRAdU5)rQ~*zV*lmKhgU=v)CDBB4t!L!-F;nP^-sMtbl>e7Da{(dd4>uwid(i z)+Gf$Mpnbf_zs7*2#MLScLHJ+ab_l7U>QmF)rDX69Ql$x1gC^HqgU3mji}nZ?$ttG z_Lk_O;JbD~E-HTn7rKNF-5LuwHlLoq?(-6YX~kyuBPDYyGD1e29b}1fl$7ncrlSTH z8&1mJDBhw(O`dZ9`ik2EAqqRDBO&)1V;>R211!lOJD1*Xj&k<+7|SQ+X~lvc0)g+| zU7a7LM$|fhyU1g*ur-@Efe68`|;4D5AaX0poao;Asv!P237|m!-+P7GbHBw4TMn?YV-)7yA&6%fLt% zmd4ZikWbChr9bL~K<54RkAmRQPexwTdNV0Lb1y@e!xrczYb<>h&q5JH!Q!lMqtj;C zKbn4~*1p77N|2QPUh0korgdw+7SH-7=#$hZClsWtUO}F=9$bNZ`q%pxtH$IKg5Uq0 zW&2*tRC(Kz;_r8=eT@uoa8ND}75IlF<^Ip-l)t~-Cc&~boe!-PeI*UhTl2kkRiEhO{ubnqP z1I_;aIxcw#rXSa*(pOo#tFGk0-rxLmQSvlNCiLjm7h=(TYZ3muo$~2VNeJ2fkJrDy z4;*u>S+3h{yLGzp3MM}{A2v%uMG8r~l*AJ+U-2vEc$4*;m$Op%8dcQE9Z*~^zfb<6 zR8aIltnzx7oYs#{5$!5{qLQd&K2h$ zH^*=NXE`)q(eZOA!~v+-eB45OTxfQ#wrvzOp z>>NX90DI2$7&>Oo%zJdX?k6}vIZn>HGORHuAAsJyfCoTg$WasraOMDn0b@C05&)x| zcOrn%93x5Cm4qm)El>(}Wg-R`$w`#~;N_&cBar0u%D_hWiNoGqm;G-WiX5yhO9C*S zLnIHt{ZBsyd01PABw#W}Tj9U`a_|6eb1cOHL^;b+08KdloH7>#njCp)fT()z!5w-` z$_E1fm*@@`KHH+hB({GK;ld3KeoTtL!Kpz0XO2gk~XUusrLE z`1*3i*07V`Z}VzjI@<2LlAZeH=Kdv~P?vYDKT`wsO+15JCU$sLNT;*Tzj*c{b344X zGc;Yq_%T1iPj%<*md|;)WBGy*hXyVE&#m-_17PIrdm~W53FY95!fwl%4B%VN#w;R6 z4vQ}WJ*;(j44pWKS`P3CFC>sd?Tf$(CzR1vO8k!niF1790ei4M|27N%`vExY+}u3W zd^}v#f?PuXyyk=f5k%p6{$plh7#mrW3-PGjo1+GYV;!eiisKFQ1R~d~rUX)FLQ#js`6GYr+3Z+ay*XGf}HuTsbAxG$Z@fLhyEw$3f`(wggd6`h(`4 z^^}5r*rMDb{rfRwi(I`R*PnTEWTFQ9#z`(lX#)IvaI&mM{L9`g?kk8wX7Nxu+9(FB zC0REqUKx_$1MgEpYQs1xC?fVyHm{wz8F6)h`l)7uOy=+8dCr{s)_}>-b?mTRiQnQu zx~z69&f7Ohd@|t}fb{aol@i>1hrA)x&p>L~yKqsPY&%3OX^OTep}XG$5kEnvb}1bN z@37$Ml=;45|E}HBhu0j`A^!6o;t=s33?$pQ@*`}P>T z4Oz|Eh1uB(Ai=n38UqYN#f1Ite)gC{W4v=m%+f72A6b)oc5|YT zC#yfZJ&{a$e$xu^?PhiTt$A16A0}pAhjD8sgRM3w)^X$TIK0>)HaTMmR)f}`I(zqs z+2R(&TqK@nkiRe|{pDsufu*@wox@#PHI*5r%-fvG^hjv1e0_MXhqqRjEai0>0Y3kX zfJ&~AM2cDEW>wcWh2(uf!tm|21U?{Nmaq6(TvS1~dytLNn5HRO4DO5Szy3-hbH!Wa z>RMdsy6n!BFudCwx%t!!1^`TeecxTFhMGcfee?g6(CTAJ571zqrF}PgxXM+juckH8cvkEWc@fu?sE%pbu(N2IDGsP;TWlbDvW2!HsIDu$ zdVe_k5k9HzdZJ#C-?N3(xIf$x#GV40a8Cw3#iShG?>t>$dk^LM8{FPjK zC1AkxIY}^2*Uen7_*$i_Wv_3O>`tDvC}t#6GZievHT7r0ER|n2X6tb|8I?kkk~Bui zoI_D7I#Jneg&kC&_$ zz*G@hPj(ytd!6mowq+Q0goZg1h7Ip^1bDyA)}Gy{o`kF<(dnzco!!LU(RhMx0lqhw zQo^U2_hI_^Po$ZryYlY#=a}117a_}j5BE=p?g8Yb8fJ;fPZA*)<~JK~z9|-aC5Jvk zydn_@g=(R(w21?FU|WFeC^zhQk3TRV2iq~mMu=>Z3{U*hN|M}TON5+OJoQkhvLotO zvf5>DtewhIR6#zA{+BXfTW1*jF+bNRc8VMJ@$olT)=^7!->kBvhzY|@MV0z971N;xjNp4J*;}(B> z9`cd0dv!T`yh}zubq;+M{idBr6g5)g*UA&M*G1nLaLb%Uqhkl{hQ+nJK3Y)D?;c`(FP-E zX@wpLB)cBcFX(9vhI*8XJD|jOwF0{O7; zZoS|Ai%%aoP!fDrLG1A-Y58d-8ff=<@VSGaLNJf$m19Pw_cFZ>lJ%iHd`EDv|BbFI zfA-)L-^likv!h~Poes`*?NR@U>-#eJ{q3d(7T#T%hd#KgZ|_(pyD|P$2&S@1npRGv z-KdB%8IL_(&awo?bD!{d#s?s}mxs40j`H2OaOO-qS8q!dWAm2j_t_%NAy;l~?DVjn z6M%zss2%dGDv~$yGm~3M^^0dKxFR!ZTU4Abe>>-Ik)StT(~0Mu2FwGHY8)n32os4r zfUA@pdzq;Ov?hy-y&N+YgO?3PIbPe>Wzo$17bWswpEP{(C$>ewKV2N8mp5J57?R!Rp-7GY^b29Gz2}~1mEJ9q0ksODXf2LS8FZlhe zmvLx*vn$N5H#0-ZH+SZ?<1{7@liOY+{Sw9mpK zMC6gPCZ*xj*$dUW*-5IS?Lrz!s53&9%Qk?M%1`8N=Jh;C#C>`pbY3?w^pV=JBAK&= zF^XzG15*+#RCkII``HCQvGI?y1bbs5DRy{#4wL?tHNE$ZF;MInywwg%)(|k-;}0LO z>6vxC`lTm+Kf(U$i{*`$_68-akkXJr#=m+fjDh(M&*e>oHrAUbEjx)^{$sK1W zI?+^-;7vF^Tf`K<4W1%)1dTsPm4so{1LsNKZfF>l1Ktt${lUqHl&Yp6$x<6blAU6S zZ&h(yqS@VtT=;e&VEZsEF}%~-s>!R+G0_C1?<2!Qx&}RqHWFoZ2ov@eX({LqU6DLP zvISV4du_K{+Lo#B%(45{+22Rgq&8$@y)d|yV<0BH)8BItppWCmZ5f(C!N(LIxoqCL z-0(Q6(AB4g`^JRbWRju8C_{YMeb}BpQWG`nuk`#w7cm*43@#H!OHLvd992!@FOS-w zSzHrLW7GZ^Ke1?I>M)VKwIQ(9W16a6DNb>B ziaWt6Qk({NcMlH5-J!Us|Z%#@PSSeh=nBa*&M7IdaQoPe|Kk3K)h*DV;-0 zeK)C@lB&P z(^SVbS*pewqMLcz&WkoL!_8*bl{+r#enfmpIib#K`=KM)k>A_pnAuGNz~6j%wQruq zu~4%I2Re})>Sp2nQYO-#cSh(&{&SUPyjA6B=tX4@zMMsoL5p`jo5Cj3k@L>II=vKo ztG=dcVe^y?O2W2w64$n7`A)DJY&l!=|c?(`{5r zPn!kj3V>d1pIMMA>snR@ppcI+y)q5Kl9DOO&`}hgz&Irs2lgs-$Q)K~NLNiSXmsg3=oW86*@u9i#}sx)u?kUuv@sR_gy4;W+gxztqWpM1eoK-o4C(d- z+c^m$TYi=HkXVW=B+SoiR^-T`3&&bo>*k6Lmo>SC<@A!)Un1W}jQW9#_X}7T)qKqP zzqp8exQ1<*DxBm1l9G5~Mp3@B(`i%bwbU|8B+XZfV+VN=;9Rz2bhHEga4sh-@t+1A z-&`sAA7kT65H+zNVlZ0hw7S<%7TW3JU1R7Y=DkYcZ=D;kWxB@aalS49g^8O|JTUN3N&hhU;;9cLL&g{0;$D8yPZ(P zs6eaGkBW~#3QZ1Tn}o9cz?|2h|A9{as}8{XcLx9(#>4Uf+O-v8wz&}7_cb4M4cT%# zkRYL{!d2@*5)e1aH?uKHF87YlHP;AFqVsT0_N)%FrInU1*4Hy|+ z?nQzO^cH<8uJ;D5`)Ma4Zujc|z5t>fI6{w? z&*|0H!Pgf63Z*M~hhR9A?g;&qi-j_k1+W!3eP{>8Hf*Mz1e8eoo{9T&lu&=i(F%hfgnz!rJ#g6qpvq=!_uXD zH@rR)kn1P~5>e5eiUb-)GU{FD)jDpcs9@3r;c5zqYc%B){pr?^;N54&NB!;pdwpNQ zsvT4N019Y>*$6gyw7_iT(qrQ26tzOLHKc1Ypof7D`$Jx)4UfVMq0rvZ9z)i%k*gUK zgHG#r!zTM;)+0u{Wvz>(3k(fqyy-7_FgAQK0JLI!uLJYI?;@ld@!N1%QXT|Js~a_bKV`s8U>7B)FK^Ry>o!@Oe+^^0{31e(qDNSTJ z3~WCxn|E`Gfw>hgTIzMJp*WaQMIu1?4kC^d;c6ooEj{vF65;oNu>~_Ca}5HUN_Hwi zn(J668)Ic_4857WzoWAD}Wd1&y^YCyYN*aEsoc6F@%F_qyv+>b2S0vW{A;J`gH z8A@q3EeiSa*_WjVclob_Fh)nq67|-{kC}_M3+w#i+T1DYb|W=|E`(`$X!C%J)m+96 zuy)&ft9OlZ*i)#p)7pSGgp*Z=L?x~kI1nmH$H7n!l#ZBxCDg^`VpwXnYB!}LJZ|XfMV@yliKLuHQ z3?|%Gvel;+#Lpa;wG~j+l6e`^Ci?IsPa*6xt6Ol6g z%iqu&tE(0X@+dA@0!Yi^1EK}7C~jE<#d8X~VkY${Cp5yY2K?16Vl(zqh%2pmXNi&m zd!3mf%t)Id%!rl97{}H6uAM%-0)Ts{{G&>M+f*{beW!+h)`p!OL!#VNa^YOO#>i0e zc$9V+b3U@V+szmzU~!vyD7|1VLgRQSIpwEd%=+7>Y1gdxqs;RvQpV0Fn9LR!w||z6 ztOVGPWrLH27sxR9&$2-a5_yBNM*}t_z%l~cr9RjKUQ%cY5F;w|Gzu^l8=euwKnksk z2F}I>RB?k~_;0$;$Ke)#K`+2A5d=QKPj$J-Wfs(qzu@E_?CiC~(B#tdZdML*NP>x( zPg*p#BZXmauhEk6r#~@3JBHubpZ0FYaEeu4OY|{mHn?X}QxhGk?~bl2o*pD$<+(rp&JpGu?2X(>2;-)GT6A>2g3_*X|Dye%KV_z2};ekpFD#z+IgPT;8s zfBf9&3X&ix&ZE*U_m~p-)rrzb2>XfeEp>t&w!rXFAsvdvHyU>H`lbWF@aVFX#-v%_ zB7ojo4@0LTnknbIw4foqgmhw}G*1)Zl4zL%N4?i4f=O2o_%#=g=)+A2{;2z}8>GVl zw0d*Sn&ELgWX6!ho0ul(>CTpbbtCx#tv*h?Zx`M*<=ko3uEDwNngsil7%sipRuOKX zn-$vX!`AR1nQI%5uO@6L^cx)Pyf6cJt3=VJ$JJb#i=qZJNnOuTAL?a^@OYI=OLWgh zv!r-Q#c}{t1C?7F1MrM&P!K$GSl_CD?o7jKgpYEml?U;#iBd`If>H#)ey(stl|?4b zEEj~!=Ig2N?K$aI&@k3ZR4~4J%;OLv^M}8S<+W*dBGG((?x)$hqS^aQ$MedW1hXj~ zd8D``@$go~oJo7^bjNirIKkR(=o%WfdFQ7`(er!?#1l|{tCEq19P`psClUG=HsYhb ztiXJkg~O|8N8|6`d~>w`C-kvtr{udyf6#^58%MF?x6^#AABxf)`KH)EN28WgX|7K@c+5bb& zC`9oigR>$+J*RKYVMb>Fyijv>1A4(wb9I#65Gs`jdyDD>u0v%mIFJy}G|S@%Wl`z0 zD)-ucugY7ZW+j=!oI@)5fP~s^NmS>$N&OZSPdl1N`-#mjp_X9^(VWvibE*bo=6uRZ zo;FbIblgeYIV;NiBk{C%^noEi=Ry8Pvj$BQX7b<$7RcsiWkV5)Wx^_c`j#Ezvv;i2`OSPVGUD0nzNbU z3H}E0gMlwG-c7Nae$F!TbB@uxsIhe03tGmO!uJXO0lSOUqW8&|=3EJ48h6`2!fIvG ze>o0%csrCHy{(b@4Etxkac&$vI^r!l;9VW?abok4bF;gu<1^qjeWoRA;+0l;L;>4k zOrZL<*m3Q$w|R~uPK>C(xBdZNoU&c*Y!i~M5ssi2231BsKwX2sgaOnXwY;Zs2h2M@ zi>5%c7cznyft;;VB2}^TIh$H3tCswhOuIQzxnJxOepI*&6OS0id@wAZ8+ijE%4`It z@Yh4ZLiiW?VdLZm4uTN4!?qG&L0buMm4U#nkE2P#+Ogq5?brzJlwchHQjOUE?+=Fb zZ+;W|qv8DD4~7#s*$hPinA4JrBpp6#)QNwEDRaF z`yJ)@Eu5aEn17}~T&T^DmtDVCFX5=}IXd2xgTnewKWikVe%CZIcU+Z5(pmOa&-$^1 z)br|df4)+NPoXvdlw|6Zv&cS!fP(t?OJde5#5Ie*s7&pM3sL~}csB|7D`K{dT71f< zE^PDD0+!bc57Tlq?NT)x$e<#Y^3cf_msdaMX8X+Zm5T6;4*}88N&);(x*$j9AAauT zHkgU=Sd5rn#)y@gpYvjnXv{J3eg*jkRko0?tf{by-vNFNl9lx|)h$_)h45PZ&&8Qs@xgv{d_bA%e ziSXpK|A9Eo+ zV>#;+A+WY2!u7<-X2vT-jg2o1;>pC~xA;jnKmB0`p0b7EF5UK;JIkRhU_KA@#D4h_Y zf_`spV2TU|kto7G3nC3zV7`^{b@L>10|TQWge~bieCmait4c^sUva1?H63$`3pyzB z=tPU_DGjmGBKX(@YuN5zX8(ZB zVS^8$oJgdNhIE6lzF9MpK^rZ-6%K$d@bujsHrXSQ!fc6|ISjW8Wz2&od_r7dAWelF zYH@)O$KS@j9Z>S!y5f*eF()$`TPQh{7PVai-mjK_@jrp=yzZChS3-KTK&Df0uI?1k z=LwV{K|YsKOtV%X5^9J^+wUWXc0!XC*jHb$>&@8%D>rQbSwnhXL_VBE1O@5&X)6h1 zY?tjnQg&fW(>mHx7!`O7tIOoF4Jy5x_rHE$7kpoK+$@A!qf5P7KI0m@ji%Hxp7i<3 ztKb%KthB|H>XG-FkgdzKiX<9T+@ma-VSD!DdH+c6*5&a6EvQWBRZmdQfK}P`t;}of z1)^APyyx#GgT%@DFQ~%8%?ZppK_L6D8A8r~8A8r~0h|BTPB^*#ZYRJe5dC@rG#f`;(2@hp0+bP-D}UL!CFxAxnBN>K7|;6D z0`sj!@|T4^mG=BqI8nOp32_&I>m$TsWb*1t=GQ*c&MNhq;5A&i=i=RTmusic`}Zb6 zk~OC8+e0m!CK|(<&#)e%N+inc-@#`N(3QV)UM(J}`r(P*qiXM}k^hi%GN?LT9r;b9 zdOI}v^02p23PY;Yu2wQNXE3M4-o`i`6r33iuRrQBboCVM-qu>owT(m$Fw(Cf@KGRz z4m8Hz$+n@zKJdAZRb+ArXqS$sFua*+a#Oe7j&VfGjO;=uRjC$79nqHvtNfhGnCpEs z*kj?Y!l3D{ni!0q9vtv~V-q;%JFbc=ZclTDfH^+6d5T9(Mer!iEPT#$ni1H$?QEg$#>y(KSZlV#C+J4-h{mLsfYu<$o#VvWc8f^x{A;aw9-B?% zQ%?)f<+2(=LT8f#!N1vdR_};lJ6DN-^K=DO_AvXcq)nco1TcZ#%Lx}J;7hMys=Eo4 z8_O4xrR18718^rh~Y^WumGy)X~4xloF%?PH0%M-_TqF3pvPq>C}%>_EUCNVyHC^gf_yU@ zW<*{~-YXhW#+mBqQX(6vIaGR+s%3tj{Cp{zvs}{+0$9Z(tI`h=IjM)1>1PEw>Bz{d zF2wqD^A21q7j|&nWIkhzG)Ag8E(l#}Shbn>VeF*{lD^5}TcDbce8oFS@EMBugRPp0 z>1HQwA20EYH8%6YvHQw%0x<)_Tg)R&-MxHkHpeaSV7Bk$=>jp{ItIelvo(hs=By3k z_?fKj1{mtMglS3>qC;_SIQTk@gbgv7WV^=9-W|5m$zrZfwa%%%9Sh^>zCe9nXozyl zz+Z>+EN40El!dolwTI%=ryz?h8Q`yDX>u9%z07dpf-1wSs~gO<))8nWarI~Gq1;@D zc&1p}00DX7J}juuuemFv?}X^FclJ6d+n@+5CxnC*IRH z_L=`Iwv~V?t7`w*otqgnjBxJZ@bnoFvxJ_q(;=DKdC?upG}`sB@mL%qK?0Q1b{Gzv zAL}6YdHqRm=|Q1z!hW_nv zXJ5&?LugP6I<>Gy7*jwzw$c)dH^KD?mi&Pct3!GTWc{_b`_qAcVO_=byv3s^n!FIU_lg#bVS zs)iyn13RS<;6ZMh2=!<{nRsMAkf{}d6FRV>0vYi`MT7X?HbyY6|EyVD|37OM*MHWm zQysaOWv+i&L)K4@N(0kN{R+9~5p|1$qD^>!;%r{1BTPrKp5wes2X{ zEla~9w=c`fSSa}P) zsI`ntyr0N<`@i?ylsOm3aWGDsTx|2&NZN?glJV!k3K6#W@?3SpO&S?%_c9v^F*hkESt_T)hIDg|H=DV8zGw#w=O%3GcXSbQX^1HaJwG#s8Q$I7kexUnP22MumL@gWVq*E7vlCL%yT^ zTx>m6BCXpeR)?`Hv6hAjBb6gk&iBqgaYhR{Vmum8o2qGV33?Ru7ogqBHuu`6WiGjR zxF5fzcEr9h0ZDv~DK*?#O_sUx^=G4T6%lBvKsNGq25 zF%Dy&WUU!0@D`GM4DiFrevJHgA38@hu>~`C0mkycsUZy?*%sHUDKe&n&`RJ6xUq!9 zk2JKjlh;rRp7=@Y11l&U7n+^%zE)J#4XGUxL`)a3Ri7`BUs6$-9hxhwR)0^3WXB4Y zO{0W%9kJ%n)TE7bwT$3`%M;jQ9^ln|iqQS~s;9&uB(MkL+7D3U)Jbu9cXr3k{bh63 zWM{d0O<~Ue#RD0@1?Q^~ZMDte(bm^^Kh>mB(*!PO%2={hPwsgtmzvwf6E#-$HE()N zw5GB;iBhHeKEI2~gwz*kJx`MQ_^28t0*e0$csHjm|d&g8tF z{QUBcgEIfmvwVQq7S>`=xX=3BXQraVYzkN^LTMO3-R-&IK#hIeJvrlrC0aAo^ecHh z7{)mJROy)7@A0M*wj#3gl~z8*Kl#qFx1Z*IY=#~c>W`WomjvB^!yyeDdneAwaKa^q zq>NFqa9+kyOxdqWlw^^erK+>9e=tIFCNZjK8f0!8r`!RQ*LsXY8dSmYC^^pq<>zr0 zlblR@G!1crt`ZoB@?Is09s1ksam={aY|YnNG-;giwbg#V7(dhW=x%bdz41~!VuNcM zheG8kx8#JRNxPgOsv0bR@%W`yKh+ywDAbO=v7M%>mTt9do?*Q|8+x^ssLIcsRtJ`A zc!<4NwbKSjCcN!t(i(&THz#!K`A0mrxz}-Ab$ghL zbi03IscV$zjsd z)Q4Y7=Q5raUL>~qm&KY&!qQcNnru94I0g8BycLW^zG0yIT#GXCkWG)|x5>5bpIh}g zJbEYAb6HGpSD3^9d;|>=EnJlBAjekwP`by&@w40l#m?l9-`95(38s1ORcpdv@G`Jrf6} z_FX&lFdbdkx{&CkVx>>hho|^dM@>ghpytG4K@aH$9c6DPE=-(0YCUI7g$A(-L+NyF zGsYxa&e{V!;$LMt=zwYOsoM&-V1oFi{oP;=zQ>36{V%RB&R{xGgy=pZ0AkbwEDpf? zwQ1>+=Wz9aD&Iv6;(bj1(RamC0S%7L-d;E;2Xs_&KAR~V*u+fA>R?u9b6+e zfe?a?XVrE)QzU#|anT4!c;oG8HEV9>TFSQU>cAnJ4o%{pwisE942QzX#s0rob*{fy zbw*&<3IYPCCJ@076`YF;#F~I$g8I?MK6Lerpzb_`2_&H980vpdt8@KBtK+b8|GSO; zuZ@wL?LYc?ZMnbb_Ktt(b}~viHdIJlewnGY29pe3JG27HGM?XVGEZ1th06E%KIMo7~t;M)c7wbhw{E~ zA`MD8A1i7bd1Ihx__q#Rq1_4?}pH}j<@_C>r=JB!jjlZA`amAF`w@GLLNb3nZn zW}`HHQ*2tCW??`yZ{SHgw4Q-$UMZHaoe?oP28}G3I`b>;v|*M)9Df{T9^8I17Nd{nj#wq3uvjTy(J^P=WC7dp-Zzeaw*E2os>6iW*I4?^+i- zw9_3|C))%k125CBQ1sOU8MCqM`$Mcw)~oT>5~WNj`epxcw+NC0y^|b1hlqcbOt7(Y zMUw(=UKJkAWR$2F;S(4xJA72HI7COdCI;6PLsAEIh`jf(gw@la@WNR+G|*J+wq~wl z23uE!OV^oBvoDHmD;KcL<45eA?195h$QYG9Xr&2&RhQ%DiY?$_FB$E{2utjzb(J-D z=)1r@hb=K4SLXk^+*Wajt!KGP!%A!GZQM%9#+|Znv|J~$8$D%dp^$V(f4|PX_h9cB z|8x>t;jm2IS7|3)A^k>Q#P&`9vS^S zA~lyR;U?(WJ8*!bO{!Y(v*VX)YpChcp+iy5bX4WYQC=a(lVioR|FYL(&Ne#b*tDwo zNk#7$gvcYSdQehC36h^CpY5P8{mCzu;O|ie*}=bujY#KcX}=%Z9F;iBsCp}@GaPIM zcItJ!d}7bc8c6~u;GQ!LGmbU5RE=0eqeN;$@p9W-lw#x&!pIG)#LJhjO|v?Uj?T_s z{+_km?CVGkGB1eec$i~rnf~Sg!`U)nS~7rmPI7bC#yx?K#%SYtdQT|>>+j%U(N0I} z0%te#`so-g+f$YI1qnTvhNSe+O;}B4O{AFw#X1L4s%hy7!!dP z=4A6wSaf=m^XI<3&MG*Aeh!gz5j{|qZ)azuo|dOHvO9@?R$bgPQ8l;Sl5d4dEa1ww@Y6&-LL{7B@rX;QA(Jt+Gda@nz1(*()jx6PsVGQV zXBvWJzrl(DNZVAw#M{E3J*ty9bt+dGVr1U-@5BB$tcg{R?M_gYZKwI*B#Yu*=a0`1 z=Z*}Q5AwzJ@gZ24h;09&m7E{0EF3Q^p2jAG zt`D7;7Zx07s24#Q5lHBU^|$Ve3@Dd{tPBE9Aw0u_aRcL|K3djCH*-Y*W)+3)nVzV--<-D+hE7P0JB#_JLe1P{L1` zFrVLp0ac)DK7r;cR)8=56?z3UhqIrtuX3^ltp`_4dv4*HC2kbDwJFBPexAkU!#i_n zIv2~3V6O9CG-_mb*mxEm?<|krpL%r3RYJ+1E2}wgbn->GT z-D~)XbRhusiZFp2?QQTDFYdEmG&Ux^RvtfK4^%bF6Gv^ zL>NN8$L@8AfsnR>6(G%Z5Km8rhNcy&sdJn?p;0W8n%gM&790w8zJM)fl7LAeVIRYf*7N!yfQIV$`*#?UP8BS~fyEP?x0ZROa&O z(l9aKUI>7Eh=o-BJ@*(Vdxcyk}N%P)mXMDtC{cPe7bebCnFbS&NT~+ zO>$_f=l)_Plz*lkgiHv7NzT;vy|1a#GqMMOagbxO*a}8W<>>XP#ytLJt0xc6tVxT) zAhK&jbal#ry?C)Udww%J+7$1FVl#A8tuxbHGESKJEI0$Z-!!qz#>kSv63dI0P)y~u zvLT(*A4K`fDh1?MyXsq@GAEWrK%P}bTtZA@8fvK)>qYMF)99ys>pzTzt4@4<>B0}t z*Nefu|GdDQKdYI zl$Fs8As_9ZJlORdNG|M5sj8xP=~9#KR1*2;q2?9JQp z{E4zT#^58007!js0Z1TApj-Pkuyhxw1fw+-sF_r;>Si7`x zU(+DTR>$&9z{gtNTz14fb6=Tb!KHF z*z$^>Cx9&|{H|HJ8_w84i6wcG|wuwt|Lpf5$3mV zVd$pT+5}!+M+hHcd76=q=(CPQ#p)u9WKy!p%DP5lH~_Axz^sdf5_(zO<+c?#c%l+cfJFJd- zsi%vO0Z$;jfjr>#D7$0gA^y1z@p1brI(k8Bojm78MVPF1O23%lD?c{@-W|Ch59T4? z8y8XKwQ}b3ibAEaU)7}HnCQUc(<3`E6Hr@*;KvscQx2R{c}#}rOqr6C%I#{7_vJCy z7qL>SFU1!j6n_%boq^rW=9xX52{fFLzs5TUo^z;iicsX3WFn5XocqO8dI9oy@A0RK z+5$Z?TI{^MRM+4!lF(%VDHg}6BkAE^oG!l_-c{|4rG&GcmSDfHjE4MpjzlT^Il@R4 z`<|)h5)n-rkUfxrH^@qj?U7cK{!J5o6r5n@TTZF&Nxq%h6rN6 zaSQ`my7R=_6y>Cr@p(AMoN(Tng-{<*Z?~OLB11)@YszdI>V=0NaL5-Ss_1X)X38zS zAJv+<*63uMsFl2XgN@+$OA^#m!qk(h%I;|WoAf$i>wCU zM;v_fR|s9IlOdu^2*@e~vk`XQ+;*>GO#=EBPA9WX1MS{CKxKY#;Z_rPc05f81A81{ zjiU}B-?i=dk2xt^fE4Ve_ZCi|V_HvlQgaP2s>?qmF%xK&(76Kv=C$BDlh2v1KHfDb8TZnnzuw0LofUS)VkL`ipL(+-4{LK#19W zE~1rl!n(mm;`RF;`u*ghSD)`mgFC_bXu0~*`sKGRTeWsiK$!O*AJGiFBGD)!Dwta8 ze#bc_1{eBjO^-BFjFJAmftau&2O&|5)XjTIbzZS+Jb_#|r(O&iy|Rc>Sb`)|h><51 ztl3fqAvY>xZn463Kf-L&3WjVf4VaxrnsZ54x3Bjuk5BvuKG&Nudxv-M83|GVup`c6 zxxd6<&Mr{?|aoe_Z}Rw(HM)fL+a@2*MAK>%HdA;v^?toXrAb3jru<3Y-;_wXzs3FHl97=4p= ze*q9{C$_NOS)qsZ2Gkdt(i_SAy=cae((aJ}HlitzbRR2w z3L(G^MW;{t7j3;16-AnNDDLth4{tn7D~$K@N=oSBXAS5988A%d=C-^Yy=YqBiZ@63 zYAG2MQTcUweCc)l5dq|{b@<>+-f<6vwdS9U1ZebQ4+`CanR4j1eUc)Eb-s}XS5t=Q zigVTFBVszyE^FFZ+YbtRN!V<93>d+xx$Xmyp9MWP3`Er>BoQrxzDlV{8twq1%mu>Q zyUpAJ?-T{64=5NH2NB3)h8;7m)h`C$jQcwdRjpzJ$qL8t{WCs(Ooz!lo>cnVq5lTYaD+{4q+th7=zq~lYvqMi@0eL&(B)@~O3c&#t zOJfQ$Z<{xNx-$+-Ufm10JTY$&i865Tv5c%a2LpMY6fqyY6jWZPwq#h}NFt~oG_fXr zVv=JZAvcQK+o~G=3Zg-(o#rhF)6)?2+Nb;R9lNK2rS1e5$)k#Hoa7kZJ+g0GqDFa( zg!YzNcrRf`P^V~^Ti?7QXLqQ#IMWDFRC`#ok{r@E$YoKfIz40LH~oE7$Bxk2(!VzR z`SZY-+1}O_DS~f%YJooCN#JN2|F2*cMQ5(9i~L&>m{y%{>M>fP6y%=uQ&bjAIXuWi zpF{OGcet$e()dXldS|=y)l+`)=V^rNbx0RU-x5zsGT006Z-=*kp8Z*_po}~S2=JmW zPTa(qh=B$*u-I{YjnXRdi7ZK3OQ|s~639>7{vp4Z!l|SK@EI#h5HuTa-sV{DueRFz zV`clWHK~DM9s_f&aK-*}Tq~jP?nLDtuZTW&(4c<&v8;86;13iQkJ$2c4C_x>K$*b)Pa_1Jg)D+`aeNUPo<}06cpPK`64g$^Nzu zR;}nL`_EAMKVbu`A1WKTss9k1z>hQ=1W<1+vNH)dFYjOR0Q6y|)5svxX%v`a;57sp zBPh8YwHX13t4D_P-*{wM?a8pf{;UWo|< zji^=2aN6%Sw^k~7lyg)<;=QENDtL45o(y)fz%y=LP>zI%c;4=5s7-r$enFNW`=G|{ z3e`=Z?s@rieX*PIFy{Mk|K#G)Mu^!o47-mQ-SL82gcc0$_;}j@g%ET_RPS`sp(jKf zIxR55t*!2x=c_QRiaVNbCX2NqR~;j;`EoI24rU zlBI61$8RC$N@Hm(lzM^+7qeutueZ()cO?N9!RkAwq}*VJmnqxgLlR%-A`g^kjT^!X z>DZoN7Cuel{lsvQnke~_;54AO$&%SsLaZy>_Z#*V8BpD?am!Tg)g|wW^Tp_-SPq4N z7N^)h94^AZe{tkTfK1PfuA>D{iGujEw2oI-26~o}qz(%7D7T?4db3r0vgKO$^5!W+ zG?2fEt~eFEl3f>fGDJ)6tC3!|-+4Fo;#W*u3mMXAovR2YQN_z`FCH|Z2FKXwKtZWC z)u~Ym5&(Ie6#VaD;=;Q@Hf)~_#~sNDX%vo3&&7Z_uCZb9*&jPlvQ;-OML4530z;8< z!qMN=_Hw>DN~u`%ekEzW2zdp=#mwTgtUbxyAaA3pi8(aBUT= zszW~gl@k_w9i7`$teaU36tj*(?quvC7_WtqN9;(j&7+`!i`+-7lxPfxVdlqsjW42PcdBCWhdyRy8gDHfXrZO(3pWEF z7cwJdbjIWHb6r_(pY?Yc$&XnAAeC?Qfj~ULjctjAz~*$ABty5~)!yOYo^$8sq?%Or zq9aHwDIMW0!2?YZo<$#*L)g&!~1|LFMHSh)VKGQf|;RW0mr4E5te109Z` z+lhd)vHZ8-+h1P`q|Kl}_)8j13@jcdLjN{zDmNHM!}3+Zpvg2vMdZ}>3$-s@0<4OIVul4%BaSo z^m7#ZJR^c1c=5>-nOPjOo#>!L#|`l9`{@ral298xrZ zJ>peueU78Dcg>ecs%rf4loMUdB?#5UyzJlDQPvqv)m*mKrz=7$HAqs03z}LytgO5? zytC@R13W4+^0Iql87;L~2Lk_$83$+bEp?*x1Zy_`M7?~{LN172qY4|EPK4=mH1^!F zl7P^B1bxSw&8uotY|$Rcm8VTfS!Zws5VHI7nkP|(HOGIV4PB76^vFf7EkJCYlt>e3 zO%gbXLoWE!(B~pUMjwO&qq5u6ec&-eSIW@E>Jx&0W5K??JKo1K9Ox^}9ZO zdviWSW}hEv_n97ZxF6B-+xQ6bY6Vzy;6Eit^i$`P&r!ee6{K^o7xN7-Zl+{%Q!GxV zp=7yFboxjRk3Tx(?S1k-x{5Ac!fSzwwF6ojvK0l{MpLDiyVtH+IHPutrf)k4KDk9h zgI77eu3#g%T9*L}2IW*aaWSdICO!nfVi$We!h4T*fg3JI{3g|^Q$VynDlF{(g}eQ) zf(3N6hrk8;kD*$H@nK+mT$ms}46IFK;HelDJP?l`it_&vYWwRufe6)92*7kvC?eqg zG}Hfq+SpjRft&W!6aXzb2TWGPj`ONPJgcIb1R1tz>--Fyz;AuBgs9ZSf>^Uo8|T}- zLv8#s8p>d$_55i(cNWie+a;qSF9IuYv=oB75}7&Q@!6=)ItkZ0(bqj<-p(A5=XO6? zvNM*?QTRSGRPtf^Z(ZH?$Z$>5(5i=1v)lxf24fg|)>B*MBLHkB2ipXuL3t$87r=tk zYPvW@NT?eZj`GhDvZq;$Hmds2{N<0qpRw$z$Qbb%hKo6@`1Xt<4WkrFseGnN&%hA5 z0y_-DlspXZr>EE|kvON8@KK|dMA%lYws%i++6gQF^w^mens0{I4HOLwer16Unjw{Z zfe$pxLb>B4lK^0FR@-nr1rY_Tgcd3M5)Ma#SgTf?s$a0X{`@0eIA*gaTk4sd9Fudw zFKt2;$FEQtzp?1K7`Z%U*RiWRhj0OnL7mlO$|UqS!-wW2*mgKq@GH&eNjm1t=+NqD zz(@p=@uOu31A4b3z6oMbA_|Km%yKoR34+^1z2jrx%rGF)wCLCBxC#P7hr;l0ma^(1 z*gRRsT{pCd72NkJlaicgcgU3^AL{Z7lGNDX@A@z* zKE(-9^lgB1Ug!J~zrgfXt@B&OgG62ZhSX(3c3f}pB08kunF=kiVfKP%lcrnvhD9Z* z`r}vcbO)3byH=M^b;Z6FMl38}1|W&ZlFOB>bob66lhy~Uk5-zN#LCezBx_RBmDNp+ z**oj(D8h2EvAjeD`*!KSa8vs0Pe+f7Qcpxg2>AgtnlOr1D(WActxm(4(X!B^$7{vT zb?1G>8Rp2E`v1hnB=DMX$k$ zZg4P@xJ<(mUIK6%{%DSg0Or$Z>9NQwr}7H)EO$DckEP_Vm~8O8&jY7KrP|ZU?A?>q7qLtJz+= zdLN$tj@#kZ-w257-&_tj9Vt9YH;7pa)`W!uj+5>)ixfA!>>>auaJpE1_%-io%ey)& zao;5N#4G&;piI~?hu_0Y9@aw*)IM_zcgB!M?Fz3FSFWv)@l5&Pl%JLQzDBpotKAt``sAy`NNgE%i_L&Ob>$+KzP1G2$V1#rxEMyI;Lb0CTp zMa-#V+2^%%LO$D0nxdrHt_fB7JrBK9a6R4Mxi)l`i&Ch< zr~H4cy=7EfTedbFJh;2N7w!_=-8HzoYbc!HPT}ssU4sO7f)m^=!QDQR)2F-d?fdKN z_s1SJMvbbySIwGhO@AIFgBNBd3uY9r=iO~A1#){kyj3hiJy6kj-O45FFze7Ockldw z6QUW!PBuYk01(8d{Y!GP%PY;xW0K3Y)n=_bCI`?}p#YkDYY~jnW(YEUw zfQlmoKEDbP?}}e<<)%OwOgptV?6S6$W3N2f82YF-Gmw7VSDcIFLd6f+c!Ux;FB=oP zPl;~O9Yb9H$=6AOW`lXJ4s1(`bWs%hi$^Mc%qjwoH+S+6Uko(3)dM2Rc|@=6Q`3|j zr+b&|#Fr}(6#_!1ymvo$(jbPU z$t>j0PXkd$Y<#yKM`plxIc~g1zUNs9fu-c*r_<~)`I7K2e@5)(T{$`js94~;4T8&D zuR`JAbtvd*M)c9(oq};Y&W30HXiE`XzC_PWr}@xZ<3@ueH%eRc%{;Z}U14BNjexqN zZ6nE04gC)DDD*VizD&y`PV4@Tv(wu6DaCZkx*IT+k~=BEFKMGnyWxi>erqtaPqgBk zzONPD?d2L~6~KHX?16+M}lUezAIWYOKOHik_qp5zuYU60J^)DEKNGMi%aDKK{S z6AS`t7P=2N391L>o{^4I$NQI-L^<&T3u?Yv=QV5u_L!dJ@O1HHc%(5s-lDLWdHY#AI z6ZCI)e-NX7CK5}V_vD7xixi8JESv6KWCHEA6I8K8_adU+94~?cZ%ay$-A5*G^ z!9S5EqB@yVNiC9E&zOa%B~hvk^?CV8*@!*ZhjK0|G%S;gugb5}dW+Fq(!d-IYKPBv zMH%4PJe3xA3N}4#=+WDGrgm1H2W5x%Y@?s8EeLud5{;;}BRJ*9xCNGo9Itp%&m{sY z9T|R2CdlXm-f6P%=|;9=yGXYuP&+nAOWTHo$ulRa@cM~+QzvTy(0neM!F668vwa;b z^Bb0e`EhUporE@iP)jSaJAHk6!s{k@WjUgB%)am1B6O|2rnb0L2+m!=k(u7TN!q zF=u6E|0^O(A;VP<3y;8jyRhCa?B?(YoXlhptSR+>ePsOxICw)RpvC0=k5N@t)_+tL zqt)aie+c~rfm=gvC5UKF5}x&aEd|e8%ll|ByUA=u^wp0t+JwnoR>rVGD!rtnB&{cA zL-P{+J&neJ=wO_H8*Y_BMy$hzPxSEV!))drl^87LpnmW@JOKc*j~VDgK!ZUvG#V)2 zY_;v5*TTG^*4sV!T}8epF};+^1t=|zu2VbN7SWCfk>~qi{4~SLp2+<=Ty>wcjm9?m zT{UD(e|x~d_dT#r@y^nlknAS;@l=dNS*(SnvUHVd7ULbWauQLp2;_-qW>vV__q?@> zE-lKd5HDZ@@tCwTpTm8Aj;kOHk=PYXebLL;*^^w-uz3(4d)*c7JUqrQRR#)kZS3Ym zNc=(*+ne}_(XU)SKdcQjsZ@p?D9R1cZCuE*DmmBqFh5ns>GN$$Saa#FqqM0iy(ZfVUBH4n{g}w5tsgHSqQau@XOrwL{UMAe7?~<}K0m^2 zV#P$bi4S49s!zTDp2eug*?lWdhYu3b0I|~a&b?H(K)~d~05?VJAbyJXV?;+7~}W{de9GBvM1o^9GF}@9=~9kDBq5#7KS8f<^#qO2qt8Y2!~AnsqZh zT9>z!2Lw`3F3Btxih_Zt%Jy%GaCMt=voolRl8c9~tHd!G8icd_*mKs)*2^S-C4=U? z>=UYGE&=Jt>vJ~(G-m{_PpsX7Te$x3cbA=(Fa~!I+4yPu_QnC&=T^UtCEWo<*=j7@+h0A@JJ#O}50S3Q?3ip;~Xs zM#c@d2QJB3uxaB-Q^Q8JrPaEly898Fq_KkmUR^5B?zXN!%Jvy{XY>o^pojJfz<)GT ztv;zBS07&sC{4D0?2H78_3X5E&?5K87s9c)ujbxD`n#~K#z)M;p}K15Y*Zr@NE-j_ zB()Nmz;YfC|FA((Qt8Q|LRJZr0h2ku?c&(J4Llkb9O^+^n6R(%uN`g&+er@kZkZ4X zRL+&*%dE=g$qB)^>Qyy_)-GF2KZ4eUM8;JL{bg@*LsCLYvAexTju01`)`&y~Et z_v#@`?^nh)JHPG?r1d7$@h~#cu3$Z5GcXl>g6n$dXkZ)w30H@7WP+=3wtb;hys|%C zS*kwzC_wwgYi|lSoySwwfLfMC!=NO|%&n}KT1i36FW&wG!L(=NV*y$&a%p3GuCE@?hjd8MZgEEGw zxqj!vRKwWa2%Fj6h(zr{0SnYj&Bfb90{S4C=Klv<;7=1Z4Jf`A9vy;}{U2S^ZmNIp zg){zcBxz*>e-cCe1mku$j+$>ZGt1X?wwCS(>%`(bPW461LQ)jhcWa4J=slxn2=7bj zbDsO+f{P&s2RBFg?&fSB2y;R+yv~GW6Cn3s7EfS58@-%2ZZtgvR>kNs&&R`2MW*@A zVc3wAnb3HynM_?Dz`FpWYc~|Y?t;Ly(x-H?TJ$D!vGhmr?ZaHl{4zcuwtKZahS{3W zQJ|_PPA8-5CrrfF7K=>O6v_Xzg0m~UI)mmclYXJ&mX$0l4Rz)5y&z{O&}vtUHV9?H zxM*F*U14x-0P z2Wa$)oJJ3SwQ7x9$VejDy@5NSbLwh2{PE==eLSK8uEE41qb8d|R*(3b-}Nq1HtFYx zv(z7rB{!dWw)$1=mu$CmDZ2!7k?aMDvDcT^55;r4@k~|uMLXW7K!gvZvnt2LI?-fA5s%YUrZ{3f` z|ILKjAJ^f;ivCa7L4?Krf0%Lhf0*%3jlXs3fS&|OTDuMk68ifhZIkZ8J3a)yp9LT{ z(RR_-mpjrWh3}mGNTToh6G{gMB~>_Q53Zl@CZ6jAUIfJ2S*_<iivJj7V+)D&M(H zVZK7?ChcSF&aR?dS^&|8^yo1mdq+@E7NQKb3Ok1WRcT}dc@V*9XxrZ7Q=i}nZpP^& zCJfzxa_VRDo070A{$5~+KfXapqQ8-$cWHjMm!#9gdF`k^yBm(g1Mt#=U}=EgELr5K15>NgiY{e>LfrdP;8ml!L&wqsgqB^d3lu4qgNHbrk}1FRad zPI-e1*9nTrSU6f@jo1a!;FNx&gP#!U;k*sJS;S9Zl}}DfGULg$nTe7Ma_z$*80Mpt zmKO7*2dQRZaJ9{4_@QwUhRq~`^=9)-$S~{3UXs0PLl&_6V;*j|E?dD=mvx;MMTuE&(c{ zJlXXPHmZnmoV>f9PfsK9Z#UW|NF}Q3q0xaz_p>$Wm-}%Q-ewGZd8y4RoyWJg7~P0n zS;Bd-fMVK|N@g&aJtHs*S?K_pbJ5ypbd(99 z{&yD(H!}xFIhLLa)L}@b(oAqmI*;&1E|GYi&(KT)Np`OV(hQ*guX zr8@wGzx(=F{{g!I?9`C`?Hc_?4g2jHX(K~~22eCb{+#FNM*61Ub5&=roPBa<8#8i`97S8;U;5hi3Hx(5(wMS3oFufo<&Lj8i5P_jQuEo zGF5AGqtF!pDf-|MQHvAi+TyKkCTPhZXt6t{ejJkq%`+65P{B8y8)je-CU0x{w&x}% z=Cu4=YgJHI)KZtsPCkh6Jt1k}^`R2d{_Hn2?r+gJHTs@tiwVrEVx**7Vm+$_8eT~p zTj~`(3&5Axq?6WV$Jtiy{bAXd$x8>(Q&kwB^HfL}Yf~?>yIM;!c*=sfjyhN;_0yA} zM82euHc76}vZ{2=Tfo%AR*}Xq-fZP(a033Z++>moJftL@DzLJkoyo(kfORFLEd-S- z*Cnbb9UhJ1%$HJ+RM|NO75P?HA%emvj=ilyN?>d5l$29o4hLAfHdAjberXLsk|_tk zRD9kQP(`oT=E-8EMgz~Gq(aY=={DvSZWTGrZ(u;ko8~y2L_6cHOw(viSeYTFvk^>^ zt<%MP?OeX7Cx;I5Ue~YwN+kadGlKHz`%>MpoiZ5F`>JDX`r*9urR`(^BrFg9%}h6% zRv@R@*XdSl?fEqk{Q1_v%2n+u+^D*A)=2bNxXJDV5NQt8J5Fw6C3}ktNw*Stuohbe z3%4lCx@zaTZ>-pHw%rVDcTY;%N7p6l`KJzaHk?BJzRXi1gs$hSE6+t2UlFnE@86hp zYTX0)OWO|CHm>^Jy~!0P6J3o^kef$uRDdV>P-g5YhD;F>t}SRtSgS)PT2}ixZuNUK zo4ZP@svbKTk<8yy84_d7zica5{+#&5IDT)gsc=iw?Q10W=?DwV z{FkJjUR!f01$eg5cYTFj_cyAGpj}YXGB-z4y$70uDXHDMU~a7Wos}~)_7IQv3p1VQ z)xdf45-nB+MFKTpox{jimr_@_MnZ>QQmlI~%}YeY)6H$yF!-1x5P$YAHpkzHVcg9B z;$?UnJ@_XvLvyDg*=Iyh%I;s?W(3X7_GCrcpy0j#4wUPUHGbR!{AGDLz;9vfYc-P)OnHEn(V0P2}E1<^A2jlTywT0D0WX-WLVCp6yc8g}XqQ_3~B` z;z108_g)A&X_;B5NeNl?0)kLAG9n<6K)7=eXu+0s5kFeHKqE62B-Z5ob<`k4^nt(2 zp}4gbNCg+pXMtm~@CBgbmgW3_9;zl4Jd&+y1H*6Qys;$`u8#`o_%$B3gZ-E{5sIM5 zInVV%nb%H?2J5|he(vW42~x0p8q3a?#zY)jtip1QP@0{nM2QybD_VpQCF2lb1_V@a zVE;ln+M^o!m)Ku@!Dh^n!YDkg8qCFS?MM6@j*Nh~sqip`V&s zW-0t6S~y0gOe}IZa3rRER<2?e>{eVY5x?X&^5FL#6$a;PsJ*L0HPZb&dr{MHx~`MP z_Zl(3!p*<;k$Zf=i+vQO4+l=5b=4V81UOK*8quiBRmb<}eCVM~2_IOcKb&}qzEHWj z3}clz<}A$(P&vX=!_x-o^e?w@l*VPgRb_fdb+I)+4Z4gJ+;%l3>S1(Hj^yHmPJD5BzzVdU1dBnaUV*~Mu_%A#C zMMGOsbCiu+yyfZ}nQWJ4s_$wN?g_Qyg6HFzpQwMJO;x)Z74XS9d{Fwlw+Z4I!-lJ< z`hYDVmHC%p`X>$n2NyG__3*ELA%efk_A$$3%`wa5>AioAdouj>Zdn#Zb6FN8R6c0o z;2-UkAglhj^472&t z-P^Ibokc8DqVcNVp=sI}>)!g(L4}3!=KLn7AK@Uu2r9({Iwe&KB~FDtt^2C$SmCu! z{8SQ$Z!i7$viNk9_&{Ab-34OG*lcskP7yKOKDM}a1%t{S1ipL?bBXmK^sa|FX!a^C zK!72F2IBJG_Y>VL-|7yblRWm}@DdT3a$lvq5?R2ky)l%=e$5Z~_2DCMDYH7`HqupE z5$7;Ju3rknF*ek%o5iU&(&{};NB)z$RdRICjqaqR@yEh&gdTpq?BsChR8&tE(Xqq8 zDav)t@|SDqKUgGD8arX4f zQWjE=y*L6Sax1&L_votSaM6t}@4ijYIrtL*V3wxSBq15WI0Mrz?xemuyAPT#YlL|b z=>Vmnhfz;H1;lCR@4^S$5@Cxce2GJto?C?ohQ*W~#t5@_A4nP*a>E%e$&F?31rtfD zx%XpV{#Lih6?l8_8NDp z#N}}$^1z)gNUjz-7^Y%VUlHzoqz@~`H5^C>f;V$<5U*nr*-OZv!Kxh(p-j|4y#gw+ zHmt;*+?b{XeQ3bG@J(Dl&M)HSi>xl4D7#Q~rxb3b#LeP0I|6StNd}m#_|*3J8dAYu>vfB`1lIrbw`qczpJYQyFQNM>QlcT~bU{A{?Thxi~$ zwX0Q(B){PFg+L%77G-tZ>_zx^-VW?NqvcOzsxw9J^emhu=LqRsWp8i-Y$Bdf_Pgc2 z2X0uq`1VuJmQSIuwFI5AjHSXzoF$L`Q;Z$NFY9$HoKx(&wwL?c2<3tv3_caNn z!Ckxh-GT+F8hkA)IfjSMNO^&Rs7zFn{&RLA{&P~Cg_)HNRK4{#nhSRg6+J4bU7rya zWaUOp*~}(JwO|9z#s1%b@BVSC-_X&1pGY8@0>-!W3fCW^BMP9#usuG@Tc+{N25*E* z{d{XRx`_(9Ng4QKf}O2&*adcOWmUdMB@Bo5cKfHa@W(3_UcEc=yOgvll6D?OEX@xg zEpI=~P&}Qju9NI)&lunAaLR5HG2Ff6a&rQQ%HAc;@nAMvIgA@eB60XqTJRYLE9kSr z*HojDPirFjz<0IiW>O5l#Q9A}UoAo)bU%Y1_2VBr?LHZ?WpQaL_Hy`1vFTydc-t~x zDd5M;Lye;<#ZfwHC(#6t>rQS;@n39Z3sOx)dRDv~X-rFg%g=aC6z(}G$DSX29zAfw z8#B2=mqb66eIFp3jlVYN1$Hhc{;|WabM=6<^bzlR8@Ma+g;7bsA^BSm_I*j4A70vR zcoZ?2O_&)sq^W`;>wMwLh3?k@fp|i>{&z0#e`XG9Sl^12p`&Ry%#_cX{?b{Ynd6uv zZq0UO&2~yA1hW^vRvNxPpy>Olv7gOsYsrzhgFL1_|5fwnXS6zlf_R~=tbDhR%zKLs z@NDB_oDgpsDJS#pn_+UKw>)qN#Uq3X?Q?a-7n&WhKABcyB~lTlT}t}bh0>^F#@ zl5B7yd$-#_3|~w}*Qah6$`ka6rAZGh&hfxnqr>udCP?NMz4X$T0law>h@k8|fk5u0 zo40XU(2ET6pN6+tFnbPG9=FP;$N$(9v9t)BUEl^nyBSi zkM{FYf;2wsW6QPi?Ih>pI>e(LH*W;0Z z8k&T}zZbSNK8;vVal+g^T%5IYkvOVnt4U#yf)Hk7m$VjO&^MY6)lJGE*CNoD11+H9 zM7Q040Ze%GMbup*3m?kD{W%?Qxc<&w@i6oJs|v>b4|23OkHr!0jSBL2;GOY<>N*6R z>rY=aLo>`2l?D7?b9aAOBLDx6*!?*%xc}fF(qM7_oe2K768;+>*!fOQW6^f|(k^kp*)ej6hhu47EnnCjpbDo|a>sIJsH0^b4P2oo5@j&*634*4U}tjV_83#@BI&IJTbmV zDRBx^JFnP_&?8_emzr)Xi2x+J+^aSDvhWqV=u;TG9iaf*hSkxyW73!Gve-OwKR zXdDb9y(8^6m2GAj@gxMP(Yu3ZyXV6`n}vV@x>iawq~dwLY^HsxN}DtXf~Dw&FJ2A}$PkwXdY_D2+8>$bTeQ?}jJry zm$*zi05NYWl6MK*`^Is7u_ummI2gkn^c;7}vf5WxBX*NQ$m??D_ z9B7E>|A8C+HV*m+ao(aCfC0hw7rP%e==IIIHZztmzSjUnwgBKzSy^~^{za$D_6Clx z^vqcM2J-#8V@3r|Q1G8ykd1}88T*A12oAxA{7B-$YCxB@YfCbWdW+Vg^ zWB}sdv%PV-{=O&ZX%T?atdWrKfP;h!F%KhlD2-pc_LW8t#?EiDc% zPPTvjBX6w%Z~qoGXsihkj``QwtwmvJPH>Z=bPrf4I`Qv*}-{cu7dDBGExH( z2RQEnyp|S2A*BLgWBsL#sf#Ee(JV#3cc2ENsHAVr>`};PU?`*uI$Ob)P|GVWD{%|3 zH^VM|Wz%JijoVv0?Rvd^UcVikU%S+*Hy>ZNnXhOxZ+h@qXe_{C_kW)NsL9=CxHeQI0T@S(51v6Zzw#o8DI{;u&8=5xmxt_G%#02%%)DTk72HRnsjHgYjOP zXME=74%C2fK>XM@RT#0$vgw(uLvHED;vJ;So@T;0-*N}3YpmidQ@*+>=Tc;0YHqf_ z( z?_L3z=|excz0nDU!|cnJ!+#Y37eMy3e9?YUAJtSIr$yKOZxF9U*c)MfiXuO$wqRP) z_q(Lt0JmpEWVvz&ttP3bZ%cCv19EQKSap1mIv=k~H`X`xuV}nuL6NH$cCp+X~+n=(|S2;VEk%>JcWSE?4rYOgxWc-u@Gj=4VMc!j_@mK_$W`r2fi$6f zNWH#*BxyTA668b`oj^pq#AF*{VpREjljHcxL-`0rNj>SLDj{bJT{0cJzA&zaJn|RJ zq!@q%@A6OXBV1hHv%=3QO)VzNdUlnO$KMK*n+Pe?gMyHQ<$pQGd|}P3Ki`Jry|}3v zRM*CIXRBb_*FUw`14aW#$1FYr1~=AG31g18ESggqBxKcax7JZ*p=o_!V1fXWjx}aA z*E@IJDj-o;M55?$+>^3=0tt@mhPmPM(^CaF7-HM^k&L5x?7WK`9ci13t&vCHxXBN+ z)?{Q4fFYyWnLF$pa^15}_10pz!b`$lN3L}Nr-HNvMeOKAz*Jr0VZN#Fg(gxrt@yny zA#+i3vs%Ym2zYGMQz+&Q}{x{>YG%FTcxwQP+V$xXCxp_7T3Rl@bd z%3C%{hJ;DwM@<09)X75Iyh?j}A<7UAT#V$X&C8*m#%MoDW=!3aT4?Y>OGeb^(4Gyt z_yfoscf5K@fgU^43-e*SGU;);1(T&mr8@Cs$ZV&Kb&@1w)38ax}jn?hto5Hgv~dl@nv;hRQ$_aAl3C zo6i}3(v@6XOPH0g&?Q_m! zOTvb$F}vzX%xO-w93_%jmJYrB7CcD-1u{eor9!9}68V;5`MiZ1UQy95GP4$y5iz%A z3`qfsJXlK^3GPAVxsSLZCil8=7jl`!VN^9`S}9v;L^95t+~hg@$i;IpmV*r;p)4Hi z%Hpi0K&o7`)O_U#947SCF}@@HpH1H3=^~J(IqVf5*fRK{eqNk_T0LXFZT+3=tQ4-s+m zz=~2-;gX)}68)1{$Hj1S&8VFURX%OlYYNu$35eHb{AMns^x>I z9t!sPPAoS_|J_KOb+#-oUdVnV0;7YR$a!0{&*Y=YoFS1e%O3U|MH9sqd3XtWEjemb zcw8z~HUV+G%iKd8%^tV2VGO(;VAgg&PMO_!mOWO)V{d5|nOv-beTyVbNN;|K-VDT1`*4#%C zv|oPPA6u-SIg#=AT_ z<^_CqXO~>uo02PDSo#Qjp&Lq;zX6#PhYc{sihP#^UvTf?8^zeBpj)k(0>mt;>Sv{G zLvv4N5D(9+2oVmEjt1PsKpgLSE)PN9S!A$himpZvGpPhJITGABBZKP!7Mte`2g893 z1B9P!eTRz6YX|#vOyW@0cQn=X#$dPzU8@~n3BB^~bkpTJ4ss}Jl{4}o06_M8ZPvA2 z$`AmjI}>Bz_q)J0xYl~!M{Yv|CZ%fd#J&qJ`oQSh1#_pOg3G;%)bu1xk5j!BkDt2@ zX)}}@r?j;7cfT0q&KZd82VVzvdIbG&_b-Sr!Z?TF>k+5S3`KIdnchTFBgK<5XjOL z+BXfOf9{u<6VnhL{r$8HC+E~AU(}V0*2F<4!|0u+PTsKkLC#6@LnR=Qaw5lo9e00k z7V~v)%`U{_b%**TqEDI@FYD#>E~pat_+x&$Z3z=k-L&c?9|Be>HV`6bll;@fP z<({4^V`Tb>OKJHIibo$<32z3uiw6la%}pt2^NzO8nKTlA7~BL4LCmbb$CQ$aJ0GSH z`#Rwz@TD$$;UMkqbFGBHb$b3*ft146_HeY4Aw{w*A^VcD?nr&x@2PqWX}gM)8bF@& z{gUrwDi`u~K?Z4YnbToIPt`ILY7o%zMF?}yatQf`aJW}aw8PdyRkql(?Ia36oy)dAvrub}nfZRX*$pdq$s@sL zb=i#6^W?it)br&AV&ClbhU(FbAnv*Epy>kihC|RRtaX27>#fAM3u1$4TeQh@85-_-sgKBlF+2z+_){b0Sw*U^IE1u|vZ-Wy>M& z@t?s=uJhlCB6s`*<4uvo973A(M$X2O=M932iI#pbb5$F}FqByTh+K9x>+Lu#)}^1r zmU*_>w;|O9w7~y@^nEkV6&h{7M{^NH@O(oc`x}wm;8YPpZo(Xv*V(m^pe)OV{s>B5 z$aI`SJ6V62fPzUTl%1nA(dF~>!AJ}XFyx|Cj`o(@pBtNHDje(7!I`Ud zsj_SsQ8qn28Oqvj2VMF78ya#EdjEoYe?swbP9xVRZwFudz&pA%%4Se?5&GA~Q(b4i zmi9%57$(>|->;3GR9zn~6qAM7=JZAk&>t;;Hd%nJkcu&etI*Y8Y3lN80&Xs)Y$Nwn=yoEH9~aH?LrL$pEOzhLIF_aN&aLE03MA zVv`nV`fv`dE8I8YO~+eiuBJ#ce$YEw2z+-n^>3;wU?7J8e$= z;~X0wc1g@9{+s;~7$8e<(MAw4zvud9kv7jLl0(~RTG5iWY>wIX56-5z7zeBou_DV@ z26s#cngRV*eCP9+tIk6pch;~`g${ms6W5|sW1DcaM_i{GcKrpMj)J7;=PDRgXevtl zASn!S=?(^GJQjW^x?-Wpq)pmIL8yU}?x7@jRmZv#D)}fjyhL_!4t{(teUe4E9@9dQ zHV*dXB{lbkdH&dd1IrYtg?a12gX5!$6Q5{Z#?AFr*Vb-;Us6AC8lZzhS0)G%91xkckJl zKEj=;4eP{^6ygZ*V_v(b%efK@ZML9cnvr^6PdY)J4!!vzEXo_0sH?9fubk$*1|9W8 z>yi_t3l!<}x-D3a*-#)OmWh1+!SzD!`%{d|B*rT_zk|L!GO=j2eyIZAj?~kFP&#$^ zS(WV>R(SXkCnyYw`=SZsr^tEGBNOz?bIPUXdl98<#?|ZSu!d(6vZW8O2smpxCuyD^4C51SNyCMzE8MN{89_ z4LWQWR+O=pB`Ih31bfEC5~nkq^}9SWusw9Sbi>ptOw9;PF@){WwBUuDKDd@imvMKd zKVXwuQ%l!+a^EP~a;NmAARLr8)-iGv&UuTtsHCgb1T7OXQj$}8=0eI~*f7&`sVRdS z!}fXKW#Ylegc(_b2pryamXAK#Jgcyh9#-E9rt2peKm*Xnv! zbewrxs$S0d75j%(l(E+nti(~oL^O7Y=3e`i@Ct+nNx<_NOV&6Lf3K(h{$;t~pa@!2K4 zuU6Nne6zChTiZ`qg`vo0^5os^y^_7y;5?K^bXh-aXNKRGx8{1l@tRt*g|q;@GPu;ufpV>+pAUNjP{UdTJ7 z5Co1*9td`0+%Jd%N1{hH>D;pr))nR==241BWrV5A_Ie*r zwnW)PoAqx)(UxpN*Av5vLlVK`dGEv^#w?0ho9Yjxt&UqRf~j1#fj+lSmpQb5QN)kx zd6)DWI7s)gdLK<0pbr)9zoB{sRV1s%H;cB7S32jU0Zb5vgH=Yo3-(pe>?U8aLUQ47 z+T>>FZ|p-HjPBEq+5R+3^=&+5aq-%F>M~f=d=KhAL&o=IhgL zJ~#o8_d31ND^E=A#0nwxj%k<`g~Q2NbRDcltP`y2^5U|>+5kk7=9qy2fR7R!!ZiS^7NU8Bh~MAK{Tl~6_5k_pYytYw zT+|7QhK9Ya^LtrqoLrHa%H;|?71W$^5pk$7;l@lj^z!<3hkR8#yVFN`8{l#AWi;gh zf)nb8$1O}`U4HYfafmbb70ZqM`)53DQTB54_I`^r6RRfMrZb6A+|ibhQbtw|B?c@v+j^nd z2)NIXi1T#wmVW5<5^1!d_I?0>Y9C58e*)RB$pA!Z&L~EK=>4_FXP*&CBx0f;NI>13 zB}G9UUq}7j10Fxw+{fX0!gk3IzG~B#L02kOeIjkU;Jqo=_2~4EW_?yuP%o^plb0xa zlAgYCVMKoZgA!{K+oSwb&e<$H;o?G`II(K6XBPMH{7_&KpO?TH=sd`=dZPl@BF9M1 zGN5BGPd{lh8+B1C@sZ=2 z)jWjM5W$gdAjzPk!`d5i<7PYP&y-_QV^Apzd8K1i{?!n-de|$6KTudg?S-{pTmT;Y zL97PiQK#fZNXnZcgYm_8IH+&Q!2K2iCB z4W!~kdAB>+PR7)dCa+nlWr$g8ZDUvU>RU%HNqx3#w9MT<-JyJii#52|Z`ZA_8aC}q z&DxJ-VxY}FIUZ}%7;GJy?o@h~O{< z$M?dAEShtWXH`p(=SO`$&Z_pzi-4EeKMp=+&$~)b8e-y9KIH?fDT+62>}hey^>r0| z#H1Yqnr}b8f+GVRcr#-Qe(lSqqVPX_NEp>EH?OFg80#=GbJU5n1)6!0YmtCqa{%Vr zKDC1Lf8yYzXYXgUWGn0yJ2>Q-rS;;=>C9-&T#G45=E)MlWea(wmB}Y6iLo?k^!w?` zSh7%8)+&OIF2f#Sh+;WS$?Eg6vTp|K$aK4X3%-WWYoEh=h!Zxy0`&Ng}nqfzD z^kONxe;mZl5;UoPz@&z;;InJMUH%N^63n^OJtjm; zQ$BySc8O(&`*edKMr=Coa2mmK!Wy8&C=cqvqT~~SpH*{sJ9j4oio*qnyit?YCwICQ znmGfoBs{$Arx!jx6pr!~*OY+@5#Ado?o??r>P7*ngK4vTbhwC*ClqsZ)|YhK4mK6E zUqkbnZ8SGE*M`XC70e2@{{h67s6A{Fyy7$~?k z!4~Bs?_BI(Gh2G~UId1mNC&vl{!l%mf1fSpi0qBB$)`lF6Y!n~ati+TTY=CS>pR?T z+n5IIJ~V+XN>U+^QB@ctBHLfr*2>`XBxmtke%hq2`-sf->%2^XTrQ0T%~#xl5FkDM*-mt$Brzeu|0 z`RCP7lRjk$TW67S23faq<%bOAI-GO%Adm)@+r%ibZYqz-VNze3%Z&M2=SFg7T2WPb z&nj`;%n~vRXVtx2Vwn~=UPlMO(*qxt^>xXfL6Q@@dd@bw?KW@}^mTXN}fU~85 zH_C%HD!bHRu9ohJD~&)M{N?yIE=)~o4vJ0ds(^2NhD?SnJiQ0+BsYZs#Q0+7(+p`$ z89dQEdhanq95cKpOQliAX$D3ftLCJSQ1Iel&XGodA!{%)edl09NgM(WI3jDv5q+Fw!=zO&U-p3aM*}G(jv&tZZu8 zjW)@NeioiSC!AbceVwg4=FKi~_Kl_&clVV5JYoen7%fuweuP90SB$tLy`t#FSA|y1 zmLk=sJu{^%jPPc;vSc{<9I~dRh4KS6l9&U6h3yiMr4ddeEcz-}=I)e32y|b}>p>Fc zTRh3F3mUNJr1hstMpv7VvxsLqIB~4<_~j^g%)jaT<39Y-#bS)_BqGa}E(&;Mb-+kn zBh&G7o~j(U{Bbv`KwWqrT&JIotiNrrihDB<-EZfqJ3N+eGYF_De{xRIRMIRn{tFScz0(c1Q&IhVIHAIDI8RA`I1@J$-?{Dta@JkOCe=)j zWDf}(q%z89vbIVha%xef?H%h(hzXp{S9y_w(b~)jyEi8g+)-lFeQR1Ql!7^+Xs)APrn)OK5r9tB4aFS?!Y3)Q1{0 zm7!_~3HvjnuDAQsTvFBq_$p^n>C^U3t}+JpVtp$bf1opmD@xD#-F+)kbO$*d!MxY* z>L169`5HI7h=b;;Y6ILW+QLLN2*WQpE=C&nmY1J}v`VWmFLfiW)R=^i9_vg(RVEK3 zVjs^aLm!6MV?)WqUByUO;(Sd$sLhD!+czO9m^q5_%h|rD5|Fv5e$M0{aNuF)+zn?r z4zTRd+0DO^#(kN_rvW|4;OP(L-N~@WYhZ~_nZ19>T)jO|NGz_V>g+n^7vj60M&^dfhGzctF#aa`Pn7<#kP0x&mFom8MLO92 z)C0J9UIY^`{`ow;Qzyt9<58)}VEokY%)q2Hg{&MF0&dv!M8Q_D{L{cn4J~_cYG528 zEmaLY{y(2=bY};z=oH$L=*tXf&wr$%sCo^;JTC?ulm-D!v z&N|rp|NXwL{;ra5ixqWIPW3y=zR1Gyd;-THls;VXW#!XkY>_|~qh=0Wb;$Ra7^x$q z%4$dk$O#B&n>wa%5K<&Y-=t)xd&)o@D8IdzOB!2~&fuShFW{SYmAfhV=KYy~{MHB_ z3>E@P0uuQ^57CABjdT!FAWl_1j!rB}rk`1B zUq*PC)IdrmjpwqGdp1f&z! zcep?VgOF;qt$1kg@Naek`FgD~t>V(u_1`or=+(ePNdCNwj!6n|{Zn16TFoOlbI^Xw zxiDHs&ybn{SzvUY7Pa}FkqS;i;Yjb89$b4$bC;}>dcW%t$<-?5P@BmxJ$j27sCftW zBAm48OGgC+trEM0MjemU_xqfLp}nSg${=fT8S*NL2c=G09t5VTlO{_TMcH!u;7z<6 zmgD#!06M%4DZr&B%|g_(7@-l{;?v|HhS(%te}JCPuM8xT;JIaG3S@foh@6RZl{&8S zngk`S3YZ21T;-*2%ObdZW^w#aCP(Gx{@)S*Q5pgf-*IhR`k}BIuX`JW>keun(t5kL z<%7=uoY$TIjc7FvsJ7{ISrDVPcBEvnU(%N-Ax5iAQ_V8*hF|`9ONKCGik23^*x@qK zHsy}{bIbtudRg6bfm}ZhE?k(m0Ypk?X@HUVs_DCR4Gpu%aRK-gUYTjTZuPYbZXb3( z4v_`0BQn=7@#8n$y*zf>vIC2OX)PxcvYfhB4gx z+lWFgzBxlr!2tK)Cm53IIPTWJ`O(VAZ#JMne%zYq5to@hGG}Cp={^gH1X8sE+WHPT zvSTipLkXHyzs(N8HQlwaf}?C8t~;M3xGZ>tM74v6LuwSgf-)?EB)FxeTec{kWzA#a>ax`>TNs# zEa)8`mDbShhvLVQO}m(FV2^iwCtTw!^EBO}J2MEp)a|6l-+1wsgd|ZeRhfx3!zLOONJtVe-I}@loP0kXvp!ksbP;Vl z)U!jRc+rlDbP(-5w(h$AlD_#7h~54Eg}8d>c^7iOmj%*!+f2Z>&|7tPl}I3awEdI0 z-v0&S1^=b}#q8eh6cCM|H(-zfs+D|5Zb}x#g;ue05#Bv`bB35oG=iye2i5)2`O5eO zbFh(nD9Sz6C%G!-8;^&_@i#XvJqqMzFc=@0(5as$aOXtKr_W}A{6RhLL_MnZ*hVZ+ zF&X(unG5+Ng)_0BkKC?0`A~wHyKKDKJ~gbYi5Zhnyv1H$pJaN)d_6>f&ZBrfpgaVW zSDr@0BGptD8h=J9E1;ol`tb<6F09fh9S3@$_%F10{sx|&5GGl}`)S9pkVRw@bYu9( zx#&eLmzOh z0Rnd@c%<8lC6a0|pP#BgDDTqG2Ix%ecBU6WV_lxHiJlqO+2M&EOG>CE4Rsy)%22-m z#$85^0ajmalFHgjIC|SY2r*3frY=@{3^q<84ipVxGLz6f)&>#dS&f+HV9W%Gz|Ni1 z$)29YWL4_|wOnJrIeie*Yw%2+PRTr+38X5BfNUBwwi!5QFAN^_XNO`3+dnv0su$m2*I;NSh|z7$12LcB?B-d*v}&==BvG%|*q@wi=u6MYs*@XFB*C&r$<>10}~)N~uLEbd(c+XIIw? z9MvFKgE0;dfU#Bi-Md9Jvev?}dzCRdDRx{76Pqd&C8bQ7`EBc{771Aj%NO%z1B6lS z@2-9+RlRFO2##mN4sRd`_}@qpxv{t&mjthW3w>S>r=id_ z4JqktgA$|5H%me?Kxyl`grr7?uRpyKVuUXT(ZiC<|G3N}6~MmRNI-ER|C4~uGruzp z(-a^nu3BeZr ziq7x}=J;3ak;3wr0ahL0`hl=V!Q;P?BD=6T5OKZ_U6&AjBVa9q0Zt*`#=D`j((tnl z?4dE+g(w*HUQaDh7+W2+;w>O1P$BY#)V!VP^7%j;2c)JWkJ4LWN>R5G}_2tU*=s?&9MnYd~F zic-RDFz7x9?l1lEww#UM%Mny`-byWdZ}r|kL+g4nYZAHEcyri+tb;R<$Ud+`fTSfJ zo6v*Tm*ort(gg>pCmWvL3k~l&j8Ev(H_008ODEEGqUa|0oKJb2z*)J(onVv z+$6$W2b22k!VWVri9$8!P39^O*su)<0l)89#XdLF=szt4WI;zGim;@!VoY{u!*ium zDdEr{eBv&;AmtlanmB4-1|A?cJ9hTw#l=41_}p*|H!lcM8V?WCC@G{`H}TRVCIbgQ zUhBzyM%NApEAa_mmf!u##Dx)o;x;(Z4ag7&gnp{Q4JTL#BbUTLd@}dWP}s)^V3%a& zs3hjk-uDkQn6O6f%St9NFJSQFDA)wdvDkMmB< znJ@~pMn2RZE{uls0|YVJNF@qCq;hE={*dfwl)@R)3@sp^YMesQU@lJ;?i8vpL=x~T zSP4-5vJd$+S3Wz;k|T^WBHg(;4s^umknZmhv)aCgnHC;^E3GP5ugTa_tStpijNO2S z&nWFKbb%r;yb%DB&>;2kKcOzA@AXvAD5C$`s@erYifZ-aE0S%=xl@zi5ZaxcFC?7Wi)l zXllM%U#4o?vB-CNDd#Cl~`$1lO9ERLQt0 zoMnR3a9%9w;1U=ltf`9Te252P)tCx?Mg=cQR1CAqkv57rb7oX#z`n3-G7sam;Yh#3 zHl68? z`Iq)7rIJNu&&$cFXeL#PL#sbn?X{s}MUUD`Z@0r}9-sSB&Dr+KmG-_$L%G5GRA)2H zT}G|;xFq7~TxVy1YG~x!V0Awk(U~vY>7Si(wN6{tHs{mNXv_CFUx-)_ zF6pY88|jClz{Q3DQ~e`*CYw%YS~pmHLEXZG`reD#FkJi8q`zk1{qCI$qt2k zV5z<({5fZ!iiDT}yGNR!{xFtctTXp!3gG&eIXpNlO{jd z-BUex(s&$o%D-@%-r?IK=y_*%Ty>-ZWt;DwK@fY#e4lp5a58!Py#Au}(s=|^)F}TX z#oOr5DK{4d#39PF*eQsp-K8=G@ni^XIKNQ2r=i_^OolQ%!(L;o7<6W?i8xgV9ia2p zXCz;e93PKVs?4IxCtul$J0&^CWalI&<8b8$7~oqkfaK;5x2b1*rMbtELj$(p_L#a| z90JqH&7j3SmT7nsPBdA!=QOuic!(5KP~_-Ts0U~P=%a93Suq{_{%HlF{?EPNljGgN z^^1?@9Wd(dgL@cN$5!bSl|JPL3y2Rr*G|9;>c{-wv4 zQE(C?NLa!{;Rk zgU?`}?Hm^^*i#Gc`^tB;Of(Ck5TVYTcjeLJy6PyZoViwA zlOh~K@I-EZ-6P!eMsIm1n@y)n)I)V*QeDjqgJC_|^6z}XmIg(wG7|+m=V1u3V}q4= z;I3L~fm67PCL_vxy9pz=LcO1j?lb4Xh>ow|cVI&oN?w2Qy#lIVd`yZl>gw*o@0i(b zWrVb&6;DUE(}tymbI?VvQCt(f^#=9U2QePiP^Sufx@XSz!&V}}^m`cQrDbHN22nXR zMN!hwtKMmTuWt;!;e=aLN0NBNWO)@&fWC1AKj#CPbxwyZeCj*o&HzJOWuDlOk$IKF z4zFys^ozjQZ+KI3JC0!ZLA+dg-ZCcRgFwUNBD6dog!4tB&7;9N8O1l!M@q*j=5pjD z5Llg{YSHR^b+&z(QvOHn?VglbJf%h%Ud&^F`W`M*_02z`rYz$0u)*G#wK<80No0r^ zlruk28Fi+tSuenf)dr_rVS{S^L>LtL*xDdI*@!X*XX4NK+)&)Hb!ahmKxRr3P7K`- zAhY8I&7#dE^zC`2)_4)AajWa1Y?6tKn<|6R$$L_4Gsdi9S6^r6L8MIq56#{al6J@! z&n%#JRI)`o`V2G;eSyqIuBViANJ@jmYHw^Uy4;WGySW3@n3drxbEC=5(l68MpR-;f z4MnEG(d4%V%(QG(Oq)jJnvS{HY4_eRfaTDcI86LYY^XCX+De*NOwek^(AvzAMb1$x z^+%7x$3jwKyr@QjizfH`=F3I5ALntxc!B7+>(d-Xkj1-P)frctOIT;6*)DGxCh68~ z+G6|55bxue_D>UqW?pA0;gsVE{PTim>5!x`tRubo<&9~T8it!Q@W46lquN^s0B--} zJAt~HzluPpO?$@dbS65|Z-R{Y6ohC0`k;a>M@N;{K{LY^AY zK(>E+ea^&F{qmf~o`M8Lp%u^zM8zWY#ouFy!4Yxv^FT~-FtAl|mZW&zy|nv#Zc|NA8BAQdA;L zDL?3MSv{D(6_jA;#JNIOFfZvIij-DL7d$yokE95@Z4DZb=vy$=CctY(D`>nuLpJ z9I{vv!CY`g6k5WBEoK-Wif&Jop(rmZO82tk9aI$28sv8Yv4TV%XJ8ml# z9EjO!M3JZV`3Vw55UXDcUPfk~sGkVVS0dCyg@Q$v&8w~G!9fDj4~Y0vkYO2CKT5g9 zfa;J7W`awi9Fb9WPabgU~{Nvq>BF~m1Y~T30swcm?Xjy zve*CfIXr%DS5p{YVgC>SGajSl z<}}|NO3KeIgzD|w9Ew8VZFKn1=ghjc=K=&B0Uu(_3LAhqIZLk(59z|>=kYELR~j3+ z7-63Dl=sKA`YCrFd8=#{bC_kobn(mUDWHZO0a!3YfGVQr%H^%-pZm>d zd9GPr&x*^b#vI-uwqa`f((+A`R4jML_Sre!ym+rr*yXJ%Eh)Y|T+2fpukI>g! zz~7rtY}c8ubk$v%)~t5jdkoJL%K2QY3FHFFH6>4VB0@<>K;lk6dS{O2n(lyzyJ9k9 zfPcGDTZRisgZY5!5U246qKAyEDYppsT|Ppi(VB!RlJ=pk>u$^1gLb;R!yCIpKsQ=0 z0uxZLX>hN`-&=hUtv;&tDRa4mgFlC=b9DLY6Kaz9}X%jt)lewJz{HMW#FoQZK7}s}e`Afy!dt<0>JV;iPm1?#76b z`Bpr1nFNy%lO|CEB!qIDE`#<)7}_H^lRX+t^?bDl=@Q%;&cuGE46xio?5P7!j2&qQGDLVG~$|Dg_~g&cyZ+Dp8374@=$q z9KhhS&cfR{E+68Q`k43Aa@psmFHUW8v>lFofAL-}Z9|XUV#fb|Ey?~O>`Z$Z74x!k zXt?x>RJ$E7Nh|X_b3|%y4H$Ef1I257?5}KV+h^Eld{3B2PoGc|+uU#L+jDBGyYEO+ z^=PNjU1_^7h)lP_9&MO#;V`q)S>gFfL1#1Zt;6j2y?pCq;ow!H``x;dU-X{r*3QPf z2v0t+*3Suf&A0VuC5pyd{|e>k0nRNEbIe%p!Kf*dF`qe~A-O48EI>;UL7E}c65U6} zh|8HF>n^j4*O790FpLC551JA4E0Erbj1QLn>AJ_Yp{yqaWXw* zG5yD!6-raU7xxDT4XBb_P;8Vm_KEud4mnb)xMg3!AW57v5hy26)7%vvhxtc*XihMo zMwE{lH-6{(cpY>FVmd<->f_3vHJW$dC7IQs%dz7Yz2PsDbOv}Fw_>{$E*yb+0 zc>Z~ppw4`XQLyYziW(Q2t@_-cSbGV`DaHeWsh?e^94ZlQfI+e$*-q#U!B%r0iqDBB z%65kAO`E$`q)uNK2k3;~pMGs`pncPqj!%o`M6I)I0q|n?pdOL+Ic|!SXF_4G&8Hkl zJJ{va{$@xU*q@y3WykE93;e%U({t}-&SYO#eswa|RUMkQ2Tb?>?glgGY^`OW^Nedq zlUe=gabx~L3It_IjdIN+5(%pKYg(k<^GEqu%~2JnHh6}0Pyh3rf=27oeR*We6xW%J zdIm`luUE*Z7@m6*QzuEEBUgI-wEl~B>+S9L0Uy-#Yma*SFT^9y*9JNj^`3FZ*J3BVB^?3gABozFy*w&eAtwG+oHK=3kCC zaqsT_vb&RvSGo)lM?PmDCd`GScMl^J6mj<-uHJgNwQT-4`-W|SkXtcV%$-V3iChs? z$O+4gCv!XGiy$^jo$AAxs+t#Zq|8zwh(YDY|_MQ|45G-HRfX zO&%M?0=Vo_0FWcLmZw>=l@0$CGBP2_vB=1SP(^$#SxcUJpupt*GgWo^&T+a9M~BEx zbQULmJmYK4_%WS7h0evvtr#+c+5KLEEEVFNhaq_uU@hYHrXH@7!5ftm`|puwCY+I8 zlBs9OiyH^f^$(tS^Hz!O_)2OOU&or>ksA*{$HT_`xsC2%#{6vQflNh3CiCj_{Gqw? z-D5*TeU zvexYO#;5`c_k!UKf7}E;koQd_L8{BMlT*9Pf*>6$Jm-yPUGcBE%-2*O@zYc`@$-8i z*pZ8?C9$3+XmrK%Rg3Dk>!*X%VVHBfj<=1@sJfl^#_68i<;D4Nq~hFWN5?v2S$$_` zdzI(-&BsTkV%BA4>%~ojm|v2D`en_>E_hz#=^$pd~-0uT5B6{U&>7-X!Sz5 zeHu?d#mZhwyVM@cm#l(}6_r=jzTOQ?Ju1B6pWDROWo}%cpO3z@ueWD(w6>_aJQF{) zEI7T`W*eyIzQ1kO7kbp=-e-R=#&ph+t;4$~ff^ATl}BhlBnkbHDJ*d>#;>3DgsxYF zMwC&>V?`U0R#KX#emQJ{5zdOWDtdJB(5tF5iFTb)os~!LXG^e*uw;Q6FDw9bV7+MG zAC!(%VOJwnXFVA-B}ZEn2H76~3Y$*lzObkYw}m;4%=mVZv5^a#R4|nD>W->-5OWs zC&MebLhDbsb5XrpPU<24{0ZV8tq#1<>2E*({_TlT5Xj5Ua74#b+rDI7e&~d#J^w@> ztJgzlIUi4A)9V?KcBBVb^>A98_E4%`cLz%zKA(iAY~R3!0O*0`&v&6IpM#!fxFmX{ zXa7!0H=<!b%g!+qjU79uLQ1M#baA+*=dIpY=Js@MAU z30K~+=5Vh|GPh0Jbtav#u2c8=C4I3~Z}aV?doil5@`BUlNF8{>Vk8LIUi|TfgQW)+ zaXlZV#?USW+0$!)hY%Gw860{k(U0tPw0||~wzpr)V6-WX&afT8&@%*Qrq|_|N$5fF zntAE-ad*2r=?L{uv}*Mr{HV(z6Va_7_P*-5bDs7He~!H=oG-p7e$_=X#mw?EFeF6Z z_~;BN^H%>hU>!h=#qYL%?LM!zIVJT3^n%)>BC|cm(Oy&ab9j+aPOLuyx$3j#N{*7X z%ypRG=@DdW7%btJagTY~Hnj(pGJikkSEl*KC?k1UTs&#hPSVjLj5spa1eoou;1nZp zoe_mOLcSBg^gM4B{2+i9((b6A03YCD+*A(%nFj%FT?f<+tl4bY9K`Y_IR=+(@R%~$ zBXQ@^>&{|hbB^om;@wyrbFl@1<`!!nkxs$>ihB~;N?Igi+vdTfkU^RY{o=$4DP+BSysrv>YKs9saczBlQ4hPZs{7YwuohYgp92yVSPQs_D3Nj4^V-9 zQxasMzc{WgPhE8z6Fk20Hkb{_k*7F#F5wRtP<8f~a0iQKg#3%zW?MJHoTJhX{x>Cd zFWk77@aDScLO&Ak>9v;loA>XbMLYe-%b-7J+C^+?q}M0+fT6X1C8A$ei& zmFE+7@h5#Lb*k9?cKV5z?IFWCYkcgz*U{{CHBY9}NT+YqAYOb-eW4Wl{We>p&YyEP znEsYhocfK+G~&PSfEiy=`o#JqTcLc0P}#^b`9EacFDJl7pTe5@H{F?Dcjg;{E~5{G z&-Mqw+lcq@`ft5}ui3~hEueAov9!Ldkq;p3H9UHak5ey`M$#nZIy1hkxi^ft>%kiT)pc=Kllad=*7}sbK%b z3c)66QPQITaBfPA36yP%e1{TTu{M$oPS(orNMbHot4jZ0I(tWr!qb|>@KJK!|!rK zHSqX_txth35aKc9QpD@Nl`)I8&VDD+^_+J$8Gy7Ouz@bWP%AkjL}I$+Sh(C+0;H>z zbbubznXUddn|xq*Ywv}7qtAxNPlzv#SArCCsAw;tGYI`!!yqS?M|^{nA@1-K z5|2!-hvnI|Iy;@P7mcQj#4HE%*d2D1EynvddV_BU9%z7~mVXnf?q|N=AO&c;&7S7tziq|sOb>*9_w#m5^M_bVN_Uu`!l=Edn`_& z4q*Z!S8oMsFa9@S11N7lEVGZaHUXdF-}<;Iq~41-I>G#1Alh*lQv%kq09u(cyW{B* zT)ZrR&-@ru|8&<|h2%lV{wUq+4p8GkBl-z+M547pog4ETKKne0JlWU8;uYG((ckDv zxCZD4QovlZ(Vt$NoT<-jEVQ^y_as8xrlomBe7`+8^f*13TTq_-%G^>i(Ac+zg~Q%D zIM&qSrMOsy4VzC<^qtn_idCSvMS@aUJ3YNv=cIQaW$l{V(i^&q^JCoU0cum2H3l)4 zV#(1Jav-(q(8r=fta|=;Vn5m!e{}1Y5wVH}HHd}K-FXD`y5M=Nv@*6=b^jZ~XerLe zq_W@>AMP_6upPu`7>Lh-)PjDojv(4R$Qd5!fb3&0n4NGO!=1xGkEN<$u6Bk(n!k`lZ>}1IrQbU^xvB7X!g8t=<|6+i&vzd4eUxw`lQ1^KH?Zf)==@ z`El(HB|S=Uk9h3SD&7-KAcF#*VHZe?Q8pCK1H;2QM0w2dm*&v>n;t|E;(S=tPAn|J z>F`#gu~zSOUejcOfz|=NY|q%;+Z^;h4n~qdok)Vs)8FcR#AR+y;Mj4=E6zLaebB6- z%3%pUa=4_aX;`1cA-V3Wq;{8?e<=;)X1$iy_z2g3dAj>0u`V!nCCN3!ykU}UE{g1_ zYQmuES1oQ*zy8XHDyyK_5ANt97jE3Aja}UuSmvDb^Yxgvh;k`zp*H%%8l-b0)*?gJ z1A5h3URB2m_bf0optc~-lc~>alJGYRan$2ONJEv7yXIhFj{!8Gr zHCw*rM^`l+>D~{m>iPTc@`~zlk^!-jPnSc7hBz+KM!)J*IFY{h&K{Ycg@3H_#QQ^A ziw5PGni-#Pw+e4S{&IWGbDZPYcQFY6;7iZlhBSE*q8I;Z3^>f`rG05OyT8R7XGm9Q zjZ-m+z02|{genIh7iuf)YpRHZKzsMiFZl#{m=BAjY%C_-C8#tOx_k@VDb+Y5;?}{e zgcdsLK(sBatk*3bqFu3Nub9Lix0uMyhjQL-mojvY8AT4AT^gM@G*>)ZXz~I@sIj>C zTCb(e@zyPn0TxOJBAJGP1)13<6KL};&@@EU$QK;1khx_XFZiL~1@WPl-VqhJGZOGP z!_fPyI8eB`zi9z5MZeJ5wgW6S^ikqW_i>8{lZTBYoHa5rQZjfASyUqW=9#ERWJ$~7my#;K)+B-+KfR&$^oU1h z`i;l3CV}Co%M2r+KQle8lP8b|+01*cx}ZjE;g>k^k}ITadas1Aw9dC5w2sfaPVu|3 z?)>5m;1lwjI4#p-O9*mar?75Pqb!I|s1Zv1_Yc0e4*WkMoAbb==yNH$Dm2RH`9VKQ zlT>x===nj5{4pe&JoN$bk+v_$W}CJEo+wHIU|)e;dRuF-Hm|Y6j|%s! z-c4qPP)5g`;etFB<`UEY4_!t>#TJ}Q!>z*bdV7B&jJ{Rvbq)b{D%b=GazkiooAh9`Njb8%2^NX)T-Xbvp8G}n zYWq<* z+=ZQLc*G%JFu1j)FLLTF@vUTxw@`kGm?5b|D|o1jepFzRCLhl*9%}EM$xJ?Mau_Lg zI~!gQ`)&xPbIjsKX^zS=X?zG(rHe8QXc>@(O>E6Z!=m z@WpwSR`;CHI|%p@qPJtSyo za3xYO=tvkNrjbMPc0x~!noPeb47VRQt#wYj&rZnv=RbPVNYLP5U+ZO7jSb3^l(0C~ zvEc?z`sJ^Q1ZYNeXzS=?Kn=Tcc`}S}sBkDups?F}{4MBb0Twg6Q+ORYqG-v|!u`JY zH4$=15k=nc45q=Au9VV|U0a}Y_NF!A4DJ+`J~dhDU_qU4L?o>b6b;qnMWojd;^NsVw7QxR$xtX!DwNH7koUOE+54N9o)@fgB0-(Do_B-b`AQJZO-W zq;SC7?h-hwXfG*D8L)bVz>o|>TsY%NvSeZO|{e&exnM4od*GOaN_w#mm5 z55xqiHoO{#8^^5pGSG|8#RTowOeDEefBxbdpPanQxDzZx%r7)%+wpRga&&NziQ9@` zXMsbPu3Nd|D%*=~kbEW6js1Im9K6<|x?J#A!!#~n*5EIETEvq3Ki9dd)SmAek(8BK z0Mtn~yc%p8i8GrP751F9@{)pq>=s@MXLBUDgiyaJo8&LB`0mVpEj#K=_UrMB&9vK6 zM?7?Q3?eVK3GSCDzizvzF;xoA85``xwzk~A&H-%UVm* zW#xnQ7EP&^iKBmB3uTVQtPH*TJqX|iILgX&Xx#siD%%NxgbGm3N27}^6{YK^E90ST zO-$jRdJU9{{l(QzP+*P~W09AL@A#T|;z%_CoslAN5Yefc+wY z$6!>?Hla-C^h&OR_olhBKd~|H#4W53Tjf9W4Z||S&}63$N0{iXe$lLG?;o%7Y~QJ~ zZZ3b#%n8s#6V!E445>{ z{7kWCI2idIi&kM1DE_Pec9aL76>w1o!-LwE6Wrp+xmiwob#>jpsxA7=v27~IE;ee5 zVbkW#TxP1G<*OV!O=y5@_Y-e9Hoy~Sj_eKNYDwjB@E;RX?#N4XnYL-A)<^eSHvn3V(FAKQ zD45tiMUUmghTq?gWHy*btLpW*!~U-nR?WJK>1IPA(YZN2I6OE!>~6rNWGxI{)&N53 zVJP@0OjZ@saaxClGhnyE(Tep!yev(j@eeziIv2j zvqL*`+H%1YN^v?Iqvh-zT5L29)ljVaB<7uA`4edYZHrq->s+uxQ8N3g3h0-vAinH5 z`Pc$Ke9*M(exs2EDSed#+|A(*P{&Ko6_^&Totr{Wvlr=X>s@<%09xBYn1xl)-1OBQ zTxNX84{(SvUNtY^!)ed8HCeeF@5@@ZB{ z8wG5HvVKc&Flb|3iNCdw<{m{Vq(gy`Kn5Y6gNmAQWh@U_7LwwpXmAeQ_TA71t%B~l zfSQ~g%y2c(mdS!v0|-1$FPTQ$a)_?ZykI9JaYcl>83Y}vKRuV};1&U+`cc-aibid? zSE(1w4MOX+C#65!Pf^+4_P-ylKGIUdxZ0W{RAXVf!g4 z8~l4YSspm9h0q(-2YjldWwuWo8Np6aJ}Ek^*qmdr1DWc5ZvT#uz3%d9=Kpt8^A?XBijVFLlmPaig}7lJsF;ay|5E& z3el+o4k?281HDex`aaQs9gk#&+yRQD-L0Q3=DzP#R6fpb!H=+^TaW_=)U9C56scnv zby3uWM#Fs^-z8G#)-A8*_^;Id{k~BQB*!3wOsDdWtf4IgA43407lHL1Q+_aiGQj3b z_C^%?B67uhN5(O8kJw#OJ}~Fqz}QpyXAkDoP~k2+5N;xV=063?fm?e`hEDkSy}UhW!K*_9H6)!M}jr5 zbW%C1>HtAiSnvM9G7LSDgD|wQzjb%A@Ald{NlJ)@X(P|F_NxnABbd}%p>2mUHzoPZ zfZV1J%=Fj2IC=av$oZc?%SUy%c`hBx=A9FqkOu|shKZl7Kk8$`nGY7wIlVKToTxgl zQltr2f3NnIlxp0ryeEt{&;t&Ez+@LJ4)1aN*ZAT79b&WTpntNByVmc~r?$*6G`p*q zi{l6A_*!S%e!=pg9=tiRKGzNVWkGyB6IK$liR{EEk6Bnd6c+pO z>oGU6jy~~svwk<# zShB1U51f#<#6KH$qC|kKrd~QFHfL4j2o+?JyEN}SY=M*H#y^ui4nZ5g*wRiLpDC?3 zpQ#Rv#43>U`R(p_R*l2wAwexV1g7{jO<@st$Te#bSH8+|OmUHhQNHki2x6Y6yXLTN z1k?2!Ek^=06lx9wGN2vW^d45M_Z>2++b&zMmq>W%_eK{kysdE7HX1oc|3l;A^tW{} z#F^eZ(smKEVllajJvxMV9RE4{{Tl`yrl1Iejo2#etY4@_0<{m9~^(Oj8R` zjBs8W1CgpmhSY7cjhxLg;6 zB{W}c5D8_7=fDacUfOF;4N%X#31cBm+)O%X#TJn+mU_c1)}}e7IdE?|*rXqNk>6fi zB$n_8S0$ZYAETZ)G}}6#F-|kIRReSFeyzn>yn&s4{rPQZr3C-Bmr&wD6n)-?%yhWD zsnqaa`Y+(kZaXT=R^y5#SP{Dj;U##oV%E4?0<*jFT+?6y`F2 zTEmDuWpTa5!Yq!1k1?})N>z&+#DuZNe(Ae$^_W9g_w!QbVzBdR{IasHJ@kE%C`$d) zeNPr+6X5^k3Ckb1H5*Z~t7e&$s&zbGa4KV?%I;Es1uQhv zdQidD)WA1{YEbt!$rr6waTo2k$a|#MeWE8 z@(f!aNG6IK5>eOl!tgTC=VCrB-@1G_y&g;@0t0T<=B5esw1ge&n)3<=r~iUK<$LO7 zLt^0?T)#qhs$h0io)?wRDgmvS6sw0#X5QzKBLsG)8VF|Y%x~joHNje0k!My{l;?%7 z^5REXMS*YMd?b>2nuuxIA}qJ2<@iN4R)V}%qFPA9<6}j2m0aR>bmMOHIVDzzH?dKZ zfn4fn@Agnb?OLiT)^*dLsCgQ;^VEFz{inNmH|D?gasynF)$6PfD09FQGz%h2g~(2D zQ9B)cfZ)1P zzbQ&*92}b|)yF2l9P0D1(CEy;M0iLIo#9eWw)(1OnS2?o-w3}We-4Vp=+61h7 zn7Y@R6CwL5IkJ;ep)J4YVRWX?*k5D=*r>w!BRa7e#!&flF)3Q)+p@a4AuWMy00QUs z#6!V{9Xvhl=}n=>4Qg*j^ryJ(M}jv4g9gSYL#l{lHxBz{*mD1-&@*$a6Uto!5PdX^ zoYbT({ui=++A?3vD5FwE+!?zYzS^XT8NuZDuy$00>uo%{d?!C=bQ|6CZ>FrXgtPJC zVUZg>NA|CgES0_(Le@4$>Q)aLUMUf=&;;Gp|_`_*Ng-~(q(wkS)~jTWscsaGVG(jpX<>|3I2QQ3*gE=$?B{&U`Y`g+&@ z+t0_zJ9FpE%$YMYXU^PvUz3>Av~;qmSXZONgy{wn<1ZdwzS(IGyEkX~>RhQ?AGZ}` z?`0VmE{~ikoBP1r=z;CyqmOCym&LU31DJ0AhexLJ2G{(hlXql=x%izeuh(NoR{B-x zEU&$s^8Ltxg>&tSLgO5@l4@&b1q?|KNpx(~RAnw)CHec^CsS%{aQz3%*0iQQ-r6e` zZEb#MPSR8h-g)pWrWl`Sw|}clN2*D&P_(9;{f}I8Qg?#XmeTzhL82QLb!(Wszn&dF z4cqd)T$U~K{N9j)Nrwfcq&aZW=Lusx8-+vHs=nCinB=gQweXf)?gXkA(S$au&5OBi zzudU6@%p}IW%Fm8(a$j6vSdNV6!B_Rnow-P_-kS&_uTJ@eR1syJqFN>%!VgAX&85S3)LW!dY_hQ#-m)pmZ}aK-uD+8jdU^1f2* z$(7RTXFBvIJD-y}bLo8fk;yy%nS157thU_zs1tjy7tfa@6lUmEpZltpFemk+%3?yQ zMB*#qA!#U)0<;&k!<^ zIInf)-Q9}p3Dp*-LVM(U?6+^u!J1Nqtpg85y1t71?RRCoy{B1bSDrfpIZNT! z{;TKQGQ86=ZpAZSuR_1sx`v?yquGv2-wcswT@F-R;J)T;f8Wx>*=oNqzuKztd9Re` zPusaaIoU?ZZl>(o(Caf259gd1B$j(J{K6V-R@{A5vT(ulW7_t1-cj+v`wQ*GG@5?V zdmq%)R@VedB_vumDM&dRrRONwhHta;OxS1>ww3zWYA{jKT_ zr9Po`Ztb10)fe{r8Xr3$TN_Nn@@||s&|jWEuuLatVlKt&w?p9PUn2Vg+lZ6TlpRoY znV=b?d7@*|1HU+fHA~lQyYJKUj^TKD+s>&a#U*n|7faWiq`3P|Qxel2+aZQcT9w=8 zrk2*=-^3o#X4(cH78Kw-O1!>Im+@M zKb~${z?tkEL!(&N%wDeb+7UE*EKzH8e*mYu0<9bpqORpR=~h=rS8-m`oh z@hr)u;fQfh+Usz|FI(Npt~~$wwAbo9#}2db6^ZLps#sg2kd%~e^2tQ&fTe9k>cGkF ziNcGbIN>c#jIhL{JhQ0X-S^l{ar-;tU&U(P*)}2Y{4didZ(bcR)ST84QlH}_bf0Dk zUq~jpX|VA4HUF^Pp&Lq`H?zZc7v#@4v+1mP_P(f&Uko#|MUJ*cX6mI==y9^E*UwLk zti~ojymHekc(VD_4`zw&J#qJ%&&!-D?x|jR+O2>yv9rLx?AW2AKvnyQgV7Vs)<-;b z`DCZHII%P4tdT)N((c^8^i$Q!bLD8)IDKN$oo+d1^j}V2n+@kMKNr2=+{n3|8yh>P zWp;7&Kz{Nqwx_`nxeAY~2H(FO&?wsAygGbA=q7AQ$-3vSoSbJwENY6qxj~NRwmau1 zO?DS^qqTL8-EFNFo6wxx+aJx>7jEY?v=PrYyBKF?Z2N8{_jq<_ypuG|CMr*I(!u4y zhMKy$SFZxPly^zr5bLNLzmWTK#7#IuR%bf4kd1`amrt253 z1ux9Cv^2+_$Vkjyur8TplHwyCzQ}b&_7Ek*F%5eiJCHbWk@VhGSqh;?;w4F+U7j9_ zaNWE8bG)XHae3cYMW?jZ``6UFUd#D~Ja{j@(sApPsCv!nCDrbZr7fHMD+;!0{rv7~ zXMEeOB`nWQ;`FOehZidhT}|BWy6$f9G3&#plE}=2$n$To+}-P)YwYrW%AdQYwv18h zQty|we0tYvOK(-Gk=9IA)!q6tytLKwmD?Y`FQi%ZSM#D)hOG1J+~L% z6)6e4753Bo<^i+tu`zxJ)V2FJ#Z>*gF`$y_&|eaEBa9Meb$InnegC9+LDo4^Su{tf zjJ!Md+(DucWy52nCCY93C_d%A_lY3LXAop5LkX=t+&J z$W-m{%tlc+*=CB&#mgb(V&}|7V}}^|FAtikH{D$wQdg7p{!|F2d!=k$*)E?<#?2?T z@1i!4uHM@H$k)l&>0H>h)8^0PH{Z92QF$X_&vrhQfmzucvu@?si&nV0)kkCvX(T57 ze5=ts=JS(^iLytTctgpDuX#lAjy(zQn8L(mQ>m#cep*WD~H^{Wn>ZyehvLL@(a z@irj;lSW)Y0Ic(FW? zBs2cTy21@!(is89hrWxb@AY#(@}zjllJ_dBm1^v6o7}CXZ3#3I+3R$0`iFDt*IRj+ z{@NnBG-Ka#l|~7X57+iQ+5Yh2o+7ASFTM7t@aYD9mJ3@cH$(TpK#Hr_{zVzTrt9SC zEyHdv5I@qh(Cd1thq_dp{)r#<_R#8a`4hy%8p=!10)Oo#H2n=X4_N&j*RBFvD!ktt+% zjxuIH=}vI+{430wJjZQ&r&o zW**;2VfkL~|2DRrrd4^RQdi7IxJ78oo$`~0F0_ZNdv)(muS%LJJTTwWZ*YG3gDEQv z56dw7x683Mr?)MyOFTb|$_BXj(n#{q_F9WCF z)%jy>ChvDf?KWwqU)J`2i8X)JxtxAp0-JI`+bRAlBPvWBE1Vl2+Nv{-{gG;tV&- zyQgWNn&em2m)S8_>p2X^l2-}>F@P5 zPj)o8U6+X}-yEW784<)Rh%2t%6hH3AW8Y0P(vCa&E?u~*eS)-i|Ml~VwTo2uwY*4t zVOiQmtMnf~_wXg-Z-r|wzHg;?z6-FlXWaZ`c=ID&XIeu z$KxKk<-{Dutm+2=$NKa4#JL>p%6FIXj8Y!5{++NF{J z?AO1wy=|ZGUt7$rD;5G?a!uY8#*W zeQ4L_)?WmzUzo(1yaO9UQLVD$=q8~>Zep?2mMyvZm(Q4fA=N*vHHptL89I=Yv!68-7@^%FI{~| z+K&$*+k8FaqESs_p^6y;t!)YJ-=Y8&>73nTIBr3bEw+LI_qM5hD2-RoBA8s zExX7*^AE78s?iH~8ZI#3DYWFD>uvUGnorvwAB<@^v}lvfMTL^hnHERJ4api!WILVf z&DrST#C##EZNuU6{=U}4qj~DeodG*GY&+P0JwQpLemk?o#3}3TwTm%P8Yt zsy||_+Dl8<$JBLQ@6%*P>^qpMd-RJ~;rq~*tqqQg!Xt^TK?%vWA60iv$!?jxl{RoW zY0~Gm$nqMsf^!F`E9+!8Pn=Nb<^LdhxyOm^)ejz7mE|+%sV1ndm|L3KFg@~2RJEF% zL%76-W$R+|UFJ@f4jxmtd`{KVv)F;v>xFWCD{pkUjLrS7VaIZ4k4%fc)s$ChC&~&o zophGfZ|@)UM9667z};leD`IyM07W#- zA8?!*@w8OBrS5msx7>w?&G$WU8$6dQVxH9b#z|7nsj{fSftbW}K9(a@75gj_b26BD zq~%ekUhelFBF)~-v_~Gxy0V&KK7e|xc{l-uyaa8;$5`}MXjNzwk@s+wsvL*J(eeS ze{GspF3s|7F|JaIgfEYk5%cuU_)z{Ddo+&V9-PtSUUGL!&!Jr{nrY{Il@hPHu9y|K z?&h_%jhb~r^5u*LyKvd47pZiCI2TU(2J~NKM{&UtM3TPn3-OU?U?YxKwf} zwlc(SdweV$?VbO{q3B)yVtWG}w~S_qxl=mbs?&4zni9HV#0%;! zzId3o+Hj4cdC9RaNp>-VpZm9Nd`jQw`t#Ff7iaUqAGK*RQ86w>&E~$FKP0%~;=kukPAg zlT;pt(893E%f3FA(H_dn3V1p5aJ%25{FAhY(jlx3I%^Jo7pD0G^#|Cz)L-Z` zu&i?ZSEA?a-G_y!OWTuz?U&^@d`tFLKlz2-Z{8EwW^iXFbzA3WPE4a(goD+_Ry{FU zOzv8GpE~a7 zntSONHOHEDijGgZ^0D{ko!NTAbGr77e_x|tt?@b2>+&jW{ND0dRXba{&MQWiX;4|h z;(?iA0a4cP*B5u!>+d-nr|R}g^yu%j(3ed?6_kxv1~1lomWTJyYgm;AuRf0Lm{fBw zrMIpiEXU}w`NNfaL;U13uVzP_T{z+4FY$=opG(%0NEZ4jk988BNydb#OxtxXqgVc( z!Mgn$SNvK@nbYcAMDNsS-J$;S0=0-Ywd0qG*``(cX^km9x-w$Y zlviremYYp!}=jdPjL&KR|H0@w);JLR7 z){mv56~klVFJImI^cLB%bq%Ilo;t;@aNCG2Y<~UogxA+{GfJIK zqvzn!Y2DQC_g9q0Q*2EhV*ypZ`^RrLm3=65aeVYn)&tGp;Ic!RnA!_3W!JR_ZR3?b z*=CpS>aMa*mr$U_SDW0AWk#~y-yc7fkYZduP; zKYlkHz1jVCsD4IRWO`#lYTUW_{9@%onR~Zo%vaTJ?=L&lQ}E?UUU1Om@ts=Bdb5;BvBJt~*HyoLeAhJcY3)UsDfH-j*~F_5@q|^W^=DBp_c8*)$|*r`zDf8%J*)WJ>i3_ant3~pNod_29)qlKi$^-q6uWveB%cmLCI#llUS9L2_%zv@8AV&4xKG}EG$E1xz z-#sih!17<5{@$MC6Qbu!Y|DS)vtI1gUJak8lVXD#Tz`f;(133A7#Z<(tBMZHl>aF^S~j(OH$5Ty-NX zv+KbYh0viVkpbf~-fq@0d>(i2b%(g<__ZAm^nZ`lVV!%K_D$x5)h5>BolOf`=Dm8^ zxkkcgRdJuec$>hY>94{!Q{&;)z->!djQmT=T;BGE`6@oqE-tqNAXz?bA~vAxYSm@;o^< z<+Dt>=ku500p3MYaVkBh4GLoum!>^i-rt*a;Nk)HQmo2Er@tC zIc;r+c1H)6aW`|@Q?qBQ=DnVEIZdpEc(Q)&ol?K+7Yt;K>}QFsuiMyBd~Qj2O4o&8 zi>2Wk9M)KBd9jZ-+?^L)bjA3b$Aww556CN&vAPC|oYHnVN<5&n&9Nh6jSRJ;M3eWb zQ>IxR)-@uo*!|7!y9!h7x9qI!i#IkJw9BbIz9`y@mD&kyT(!3P+a1c61Ctq)?sT!- zi>v_g;2G1`6^{A#A*AW;)aslszB)laFFw6Lky*8anw9v}_CjC#yuky0$5gh7f7Lwh zp}hX}_NRW~W^Y*+oLCngH#JyMu~&>OUDo?|z9?s*7dmV2Ia?FmygkxeXYU(Jk8`*a zFEzH+){FYl!Ew68$4Re+D%GA1MvVgENxnPUgX$=oiQ)6-!vU{F6r{%*;##gZ}sUMcVB0Lr1Cq% zqhmVOcn!I?>8?0E+vJ3EXh~dX*xSAz8IECJQtJYGY%mF>_L|L7S{^++`YuOgKf$o% zzJCV$JZCfwcGqm`{t_Hj>AuFtEGaMcQeU@lmu(p{>QZ;hN~5lZ)-kP1G!oV%WyE?P z`(c;x8Dsi=X^6XOr?0}Orh4YFw0d<`hzrS|Tyvr=t4c&iW6DWu9m~4iGCI5VTi!3x z_NS$FR7*#U7E?zB=e`-o!q#WOE-vZh|Tf3}D0dZ7J)C3b$-im1Cc z6|q&{!um84ERu}#nmUO`L$&UFiO_x+lpi|l0jFcJf8H^nvN@CBiQXHH%?=t{eM0xZ z3oxH-vvi+n`cAr|`FL0h>6^7R1Ty+=E|dxU9A@+49facdjow zS!4GU-}`+$ft>V?efQ4Ju$#*k$H^gi+21NG{x z;JZo5DIYAV?Cb4cY7MT;d4N6WY-l|cI3$_yGGDoW3!qsyv|@h2Nt8hsbxY{(ZBUO@ z8hjq{02{+xiHVCS^hdPkTO8f_n|^xeUQ9>y^flOdE%8CczF8g7#T)A_?u0DI2K1L< zB75#)4`SMf?j(Nr@|Ef9iaDsxsZ_S^ldn(uko2Js2Fmnbsx*q%Zj@`4YLxGYxV-g4 zQgQvWH;Tc3s=WVfP(#ImHq1NANwAGmfdG=RL$42sBEv1n;KCg*H z&O9q(80VrDQB;IUp%CbF2IspKF#w}d*<9ODUvF<_x6jIcmo)+279VXc=g^C7{MfrO=?qf7upYq(hg^Srbc~Bf}z)smSZN%t3o(@U>*PfB`)^&(RP) zI^aR$R8o$Q?a?pl*AQpqCE*QrEGSK+fm>?Cj;T}lEcJfyTea1|>lo?twblf7HnaDr^d;G>$lT35h`Yqjd_20li^n z6f%W?8jl2p%!1zV)G44wXq-FoM0o-X;u!{#m;zx5HU20-qj97Xh;mbC=;N?>6gu#w zlQ@bAM0rp#g{NXP9JGrX4Chi~z$j>ZYM@@q9~DzTy{Pf80hK>onIJi|;VV?=4XcU5 zWJ7Ow(I_kuK?D6W%#TGTP@wTgvVbTwUXMl?mV?G3z%M{KK?%gUI%EQ!I|2zz2QM6E zOs5jymp7PBBfu~3GlN8cU;bw@fkEa-ClcpjXgI74{PHfbSp@jye`XWdJek)!BJ<}B zN1tISp&=~jf!Cro+yi6fuNYhdL@u5fLIgiWjgJW5bwH+KJW=5y*bz@u^ck4(A_p2q z12cxk9|jX8^Ct_}ki8FIf$5QXQ{-}EfFRKL!8ovjZcvmo>!2;ul#=pb{v7qsK z6lAD>KEo>Uqr-Yf3JF#T8sH&r6f!I~H2yF$EH^ZM5A0%CSrl-8)c9AZ7|`SgH6Q}P z05$$a8lXbs_n^afP(TC)pf-F7xbY(bTmz3sjeiY%oWl2WxCZq9kOz;Zu#El?VWDfo z7pWuy`~nFyHwdNNXo?n_PKS8Ur_BH#X8w7&Jr$Ye`Lk+qZ z5{N>A6@oT=87$|I2o&%g)P}DiyX6}$8VOE^8eHXag}sTtJ)w*6Z6c@*4~1=r!rREX zOldHbhVd2}VS^S>8^%V#@ZSz_<;NI=3eJbxAFi;$PMK5n+1HK4HJgm zpAHqgj_)LZ3E`X{(V;_U5a5?Th(RU5FXG3MPA1Obu#$;7hTIv0t@Af97z5iCf5$={ z27$L8NG7m2QI^WzsZ6Y$><>FySvx^uLFGLANHpPSr4XgY z&^UK9h%^2JZPHt!0>?6+IKhs$Nx~etO9+3t3jlw)^21;5TEbthv%z2PB;haDvfwXQ zuke>EBRDJ9Tj4K{9+hV|(C5$oeZo# zsB=VKMQ3uV(uoRx86(ZxM@NidaK5DfO(p9@dAlnJb^MyJEN9^x;^eL5E0QQL ziviJ|M~lmF>e7i*{)2Dwd!nf{cRfeWoyO7m{8t7tko5>IBANa_R>VY<7vw>x9SM{E zr@mx(UN=%I=KpX56B#DgQU%BSWhM@JL{phj6M?Td`inWDF=JSqEg$~Alw{1Y*u1ekMx)J%Ay!DZ?S;PlM`!ZU9B3xNGq*sVT!I`>$A#|>J={|Dhbh`R`wS? z@e&F?C4Bs&(#bqZWqe9n_5Z1Ho)~;R@eTqbr$?voD20}TOmyDbG5-Ix;~gT0DdBe) zDxGtnh`5X6UIB!df1MovIKrPCK2TCY3a*+~RsyBJ8v#GP%_P2>F2FQ3#X^M=Y52xY;k2v+^rZ4dWe_3A|81 z;MFwCghCyhj(901nRh;b;}9>EB=f%g4FU@<6(!SnsU?}GLpb5^;k+;? zM&^|>;5fr1U|hn(xhgN`gtH2d0ENuYVR^?DIEirQ0jCU}AQZmvu#0d7r0^M1cqc44 zL-6VF3Q}-N;2M`0e5V~R6jCXYBkY61CUIug5ZRn>--%PlFgXL?iL*F2=MX1zNHxS| zXlVw&6ID1{=Mp72YBf;J{7^%jIu?XMcBBGPWk)?xgR`QRC_ijm@ZVC<5J?s%v6eWE zZ@d7c^MLd^0P=hT4JRPpPZ5mgcq*J2%VAct>H!Qf0z6xV)3cK&(|nFUAB+SLVzYT< zCpUmt{LnOWEF}1x=Z!%548%NM=u_di1rVh<$&JJXoFRbn1)Iq+xJ8`EiEAXPa}G5E zm>0Wea&&L=u$S>R0YsBKEjnjg6VV!a-1*Qsy-md3LUhnWGf@$s431|rktRf=aiW{S zbr~d1Q8V$I#TEvcL}ROw$f_ig>iiLl;Oc0-TMTLlumk)2AWjv5b0C$;rgFl5 z5a(j3PKSO7b_6l*2l%E+bPgAUQCaB3HWCJybn<8>bmR?qJQ_O5{yP>Uk)Q%ZLzTjRfm|39o#62>YU0(NQf44`X5i(jdkR7ILwXh$I>mM@KVeqpI0RJn&_1Ib$S@L?d(S(<5Pk zM?vug{b2v9pGhA*6DA#PN$6(;9uozlkuYEa-;j!jQQ%$#9!4djv}VLu&_9hjYK=)W z1{*(nm37(AcQP zB8bPPK`9j0AAbHA7lTehSWHby_g#__vB(%EAM0Yn;uiR$e* z7#n9F$lw^Gm_Xpdhi@v4HJULv1iCH2)&IZhXOU3xO@J|-LB>ZyFhTYx!(_mU;Aaf; zKqX88dcb((PRU(=MDYKKW-R=EKxHt&{&56hzZ#`2*k4A$01urd1cYHSFa|1`;(#oi z>mXILM_DzK!5-yKOvr5T*3W{FBp9kmRKVjIAmFsy+({!-nFn;EX{SI`@8? zARZ(>cqVKb10T#_YvSHE|1%cppNjSa{Mx}_d>Te0FcO9wF8pKX@6dm>@zf_4P@M~L{X7hp_u|6`;u3qK`?ZmXaqqLz!>Px%m^4_0@fe^P-jjV7ECGQrSs#sz~RIl$QhjD-vk#{|+DylcZY$;P=h1`>`=p_z2pIPgp$ z2Oc#O27`jn4Iu3q75kYm7TxSZKf~@0;e$n`;PO8v6Wno>3K`sc+ya9EZ&-zY2r}XM z4qSv|f_2~zD@*`#V?PpRIR69jz$b7L0zq_pMSwA+fB1ZXiE>uKHAY$;@$)|b!saHx1WCxiM=rn{<%+P815jWr zEIQ<@IG1H3E5uI(gTd&A&4}3{i=pFkJp^OoaswnF-Xjnm3q1%SNRJLDn9(rAgS-Fp zEf}7JqC&bMhzKwyF0Vt3**MLhvG{xeU^F&P3tSi~YVif+=6`UfpNtQ|2*$vzCopD` za4~?3hYKnIqkx0{VS;i@E)2Ih0Su!vaH$jk>G&f!V$8k!KT@rL$Hv8e7|Vp+3C|dW z#w{^}4h1=+1*HFB^#hQ53wi_-#F&boG2n6kZ;}yspenduFKBQG2D^@+Fl?y(j$As# zAD*xQKM_PkjPdmVE*>t01{ecI3oxOe4H~aigohrz7$G!@(-^*Dfq>M}DHj<3zea=B z6XDTtDHnpVaS;w4!~m-n3}#$B-c}Ct=c}IrkN%MHhyVkH2}%u`!CN{SOT~q1fWg5D zrx~cb2o^DbKNk^a!BCT8(Q)}7g2B0WlrU^uP~qa?b~}KvM|l$kvIPuRo!}zk*9nRk z+(!;at{uRrxT6@@42%1u7!D6I3qhgbfjSa;76pF()m zJqggGK^0?^he1?^`3o`zL|m|dD9YkK=`BDIwr#w&pjJo1)d{&{M+wbhL9FKS9nSy2 zwjdo93?OJd>4NG4ZLwGkTu=cRB(3;~01S5&0~>@OD!3#V0z%17Pzwx%h*K-TxDOtV z)B?b`kALD|qvHpXZ!`}Eg({f;!QBlwaNq(B!0-i1gvTCM;c)zbk|hZjf&mX6jUF`- zh~C3-fuH{&MB1o8192IzLR1&UFA2a{xDzhWgCqwx5u|BcUO~YaWGHh9t_j@hfnpQh z79fuDefCepM0qi;;t6BnRD-hx20ST+E8S8M477mupMOIz0NJC|4|hiJ#s#@8L>ipU zP?@9L6Sf>0UJC$Y{Oj7h{0|}_3%^Gr7%V)F37jcM6_){q%bK9#Fsd?&U{Kz~(S!Qm z=$XLLAKkVS&)S;UgCV zVjAONH1Aq50vvLSC84I8mja`Qh3G$ih${sM!c7>3_Iq4>wWb1H}jH&1cl8v+*` zhH;EpEY>K)WMPms;SC8Q*XV2rYEAgrvDjejcqXH&BH)Vu&zTbPXYQ#B>Hm-V;l9>r zKZcSZo(Y=-n=g(r8)83xnb?p93E`dsUJGnUqA47`3VQz0ZVJl%VLx(|!!{jok73o6exJ;kL*43fu(Mh`W<$81$ zRZHxDqY&UW@^X7C-M!XU2b>Pu64aq?tq=Dq8M^Rj0gI|bBI)YtF4J31*JUl&*IP!` d*FmqDI33#Ic!+zG6U_tyv)G(DdTaE>{tt6d6lDMa diff --git a/WorkFeature/Icons/WF_BeamMiterCut.svg b/WorkFeature/Icons/WF_BeamMiterCut.svg new file mode 100644 index 0000000..d9ce671 --- /dev/null +++ b/WorkFeature/Icons/WF_BeamMiterCut.svg @@ -0,0 +1,558 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_NpointsPlane.svg b/WorkFeature/Icons/WF_NpointsPlane.svg new file mode 100644 index 0000000..809ddfd --- /dev/null +++ b/WorkFeature/Icons/WF_NpointsPlane.svg @@ -0,0 +1,1034 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_object3Axes.svg b/WorkFeature/Icons/WF_object3Axes.svg new file mode 100644 index 0000000..36e71cb --- /dev/null +++ b/WorkFeature/Icons/WF_object3Axes.svg @@ -0,0 +1,629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_objectAlignMainAxis.svg b/WorkFeature/Icons/WF_objectAlignMainAxis.svg new file mode 100644 index 0000000..80fc2d9 --- /dev/null +++ b/WorkFeature/Icons/WF_objectAlignMainAxis.svg @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_objectCenterMassPoint.svg b/WorkFeature/Icons/WF_objectCenterMassPoint.svg new file mode 100644 index 0000000..0e3138b --- /dev/null +++ b/WorkFeature/Icons/WF_objectCenterMassPoint.svg @@ -0,0 +1,613 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_objectNAxes.svg b/WorkFeature/Icons/WF_objectNAxes.svg new file mode 100644 index 0000000..a047134 --- /dev/null +++ b/WorkFeature/Icons/WF_objectNAxes.svg @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_objectNPoints.svg b/WorkFeature/Icons/WF_objectNPoints.svg new file mode 100644 index 0000000..3111dca --- /dev/null +++ b/WorkFeature/Icons/WF_objectNPoints.svg @@ -0,0 +1,717 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_pointsSetLoad.svg b/WorkFeature/Icons/WF_pointsSetLoad.svg new file mode 100644 index 0000000..1f252e7 --- /dev/null +++ b/WorkFeature/Icons/WF_pointsSetLoad.svg @@ -0,0 +1,1548 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_pointsSetSave.svg b/WorkFeature/Icons/WF_pointsSetSave.svg new file mode 100644 index 0000000..a77817f --- /dev/null +++ b/WorkFeature/Icons/WF_pointsSetSave.svg @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_twoPointsPlane.svg b/WorkFeature/Icons/WF_twoPointsPlane.svg new file mode 100644 index 0000000..f36fd90 --- /dev/null +++ b/WorkFeature/Icons/WF_twoPointsPlane.svg @@ -0,0 +1,892 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/WorkFeature/Icons/WF_wire.svg b/WorkFeature/Icons/WF_wire.svg new file mode 100644 index 0000000..8a41b0e --- /dev/null +++ b/WorkFeature/Icons/WF_wire.svg @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/WorkFeature/Ui/WFGui_2015.py b/WorkFeature/Ui/WFGui_2015.py index 075986e..06e5bb5 100644 --- a/WorkFeature/Ui/WFGui_2015.py +++ b/WorkFeature/Ui/WFGui_2015.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sun Dec 13 18:49:39 2015 +# Created: Tue Mar 29 07:16:30 2016 # by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -40,7 +40,7 @@ class Ui_Form(object): self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) self.scrollAreaWidgetContents = QtGui.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 362, 786)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 773)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) @@ -96,44 +96,47 @@ class Ui_Form(object): 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) + self.Point_Tab = QtGui.QWidget() + self.Point_Tab.setObjectName(_fromUtf8("Point_Tab")) + self.gridLayout_10 = QtGui.QGridLayout(self.Point_Tab) + self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10")) + self.tabWidget = QtGui.QTabWidget(self.Point_Tab) + self.tabWidget.setObjectName(_fromUtf8("tabWidget")) + self.Point_Tab1_3 = QtGui.QWidget() + self.Point_Tab1_3.setObjectName(_fromUtf8("Point_Tab1_3")) + self.gridLayout_11 = QtGui.QGridLayout(self.Point_Tab1_3) + self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11")) + self.horizontalLayout_46 = QtGui.QHBoxLayout() + self.horizontalLayout_46.setObjectName(_fromUtf8("horizontalLayout_46")) + self.button_object_center = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center.setIcon(icon2) + 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_3) + self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center")) + self.horizontalLayout_46.addWidget(self.checkBox_object_center) + self.gridLayout_11.addLayout(self.horizontalLayout_46, 0, 0, 1, 1) + self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_center.setIcon(icon3) + self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center")) + self.gridLayout_11.addWidget(self.button_Npoints_center, 1, 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 = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon4 = QtGui.QIcon() + icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_center.setIcon(icon4) 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 = QtGui.QSpinBox(self.Point_Tab1_3) self.spin_line_center.setMinimumSize(QtCore.QSize(40, 0)) self.spin_line_center.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_line_center.setMinimum(2) @@ -141,79 +144,80 @@ class Ui_Form(object): 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.gridLayout_11.addLayout(self.horizontalLayout_45, 2, 0, 1, 1) + self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1_3) + icon5 = QtGui.QIcon() + icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_extrema.setIcon(icon5) 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.gridLayout_11.addWidget(self.button_line_extrema, 3, 0, 1, 1) + self.button_circle_center = QtGui.QPushButton(self.Point_Tab1_3) + icon6 = QtGui.QIcon() + icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_circle_center.setIcon(icon6) + self.button_circle_center.setIconSize(QtCore.QSize(32, 32)) + self.button_circle_center.setObjectName(_fromUtf8("button_circle_center")) + self.gridLayout_11.addWidget(self.button_circle_center, 4, 0, 1, 1) + self.button_face_center = QtGui.QPushButton(self.Point_Tab1_3) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_center.setIcon(icon7) + self.button_face_center.setIconSize(QtCore.QSize(32, 32)) + self.button_face_center.setObjectName(_fromUtf8("button_face_center")) + self.gridLayout_11.addWidget(self.button_face_center, 5, 0, 1, 1) + self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1_3) + icon8 = QtGui.QIcon() + icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_face_point.setIcon(icon8) + self.button_line_face_point.setIconSize(QtCore.QSize(32, 32)) + self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point")) + self.gridLayout_11.addWidget(self.button_line_face_point, 6, 0, 1, 1) + self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1_3) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_face_point.setIcon(icon9) 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) + self.gridLayout_11.addWidget(self.button_point_face_point, 7, 0, 1, 1) + self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1_3) + icon10 = QtGui.QIcon() + icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_point.setIcon(icon10) + self.button_point_line_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point")) + self.gridLayout_11.addWidget(self.button_point_line_point, 8, 0, 1, 1) + spacerItem1 = QtGui.QSpacerItem(20, 252, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_11.addItem(spacerItem1, 9, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab1_3, _fromUtf8("")) + self.Point_Tab2_3 = QtGui.QWidget() + self.Point_Tab2_3.setObjectName(_fromUtf8("Point_Tab2_3")) + self.gridLayout_13 = QtGui.QGridLayout(self.Point_Tab2_3) + self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13")) + self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2_3) 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) + icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_point.setIcon(icon11) 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.gridLayout_13.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) + self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2_3) 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) + 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) 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) + self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -223,17 +227,17 @@ class Ui_Form(object): 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.gridLayout_13.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 = QtGui.QPushButton(self.Point_Tab2_3) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPoint.setIcon(icon13) 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) + self.dist_point = QtGui.QLineEdit(self.Point_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -243,7 +247,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Point_Tab2_3) 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) @@ -254,18 +258,18 @@ class Ui_Form(object): 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.gridLayout_13.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 = QtGui.QPushButton(self.Point_Tab2_3) 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) + 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) 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 = QtGui.QSpinBox(self.Point_Tab2_3) 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) @@ -273,105 +277,195 @@ class Ui_Form(object): 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.gridLayout_13.addLayout(self.horizontalLayout_49, 3, 0, 1, 1) + self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2_3) + 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.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.gridLayout_13.addWidget(self.button_click_for_point, 4, 0, 1, 1) + self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2_3) + 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.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) + self.gridLayout_13.addWidget(self.button_object_base_point, 5, 0, 1, 1) + self.button_object_center_mass_point = QtGui.QPushButton(self.Point_Tab2_3) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCenterMassPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_mass_point.setIcon(icon17) + self.button_object_center_mass_point.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center_mass_point.setObjectName(_fromUtf8("button_object_center_mass_point")) + self.gridLayout_13.addWidget(self.button_object_center_mass_point, 6, 0, 1, 1) + self.button_object_Npoint = QtGui.QPushButton(self.Point_Tab2_3) 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) + icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Npoint.setIcon(icon18) + self.button_object_Npoint.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Npoint.setObjectName(_fromUtf8("button_object_Npoint")) + self.gridLayout_13.addWidget(self.button_object_Npoint, 7, 0, 1, 1) + self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2_3) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_to_sketch.setIcon(icon19) 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.gridLayout_13.addWidget(self.button_point_to_sketch, 8, 0, 1, 1) + spacerItem2 = QtGui.QSpacerItem(20, 255, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_13.addItem(spacerItem2, 9, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab2_3, _fromUtf8("")) + self.Point_Tab3_3 = QtGui.QWidget() + self.Point_Tab3_3.setObjectName(_fromUtf8("Point_Tab3_3")) + self.gridLayout_12 = QtGui.QGridLayout(self.Point_Tab3_3) + self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) + self.button_points_load = QtGui.QPushButton(self.Point_Tab3_3) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetLoad.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_load.setIcon(icon20) + self.button_points_load.setIconSize(QtCore.QSize(32, 32)) + self.button_points_load.setObjectName(_fromUtf8("button_points_load")) + self.gridLayout_12.addWidget(self.button_points_load, 0, 0, 1, 1) + self.button_points_save = QtGui.QPushButton(self.Point_Tab3_3) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetSave.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_save.setIcon(icon21) + self.button_points_save.setIconSize(QtCore.QSize(32, 32)) + self.button_points_save.setObjectName(_fromUtf8("button_points_save")) + self.gridLayout_12.addWidget(self.button_points_save, 1, 0, 1, 1) + spacerItem3 = QtGui.QSpacerItem(20, 579, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_12.addItem(spacerItem3, 2, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab3_3, _fromUtf8("")) + self.gridLayout_10.addWidget(self.tabWidget, 0, 0, 1, 1) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab, icon22, _fromUtf8("")) + self.Axis_Tab = QtGui.QWidget() + self.Axis_Tab.setObjectName(_fromUtf8("Axis_Tab")) + self.gridLayout_14 = QtGui.QGridLayout(self.Axis_Tab) + self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14")) + self.tabWidget_2 = QtGui.QTabWidget(self.Axis_Tab) + self.tabWidget_2.setObjectName(_fromUtf8("tabWidget_2")) + self.Axis_Tab1_3 = QtGui.QWidget() + self.Axis_Tab1_3.setObjectName(_fromUtf8("Axis_Tab1_3")) + self.gridLayout_15 = QtGui.QGridLayout(self.Axis_Tab1_3) + self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15")) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) + self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon23) 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 = QtGui.QLineEdit(self.Axis_Tab1_3) 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.gridLayout_15.addLayout(self.horizontalLayout, 1, 0, 1, 1) + spacerItem4 = QtGui.QSpacerItem(20, 233, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_15.addItem(spacerItem4, 7, 0, 1, 1) + self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon24) + self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) + self.gridLayout_15.addWidget(self.button_object_axis, 0, 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_3) + 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)) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon25) + 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_3) + 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_15.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) + self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon26) 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.gridLayout_15.addWidget(self.button_Npoints_axis, 2, 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_3) + self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon27) + 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_3) + 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_3) + 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_15.addLayout(self.horizontalLayout_52, 4, 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 = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon28) 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 = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon29) 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) + self.button_face_normal = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon30) 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 = QtGui.QFrame(self.Axis_Tab1_3) self.frame_8.setMinimumSize(QtCore.QSize(60, 0)) self.frame_8.setMaximumSize(QtCore.QSize(50, 16777215)) self.frame_8.setFrameShape(QtGui.QFrame.StyledPanel) @@ -385,97 +479,50 @@ class Ui_Form(object): 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.gridLayout_15.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) + self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon31) 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.gridLayout_15.addWidget(self.button_twolines_axis, 6, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab1_3, _fromUtf8("")) + self.Axis_Tab2_3 = QtGui.QWidget() + self.Axis_Tab2_3.setObjectName(_fromUtf8("Axis_Tab2_3")) + self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab2_3) + self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) + self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon32) 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.gridLayout_4.addWidget(self.button_plane_point_line_axis, 0, 0, 1, 1) + self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon33) 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.gridLayout_4.addWidget(self.button_line_plane_axis, 1, 0, 1, 1) + self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon34) 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.gridLayout_4.addWidget(self.button_twoplanes_axis, 2, 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 = QtGui.QPushButton(self.Axis_Tab2_3) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon35) 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) + self.dist_line = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -485,7 +532,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -496,17 +543,17 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_54, 3, 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 = QtGui.QPushButton(self.Axis_Tab2_3) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon36) 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) + self.angle_line = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -516,7 +563,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -527,18 +574,18 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_55, 4, 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 = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon37) 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -546,18 +593,18 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_56, 5, 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 = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon38) 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 = QtGui.QSpinBox(self.Axis_Tab2_3) self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0)) self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_axis_cut.setMinimum(2) @@ -565,22 +612,22 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_57, 6, 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) + self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon39) 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) + self.extension_axis = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -590,29 +637,124 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_58, 7, 0, 1, 1) + self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_3) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon40) 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.gridLayout_4.addWidget(self.button_click_for_axis, 8, 0, 1, 1) + spacerItem5 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem5, 9, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab2_3, _fromUtf8("")) + self.Axis_Tab31_3 = QtGui.QWidget() + self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) + self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) + self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon41) 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.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) + self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Naxes.setIcon(icon42) + self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) + self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) + self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_3axes.setIcon(icon43) + self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) + self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) + self.button_line_to_sketch.setIcon(icon19) 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.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) + spacerItem6 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_16.addItem(spacerItem6, 4, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) + self.gridLayout_14.addWidget(self.tabWidget_2, 0, 0, 1, 1) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab, icon44, _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) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon45) + 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) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon46) + 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) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon47) + 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) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon48) + 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) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon49) + 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) + spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem7, 5, 0, 1, 1) + self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16) + self.button_circle_to_sketch.setIcon(icon19) + 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) + spacerItem8 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem8, 7, 0, 1, 1) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_16, icon50, _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) @@ -636,12 +778,12 @@ class Ui_Form(object): 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, 245, 648)) + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 249, 648)) 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) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_76.addItem(spacerItem9, 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) @@ -820,18 +962,18 @@ class Ui_Form(object): 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_2.addWidget(self.checkBox_bezier_2, 1, 0, 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, 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")) @@ -840,8 +982,8 @@ class Ui_Form(object): 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) + spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_62.addItem(spacerItem10) 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)) @@ -859,7 +1001,7 @@ class Ui_Form(object): 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.setGeometry(QtCore.QRect(0, 0, 202, 692)) self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) @@ -1045,31 +1187,6 @@ class Ui_Form(object): 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) @@ -1080,93 +1197,280 @@ class Ui_Form(object): 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) + spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_65.addItem(spacerItem11) 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) + spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_81.addItem(spacerItem12, 7, 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, 1, 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, 2, 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, 2, 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.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("")) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab_2, icon51, _fromUtf8("")) + self.Plane_Tab = QtGui.QWidget() + self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab")) + self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab) + self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17")) + self.tabWidget_3 = QtGui.QTabWidget(self.Plane_Tab) + self.tabWidget_3.setObjectName(_fromUtf8("tabWidget_3")) + self.Plane_Tab1_2 = QtGui.QWidget() + self.Plane_Tab1_2.setObjectName(_fromUtf8("Plane_Tab1_2")) + self.gridLayout_18 = QtGui.QGridLayout(self.Plane_Tab1_2) + self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18")) + self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon52) + self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane")) + self.gridLayout_18.addWidget(self.button_threepoints_plane, 0, 0, 1, 1) + self.button_twopoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_plane.setIcon(icon53) + self.button_twopoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_twopoints_plane.setObjectName(_fromUtf8("button_twopoints_plane")) + self.gridLayout_18.addWidget(self.button_twopoints_plane, 1, 0, 1, 1) + self.button_Npoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_plane.setIcon(icon54) + self.button_Npoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_plane.setObjectName(_fromUtf8("button_Npoints_plane")) + self.gridLayout_18.addWidget(self.button_Npoints_plane, 2, 0, 1, 1) + self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon55) + self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane")) + self.gridLayout_18.addWidget(self.button_axisandpoint_plane, 3, 0, 1, 1) + self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon56) + self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane")) + self.gridLayout_18.addWidget(self.button_axis_point_plane, 4, 0, 1, 1) + self.gridLayout_90 = QtGui.QGridLayout() + self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90")) + self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon57) + 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_2) + 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_18.addLayout(self.gridLayout_90, 5, 0, 1, 1) + self.gridLayout_89 = QtGui.QGridLayout() + self.gridLayout_89.setObjectName(_fromUtf8("gridLayout_89")) + self.button_planeandaxis_plane = QtGui.QPushButton(self.Plane_Tab1_2) + 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) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon58) + 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_2) + 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_18.addLayout(self.gridLayout_89, 6, 0, 1, 1) + self.horizontalLayout_70 = QtGui.QHBoxLayout() + self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70")) + self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_2) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon59) + 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_2) + 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_2) + 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_18.addLayout(self.horizontalLayout_70, 7, 0, 1, 1) + self.horizontalLayout_69 = QtGui.QHBoxLayout() + self.horizontalLayout_69.setObjectName(_fromUtf8("horizontalLayout_69")) + self.button_face_tangent = QtGui.QPushButton(self.Plane_Tab1_2) + 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) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon60) + 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_2) + 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_2) + 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_18.addLayout(self.horizontalLayout_69, 8, 0, 1, 1) + spacerItem13 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_18.addItem(spacerItem13, 9, 0, 1, 1) + self.tabWidget_3.addTab(self.Plane_Tab1_2, _fromUtf8("")) + self.Plane_Tab2_2 = QtGui.QWidget() + self.Plane_Tab2_2.setObjectName(_fromUtf8("Plane_Tab2_2")) + self.gridLayout_36 = QtGui.QGridLayout(self.Plane_Tab2_2) + self.gridLayout_36.setObjectName(_fromUtf8("gridLayout_36")) + self.horizontalLayout_68 = QtGui.QHBoxLayout() + self.horizontalLayout_68.setObjectName(_fromUtf8("horizontalLayout_68")) + self.button_click_for_plane = QtGui.QPushButton(self.Plane_Tab2_2) + 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) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon61) + 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_Tab2_2) + 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_Tab2_2) + 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_36.addLayout(self.horizontalLayout_68, 0, 0, 1, 1) + self.horizontalLayout_71 = QtGui.QHBoxLayout() + self.horizontalLayout_71.setObjectName(_fromUtf8("horizontalLayout_71")) + self.button_extension_plane = QtGui.QPushButton(self.Plane_Tab2_2) + 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) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon62) + 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_Tab2_2) + 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_36.addLayout(self.horizontalLayout_71, 1, 0, 1, 1) + self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab2_2) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon63) + self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes")) + self.gridLayout_36.addWidget(self.button_object_center_planes, 2, 0, 1, 1) + spacerItem14 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_36.addItem(spacerItem14, 3, 0, 1, 1) + self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8("")) + self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab, icon64, _fromUtf8("")) self.tab_17 = QtGui.QWidget() self.tab_17.setObjectName(_fromUtf8("tab_17")) self.gridLayout_6 = QtGui.QGridLayout(self.tab_17) @@ -1203,233 +1507,23 @@ class Ui_Form(object): 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) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon65) 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_6.addWidget(self.frame_9, 0, 0, 1, 1) - spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem11, 2, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_6.addItem(spacerItem15, 2, 0, 1, 1) self.button_beam = QtGui.QPushButton(self.tab_17) - icon47 = QtGui.QIcon() - icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_beam.setIcon(icon47) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon66) self.button_beam.setIconSize(QtCore.QSize(32, 32)) self.button_beam.setObjectName(_fromUtf8("button_beam")) self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1) - 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.tabWidget_7.addTab(self.tab_17, icon66, _fromUtf8("")) self.Objects_Tab2_2 = QtGui.QWidget() self.Objects_Tab2_2.setEnabled(True) self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) @@ -1442,17 +1536,17 @@ class Ui_Form(object): 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) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon67) 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) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon68) self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) self.verticalLayout_4.addWidget(self.button_boundingbox) @@ -1473,9 +1567,9 @@ class Ui_Form(object): 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) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon69) 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) @@ -1503,9 +1597,9 @@ class Ui_Form(object): 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) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon70) 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) @@ -1533,9 +1627,9 @@ class Ui_Form(object): 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) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon71) 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) @@ -1553,9 +1647,9 @@ class Ui_Form(object): 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) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon72) 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) @@ -1582,9 +1676,9 @@ class Ui_Form(object): 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) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon73) self.button_letter.setIconSize(QtCore.QSize(32, 32)) self.button_letter.setObjectName(_fromUtf8("button_letter")) self.horizontalLayout_75.addWidget(self.button_letter) @@ -1606,9 +1700,9 @@ class Ui_Form(object): 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) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon74) self.button_revolve.setIconSize(QtCore.QSize(32, 32)) self.button_revolve.setObjectName(_fromUtf8("button_revolve")) self.horizontalLayout_76.addWidget(self.button_revolve) @@ -1624,31 +1718,31 @@ class Ui_Form(object): self.horizontalLayout_76.addWidget(self.angle_revolve) self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2) - icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_copy_objects.setIcon(icon67) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon75) self.button_copy_objects.setIconSize(QtCore.QSize(32, 32)) self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects")) self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1) self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) - icon68 = QtGui.QIcon() - icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon68) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon76) self.button_common.setIconSize(QtCore.QSize(32, 32)) self.button_common.setObjectName(_fromUtf8("button_common")) self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1) self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon69) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon77) self.button_difference.setIconSize(QtCore.QSize(32, 32)) self.button_difference.setObjectName(_fromUtf8("button_difference")) self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1) - spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Objects_Tab2_2, icon70, _fromUtf8("")) + spacerItem16 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem16, 11, 0, 1, 1) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon78, _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) @@ -1657,8 +1751,8 @@ class Ui_Form(object): 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.gridLayout_9 = QtGui.QGridLayout(self.align_tab_2) + self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9")) self.button_alignface2view = QtGui.QPushButton(self.align_tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -1666,19 +1760,19 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) self.button_alignface2view.setSizePolicy(sizePolicy) self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon71) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon79) 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.gridLayout_9.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)) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon72) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon80) 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) @@ -1692,14 +1786,14 @@ class Ui_Form(object): 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.gridLayout_9.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)) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon73) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon81) 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) @@ -1713,23 +1807,43 @@ class Ui_Form(object): 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.gridLayout_9.addLayout(self.horizontalLayout_79, 2, 0, 1, 1) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_align_main_axis = QtGui.QPushButton(self.align_tab_2) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_main_axis.setIcon(icon82) + self.button_align_main_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_align_main_axis.setObjectName(_fromUtf8("button_align_main_axis")) + self.horizontalLayout_2.addWidget(self.button_align_main_axis) + self.angle_align_main_axis = 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_main_axis.sizePolicy().hasHeightForWidth()) + self.angle_align_main_axis.setSizePolicy(sizePolicy) + self.angle_align_main_axis.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_align_main_axis.setMaximumSize(QtCore.QSize(50, 16777215)) + self.angle_align_main_axis.setObjectName(_fromUtf8("angle_align_main_axis")) + self.horizontalLayout_2.addWidget(self.angle_align_main_axis) + self.gridLayout_9.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) self.button_joint_points = QtGui.QPushButton(self.align_tab_2) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon74) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon83) 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.gridLayout_9.addWidget(self.button_joint_points, 4, 0, 1, 1) self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon75) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon84) 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.gridLayout_9.addWidget(self.button_joint_faces, 5, 0, 1, 1) + spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_9.addItem(spacerItem17, 6, 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")) @@ -1839,8 +1953,8 @@ class Ui_Form(object): 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) + spacerItem18 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem18) self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) self.button_cut_apply.setEnabled(False) self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) @@ -1851,8 +1965,8 @@ class Ui_Form(object): 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) + spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem19, 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")) @@ -1896,9 +2010,9 @@ class Ui_Form(object): 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) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_18, icon76, _fromUtf8("")) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon85, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -1925,9 +2039,9 @@ class Ui_Form(object): 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) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_19, icon77, _fromUtf8("")) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon86, _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)) @@ -1963,9 +2077,9 @@ class Ui_Form(object): 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) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_11.addTab(self.tab_21, icon78, _fromUtf8("")) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon87, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -1993,8 +2107,8 @@ class Ui_Form(object): 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) + spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem20) 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)) @@ -2002,8 +2116,8 @@ class Ui_Form(object): 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) + spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem21, 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")) @@ -2114,9 +2228,9 @@ class Ui_Form(object): 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) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_22, icon79, _fromUtf8("")) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon88, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2191,9 +2305,9 @@ class Ui_Form(object): 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) - icon80 = QtGui.QIcon() - icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_23, icon80, _fromUtf8("")) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon89, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2202,8 +2316,8 @@ class Ui_Form(object): 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) + spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem22) 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)) @@ -2211,8 +2325,8 @@ class Ui_Form(object): 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) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_110.addItem(spacerItem23, 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("")) @@ -2227,103 +2341,103 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) self.button_alignview.setSizePolicy(sizePolicy) self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon81 = QtGui.QIcon() - icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon81) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon90) 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) + spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem24, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon82) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon91) 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) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.View_Tab_2, icon83, _fromUtf8("")) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon92, _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")) self.button_isView = QtGui.QPushButton(self.tab_24) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon84) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon93) self.button_isView.setIconSize(QtCore.QSize(32, 32)) self.button_isView.setObjectName(_fromUtf8("button_isView")) self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem23, 10, 0, 1, 1) + spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem25, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon85 = QtGui.QIcon() - icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon85) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon94) 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) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon86) + icon95 = QtGui.QIcon() + icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon95) 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) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon87) + icon96 = QtGui.QIcon() + icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon96) 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_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) + icon97 = QtGui.QIcon() + icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon97) 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_isCoplanar = QtGui.QPushButton(self.tab_24) - icon89 = QtGui.QIcon() - icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon89) + icon98 = QtGui.QIcon() + icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon98) 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_isArea = QtGui.QPushButton(self.tab_24) - icon90 = QtGui.QIcon() - icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon90) + icon99 = QtGui.QIcon() + icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon99) 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_isPerpendicular = QtGui.QPushButton(self.tab_24) - icon91 = QtGui.QIcon() - icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon91) + icon100 = QtGui.QIcon() + icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon100) 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_isClearance = QtGui.QPushButton(self.tab_24) - icon92 = QtGui.QIcon() - icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon92) + icon101 = QtGui.QIcon() + icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon101) 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) self.button_isRadius = QtGui.QPushButton(self.tab_24) - icon93 = QtGui.QIcon() - icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isRadius.setIcon(icon93) + icon102 = QtGui.QIcon() + icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon102) self.button_isRadius.setIconSize(QtCore.QSize(32, 32)) self.button_isRadius.setObjectName(_fromUtf8("button_isRadius")) self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1) - icon94 = QtGui.QIcon() - icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.tab_24, icon94, _fromUtf8("")) + icon103 = QtGui.QIcon() + icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon103, _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) @@ -2332,17 +2446,20 @@ class Ui_Form(object): 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) + spacerItem26 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem26) 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(7) + self.tabWidget_7.setCurrentIndex(0) + self.tabWidget.setCurrentIndex(2) + self.tabWidget_2.setCurrentIndex(2) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) + self.tabWidget_3.setCurrentIndex(1) self.transition_comboBox.setCurrentIndex(2) self.tabWidget_9.setCurrentIndex(0) self.tabWidget_10.setCurrentIndex(0) @@ -2390,29 +2507,6 @@ class Ui_Form(object): " 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" @@ -2428,8 +2522,24 @@ class Ui_Form(object): " 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_Npoints_center.setToolTip(_translate("Form", "Point=(N Points):\n" +"Create a Point at mean location of all selected points.\n" +"- First select several Points\n" +"- Then push this button", None)) + self.button_Npoints_center.setText(_translate("Form", "Points 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_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_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_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_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_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" @@ -2439,8 +2549,18 @@ class Ui_Form(object): "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_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.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Point 1/3", None)) + self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Create Point(s)", 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)) @@ -2480,33 +2600,90 @@ class Ui_Form(object): 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" +"\n" +"Use left mouse button (MB1) to generate Points. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.\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_object_center_mass_point.setToolTip(_translate("Form", "Create Center of Mass Point of all selected Object(s).", None)) + self.button_object_center_mass_point.setText(_translate("Form", "Object(s) Mass Center Point", None)) + self.button_object_Npoint.setToolTip(_translate("Form", "Create a set of points from selected Objetcs:\n" +"- Select object(s)\n" +" to create points from these object(s) !\n" +" If you select an Edge : 2 points will be created;\n" +" if you select a Plane : 4 points will be created;\n" +" if you select an Object : many points will be created.\n" +"- Then click on this button.", None)) + self.button_object_Npoint.setText(_translate("Form", "Object(s) N Point(s)", 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.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab2_3), _translate("Form", "Point 2/3", None)) + self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab2_3), _translate("Form", "Create Point(s)", None)) + self.button_points_load.setToolTip(_translate("Form", "Load a set of points from an ASCII file:\n" +" ASCII format is 3 values by line seperated by blank as : \n" +" 15.3f 15.3f 15.3f\n" +" Values are read as float.\n" +" \n" +" Lines starting with characeter : # or / are considered as comment lines\n" +" ", None)) + self.button_points_load.setText(_translate("Form", "Load Points", None)) + self.button_points_save.setToolTip(_translate("Form", "Save a point or a set of points into an ASCII file:\n" +"One (x, y, z) triplet per line seperated by blank.\n" +"\n" +"- Select as much as Points as needed and/or select object(s)\n" +" to save points from these object(s) !\n" +" If you select an Edge : 2 points will be saved;\n" +" if you select a Plane : 4 points will be saved;\n" +" if you select an Object : many points will be saved.\n" +"- Then click on this button.", None)) + self.button_points_save.setText(_translate("Form", "Save Points", None)) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab3_3), _translate("Form", "Point 3/3", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Point", None)) + self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Create Point(s)", 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.\n" "Positive values will enlarge the Axis.\n" "Negative values will start to shrink it (then reverse when middle reached). ", 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" + 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_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.\n" +"Positive values will enlarge the Axis.\n" +"Negative values will start to shrink it (then reverse when middle reached). ", None)) + self.extension_line_point_axis.setText(_translate("Form", "0.0", None)) + self.button_Npoints_axis.setToolTip(_translate("Form", "Axis=(N Points):\n" +"Create a \"best fit\" Line from a set of points using Singular Value Decomposition.\n" +"- First select several Points (at least 2);\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_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_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" @@ -2543,35 +2720,13 @@ class Ui_Form(object): " Positive values will enlarge the Axis toward OUTSIDE of the Face Object;\n" " Negative values will enlarge the Axis toward INSIDE of the Face Object.", 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.\n" -"Positive values will enlarge the Axis.\n" -"Negative values will start to shrink it (then reverse when middle reached). ", 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.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab1_3), _translate("Form", "Axis 1/3", 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" @@ -2667,95 +2822,38 @@ class Ui_Form(object): 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)) +"- 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.\n" +"\n" +"\n" +"Use left mouse button (MB1) to generate Lines. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.", None)) self.button_click_for_axis.setText(_translate("Form", "Click", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab2_3), _translate("Form", "Axis 2/3", 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_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 4 axes will be created;\n" +" if you select an Object : many axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) + self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" +"The most representative axes will be selected from all axis.\n" +"The length of main axes will be the cumulative length of all axes with the same direction.\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 2 axes will be created;\n" +" if you select an Object : 3 axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", 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", "Parametric 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", "Parametric 3D", None)) - self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab), _translate("Form", "Axis", 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)) @@ -2786,6 +2884,196 @@ class Ui_Form(object): "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.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", "Parameter :", 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_bezier_2.setText(_translate("Form", "Bezier", None)) + self.checkBox_bspline_2.setText(_translate("Form", "Bspline", 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", "Parametric 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", "Parameter :", 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.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.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.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", 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_twopoints_plane.setToolTip(_translate("Form", "Plane=(2 Points):\n" +"Create a Plane in the middle of 2 points.\n" +"PLANE is perpendicular to line (P1 P2) and contains the midpoint of P1 and P2.\n" +"The direction of the normal of PLANE is the same as the vector from P1 to P2.\n" +"- First select 2 different points\n" +"- Second push this button", None)) + self.button_twopoints_plane.setText(_translate("Form", "Plane=(2 Points)", None)) + self.button_Npoints_plane.setToolTip(_translate("Form", "Plane=(N Points):\n" +"Create a \"best fit\" Plane from a set of points using Singular Value Decomposition.\n" +"- First select several Points (at least 3);\n" +"- Then push this button", None)) + self.button_Npoints_plane.setText(_translate("Form", "Plane=(N Points)", 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_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.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_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_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.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.Plane_Tab1_2), _translate("Form", "Plane 1/2", 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" +"\n" +"Use left mouse button (MB1) to generate Planes. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.\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_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.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.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.Plane_Tab2_2), _translate("Form", "Plane 1/2", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab), _translate("Form", "Plane", None)) self.checkBox_allsubselect.setToolTip(_translate("Form", "if \"All\" is toggled:\n" " All the wires of the Trajectory selected will be considered.\n" "\n" @@ -2835,102 +3123,7 @@ class Ui_Form(object): "- Then push this button\n" "", None)) self.button_beam.setText(_translate("Form", "Beam", 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.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweep", 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)) @@ -3100,6 +3293,28 @@ class Ui_Form(object): 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_align_main_axis.setToolTip(_translate("Form", "Align the main Axis (first of the 2 axis set) from selected object(s) to the last Edge (or 2 main Axis from an object) selected.\n" +" - Click first to select at least one object! \n" +"This or These first object(s) will be rotated.\n" +" - Click last to select an Edge (or an Object) to align to (this last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +"NB:\n" +" The 2 main first axis are calculated using scan and sort from all axis of the object.\n" +" The center of rotation is at center mass location of each selected object.\n" +"\n" +" In case of several objects selection : \n" +" The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one.\n" +" In case of several objects selection plus one Edge :\n" +" The first main Axis of the object(s) will be aligned on the Edge.\n" +" \n" +" - One click will align first main Axes.\n" +" - Second click will also align the second main Axes if exists on last object or\n" +" will rotate by 180 deg the moving objects on first main axes.\n" +" - Third and following clicks will rotate by 180 deg the moving objects on first main axes.", None)) + self.button_align_main_axis.setText(_translate("Form", "Align Main Axis", None)) + self.angle_align_main_axis.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None)) + self.angle_align_main_axis.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" @@ -3258,10 +3473,13 @@ class Ui_Form(object): 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.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_start_x.setText(_translate("Form", "0.0", None)) self.label_12.setText(_translate("Form", "Y :", None)) + self.ObjTrans_start_y.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_start_y.setText(_translate("Form", "0.0", None)) self.label_13.setText(_translate("Form", "Z :", None)) + self.ObjTrans_start_z.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", 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)) @@ -3273,10 +3491,13 @@ class Ui_Form(object): 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.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_end_z.setText(_translate("Form", "0.0", None)) self.label_15.setText(_translate("Form", "Y :", None)) + self.ObjTrans_end_y.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_end_y.setText(_translate("Form", "0.0", None)) self.label_16.setText(_translate("Form", "X :", None)) + self.ObjTrans_end_x.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", 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)) diff --git a/WorkFeature/Ui/WFGui_2015.ui b/WorkFeature/Ui/WFGui_2015.ui index 80abcad..2f3bd4c 100644 --- a/WorkFeature/Ui/WFGui_2015.ui +++ b/WorkFeature/Ui/WFGui_2015.ui @@ -40,8 +40,8 @@ 0 0 - 362 - 786 + 365 + 773 @@ -213,205 +213,37 @@ - + ../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 Point(s) + + - - - - - Create a Point at center location of all selected Object(s). + + + 2 + + + + Point 1/3 + + + Create Point(s) + + + + + + + + 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. @@ -420,61 +252,204 @@ 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 + + + 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)): + + + BBox + + + + + + + + + Point=(N Points): +Create a Point at mean location of all selected points. +- First select several Points +- Then push this button + + + Points Center + + + + ../Icons/WF_NpointsPoint.svg../Icons/WF_NpointsPoint.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 Points at start and end location of each selected Line(s). + + + Line(s) Extrema + + + + ../Icons/WF_extremaLinePoint.svg../Icons/WF_extremaLinePoint.svg + + + + 32 + 32 + + + + + + + + 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 + + + + + + + + Create a Point at center location of each selected Face(s). + + + Face(s) Center + + + + ../Icons/WF_centerFacePoint.svg../Icons/WF_centerFacePoint.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 + + + + + + + + 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) @@ -482,128 +457,168 @@ Create projection(s) of Point(s) onto Face(s). 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 + + + Point(s)=(Pt(s),Face(s)) + + + + ../Icons/WF_pointFacePoint.svg../Icons/WF_pointFacePoint.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 + + + + + + + + Qt::Vertical + + + + 20 + 252 + + + + + + + + + Point 2/3 + + + Create Point(s) + + + + + + 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 + + + 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): + + + 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) @@ -615,102 +630,102 @@ NB: 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. + + + 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: + + + 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: @@ -719,267 +734,92 @@ Wires can be: 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. + + + 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. -Positive values will enlarge the Axis. -Negative values will start to shrink it (then reverse when middle reached). - - - 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. +Use left mouse button (MB1) to generate Points. +MB2 and MB3 can still be used for view zoom and view rotation. - - - 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 + Click - ../Icons/WF_cylinderAxis.svg../Icons/WF_cylinderAxis.svg + ../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 @@ -989,16 +829,486 @@ Orange one is the best fit line. - - - + + + + Create Center of Mass Point of all selected Object(s). + + + Object(s) Mass Center Point + + + + ../Icons/WF_objectCenterMassPoint.svg../Icons/WF_objectCenterMassPoint.svg + + - 16777215 - 16777215 + 32 + 32 + + + + - Plane(s) Axes: + Create a set of points from selected Objetcs: +- Select object(s) + to create points from these object(s) ! + If you select an Edge : 2 points will be created; + if you select a Plane : 4 points will be created; + if you select an Object : many points will be created. +- Then click on this button. + + + Object(s) N Point(s) + + + + ../Icons/WF_objectNPoints.svg../Icons/WF_objectNPoints.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 + 255 + + + + + + + + + Point 3/3 + + + + + + Load a set of points from an ASCII file: + ASCII format is 3 values by line seperated by blank as : + 15.3f 15.3f 15.3f + Values are read as float. + + Lines starting with characeter : # or / are considered as comment lines + + + + Load Points + + + + ../Icons/WF_pointsSetLoad.svg../Icons/WF_pointsSetLoad.svg + + + + 32 + 32 + + + + + + + + Save a point or a set of points into an ASCII file: +One (x, y, z) triplet per line seperated by blank. + +- Select as much as Points as needed and/or select object(s) + to save points from these object(s) ! + If you select an Edge : 2 points will be saved; + if you select a Plane : 4 points will be saved; + if you select an Object : many points will be saved. +- Then click on this button. + + + Save Points + + + + ../Icons/WF_pointsSetSave.svg../Icons/WF_pointsSetSave.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 579 + + + + + + + + + + + + + + ../Icons/WF_axis.svg../Icons/WF_axis.svg + + + Axis + + + + + + 2 + + + + Axis 1/3 + + + + + + + + + 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. +Positive values will enlarge the Axis. +Negative values will start to shrink it (then reverse when middle reached). + + + 0.0 + + + + + + + + + Qt::Vertical + + + + 20 + 233 + + + + + + + + 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 + + + + + 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. +Positive values will enlarge the Axis. +Negative values will start to shrink it (then reverse when middle reached). + + + 0.0 + + + + + + + + + Axis=(N Points): +Create a "best fit" Line from a set of points using Singular Value Decomposition. +- First select several Points (at least 2); +- 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 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 + + + + + + + + + + + + + + + 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 @@ -1011,38 +1321,38 @@ Create Perpendicular Axes of a Plane at selected locations. 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. + + + 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, @@ -1053,13 +1363,90 @@ To create several Normal of the face: - 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 (10%) of the object length. + If zero and plane of face Normal, the extension will be 10 units. + +For "Cylinder Axis", "Planes Axes" and "Face Normal" + Positive values will enlarge the Axis toward OUTSIDE of the Face Object; + Negative values will enlarge the Axis toward INSIDE of the Face Object. + + + 0.0 + + + + + + + + + + + + Create an Axis between two Axes. +-Select two Axes. - Face Normal + Axis=(Line,Line) - ../Icons/WF_FaceNormal.svg../Icons/WF_FaceNormal.svg + ../Icons/WF_twoLinesAxis.svg../Icons/WF_twoLinesAxis.svg @@ -1070,322 +1457,83 @@ To create several Normal of the face: - - - - - - 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 (10%) of the object length. - If zero and plane of face Normal, the extension will be 10 units. - -For "Cylinder Axis", "Planes Axes" and "Face Normal" - Positive values will enlarge the Axis toward OUTSIDE of the Face Object; - Negative values will enlarge the Axis toward INSIDE of the Face Object. - - - 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. -Positive values will enlarge the Axis. -Negative values will start to shrink it (then reverse when middle reached). - - - 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. + + + + Axis 2/3 + + + + + + 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): + + + Axis=(Plane,Point,Axis) + + + + ../Icons/WF_planeLinePointAxis.svg../Icons/WF_planeLinePointAxis.svg + + + + 32 + 32 + + + + + + + + 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): + + + 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 @@ -1401,96 +1549,96 @@ With option "Object copy" in "Ori. Pref." TAB 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. + + + 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): + + + 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 @@ -1511,103 +1659,103 @@ 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. + + + 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: + + + 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: @@ -1619,127 +1767,127 @@ 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: + + + 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): + + + 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 @@ -1747,13 +1895,240 @@ Extend an Axis at two extrema. NB: - The percentage of the extension can be defined first. - Negative percentage will shrink the Axis + + + Enlarge(Axis) + + + + ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg + + + + 32 + 32 + + + + + + + + + 0 + 0 + + + + + 40 + 0 + + + + + 50 + 16777215 + + + + Extension of the Line in percentage of original length of the Line. +If the extension is 50% it means that each side is extended with 25% length. + +Positive values will enlarge the Axis. +Negative values will start to shrink it. + + + 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. + + +Use left mouse button (MB1) to generate Lines. +MB2 and MB3 can still be used for view zoom and view rotation. + + + Click + + + + ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg + + + + 32 + 32 + + + + + + + + Qt::Vertical + + + + 20 + 238 + + + + + + + + + Axis 3/3 + + + + + + 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 + + + + + + + + Create a set of axes from selected Objetcs: +- Select object(s) + to create axes from these object(s) ! + if you select a Plane : 4 axes will be created; + if you select an Object : many axes will be created. +- Then click on this button. + + + Object(s) N Axes(s) + + + + ../Icons/WF_objectNAxes.svg../Icons/WF_objectNAxes.svg + + + + 32 + 32 + + + + + + + + Create a set of 2 or 3 main axes from selected Objetcs: +The most representative axes will be selected from all axis. +The length of main axes will be the cumulative length of all axes with the same direction. +- Select object(s) + to create axes from these object(s) ! + if you select a Plane : 2 axes will be created; + if you select an Object : 3 axes will be created. +- Then click on this button. + + + Object(s) 3 Axes(s) + + + + ../Icons/WF_object3Axes.svg../Icons/WF_object3Axes.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 + 483 + + + + + + + + + + + + + + ../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. - Enlarge(Axis) + Circle=(Axis, center) - ../Icons/WF_enlargeLine.svg../Icons/WF_enlargeLine.svg + ../Icons/WF_lineCenterCircle.svg../Icons/WF_lineCenterCircle.svg @@ -1764,13 +2139,102 @@ NB: - - - - 0 - 0 - + + + + 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 @@ -1784,32 +2248,32 @@ NB: - Extension of the Line in percentage of original length of the Line. -If the extension is 50% it means that each side is extended with 25% length. - -Positive values will enlarge the Axis. -Negative values will start to shrink it. + The number indicates in how many parts the selected Circle will be cut (Max 100). - - 50.0 + + 2 + + + 100 + + + 1 - - + + - 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. + Select a center and 2 Points to create an Ellipse. - Click + Ellipse=(3 points) - ../Icons/WF_clickLine.svg../Icons/WF_clickLine.svg + ../Icons/WF_3pointsEllipse.svg../Icons/WF_3pointsEllipse.svg @@ -1819,36 +2283,29 @@ Negative values will start to shrink it. - - - - Create 3 Axes at Base location of all selected Object(s). + + + + Qt::Vertical - - Object(s) Base Axes - - - - ../Icons/WF_baseObjectsAxes.svg../Icons/WF_baseObjectsAxes.svg - - + - 32 - 32 + 20 + 40 - + - - + + - Transform Line(s) in Sketch's Line(s) by projection onto the Sketch's Plane: + 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 Lines needed; +- Select as much as Circles and arcs needed; Then click on this button. - Axis(es) to Sketch + Circle(s) to Sketch @@ -1862,15 +2319,15 @@ Then click on this button. - - + + Qt::Vertical 20 - 40 + 121 @@ -1922,8 +2379,8 @@ Then click on this button. 0 0 - 259 - 650 + 249 + 648 @@ -2234,7 +2691,7 @@ save your custom curves. - Parameters + Parameter : @@ -2384,7 +2841,7 @@ save your custom curves. - Type of 2D Curve + Type of 2D Curve : @@ -2411,12 +2868,12 @@ save your custom curves. - + true - Bspline + Bezier false @@ -2427,12 +2884,12 @@ save your custom curves. - + true - Bezier + Bspline false @@ -2528,7 +2985,7 @@ To save your curve you need to go to "Edit". 0 0 - 207 + 202 692 @@ -2876,7 +3333,7 @@ save your custom curves. - Parameters + Parameter : @@ -3023,67 +3480,6 @@ save your custom curves. - - - - Type of 3D Curve - - - - - - Points - - - true - - - - - - - Polyline - - - true - - - true - - - - - - - Bspline - - - false - - - true - - - - - - - true - - - Bezier - - - false - - - true - - - - - - @@ -3166,6 +3562,67 @@ To save your curve you need to go to "Edit". + + + + Type of 3D Curve : + + + + + + Points + + + true + + + + + + + Polyline + + + true + + + true + + + + + + + Bspline + + + false + + + true + + + + + + + true + + + Bezier + + + false + + + true + + + + + + @@ -3176,233 +3633,672 @@ To save your curve you need to go to "Edit". - + - ../Icons/WF_circle.svg../Icons/WF_circle.svg + ../Icons/WF_plane.svg../Icons/WF_plane.svg - Circle + Plane - + - - - - - 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. + + + 1 - - 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 + + + Plane 1/2 + + + + + + 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=(2 Points): +Create a Plane in the middle of 2 points. +PLANE is perpendicular to line (P1 P2) and contains the midpoint of P1 and P2. +The direction of the normal of PLANE is the same as the vector from P1 to P2. +- First select 2 different points +- Second push this button + + + Plane=(2 Points) + + + + ../Icons/WF_twoPointsPlane.svg../Icons/WF_twoPointsPlane.svg + + + + 32 + 32 + + + + + + + + Plane=(N Points): +Create a "best fit" Plane from a set of points using Singular Value Decomposition. +- First select several Points (at least 3); +- Then push this button + + + Plane=(N Points) + + + + ../Icons/WF_NpointsPlane.svg../Icons/WF_NpointsPlane.svg + + + + 32 + 32 + + + + + + + + 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 + + + + + + + + + + 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 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 - - +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 + + + + + + + + + + + + 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=(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 + + + + + + + + + + + + 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 + + + + + + + + + Qt::Vertical + + + + 20 + 235 + + + + + + + + + Plane 1/2 + + + + + + + + + 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. + +Use left mouse button (MB1) to generate Planes. +MB2 and MB3 can still be used for view zoom and view rotation. + + + + 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 + + + + 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 + + + + + + + + + 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 + + + + + + + + Qt::Vertical + + + + 20 + 527 + + + + + + - - - - 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 - - - - @@ -3411,7 +4307,7 @@ Then click on this button. ../Icons/WF_Beam.svg../Icons/WF_Beam.svg - Sweeping + Sweep @@ -3602,613 +4498,6 @@ Will extrude a Section along a Linear Trajectory. - - - - ../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 @@ -4893,7 +5182,7 @@ Original code from HighlightDifference.FCMacro Align - + @@ -5087,20 +5376,77 @@ NB: - - - - Qt::Vertical - - - - 20 - 40 - - - - + + + + + Align the main Axis (first of the 2 axis set) from selected object(s) to the last Edge (or 2 main Axis from an object) selected. + - Click first to select at least one object! +This or These first object(s) will be rotated. + - Click last to select an Edge (or an Object) to align to (this last object is fixed and will never move). +Then Click the button. + +NB: + The 2 main first axis are calculated using scan and sort from all axis of the object. + The center of rotation is at center mass location of each selected object. + + In case of several objects selection : + The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one. + In case of several objects selection plus one Edge : + The first main Axis of the object(s) will be aligned on the Edge. + + - One click will align first main Axes. + - Second click will also align the second main Axes if exists on last object or + will rotate by 180 deg the moving objects on first main axes. + - Third and following clicks will rotate by 180 deg the moving objects on first main axes. + + + Align Main Axis + + + + ../Icons/WF_objectAlignMainAxis.svg../Icons/WF_objectAlignMainAxis.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 + + + + + + Joint Point(s) from selected object(s) to the last Point selected. @@ -5126,7 +5472,7 @@ Then Click the button. - + Joint Face(s) from selected object(s) to the last Face selected. @@ -5153,6 +5499,19 @@ Then Click the button. + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -6223,6 +6582,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 @@ -6256,6 +6618,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 @@ -6289,6 +6654,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 @@ -6438,6 +6806,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 @@ -6471,6 +6842,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 @@ -6504,6 +6878,9 @@ On the last result the same Sketch is both link to Pad001 but also still to Pad. 16777215 + + Please Enter a new coordinate and type RETURN to validate! + 0.0 diff --git a/WorkFeature/Utils/WF_Utils.py b/WorkFeature/Utils/WF_Utils.py new file mode 100644 index 0000000..a347b75 --- /dev/null +++ b/WorkFeature/Utils/WF_Utils.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/WorkFeature/Utils/WF_points_set.py b/WorkFeature/Utils/WF_points_set.py new file mode 100644 index 0000000..dc96926 --- /dev/null +++ b/WorkFeature/Utils/WF_points_set.py @@ -0,0 +1,232 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Jan 18 22:19:48 2016 + +@author: laurent +""" +import os + +def write_ascii(filename, text): + """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. + + >>> filename = "toto.txt" + >>> text = "my text to write!" + >>> write_ascii(filename, text) + + """ + if (None in [filename,text]) : + print "\nERROR in : " + str(write_ascii.func_name) + print "At least one of arguments not defined !" + return False + try: + __m_f=open(filename,'w') + __m_f.write(text) + __m_f.close() + return True + except: + print "\nERROR :in : " + str(write_ascii.func_name) + print "The file " + str(filename) + \ + " cannot be opened in write mode !" + return False + + +class points_set(): + def __init__(self, points=None, filename="pointSet.txt"): + """Create a points_set object. + + *points* : (tuple, list, dict or set) a serie of triplet (x, y, z). + + *filename* : (string) full path name. + + **Return** : None if points not defined + False if points not (tuple, list, dict, set) + + >>> # To load a set of points from titi.txt + >>> m_pts = points_set([],"titi.txt") + >>> m_points = m_pts.load() + """ + if (None in [points]) : + print "\nERROR in : points_set.__init__" + print "'points' not defined !" + return None + + if not isinstance(points, (tuple, list, dict, set)): + print "\nERROR in : points_set.__init__" + print "points arguments must be one of (tuple, list, dict, set) !" + return False + + self.__points = list(points) + self.__format = '<15.3f' + if filename == None: + filename = "pointSet.txt" + self.__filename = filename + + def __str__(self): + return str(self.__points) + + def load(self, filename=None): + """Load a set of points from an ASCII file. + + ASCII format is 3 values by line seperated by blank as : + <15.3f <15.3f <15.3f + Values are read as float + + Lines starting with characeter : # or / are considered as comment lines + + *filename* : (string) full path name. + + >>> # To read + >>> m_pts2 = points_set([],"titi.txt") + >>> m_points = m_pts2.load() + >>> print m_points + >>> # or + >>> print points_set([],"tutu.txt").load() + """ + if (None in [filename]) : + m_file = self.__filename + else: + m_file = filename + if not os.path.exists(m_file): + print "\nERROR in : points_set.load" + print "not able to find the file " + str(m_file) + " !" + return False + try: + fo = open(m_file,'r') + fo.close() + except: + print "\nERROR in : points_set.load" + print "not able to open the file " + str(m_file) + " !" + return False + with open(m_file, 'r') as f: + m_points = [] + for line in f: + #print line + x =0.0; y =0.0; z =0.0 + if line[0] == '#' or line[0] == '/': + continue + words = line.strip().split() + + if len(words) == 0: + continue + if words[0] == '#' or line[0] == '/': + continue + if len(words) >= 1: + x = words[0] + if len(words) >= 2: + y = words[1] + if len(words) >= 3: + z = words[2] + m_points.append((x,y,z)) + #print m_points + if len(m_points) == 0: + print "\nWARNING in : points_set.load" + print "no point read from the file " + str(m_file) + " !" + return False + self.__points.append(m_points) + return m_points + + def save(self, filename=None, fmt='<15.3f'): + """Save a points set into an ASCII file. + + One (x, y, z) triplet per line seperated by blank. + + *filename* : (string) full path name. + + *fmt* : (char or string) format pattern. + + >>> # Save from a list + >>> m_points = [] + >>> x =0.0; y =10.0; z =10.0 + >>> m_points.append((x, y, z)) + >>> x =0.0; y =0.0; z =10.0 + >>> m_points.append((x, y, z)) + >>> m_pts = points_set(m_points) + >>> m_pts.save("titi.txt") + >>> # or + >>> sample = [(-1,-1,0.0),(0,3,0.0),(1,2.5,0.0),(2,5,0.0),(3,4,0.0),(5,2,0.0),(7,5,0.0),(9,4,0.0)] + >>> m_points2 = list(sample) + >>> m_pts1 = points_set(m_points2, filename="tutu.txt") + >>> m_pts1.save() + """ + if (None in [filename]) : + m_file = self.__filename + else: + m_file = filename + try: + fo = open(m_file,'w') + fo.close() + except: + print "\nERROR in : points_set.save" + print "not able to open the file " + str(m_file) + " !" + return False + + if len(self.__points) < 1: + return False + + self.__format = fmt + with open(m_file, 'w') as f: + #m_line = "# ASCII : <15.3f <15.3f <15.3f\n" + m_line = "# ASCII : "+str(self.__format)+" "+str(self.__format)+" "+str(self.__format)+"\n" + f.write(m_line) + m_format="{0:"+str(self.__format)+"}" + for m_point in self.__points: + m_line = " " + for m_i in range(2): + #m_line = m_line + '{0:<15.3f}'.format(m_point[m_i]) + m_line = m_line + str(m_format).format(m_point[m_i]) + m_line = m_line + " " + m_i = 2 + #m_line = m_line + '{0:<15.3f}'.format(m_point[m_i]) + m_line = m_line + str(m_format).format(m_point[m_i]) + m_line = m_line + '\n' + f.write(m_line) + + return True + +if __name__ == "__main__": + filename = "toto.txt" + text = "my text" + write_ascii(filename, text) + + m_points = [] + x =0.0; y =10.0; z =10.0 + m_points.append((x, y, z)) + x =0.0; y =0.0; z =10.0 + m_points.append((x, y, z)) + x =10.0; y =0.0; z =10.0 + m_points.append((x, y, z)) + x =10.0; y =0.0; z =0.0 + m_points.append((x, y, z)) + x =0.0; y =0.0; z =10.0 + m_points.append((x, y, z)) + x =0.0; y =0.0; z =0.0 + m_points.append((x, y, z)) + x =10.0; y =10.0; z =10.0 + m_points.append((x, y, z)) + x =10.0; y =10.0; z =0.0 + m_points.append((x, y, z)) + #print str(m_points) + + m_pts = points_set(m_points) + m_pts.save("titi.txt") + print "Save done!" + + sample = [(-1,-1,0.0),(0,3,0.0),(1,2.5,0.0),(2,5,0.0),(3,4,0.0),(5,2,0.0),(7,5,0.0),(9,4,0.0)] + m_points2 = list(sample) + m_pts1 = points_set(m_points2, filename="tutu.txt") + m_pts1.save() + print "Save done!" + + m_pts2 = points_set([],"titi.txt") + m_points = m_pts2.load() + print "First set of points after reading : " + print m_points + print "Second set of points after reading : " + print points_set([],"tutu.txt").load() + \ No newline at end of file diff --git a/WorkFeature/Utils/__init__.py b/WorkFeature/Utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WorkFeature/WFGui_2015.py b/WorkFeature/WFGui_2015.py index 075986e..06e5bb5 100644 --- a/WorkFeature/WFGui_2015.py +++ b/WorkFeature/WFGui_2015.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'WFGui_2015.ui' # -# Created: Sun Dec 13 18:49:39 2015 +# Created: Tue Mar 29 07:16:30 2016 # by: PySide UI code generator 4.11.3 # # WARNING! All changes made in this file will be lost! @@ -40,7 +40,7 @@ class Ui_Form(object): self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName(_fromUtf8("scrollArea")) self.scrollAreaWidgetContents = QtGui.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 362, 786)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 365, 773)) self.scrollAreaWidgetContents.setObjectName(_fromUtf8("scrollAreaWidgetContents")) self.gridLayout_128 = QtGui.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_128.setObjectName(_fromUtf8("gridLayout_128")) @@ -96,44 +96,47 @@ class Ui_Form(object): 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) + self.Point_Tab = QtGui.QWidget() + self.Point_Tab.setObjectName(_fromUtf8("Point_Tab")) + self.gridLayout_10 = QtGui.QGridLayout(self.Point_Tab) + self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10")) + self.tabWidget = QtGui.QTabWidget(self.Point_Tab) + self.tabWidget.setObjectName(_fromUtf8("tabWidget")) + self.Point_Tab1_3 = QtGui.QWidget() + self.Point_Tab1_3.setObjectName(_fromUtf8("Point_Tab1_3")) + self.gridLayout_11 = QtGui.QGridLayout(self.Point_Tab1_3) + self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11")) + self.horizontalLayout_46 = QtGui.QHBoxLayout() + self.horizontalLayout_46.setObjectName(_fromUtf8("horizontalLayout_46")) + self.button_object_center = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon2.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center.setIcon(icon2) + 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_3) + self.checkBox_object_center.setObjectName(_fromUtf8("checkBox_object_center")) + self.horizontalLayout_46.addWidget(self.checkBox_object_center) + self.gridLayout_11.addLayout(self.horizontalLayout_46, 0, 0, 1, 1) + self.button_Npoints_center = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon3.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_center.setIcon(icon3) + self.button_Npoints_center.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_center.setObjectName(_fromUtf8("button_Npoints_center")) + self.gridLayout_11.addWidget(self.button_Npoints_center, 1, 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 = QtGui.QPushButton(self.Point_Tab1_3) 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) + icon4 = QtGui.QIcon() + icon4.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_center.setIcon(icon4) 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 = QtGui.QSpinBox(self.Point_Tab1_3) self.spin_line_center.setMinimumSize(QtCore.QSize(40, 0)) self.spin_line_center.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_line_center.setMinimum(2) @@ -141,79 +144,80 @@ class Ui_Form(object): 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.gridLayout_11.addLayout(self.horizontalLayout_45, 2, 0, 1, 1) + self.button_line_extrema = QtGui.QPushButton(self.Point_Tab1_3) + icon5 = QtGui.QIcon() + icon5.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_extremaLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_extrema.setIcon(icon5) 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.gridLayout_11.addWidget(self.button_line_extrema, 3, 0, 1, 1) + self.button_circle_center = QtGui.QPushButton(self.Point_Tab1_3) + icon6 = QtGui.QIcon() + icon6.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerCirclePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_circle_center.setIcon(icon6) + self.button_circle_center.setIconSize(QtCore.QSize(32, 32)) + self.button_circle_center.setObjectName(_fromUtf8("button_circle_center")) + self.gridLayout_11.addWidget(self.button_circle_center, 4, 0, 1, 1) + self.button_face_center = QtGui.QPushButton(self.Point_Tab1_3) + icon7 = QtGui.QIcon() + icon7.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_center.setIcon(icon7) + self.button_face_center.setIconSize(QtCore.QSize(32, 32)) + self.button_face_center.setObjectName(_fromUtf8("button_face_center")) + self.gridLayout_11.addWidget(self.button_face_center, 5, 0, 1, 1) + self.button_line_face_point = QtGui.QPushButton(self.Point_Tab1_3) + icon8 = QtGui.QIcon() + icon8.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_face_point.setIcon(icon8) + self.button_line_face_point.setIconSize(QtCore.QSize(32, 32)) + self.button_line_face_point.setObjectName(_fromUtf8("button_line_face_point")) + self.gridLayout_11.addWidget(self.button_line_face_point, 6, 0, 1, 1) + self.button_point_face_point = QtGui.QPushButton(self.Point_Tab1_3) + icon9 = QtGui.QIcon() + icon9.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointFacePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_face_point.setIcon(icon9) 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) + self.gridLayout_11.addWidget(self.button_point_face_point, 7, 0, 1, 1) + self.button_point_line_point = QtGui.QPushButton(self.Point_Tab1_3) + icon10 = QtGui.QIcon() + icon10.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_point.setIcon(icon10) + self.button_point_line_point.setIconSize(QtCore.QSize(32, 32)) + self.button_point_line_point.setObjectName(_fromUtf8("button_point_line_point")) + self.gridLayout_11.addWidget(self.button_point_line_point, 8, 0, 1, 1) + spacerItem1 = QtGui.QSpacerItem(20, 252, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_11.addItem(spacerItem1, 9, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab1_3, _fromUtf8("")) + self.Point_Tab2_3 = QtGui.QWidget() + self.Point_Tab2_3.setObjectName(_fromUtf8("Point_Tab2_3")) + self.gridLayout_13 = QtGui.QGridLayout(self.Point_Tab2_3) + self.gridLayout_13.setObjectName(_fromUtf8("gridLayout_13")) + self.button_twolines_point = QtGui.QPushButton(self.Point_Tab2_3) 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) + icon11.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineLinePoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_point.setIcon(icon11) 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.gridLayout_13.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) + self.button_point_on_line = QtGui.QPushButton(self.Point_Tab2_3) 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) + 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) 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) + self.distance_point_on_line = QtGui.QLineEdit(self.Point_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -223,17 +227,17 @@ class Ui_Form(object): 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.gridLayout_13.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 = QtGui.QPushButton(self.Point_Tab2_3) + icon13 = QtGui.QIcon() + icon13.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPointPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPoint.setIcon(icon13) 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) + self.dist_point = QtGui.QLineEdit(self.Point_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -243,7 +247,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Point_Tab2_3) 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) @@ -254,18 +258,18 @@ class Ui_Form(object): 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.gridLayout_13.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 = QtGui.QPushButton(self.Point_Tab2_3) 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) + 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) 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 = QtGui.QSpinBox(self.Point_Tab2_3) 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) @@ -273,105 +277,195 @@ class Ui_Form(object): 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.gridLayout_13.addLayout(self.horizontalLayout_49, 3, 0, 1, 1) + self.button_click_for_point = QtGui.QRadioButton(self.Point_Tab2_3) + 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.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.gridLayout_13.addWidget(self.button_click_for_point, 4, 0, 1, 1) + self.button_object_base_point = QtGui.QPushButton(self.Point_Tab2_3) + 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.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) + self.gridLayout_13.addWidget(self.button_object_base_point, 5, 0, 1, 1) + self.button_object_center_mass_point = QtGui.QPushButton(self.Point_Tab2_3) + icon17 = QtGui.QIcon() + icon17.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCenterMassPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_mass_point.setIcon(icon17) + self.button_object_center_mass_point.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center_mass_point.setObjectName(_fromUtf8("button_object_center_mass_point")) + self.gridLayout_13.addWidget(self.button_object_center_mass_point, 6, 0, 1, 1) + self.button_object_Npoint = QtGui.QPushButton(self.Point_Tab2_3) 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) + icon18.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Npoint.setIcon(icon18) + self.button_object_Npoint.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Npoint.setObjectName(_fromUtf8("button_object_Npoint")) + self.gridLayout_13.addWidget(self.button_object_Npoint, 7, 0, 1, 1) + self.button_point_to_sketch = QtGui.QPushButton(self.Point_Tab2_3) + icon19 = QtGui.QIcon() + icon19.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2Sketch.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_to_sketch.setIcon(icon19) 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.gridLayout_13.addWidget(self.button_point_to_sketch, 8, 0, 1, 1) + spacerItem2 = QtGui.QSpacerItem(20, 255, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_13.addItem(spacerItem2, 9, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab2_3, _fromUtf8("")) + self.Point_Tab3_3 = QtGui.QWidget() + self.Point_Tab3_3.setObjectName(_fromUtf8("Point_Tab3_3")) + self.gridLayout_12 = QtGui.QGridLayout(self.Point_Tab3_3) + self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12")) + self.button_points_load = QtGui.QPushButton(self.Point_Tab3_3) + icon20 = QtGui.QIcon() + icon20.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetLoad.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_load.setIcon(icon20) + self.button_points_load.setIconSize(QtCore.QSize(32, 32)) + self.button_points_load.setObjectName(_fromUtf8("button_points_load")) + self.gridLayout_12.addWidget(self.button_points_load, 0, 0, 1, 1) + self.button_points_save = QtGui.QPushButton(self.Point_Tab3_3) + icon21 = QtGui.QIcon() + icon21.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointsSetSave.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_points_save.setIcon(icon21) + self.button_points_save.setIconSize(QtCore.QSize(32, 32)) + self.button_points_save.setObjectName(_fromUtf8("button_points_save")) + self.gridLayout_12.addWidget(self.button_points_save, 1, 0, 1, 1) + spacerItem3 = QtGui.QSpacerItem(20, 579, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_12.addItem(spacerItem3, 2, 0, 1, 1) + self.tabWidget.addTab(self.Point_Tab3_3, _fromUtf8("")) + self.gridLayout_10.addWidget(self.tabWidget, 0, 0, 1, 1) + icon22 = QtGui.QIcon() + icon22.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_point.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Point_Tab, icon22, _fromUtf8("")) + self.Axis_Tab = QtGui.QWidget() + self.Axis_Tab.setObjectName(_fromUtf8("Axis_Tab")) + self.gridLayout_14 = QtGui.QGridLayout(self.Axis_Tab) + self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14")) + self.tabWidget_2 = QtGui.QTabWidget(self.Axis_Tab) + self.tabWidget_2.setObjectName(_fromUtf8("tabWidget_2")) + self.Axis_Tab1_3 = QtGui.QWidget() + self.Axis_Tab1_3.setObjectName(_fromUtf8("Axis_Tab1_3")) + self.gridLayout_15 = QtGui.QGridLayout(self.Axis_Tab1_3) + self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15")) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_2) + self.button_twopoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon23 = QtGui.QIcon() + icon23.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2pointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_axis.setIcon(icon23) 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 = QtGui.QLineEdit(self.Axis_Tab1_3) 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.gridLayout_15.addLayout(self.horizontalLayout, 1, 0, 1, 1) + spacerItem4 = QtGui.QSpacerItem(20, 233, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_15.addItem(spacerItem4, 7, 0, 1, 1) + self.button_object_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon24 = QtGui.QIcon() + icon24.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_axis.setIcon(icon24) + self.button_object_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_object_axis.setObjectName(_fromUtf8("button_object_axis")) + self.gridLayout_15.addWidget(self.button_object_axis, 0, 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_3) + 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)) + icon25 = QtGui.QIcon() + icon25.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_point_axis.setIcon(icon25) + 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_3) + 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_15.addLayout(self.horizontalLayout_53, 5, 0, 1, 1) + self.button_Npoints_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon26 = QtGui.QIcon() + icon26.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_axis.setIcon(icon26) 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.gridLayout_15.addWidget(self.button_Npoints_axis, 2, 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_3) + self.button_point_line_axis.setMaximumSize(QtCore.QSize(16777215, 16777215)) + icon27 = QtGui.QIcon() + icon27.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointLineAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_point_line_axis.setIcon(icon27) + 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_3) + 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_3) + 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_15.addLayout(self.horizontalLayout_52, 4, 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 = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon28 = QtGui.QIcon() + icon28.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinderAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_axis.setIcon(icon28) 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 = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon29 = QtGui.QIcon() + icon29.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_axis.setIcon(icon29) 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) + self.button_face_normal = QtGui.QPushButton(self.Axis_Tab1_3) 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) + icon30 = QtGui.QIcon() + icon30.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceNormal.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_normal.setIcon(icon30) 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 = QtGui.QFrame(self.Axis_Tab1_3) self.frame_8.setMinimumSize(QtCore.QSize(60, 0)) self.frame_8.setMaximumSize(QtCore.QSize(50, 16777215)) self.frame_8.setFrameShape(QtGui.QFrame.StyledPanel) @@ -385,97 +479,50 @@ class Ui_Form(object): 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.gridLayout_15.addLayout(self.horizontalLayout_51, 3, 0, 1, 1) + self.button_twolines_axis = QtGui.QPushButton(self.Axis_Tab1_3) + icon31 = QtGui.QIcon() + icon31.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoLinesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twolines_axis.setIcon(icon31) 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.gridLayout_15.addWidget(self.button_twolines_axis, 6, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab1_3, _fromUtf8("")) + self.Axis_Tab2_3 = QtGui.QWidget() + self.Axis_Tab2_3.setObjectName(_fromUtf8("Axis_Tab2_3")) + self.gridLayout_4 = QtGui.QGridLayout(self.Axis_Tab2_3) + self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4")) + self.button_plane_point_line_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon32 = QtGui.QIcon() + icon32.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePointAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_plane_point_line_axis.setIcon(icon32) 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.gridLayout_4.addWidget(self.button_plane_point_line_axis, 0, 0, 1, 1) + self.button_line_plane_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon33 = QtGui.QIcon() + icon33.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePlaneAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_line_plane_axis.setIcon(icon33) 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.gridLayout_4.addWidget(self.button_line_plane_axis, 1, 0, 1, 1) + self.button_twoplanes_axis = QtGui.QPushButton(self.Axis_Tab2_3) + icon34 = QtGui.QIcon() + icon34.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_2PlanesAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twoplanes_axis.setIcon(icon34) 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.gridLayout_4.addWidget(self.button_twoplanes_axis, 2, 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 = QtGui.QPushButton(self.Axis_Tab2_3) + icon35 = QtGui.QIcon() + icon35.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distLine.setIcon(icon35) 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) + self.dist_line = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -485,7 +532,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -496,17 +543,17 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_54, 3, 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 = QtGui.QPushButton(self.Axis_Tab2_3) + icon36 = QtGui.QIcon() + icon36.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleAxisAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_angleLine.setIcon(icon36) 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) + self.angle_line = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -516,7 +563,7 @@ class Ui_Form(object): 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -527,18 +574,18 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_55, 4, 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 = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon37 = QtGui.QIcon() + icon37.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutWireAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_wire_axis.setIcon(icon37) 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 = QtGui.QSpinBox(self.Axis_Tab2_3) 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) @@ -546,18 +593,18 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_56, 5, 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 = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon38 = QtGui.QIcon() + icon38.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_axis.setIcon(icon38) 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 = QtGui.QSpinBox(self.Axis_Tab2_3) self.spin_axis_cut.setMinimumSize(QtCore.QSize(40, 0)) self.spin_axis_cut.setMaximumSize(QtCore.QSize(50, 16777215)) self.spin_axis_cut.setMinimum(2) @@ -565,22 +612,22 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_57, 6, 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) + self.button_extension_axis = QtGui.QPushButton(self.Axis_Tab2_3) 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) + icon39 = QtGui.QIcon() + icon39.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargeLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_axis.setIcon(icon39) 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) + self.extension_axis = QtGui.QLineEdit(self.Axis_Tab2_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -590,29 +637,124 @@ class Ui_Form(object): 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.gridLayout_4.addLayout(self.horizontalLayout_58, 7, 0, 1, 1) + self.button_click_for_axis = QtGui.QRadioButton(self.Axis_Tab2_3) + icon40 = QtGui.QIcon() + icon40.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickLine.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_axis.setIcon(icon40) 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.gridLayout_4.addWidget(self.button_click_for_axis, 8, 0, 1, 1) + spacerItem5 = QtGui.QSpacerItem(20, 238, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_4.addItem(spacerItem5, 9, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab2_3, _fromUtf8("")) + self.Axis_Tab31_3 = QtGui.QWidget() + self.Axis_Tab31_3.setObjectName(_fromUtf8("Axis_Tab31_3")) + self.gridLayout_16 = QtGui.QGridLayout(self.Axis_Tab31_3) + self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16")) + self.button_object_base_axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon41 = QtGui.QIcon() + icon41.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_baseObjectsAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_base_axes.setIcon(icon41) 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.gridLayout_16.addWidget(self.button_object_base_axes, 0, 0, 1, 1) + self.button_object_Naxes = QtGui.QPushButton(self.Axis_Tab31_3) + icon42 = QtGui.QIcon() + icon42.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectNAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_Naxes.setIcon(icon42) + self.button_object_Naxes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_Naxes.setObjectName(_fromUtf8("button_object_Naxes")) + self.gridLayout_16.addWidget(self.button_object_Naxes, 1, 0, 1, 1) + self.button_object_3axes = QtGui.QPushButton(self.Axis_Tab31_3) + icon43 = QtGui.QIcon() + icon43.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_object3Axes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_3axes.setIcon(icon43) + self.button_object_3axes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_3axes.setObjectName(_fromUtf8("button_object_3axes")) + self.gridLayout_16.addWidget(self.button_object_3axes, 2, 0, 1, 1) + self.button_line_to_sketch = QtGui.QPushButton(self.Axis_Tab31_3) + self.button_line_to_sketch.setIcon(icon19) 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.gridLayout_16.addWidget(self.button_line_to_sketch, 3, 0, 1, 1) + spacerItem6 = QtGui.QSpacerItem(20, 483, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_16.addItem(spacerItem6, 4, 0, 1, 1) + self.tabWidget_2.addTab(self.Axis_Tab31_3, _fromUtf8("")) + self.gridLayout_14.addWidget(self.tabWidget_2, 0, 0, 1, 1) + icon44 = QtGui.QIcon() + icon44.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_axis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Axis_Tab, icon44, _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) + icon45 = QtGui.QIcon() + icon45.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_lineCenterCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linecenter_circle.setIcon(icon45) + 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) + icon46 = QtGui.QIcon() + icon46.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_linepoint_circle.setIcon(icon46) + 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) + icon47 = QtGui.QIcon() + icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_circle.setIcon(icon47) + 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) + icon48 = QtGui.QIcon() + icon48.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cutCircle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cut_circle.setIcon(icon48) + 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) + icon49 = QtGui.QIcon() + icon49.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_3pointsEllipse.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_3points_ellipse.setIcon(icon49) + 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) + spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem7, 5, 0, 1, 1) + self.button_circle_to_sketch = QtGui.QPushButton(self.tab_16) + self.button_circle_to_sketch.setIcon(icon19) + 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) + spacerItem8 = QtGui.QSpacerItem(20, 121, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout.addItem(spacerItem8, 7, 0, 1, 1) + icon50 = QtGui.QIcon() + icon50.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_circle.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_16, icon50, _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) @@ -636,12 +778,12 @@ class Ui_Form(object): 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, 245, 648)) + self.scrollAreaWidgetContents_5.setGeometry(QtCore.QRect(0, 0, 249, 648)) 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) + spacerItem9 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_76.addItem(spacerItem9, 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) @@ -820,18 +962,18 @@ class Ui_Form(object): 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_2.addWidget(self.checkBox_bezier_2, 1, 0, 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, 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")) @@ -840,8 +982,8 @@ class Ui_Form(object): 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) + spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_62.addItem(spacerItem10) 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)) @@ -859,7 +1001,7 @@ class Ui_Form(object): 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.setGeometry(QtCore.QRect(0, 0, 202, 692)) self.scrollAreaWidgetContents_6.setObjectName(_fromUtf8("scrollAreaWidgetContents_6")) self.gridLayout_81 = QtGui.QGridLayout(self.scrollAreaWidgetContents_6) self.gridLayout_81.setObjectName(_fromUtf8("gridLayout_81")) @@ -1045,31 +1187,6 @@ class Ui_Form(object): 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) @@ -1080,93 +1197,280 @@ class Ui_Form(object): 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) + spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_65.addItem(spacerItem11) 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) + spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_81.addItem(spacerItem12, 7, 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, 1, 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, 2, 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, 2, 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.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("")) + icon51 = QtGui.QIcon() + icon51.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_wire.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Wire_Tab_2, icon51, _fromUtf8("")) + self.Plane_Tab = QtGui.QWidget() + self.Plane_Tab.setObjectName(_fromUtf8("Plane_Tab")) + self.gridLayout_17 = QtGui.QGridLayout(self.Plane_Tab) + self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17")) + self.tabWidget_3 = QtGui.QTabWidget(self.Plane_Tab) + self.tabWidget_3.setObjectName(_fromUtf8("tabWidget_3")) + self.Plane_Tab1_2 = QtGui.QWidget() + self.Plane_Tab1_2.setObjectName(_fromUtf8("Plane_Tab1_2")) + self.gridLayout_18 = QtGui.QGridLayout(self.Plane_Tab1_2) + self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18")) + self.button_threepoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon52 = QtGui.QIcon() + icon52.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_threePointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_threepoints_plane.setIcon(icon52) + self.button_threepoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_threepoints_plane.setObjectName(_fromUtf8("button_threepoints_plane")) + self.gridLayout_18.addWidget(self.button_threepoints_plane, 0, 0, 1, 1) + self.button_twopoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon53 = QtGui.QIcon() + icon53.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_twoPointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_twopoints_plane.setIcon(icon53) + self.button_twopoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_twopoints_plane.setObjectName(_fromUtf8("button_twopoints_plane")) + self.gridLayout_18.addWidget(self.button_twopoints_plane, 1, 0, 1, 1) + self.button_Npoints_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon54 = QtGui.QIcon() + icon54.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_NpointsPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_Npoints_plane.setIcon(icon54) + self.button_Npoints_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_Npoints_plane.setObjectName(_fromUtf8("button_Npoints_plane")) + self.gridLayout_18.addWidget(self.button_Npoints_plane, 2, 0, 1, 1) + self.button_axisandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon55 = QtGui.QIcon() + icon55.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axisandpoint_plane.setIcon(icon55) + self.button_axisandpoint_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axisandpoint_plane.setObjectName(_fromUtf8("button_axisandpoint_plane")) + self.gridLayout_18.addWidget(self.button_axisandpoint_plane, 3, 0, 1, 1) + self.button_axis_point_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon56 = QtGui.QIcon() + icon56.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_linePointPlane2.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_axis_point_plane.setIcon(icon56) + self.button_axis_point_plane.setIconSize(QtCore.QSize(32, 32)) + self.button_axis_point_plane.setObjectName(_fromUtf8("button_axis_point_plane")) + self.gridLayout_18.addWidget(self.button_axis_point_plane, 4, 0, 1, 1) + self.gridLayout_90 = QtGui.QGridLayout() + self.gridLayout_90.setObjectName(_fromUtf8("gridLayout_90")) + self.button_planeandpoint_plane = QtGui.QPushButton(self.Plane_Tab1_2) + icon57 = QtGui.QIcon() + icon57.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandpoint_plane.setIcon(icon57) + 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_2) + 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_18.addLayout(self.gridLayout_90, 5, 0, 1, 1) + self.gridLayout_89 = QtGui.QGridLayout() + self.gridLayout_89.setObjectName(_fromUtf8("gridLayout_89")) + self.button_planeandaxis_plane = QtGui.QPushButton(self.Plane_Tab1_2) + 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) + icon58 = QtGui.QIcon() + icon58.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_planeLinePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_planeandaxis_plane.setIcon(icon58) + 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_2) + 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_18.addLayout(self.gridLayout_89, 6, 0, 1, 1) + self.horizontalLayout_70 = QtGui.QHBoxLayout() + self.horizontalLayout_70.setObjectName(_fromUtf8("horizontalLayout_70")) + self.button_distPlane = QtGui.QPushButton(self.Plane_Tab1_2) + icon59 = QtGui.QIcon() + icon59.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distPlanePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_distPlane.setIcon(icon59) + 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_2) + 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_2) + 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_18.addLayout(self.horizontalLayout_70, 7, 0, 1, 1) + self.horizontalLayout_69 = QtGui.QHBoxLayout() + self.horizontalLayout_69.setObjectName(_fromUtf8("horizontalLayout_69")) + self.button_face_tangent = QtGui.QPushButton(self.Plane_Tab1_2) + 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) + icon60 = QtGui.QIcon() + icon60.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FaceTangent.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_face_tangent.setIcon(icon60) + 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_2) + 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_2) + 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_18.addLayout(self.horizontalLayout_69, 8, 0, 1, 1) + spacerItem13 = QtGui.QSpacerItem(20, 235, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_18.addItem(spacerItem13, 9, 0, 1, 1) + self.tabWidget_3.addTab(self.Plane_Tab1_2, _fromUtf8("")) + self.Plane_Tab2_2 = QtGui.QWidget() + self.Plane_Tab2_2.setObjectName(_fromUtf8("Plane_Tab2_2")) + self.gridLayout_36 = QtGui.QGridLayout(self.Plane_Tab2_2) + self.gridLayout_36.setObjectName(_fromUtf8("gridLayout_36")) + self.horizontalLayout_68 = QtGui.QHBoxLayout() + self.horizontalLayout_68.setObjectName(_fromUtf8("horizontalLayout_68")) + self.button_click_for_plane = QtGui.QPushButton(self.Plane_Tab2_2) + 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) + icon61 = QtGui.QIcon() + icon61.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_clickPlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_click_for_plane.setIcon(icon61) + 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_Tab2_2) + 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_Tab2_2) + 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_36.addLayout(self.horizontalLayout_68, 0, 0, 1, 1) + self.horizontalLayout_71 = QtGui.QHBoxLayout() + self.horizontalLayout_71.setObjectName(_fromUtf8("horizontalLayout_71")) + self.button_extension_plane = QtGui.QPushButton(self.Plane_Tab2_2) + 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) + icon62 = QtGui.QIcon() + icon62.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_enlargePlane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_extension_plane.setIcon(icon62) + 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_Tab2_2) + 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_36.addLayout(self.horizontalLayout_71, 1, 0, 1, 1) + self.button_object_center_planes = QtGui.QPushButton(self.Plane_Tab2_2) + icon63 = QtGui.QIcon() + icon63.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_centerObjectsPlanes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_object_center_planes.setIcon(icon63) + self.button_object_center_planes.setIconSize(QtCore.QSize(32, 32)) + self.button_object_center_planes.setObjectName(_fromUtf8("button_object_center_planes")) + self.gridLayout_36.addWidget(self.button_object_center_planes, 2, 0, 1, 1) + spacerItem14 = QtGui.QSpacerItem(20, 527, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_36.addItem(spacerItem14, 3, 0, 1, 1) + self.tabWidget_3.addTab(self.Plane_Tab2_2, _fromUtf8("")) + self.gridLayout_17.addWidget(self.tabWidget_3, 0, 0, 1, 1) + icon64 = QtGui.QIcon() + icon64.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_plane.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Plane_Tab, icon64, _fromUtf8("")) self.tab_17 = QtGui.QWidget() self.tab_17.setObjectName(_fromUtf8("tab_17")) self.gridLayout_6 = QtGui.QGridLayout(self.tab_17) @@ -1203,233 +1507,23 @@ class Ui_Form(object): 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) + icon65 = QtGui.QIcon() + icon65.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Sweep.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sweep.setIcon(icon65) 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_6.addWidget(self.frame_9, 0, 0, 1, 1) - spacerItem11 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_6.addItem(spacerItem11, 2, 0, 1, 1) + spacerItem15 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_6.addItem(spacerItem15, 2, 0, 1, 1) self.button_beam = QtGui.QPushButton(self.tab_17) - icon47 = QtGui.QIcon() - icon47.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_beam.setIcon(icon47) + icon66 = QtGui.QIcon() + icon66.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Beam.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_beam.setIcon(icon66) self.button_beam.setIconSize(QtCore.QSize(32, 32)) self.button_beam.setObjectName(_fromUtf8("button_beam")) self.gridLayout_6.addWidget(self.button_beam, 1, 0, 1, 1) - 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.tabWidget_7.addTab(self.tab_17, icon66, _fromUtf8("")) self.Objects_Tab2_2 = QtGui.QWidget() self.Objects_Tab2_2.setEnabled(True) self.Objects_Tab2_2.setMinimumSize(QtCore.QSize(0, 0)) @@ -1442,17 +1536,17 @@ class Ui_Form(object): 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) + icon67 = QtGui.QIcon() + icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBoxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingboxes.setIcon(icon67) 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) + icon68 = QtGui.QIcon() + icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_boundingBox.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_boundingbox.setIcon(icon68) self.button_boundingbox.setIconSize(QtCore.QSize(32, 32)) self.button_boundingbox.setObjectName(_fromUtf8("button_boundingbox")) self.verticalLayout_4.addWidget(self.button_boundingbox) @@ -1473,9 +1567,9 @@ class Ui_Form(object): 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) + icon69 = QtGui.QIcon() + icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cylinder.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cylinder_create.setIcon(icon69) 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) @@ -1503,9 +1597,9 @@ class Ui_Form(object): 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) + icon70 = QtGui.QIcon() + icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_cube.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_cube_create.setIcon(icon70) 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) @@ -1533,9 +1627,9 @@ class Ui_Form(object): 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) + icon71 = QtGui.QIcon() + icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_sphere.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_sphere_create.setIcon(icon71) 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) @@ -1553,9 +1647,9 @@ class Ui_Form(object): 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) + icon72 = QtGui.QIcon() + icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_dome.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_dome_create.setIcon(icon72) 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) @@ -1582,9 +1676,9 @@ class Ui_Form(object): 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) + icon73 = QtGui.QIcon() + icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_pointText.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_letter.setIcon(icon73) self.button_letter.setIconSize(QtCore.QSize(32, 32)) self.button_letter.setObjectName(_fromUtf8("button_letter")) self.horizontalLayout_75.addWidget(self.button_letter) @@ -1606,9 +1700,9 @@ class Ui_Form(object): 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) + icon74 = QtGui.QIcon() + icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Revolve.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_revolve.setIcon(icon74) self.button_revolve.setIconSize(QtCore.QSize(32, 32)) self.button_revolve.setObjectName(_fromUtf8("button_revolve")) self.horizontalLayout_76.addWidget(self.button_revolve) @@ -1624,31 +1718,31 @@ class Ui_Form(object): self.horizontalLayout_76.addWidget(self.angle_revolve) self.gridLayout_5.addLayout(self.horizontalLayout_76, 7, 0, 1, 1) self.button_copy_objects = QtGui.QPushButton(self.Objects_Tab2_2) - icon67 = QtGui.QIcon() - icon67.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_copy_objects.setIcon(icon67) + icon75 = QtGui.QIcon() + icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectCopy.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_copy_objects.setIcon(icon75) self.button_copy_objects.setIconSize(QtCore.QSize(32, 32)) self.button_copy_objects.setObjectName(_fromUtf8("button_copy_objects")) self.gridLayout_5.addWidget(self.button_copy_objects, 8, 0, 1, 1) self.button_common = QtGui.QPushButton(self.Objects_Tab2_2) - icon68 = QtGui.QIcon() - icon68.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_common.setIcon(icon68) + icon76 = QtGui.QIcon() + icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Common.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_common.setIcon(icon76) self.button_common.setIconSize(QtCore.QSize(32, 32)) self.button_common.setObjectName(_fromUtf8("button_common")) self.gridLayout_5.addWidget(self.button_common, 9, 0, 1, 1) self.button_difference = QtGui.QPushButton(self.Objects_Tab2_2) - icon69 = QtGui.QIcon() - icon69.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_difference.setIcon(icon69) + icon77 = QtGui.QIcon() + icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_Difference.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_difference.setIcon(icon77) self.button_difference.setIconSize(QtCore.QSize(32, 32)) self.button_difference.setObjectName(_fromUtf8("button_difference")) self.gridLayout_5.addWidget(self.button_difference, 10, 0, 1, 1) - spacerItem14 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_5.addItem(spacerItem14, 11, 0, 1, 1) - icon70 = QtGui.QIcon() - icon70.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.Objects_Tab2_2, icon70, _fromUtf8("")) + spacerItem16 = QtGui.QSpacerItem(17, 8, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_5.addItem(spacerItem16, 11, 0, 1, 1) + icon78 = QtGui.QIcon() + icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_box.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.Objects_Tab2_2, icon78, _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) @@ -1657,8 +1751,8 @@ class Ui_Form(object): 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.gridLayout_9 = QtGui.QGridLayout(self.align_tab_2) + self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9")) self.button_alignface2view = QtGui.QPushButton(self.align_tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) @@ -1666,19 +1760,19 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignface2view.sizePolicy().hasHeightForWidth()) self.button_alignface2view.setSizePolicy(sizePolicy) self.button_alignface2view.setMaximumSize(QtCore.QSize(220, 16777215)) - icon71 = QtGui.QIcon() - icon71.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignface2view.setIcon(icon71) + icon79 = QtGui.QIcon() + icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlignFace.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignface2view.setIcon(icon79) 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.gridLayout_9.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)) - icon72 = QtGui.QIcon() - icon72.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_faces.setIcon(icon72) + icon80 = QtGui.QIcon() + icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_faces.setIcon(icon80) 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) @@ -1692,14 +1786,14 @@ class Ui_Form(object): 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.gridLayout_9.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)) - icon73 = QtGui.QIcon() - icon73.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_align_edges.setIcon(icon73) + icon81 = QtGui.QIcon() + icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignAxes.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_edges.setIcon(icon81) 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) @@ -1713,23 +1807,43 @@ class Ui_Form(object): 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.gridLayout_9.addLayout(self.horizontalLayout_79, 2, 0, 1, 1) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) + self.button_align_main_axis = QtGui.QPushButton(self.align_tab_2) + icon82 = QtGui.QIcon() + icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectAlignMainAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_align_main_axis.setIcon(icon82) + self.button_align_main_axis.setIconSize(QtCore.QSize(32, 32)) + self.button_align_main_axis.setObjectName(_fromUtf8("button_align_main_axis")) + self.horizontalLayout_2.addWidget(self.button_align_main_axis) + self.angle_align_main_axis = 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_main_axis.sizePolicy().hasHeightForWidth()) + self.angle_align_main_axis.setSizePolicy(sizePolicy) + self.angle_align_main_axis.setMinimumSize(QtCore.QSize(40, 0)) + self.angle_align_main_axis.setMaximumSize(QtCore.QSize(50, 16777215)) + self.angle_align_main_axis.setObjectName(_fromUtf8("angle_align_main_axis")) + self.horizontalLayout_2.addWidget(self.angle_align_main_axis) + self.gridLayout_9.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) self.button_joint_points = QtGui.QPushButton(self.align_tab_2) - icon74 = QtGui.QIcon() - icon74.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_points.setIcon(icon74) + icon83 = QtGui.QIcon() + icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointPoints.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_points.setIcon(icon83) 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.gridLayout_9.addWidget(self.button_joint_points, 4, 0, 1, 1) self.button_joint_faces = QtGui.QPushButton(self.align_tab_2) - icon75 = QtGui.QIcon() - icon75.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_joint_faces.setIcon(icon75) + icon84 = QtGui.QIcon() + icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_objectJointFaces.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_joint_faces.setIcon(icon84) 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.gridLayout_9.addWidget(self.button_joint_faces, 5, 0, 1, 1) + spacerItem17 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_9.addItem(spacerItem17, 6, 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")) @@ -1839,8 +1953,8 @@ class Ui_Form(object): 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) + spacerItem18 = QtGui.QSpacerItem(18, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_80.addItem(spacerItem18) self.button_cut_apply = QtGui.QPushButton(self.groupBox_20) self.button_cut_apply.setEnabled(False) self.button_cut_apply.setMaximumSize(QtCore.QSize(50, 16777215)) @@ -1851,8 +1965,8 @@ class Ui_Form(object): 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) + spacerItem19 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_96.addItem(spacerItem19, 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")) @@ -1896,9 +2010,9 @@ class Ui_Form(object): 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) - icon76 = QtGui.QIcon() - icon76.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_18, icon76, _fromUtf8("")) + icon85 = QtGui.QIcon() + icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationAxis.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_18, icon85, _fromUtf8("")) self.tab_19 = QtGui.QWidget() self.tab_19.setObjectName(_fromUtf8("tab_19")) self.gridLayout_106 = QtGui.QGridLayout(self.tab_19) @@ -1925,9 +2039,9 @@ class Ui_Form(object): 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) - icon77 = QtGui.QIcon() - icon77.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_10.addTab(self.tab_19, icon77, _fromUtf8("")) + icon86 = QtGui.QIcon() + icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_rotationPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_10.addTab(self.tab_19, icon86, _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)) @@ -1963,9 +2077,9 @@ class Ui_Form(object): 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) - icon78 = QtGui.QIcon() - icon78.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_11.addTab(self.tab_21, icon78, _fromUtf8("")) + icon87 = QtGui.QIcon() + icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_click.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_11.addTab(self.tab_21, icon87, _fromUtf8("")) self.gridLayout_107.addWidget(self.tabWidget_11, 0, 0, 1, 1) self.horizontalLayout_81 = QtGui.QHBoxLayout() self.horizontalLayout_81.setObjectName(_fromUtf8("horizontalLayout_81")) @@ -1993,8 +2107,8 @@ class Ui_Form(object): 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) + spacerItem20 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_82.addItem(spacerItem20) 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)) @@ -2002,8 +2116,8 @@ class Ui_Form(object): 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) + spacerItem21 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_103.addItem(spacerItem21, 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")) @@ -2114,9 +2228,9 @@ class Ui_Form(object): 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) - icon79 = QtGui.QIcon() - icon79.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_22, icon79, _fromUtf8("")) + icon88 = QtGui.QIcon() + icon88.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_startPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_22, icon88, _fromUtf8("")) self.tab_23 = QtGui.QWidget() self.tab_23.setObjectName(_fromUtf8("tab_23")) self.gridLayout_118 = QtGui.QGridLayout(self.tab_23) @@ -2191,9 +2305,9 @@ class Ui_Form(object): 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) - icon80 = QtGui.QIcon() - icon80.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_12.addTab(self.tab_23, icon80, _fromUtf8("")) + icon89 = QtGui.QIcon() + icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_endPoint.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_12.addTab(self.tab_23, icon89, _fromUtf8("")) self.gridLayout_111.addWidget(self.tabWidget_12, 2, 0, 1, 1) self.horizontalLayout_84 = QtGui.QHBoxLayout() self.horizontalLayout_84.setObjectName(_fromUtf8("horizontalLayout_84")) @@ -2202,8 +2316,8 @@ class Ui_Form(object): 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) + spacerItem22 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_84.addItem(spacerItem22) 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)) @@ -2211,8 +2325,8 @@ class Ui_Form(object): 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) + spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_110.addItem(spacerItem23, 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("")) @@ -2227,103 +2341,103 @@ class Ui_Form(object): sizePolicy.setHeightForWidth(self.button_alignview.sizePolicy().hasHeightForWidth()) self.button_alignview.setSizePolicy(sizePolicy) self.button_alignview.setMaximumSize(QtCore.QSize(16777215, 16777215)) - icon81 = QtGui.QIcon() - icon81.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_alignview.setIcon(icon81) + icon90 = QtGui.QIcon() + icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_viewAlign.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_alignview.setIcon(icon90) 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) + spacerItem24 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_124.addItem(spacerItem24, 2, 0, 1, 1) self.button_trackcamera = QtGui.QPushButton(self.View_Tab_2) - icon82 = QtGui.QIcon() - icon82.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_trackcamera.setIcon(icon82) + icon91 = QtGui.QIcon() + icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_trackCamera.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_trackcamera.setIcon(icon91) 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) - icon83 = QtGui.QIcon() - icon83.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.View_Tab_2, icon83, _fromUtf8("")) + icon92 = QtGui.QIcon() + icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_view.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.View_Tab_2, icon92, _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")) self.button_isView = QtGui.QPushButton(self.tab_24) - icon84 = QtGui.QIcon() - icon84.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isView.setIcon(icon84) + icon93 = QtGui.QIcon() + icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_FCCamera_02.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isView.setIcon(icon93) self.button_isView.setIconSize(QtCore.QSize(32, 32)) self.button_isView.setObjectName(_fromUtf8("button_isView")) self.gridLayout_125.addWidget(self.button_isView, 9, 0, 1, 1) - spacerItem23 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) - self.gridLayout_125.addItem(spacerItem23, 10, 0, 1, 1) + spacerItem25 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.gridLayout_125.addItem(spacerItem25, 10, 0, 1, 1) self.button_isParallel = QtGui.QPushButton(self.tab_24) - icon85 = QtGui.QIcon() - icon85.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isParallel.setIcon(icon85) + icon94 = QtGui.QIcon() + icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isParallel.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isParallel.setIcon(icon94) 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) - icon86 = QtGui.QIcon() - icon86.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isAngle.setIcon(icon86) + icon95 = QtGui.QIcon() + icon95.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_angleBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isAngle.setIcon(icon95) 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) - icon87 = QtGui.QIcon() - icon87.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isLength.setIcon(icon87) + icon96 = QtGui.QIcon() + icon96.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isLength.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isLength.setIcon(icon96) 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_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) + icon97 = QtGui.QIcon() + icon97.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_distanceBetween.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isDistance.setIcon(icon97) 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_isCoplanar = QtGui.QPushButton(self.tab_24) - icon89 = QtGui.QIcon() - icon89.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isCoplanar.setIcon(icon89) + icon98 = QtGui.QIcon() + icon98.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isCoplanar.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isCoplanar.setIcon(icon98) 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_isArea = QtGui.QPushButton(self.tab_24) - icon90 = QtGui.QIcon() - icon90.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isArea.setIcon(icon90) + icon99 = QtGui.QIcon() + icon99.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isArea.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isArea.setIcon(icon99) 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_isPerpendicular = QtGui.QPushButton(self.tab_24) - icon91 = QtGui.QIcon() - icon91.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isPerpendicular.setIcon(icon91) + icon100 = QtGui.QIcon() + icon100.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isPerpendicular.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isPerpendicular.setIcon(icon100) 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_isClearance = QtGui.QPushButton(self.tab_24) - icon92 = QtGui.QIcon() - icon92.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isClearance.setIcon(icon92) + icon101 = QtGui.QIcon() + icon101.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isClearance.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isClearance.setIcon(icon101) 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) self.button_isRadius = QtGui.QPushButton(self.tab_24) - icon93 = QtGui.QIcon() - icon93.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.button_isRadius.setIcon(icon93) + icon102 = QtGui.QIcon() + icon102.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_isRadius.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.button_isRadius.setIcon(icon102) self.button_isRadius.setIconSize(QtCore.QSize(32, 32)) self.button_isRadius.setObjectName(_fromUtf8("button_isRadius")) self.gridLayout_125.addWidget(self.button_isRadius, 8, 0, 1, 1) - icon94 = QtGui.QIcon() - icon94.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) - self.tabWidget_7.addTab(self.tab_24, icon94, _fromUtf8("")) + icon103 = QtGui.QIcon() + icon103.addPixmap(QtGui.QPixmap(_fromUtf8("icons:WF_check.svg")), QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.tabWidget_7.addTab(self.tab_24, icon103, _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) @@ -2332,17 +2446,20 @@ class Ui_Form(object): 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) + spacerItem26 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout_43.addItem(spacerItem26) 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(7) + self.tabWidget_7.setCurrentIndex(0) + self.tabWidget.setCurrentIndex(2) + self.tabWidget_2.setCurrentIndex(2) self.point_loc_comboBox.setCurrentIndex(1) self.tabWidget_8.setCurrentIndex(0) + self.tabWidget_3.setCurrentIndex(1) self.transition_comboBox.setCurrentIndex(2) self.tabWidget_9.setCurrentIndex(0) self.tabWidget_10.setCurrentIndex(0) @@ -2390,29 +2507,6 @@ class Ui_Form(object): " 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" @@ -2428,8 +2522,24 @@ class Ui_Form(object): " 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_Npoints_center.setToolTip(_translate("Form", "Point=(N Points):\n" +"Create a Point at mean location of all selected points.\n" +"- First select several Points\n" +"- Then push this button", None)) + self.button_Npoints_center.setText(_translate("Form", "Points 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_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_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_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_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_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" @@ -2439,8 +2549,18 @@ class Ui_Form(object): "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_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.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Point 1/3", None)) + self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab1_3), _translate("Form", "Create Point(s)", 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)) @@ -2480,33 +2600,90 @@ class Ui_Form(object): 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" +"\n" +"Use left mouse button (MB1) to generate Points. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.\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_object_center_mass_point.setToolTip(_translate("Form", "Create Center of Mass Point of all selected Object(s).", None)) + self.button_object_center_mass_point.setText(_translate("Form", "Object(s) Mass Center Point", None)) + self.button_object_Npoint.setToolTip(_translate("Form", "Create a set of points from selected Objetcs:\n" +"- Select object(s)\n" +" to create points from these object(s) !\n" +" If you select an Edge : 2 points will be created;\n" +" if you select a Plane : 4 points will be created;\n" +" if you select an Object : many points will be created.\n" +"- Then click on this button.", None)) + self.button_object_Npoint.setText(_translate("Form", "Object(s) N Point(s)", 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.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab2_3), _translate("Form", "Point 2/3", None)) + self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.Point_Tab2_3), _translate("Form", "Create Point(s)", None)) + self.button_points_load.setToolTip(_translate("Form", "Load a set of points from an ASCII file:\n" +" ASCII format is 3 values by line seperated by blank as : \n" +" 15.3f 15.3f 15.3f\n" +" Values are read as float.\n" +" \n" +" Lines starting with characeter : # or / are considered as comment lines\n" +" ", None)) + self.button_points_load.setText(_translate("Form", "Load Points", None)) + self.button_points_save.setToolTip(_translate("Form", "Save a point or a set of points into an ASCII file:\n" +"One (x, y, z) triplet per line seperated by blank.\n" +"\n" +"- Select as much as Points as needed and/or select object(s)\n" +" to save points from these object(s) !\n" +" If you select an Edge : 2 points will be saved;\n" +" if you select a Plane : 4 points will be saved;\n" +" if you select an Object : many points will be saved.\n" +"- Then click on this button.", None)) + self.button_points_save.setText(_translate("Form", "Save Points", None)) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.Point_Tab3_3), _translate("Form", "Point 3/3", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Point", None)) + self.tabWidget_7.setTabToolTip(self.tabWidget_7.indexOf(self.Point_Tab), _translate("Form", "Create Point(s)", 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.\n" "Positive values will enlarge the Axis.\n" "Negative values will start to shrink it (then reverse when middle reached). ", 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" + 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_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.\n" +"Positive values will enlarge the Axis.\n" +"Negative values will start to shrink it (then reverse when middle reached). ", None)) + self.extension_line_point_axis.setText(_translate("Form", "0.0", None)) + self.button_Npoints_axis.setToolTip(_translate("Form", "Axis=(N Points):\n" +"Create a \"best fit\" Line from a set of points using Singular Value Decomposition.\n" +"- First select several Points (at least 2);\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_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_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" @@ -2543,35 +2720,13 @@ class Ui_Form(object): " Positive values will enlarge the Axis toward OUTSIDE of the Face Object;\n" " Negative values will enlarge the Axis toward INSIDE of the Face Object.", 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.\n" -"Positive values will enlarge the Axis.\n" -"Negative values will start to shrink it (then reverse when middle reached). ", 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.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab1_3), _translate("Form", "Axis 1/3", 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" @@ -2667,95 +2822,38 @@ class Ui_Form(object): 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)) +"- 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.\n" +"\n" +"\n" +"Use left mouse button (MB1) to generate Lines. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.", None)) self.button_click_for_axis.setText(_translate("Form", "Click", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab2_3), _translate("Form", "Axis 2/3", 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_object_Naxes.setToolTip(_translate("Form", "Create a set of axes from selected Objetcs:\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 4 axes will be created;\n" +" if you select an Object : many axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_Naxes.setText(_translate("Form", "Object(s) N Axes(s)", None)) + self.button_object_3axes.setToolTip(_translate("Form", "Create a set of 2 or 3 main axes from selected Objetcs:\n" +"The most representative axes will be selected from all axis.\n" +"The length of main axes will be the cumulative length of all axes with the same direction.\n" +"- Select object(s)\n" +" to create axes from these object(s) !\n" +" if you select a Plane : 2 axes will be created;\n" +" if you select an Object : 3 axes will be created.\n" +"- Then click on this button.", None)) + self.button_object_3axes.setText(_translate("Form", "Object(s) 3 Axes(s)", 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", "Parametric 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", "Parametric 3D", None)) - self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", None)) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.Axis_Tab31_3), _translate("Form", "Axis 3/3", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Axis_Tab), _translate("Form", "Axis", 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)) @@ -2786,6 +2884,196 @@ class Ui_Form(object): "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.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", "Parameter :", 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_bezier_2.setText(_translate("Form", "Bezier", None)) + self.checkBox_bspline_2.setText(_translate("Form", "Bspline", 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", "Parametric 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", "Parameter :", 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.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.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.tabWidget_8.setTabText(self.tabWidget_8.indexOf(self.tab_15), _translate("Form", "Parametric 3D", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Wire_Tab_2), _translate("Form", "Wire", 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_twopoints_plane.setToolTip(_translate("Form", "Plane=(2 Points):\n" +"Create a Plane in the middle of 2 points.\n" +"PLANE is perpendicular to line (P1 P2) and contains the midpoint of P1 and P2.\n" +"The direction of the normal of PLANE is the same as the vector from P1 to P2.\n" +"- First select 2 different points\n" +"- Second push this button", None)) + self.button_twopoints_plane.setText(_translate("Form", "Plane=(2 Points)", None)) + self.button_Npoints_plane.setToolTip(_translate("Form", "Plane=(N Points):\n" +"Create a \"best fit\" Plane from a set of points using Singular Value Decomposition.\n" +"- First select several Points (at least 3);\n" +"- Then push this button", None)) + self.button_Npoints_plane.setText(_translate("Form", "Plane=(N Points)", 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_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.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_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_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.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.Plane_Tab1_2), _translate("Form", "Plane 1/2", 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" +"\n" +"Use left mouse button (MB1) to generate Planes. \n" +"MB2 and MB3 can still be used for view zoom and view rotation.\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_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.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.tabWidget_3.setTabText(self.tabWidget_3.indexOf(self.Plane_Tab2_2), _translate("Form", "Plane 1/2", None)) + self.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.Plane_Tab), _translate("Form", "Plane", None)) self.checkBox_allsubselect.setToolTip(_translate("Form", "if \"All\" is toggled:\n" " All the wires of the Trajectory selected will be considered.\n" "\n" @@ -2835,102 +3123,7 @@ class Ui_Form(object): "- Then push this button\n" "", None)) self.button_beam.setText(_translate("Form", "Beam", 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.tabWidget_7.setTabText(self.tabWidget_7.indexOf(self.tab_17), _translate("Form", "Sweep", 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)) @@ -3100,6 +3293,28 @@ class Ui_Form(object): 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_align_main_axis.setToolTip(_translate("Form", "Align the main Axis (first of the 2 axis set) from selected object(s) to the last Edge (or 2 main Axis from an object) selected.\n" +" - Click first to select at least one object! \n" +"This or These first object(s) will be rotated.\n" +" - Click last to select an Edge (or an Object) to align to (this last object is fixed and will never move).\n" +"Then Click the button.\n" +"\n" +"NB:\n" +" The 2 main first axis are calculated using scan and sort from all axis of the object.\n" +" The center of rotation is at center mass location of each selected object.\n" +"\n" +" In case of several objects selection : \n" +" The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one.\n" +" In case of several objects selection plus one Edge :\n" +" The first main Axis of the object(s) will be aligned on the Edge.\n" +" \n" +" - One click will align first main Axes.\n" +" - Second click will also align the second main Axes if exists on last object or\n" +" will rotate by 180 deg the moving objects on first main axes.\n" +" - Third and following clicks will rotate by 180 deg the moving objects on first main axes.", None)) + self.button_align_main_axis.setText(_translate("Form", "Align Main Axis", None)) + self.angle_align_main_axis.setToolTip(_translate("Form", "This Angle (in degrees) will be added to the angle needed to align Edges.", None)) + self.angle_align_main_axis.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" @@ -3258,10 +3473,13 @@ class Ui_Form(object): 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.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_start_x.setText(_translate("Form", "0.0", None)) self.label_12.setText(_translate("Form", "Y :", None)) + self.ObjTrans_start_y.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_start_y.setText(_translate("Form", "0.0", None)) self.label_13.setText(_translate("Form", "Z :", None)) + self.ObjTrans_start_z.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", 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)) @@ -3273,10 +3491,13 @@ class Ui_Form(object): 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.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_end_z.setText(_translate("Form", "0.0", None)) self.label_15.setText(_translate("Form", "Y :", None)) + self.ObjTrans_end_y.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", None)) self.ObjTrans_end_y.setText(_translate("Form", "0.0", None)) self.label_16.setText(_translate("Form", "X :", None)) + self.ObjTrans_end_x.setToolTip(_translate("Form", "Please Enter a new coordinate and type RETURN to validate!", 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)) diff --git a/WorkFeature/WF_2015.py b/WorkFeature/WF_2015.py index 3689398..9c1d2c8 100644 --- a/WorkFeature/WF_2015.py +++ b/WorkFeature/WF_2015.py @@ -54,6 +54,7 @@ """ # 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 to import FreeCAD if not sys.path.__contains__("/usr/lib/freecad/lib"): @@ -65,7 +66,7 @@ from WF_Utils_2015 import * from WF_ObjParCurve_2015 import * global myRelease -myRelease = "2015_12_16" +myRelease = "2016_03_29" import os.path import time @@ -149,6 +150,7 @@ m_distLine = 10.0 m_angleLine = 45.0 m_angleAlignFaces = 0.0 m_angleAlignEdges = 0.0 +m_angleAlignMainAxis = 0.0 m_angleRevolve = 360.0 m_distPoint = 10.0 m_diameterCylinder = 2.0 @@ -202,6 +204,7 @@ def gui_errorDialog(msg): diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() + #Print a message on console. def print_msg(message): """ Print a message on console. @@ -236,10 +239,14 @@ def printError_msg(message): raise(Exception(message)) +def print_not_yet(): + printError_msg(error_msg_not_yet) + + #Print x,y and z of a point:vector. def print_point(point, msg=""): """ Print x,y and z of a point:vector. - """ + """ if point.__class__.__name__ != "Vector": print_msg("Not a Vector to print !") return @@ -309,7 +316,6 @@ def copy_toggled(flag): print_msg("Object copy flag is : " + str(objCopy)) - def init_min_max(): """ Return min and max values from System. min_val, max_val = init_min_max @@ -350,7 +356,7 @@ def createFolders(folder=None): App.ActiveDocument.addObject("App::DocumentObjectGroup","WorkFeatures") except: printError_msg("Could not Create 'WorkFeatures' Objects Group!") - m_list_dirs = ['Origin','WorkPoints','WorkAxis','WorkPlanes','WorkCircles','WorkBoxes','WorkObjects','Rot_Trans'] + m_list_dirs = ['Origin','WorkPoints','WorkAxis','WorkPlanes','WorkCircles','WorkBoxes','WorkWires','WorkObjects','Rot_Trans'] for m_dir in m_list_dirs: if folder == m_dir: if not(App.ActiveDocument.getObject(str(m_dir))): @@ -445,6 +451,7 @@ def get_InfoObjects(info=0, printError=True): ", m_objNames=" + str(m_objNames)) return m_num, m_selEx, m_objs, m_objNames + def reset_SelectedObjects(Selection, info=0): """ Reset the selection changed by Draft.rotate for example Selection is the original selection you want to reset. Must be saved before any @@ -455,12 +462,18 @@ def reset_SelectedObjects(Selection, info=0): m_DocumentName = Sel_i_Object.DocumentName m_ObjectName = Sel_i_Object.ObjectName m_Object = Sel_i_Object.Object - print_msg(str(m_Object)) - for m_SubElementName in Sel_i_Object.SubElementNames: + if info != 0: + print_msg(str(m_Object)) + if len(Sel_i_Object.SubElementNames) == 0 : if info != 0: - m_finalName = str(m_DocumentName)+"."+str(m_ObjectName)+"."+str(m_SubElementName) - print_msg(m_finalName) - Gui.Selection.addSelection(m_Object,str(m_SubElementName)) + print_msg(Sel_i_Object.ObjectName) + Gui.Selection.addSelection(m_Object) + else: + for m_SubElementName in Sel_i_Object.SubElementNames: + if info != 0: + m_finalName = str(m_DocumentName)+"."+str(m_ObjectName)+"."+str(m_SubElementName) + print_msg(m_finalName) + Gui.Selection.addSelection(m_Object,str(m_SubElementName)) def get_SelectedObjectsWithParent(info=0, printError=True): @@ -515,6 +528,7 @@ def get_SelectedObjectsWithParent(info=0, printError=True): printError_msg("No active document !") return + def get_SelectedObjects(info=0, printError=True): """ Return selected objects as Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes, @@ -523,10 +537,14 @@ def get_SelectedObjects(info=0, printError=True): def storeShapeType(Object, Selected_Points, Selected_Edges, Selected_Planes): if Object.ShapeType == "Vertex": Selected_Points.append(Object) + return True if Object.ShapeType == "Edge": - Selected_Edges.append(Object) + Selected_Edges.append(Object) + return True if Object.ShapeType == "Face": Selected_Planes.append(Object) + return True + return False m_actDoc=get_ActiveDocument(info=0) @@ -544,6 +562,7 @@ def get_SelectedObjects(info=0, printError=True): Selected_Points = [] Selected_Edges = [] Selected_Planes = [] + Selected_Objects = [] for Sel_i_Object in m_selEx: if info != 0: print_msg("Processing : " + str(Sel_i_Object.ObjectName)) @@ -554,19 +573,28 @@ def get_SelectedObjects(info=0, printError=True): print_msg("SubObject : " + str(Object)) if hasattr(Object, 'ShapeType'): storeShapeType(Object, Selected_Points, Selected_Edges, Selected_Planes) + if hasattr(Object, 'Shape'): + Selected_Objects.append(Object) else: - storeShapeType(Sel_i_Object.Object.Shape, Selected_Points, Selected_Edges, Selected_Planes) - + if info != 0: + print_msg("Object : " + str(Sel_i_Object)) + if hasattr(Sel_i_Object, 'Object'): + if hasattr(Sel_i_Object.Object, 'ShapeType'): + storeShapeType(Sel_i_Object.Object, Selected_Points, Selected_Edges, Selected_Planes) + if hasattr(Sel_i_Object.Object, 'Shape'): + if hasattr(Sel_i_Object.Object.Shape, 'ShapeType'): + if not storeShapeType(Sel_i_Object.Object.Shape, Selected_Points, Selected_Edges, Selected_Planes): + Selected_Objects.append(Sel_i_Object.Object) Number_of_Points = len(Selected_Points) Number_of_Edges = len(Selected_Edges) Number_of_Planes = len(Selected_Planes) Selection = (Number_of_Points, Number_of_Edges, Number_of_Planes, - Selected_Points, Selected_Edges, Selected_Planes) + Selected_Points, Selected_Edges, Selected_Planes, Selected_Objects) if info != 0: print_msg("Number_of_Points, Number_of_Edges, Number_of_Planes," + - "Selected_Points, Selected_Edges, Selected_Planes = " + str(Selection)) + "Selected_Points, Selected_Edges, Selected_Planes , Selected_Objects = " + str(Selection)) return Selection else: if info != 0: @@ -631,6 +659,74 @@ def get_SelectedObjects_old(info=0, printError=True): printError_msg("No active document !") return +def get_axesFromSelectedObjects(info=0, printError=True): + """ Return Selected_Axes as + list of Edges + """ + SelectedObjects = get_SelectedObjects(info=info, printError=False) + Selected_Axes = [] + + Number_of_Edges = SelectedObjects[1] + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + + if Number_of_Edges > 0: + Edge_List = SelectedObjects[4] + for m_edge in Edge_List: + Selected_Axes.append(m_edge) + + if Number_of_Faces > 0: + Face_List = SelectedObjects[5] + for m_face in Face_List: + Edge_List = m_face.Edges + for m_edge in Edge_List: + Selected_Axes.append(m_edge) + + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List: + for m_edge in m_object.Shape.Edges: + Selected_Axes.append(m_edge) + + return Selected_Axes + + +def get_pointsFromSelectedObjects(info=0, printError=True): + """ Return Selected_Points as + list of Vertexes + """ + SelectedObjects = get_SelectedObjects(info=info, printError=False) + Selected_Points = [] + Number_of_Points = SelectedObjects[0] + Number_of_Edges = SelectedObjects[1] + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + + if Number_of_Points > 0: + Point_List = SelectedObjects[3] + for m_point in Point_List: + Selected_Points.append(m_point) + if Number_of_Edges > 0: + Edge_List = SelectedObjects[4] + for m_edge in Edge_List: + Selected_Points.append(m_edge.Vertexes[0]) + Selected_Points.append(m_edge.Vertexes[-1]) + if Number_of_Faces > 0: + Face_List = SelectedObjects[5] + for m_face in Face_List: + Edge_List = m_face.Edges + for m_edge in Edge_List: + Selected_Points.append(m_edge.Vertexes[0]) + Selected_Points.append(m_edge.Vertexes[-1]) + + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List: + for m_vertex in m_object.Shape.Vertexes: + Selected_Points.append(m_vertex) + + return Selected_Points + def get_wireListFromObjectName(objName, subSelection=True, msg=1): """ Return a list of wires from a selected object. @@ -640,7 +736,7 @@ def get_wireListFromObjectName(objName, subSelection=True, msg=1): All wires belonging to this object (False) """ if (None in [objName]) : - return None + return None m_wires = [] m_name = objName @@ -691,6 +787,79 @@ def get_wireListFromObjectName(objName, subSelection=True, msg=1): #m_wires.append(Part.Wire([o.Object.Shape])) return m_wires + +def get_mainAxesFromSelectedAxes(Selected_Axes, info=0): + """Return a set of soretd main axes from selected list of axes. + for new Input Axes : if an already existing axis with same direction exists, + then the length of the input axis to be stored is only added to the existing one. + If the input axis has a new direction then the axis with its length are stored. + The list of axes is then sorted regarding their increasing length and returned. + The list of points (extrema of axes) is also returned + """ + m_axes = Selected_Axes + Number_of_Axes = len(m_axes) + if info != 0: + print_msg("Number_of_Axes = " + str(Number_of_Axes)) + if Number_of_Axes >= 1 : + Selected_AxesWithLength = [] + Selected_Points = [] + # Generate list of (Axes, lengthOfAxes) + for m_axis in m_axes: + if info != 0: + print_msg("m_axis.Vertexes[0] = " + str(m_axis.Vertexes[0])) + print_msg("m_axis.Vertexes[-1] = " + str(m_axis.Vertexes[-1])) + m_start = m_axis.Vertexes[0].Point + m_end = m_axis.Vertexes[-1].Point + m_diff = m_end.sub(m_start) + # Check if the current m_axis is of Null length + if abs(m_diff.x) <= tolerance and abs(m_diff.y) <= tolerance and abs(m_diff.z) <= tolerance: + continue + Selected_Points.append(m_start) + Selected_Points.append(m_end) + # Get the distance between the 2 points + m_length = distanceBetween(m_start, m_end) + m_A = (m_axis.Vertexes[-1].Point).sub(m_axis.Vertexes[0].Point).normalize() + m_B = Base.Vector(0, 0, 0) + m_dim = len(Selected_AxesWithLength) + if info != 0: + print_msg("m_length = " + str(m_length)) + print_msg("len(Selected_AxesWithLength) = " + str(m_dim)) + + # Store the first axis with its length + if m_dim == 0: + Selected_AxesWithLength.append([m_axis, m_length]) + if info != 0: + print_msg("Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + # Else look for existing axes to find if any already exist with the same direction + else: + m_found = False + if info != 0: + print_msg("Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + for m_axiswithlength in Selected_AxesWithLength: + m_C = (m_axiswithlength[0].Vertexes[-1].Point).sub(m_axiswithlength[0].Vertexes[0].Point).normalize() + # Look for colinear vectors + if abs((m_A.cross(m_C)).Length) <= 1e-10: + m_found = True + if info != 0: + print_msg("m_found = " + str(m_found)) + m_axiswithlength[1] += m_length + # Store the axis with its length in caseof new axis + if not m_found: + Selected_AxesWithLength.append([m_axis, m_length]) + + m_new_dim = len(Selected_AxesWithLength) + if info != 0: + print_msg("len(Selected_AxesWithLength) = " + str(m_new_dim)) + print_msg("before sort : Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + # Sort stored axes by length + Selected_AxesWithLength.sort(key=lambda x: x[1]) + if info != 0: + print_msg("after sort : Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + + return Selected_AxesWithLength, Selected_Points + + return None, None + def getType(objs): if isinstance(objs,list): @@ -715,6 +884,7 @@ def getEdgeType(edge): return "Unknown" except: return "Unknown" + def getShapeType(subObject): try: @@ -731,6 +901,7 @@ def getShapeType(subObject): except: return "Unknown" + def definePropOfActiveObj(): Gui.activeDocument().activeObject().LineColor = (1.00,0.67,0.00) Gui.activeDocument().activeObject().ShapeColor = (0.33,1.00,1.00) @@ -743,6 +914,7 @@ def addObjectToGrp(obj,grp,info=0): m_grp.addObject(m_obj) # adds object to the group if info != 0: print_msg("Object " + str(m_obj) + " added to Group : " + str(m_grp)) + def addObjectToGrp2(obj,grp,info=0): m_obj = obj @@ -777,7 +949,7 @@ def minMaxVectorsLimits(vertx,info=0): #print_msg(str(xmin)) #print_msg(str(xmax)) if info != 0: - print_msg("Vectors = " +str(m_vertx)) + print_msg("Vectors = " +str(m_vertx)) for m_vert in m_vertx: xmax = max(xmax, m_vert.x) xmin = min(xmin, m_vert.x) @@ -907,7 +1079,6 @@ def minMaxObjectsLimits(objs,info=0): return xmax, xmin, ymax, ymin, zmax, zmin - def baseObjectPoint(obj,info=0): """ Return the base point of selected Object. """ @@ -918,6 +1089,7 @@ def baseObjectPoint(obj,info=0): print_point(base,"Base of object selected is :") return base + def meanVectorsPoint(vertx,info=0): """ Return the mean point of all selected Vectors. """ @@ -950,7 +1122,8 @@ def meanVectorsPoint(vertx,info=0): if info != 0: print_point(mean,"Mean of all vectors selected is : ") return mean - + + def centerBBVectorsPoint(vertx,info=0): """ Return the center point of the bounding box of all selected Vectors. """ @@ -1031,6 +1204,7 @@ def distanceBetween(A, B): return edge.Length except Part.OCCError: return 0.0 + def angleBetween(e1, e2): """ Return the angle (in degrees) between 2 edges. @@ -1073,6 +1247,7 @@ def edgeToVector(edge): elif isinstance(edge,Part.Line): return edge.EndPoint.sub(edge.StartPoint) else: + print_msg("Error in edgeToVector(edge) : not a good type of input" + str(type(edge))) return None @@ -1080,8 +1255,12 @@ def colinearEdges(edge1, edge2, info=0, tolerance=1e-12): """ Return true if 2 edges are colinear. """ if not isinstance(edge1.Curve,Part.Line): + if info != 0: + print_msg("colinearEdges : edge1 not instance of Part.Line !") return False if not isinstance(edge2.Curve,Part.Line): + if info != 0: + print_msg("colinearEdges : edge2 not instance of Part.Line !") return False A = edgeToVector(edge1) B = Base.Vector(0, 0, 0) @@ -1146,6 +1325,7 @@ def intersecPoints(shape1, shape2, info=0): return None return + def findNormal(wire, forceDiscretize=False, msg=1): """Look for the Normal for wire. """ @@ -1186,11 +1366,13 @@ def findNormal(wire, forceDiscretize=False, msg=1): wire_normal.normalize() return wire_normal, wire_points + def getClickedPoint(info): global verbose msg=verbose view = Gui.ActiveDocument.ActiveView - down = (info["State"] == "DOWN") + #down = (info["State"] == "DOWN") + down = (info["Button"] == "BUTTON1") and (info["State"] == "DOWN") pos = info["Position"] global m_stack global m_callback @@ -1216,7 +1398,8 @@ def getClickedNormal(info): import Mesh msg=0 view = Gui.ActiveDocument.ActiveView - down = (info["State"] == "DOWN") + #down = (info["State"] == "DOWN") + down = (info["Button"] == "BUTTON1") and (info["State"] == "DOWN") pos = info["Position"] if msg != 0: @@ -1298,7 +1481,8 @@ def getClickedNormal(info): def getClickedTangent(info): msg=0 view = Gui.ActiveDocument.ActiveView - down = (info["State"] == "DOWN") + #down = (info["State"] == "DOWN") + down = (info["Button"] == "BUTTON1") and (info["State"] == "DOWN") pos = info["Position"] if msg != 0: print_msg("info['Position'] : " + str(pos)) @@ -1339,12 +1523,14 @@ def getClickedTangent(info): name = "Point" plot_point(m_p1, part, name) view.removeEventCallback("SoMouseButtonEvent",m_callback) + def getClickedAxis2(info): global verbose msg=verbose view = Gui.ActiveDocument.ActiveView - down = (info["State"] == "DOWN") + #down = (info["State"] == "DOWN") + down = (info["Button"] == "BUTTON1") and (info["State"] == "DOWN") pos = info["Position"] global m_stack global m_callback @@ -1364,8 +1550,7 @@ def getClickedAxis2(info): Axis_User_Name, axis = plot_axis(m_stack[-2], m_stack[-1], part, name) print_point(m_stack[-1],"Click point at :") - - + def getClickedAxis(event_cb): event = event_cb.getEvent() view = Gui.ActiveDocument.ActiveView @@ -1382,9 +1567,11 @@ def getClickedAxis(event_cb): view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),m_callback) del m_stack[:] + def getClickedPlane2(info): view = Gui.ActiveDocument.ActiveView - down = (info["State"] == "DOWN") + #down = (info["State"] == "DOWN") + down = (info["Button"] == "BUTTON1") and (info["State"] == "DOWN") pos = info["Position"] global m_stack global m_callback @@ -1630,6 +1817,7 @@ def attachPoint(*argc): if msg != 0: print_msg("argc is " + str(*argc) + " and Attach point " + str(m_attach_point) + " selected !") + def intersecPlanePlane(Plane_Normal1, Plane_Point1, Plane_Normal2, Plane_Point2, info=0): """ Return the intersection Line between two Planes. """ @@ -1741,6 +1929,7 @@ def properties_line(Line_User_Name, color=(1.00,0.67,0.00)): return + def properties_plane(Plane_User_Name): """ Define the properties of a Work feature Plane. PointColor @@ -1791,6 +1980,9 @@ def plot_point(Vector_point, part="Part::Feature", name="Point", grp="WorkPoints def plot_axis(Vector_A, Vector_B, part="Part::Feature", name="Axis", grp="WorkAxis", color=(1.00,0.67,0.00)): + m_diff = Vector_B.sub(Vector_A) + if abs(m_diff.x) <= tolerance and abs(m_diff.y) <= tolerance and abs(m_diff.z) <= tolerance: + return None if not(App.ActiveDocument.getObject( grp )): App.ActiveDocument.addObject("App::DocumentObjectGroup", grp) axis = App.ActiveDocument.addObject(part, name) @@ -1900,6 +2092,7 @@ def plot_plane(Edge_Length1, Edge_Length2, Plane_Point, Plane_Normal, part, name return plane_User_Name, plane + def plot_cube(length, width, height, point, axis, part, name, grp="WorkObjects"): """ Creating a Cube in the view. One of the Cube's extremities will be at the given point location. @@ -2064,9 +2257,11 @@ def bounding_box(grp,ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,createVol=Fals try: m_pl_0 = App.Placement(App.Vector(m_o_X,m_o_Y,m_o_Z), App.Rotation(0.0,0.0,0.0)) + print_msg("m_pl_0 :" + str(m_pl_0)) m_rect = Draft.makeRectangle(length=m_l_X,height=m_l_Y, placement=m_pl_0,face=flag_for_face,support=None) - addObjectToGrp(m_rect,m_grp,info=info) + print_msg("m_rect :" + str(m_rect)) + addObjectToGrp(m_rect,m_grp,info=1) definePropOfActiveObj() if flag_for_volume: Gui.ActiveDocument.getObject(m_rect.Label).Visibility=False @@ -2408,7 +2603,7 @@ def plot_NpointsPoint(): points.append(m_point.Point) if msg != 0: print_point(m_point.Point, msg="Point : ") - Vector_Center = meanVectorsPoint(points,info=1) + Vector_Center = meanVectorsPoint(points,info=msg) Center_User_Name = plot_point(Vector_Center, part, name) print_point(Vector_Center,str(Center_User_Name) + result_msg + " at :") @@ -3048,8 +3243,8 @@ def plot_distPoint(): printError_msg(error_msg) except: printError_msg(error_msg) - + def numberPointCutWire(value): """ Respond to the change in number of cut value from the spin box. """ @@ -3184,8 +3379,8 @@ def cutWire(numberOfPoints, createPoint=1, createLine=0): printError_msg(error_msg) return - + def plot_cutWirePoint(): createFolders('WorkPoints') global m_numberPointCutWire @@ -3220,7 +3415,8 @@ def plot_clickForPoint(): def plot_baseObjectPoint(): """ Plot base point of all selected objects. """ - msg=0 + msg=verbose + createFolders('WorkPoints') error_msg = "Unable to create Base point of Object(s): \nSelect at least one Object !" result_msg = " : Base point of Object(s) created !" @@ -3241,10 +3437,123 @@ def plot_baseObjectPoint(): if m_base != None: Center_User_Name = plot_point(m_base, part, name) print_point(m_base,str(Center_User_Name) + result_msg + " at :") + else: + printError_msg(error_msg) else: printError_msg(error_msg) +def plot_centerMassObjectPoint(): + """ Plot Center of Mass Point of all selected Object(s). + """ + msg=verbose + msg=1 + + createFolders('WorkPoints') + error_msg = "Unable to create Center of Mass point of Object(s): \nSelect at least one Object !" + result_msg = " : Center of Mass point of Object(s) created !" + name = "CenterMassPoint" + part = "Part::Feature" + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc.Name == None: + return None + + # Return a list of selected objects for a given document name. + SelectedObjects = get_SelectedObjects(info=msg, printError=False) + + Number_of_Objects = len(SelectedObjects[6]) + if Number_of_Objects >= 1: + for m_object in SelectedObjects[6]: + + m_center = m_object.Shape.CenterOfMass + if m_center != None: + Center_User_Name = plot_point(m_center, part, name) + print_point(m_center,str(Center_User_Name) + result_msg + " at :") + else: + printError_msg(error_msg) + else: + printError_msg(error_msg) + + +def plot_objectNPoints(): + """Create a set of points from selected Objetcs: + - Select object(s) + to create points from these object(s) ! + If you select an Edge : 2 points will be created; + if you select a Plane : 4 points will be created; + if you select an Object : many points will be created. + """ + msg=verbose + + error_msg = "Create a set of points from selected Objetcs : \n" +\ + "Select object(s) \n" +\ + "to create points from these object(s) !\n" +\ + "If you select an Edge : 2 points will be created;\n" +\ + "if you select a Plane : 4 points will be created;\n" +\ + "if you select an Object : many points will be created.\n" + + createFolders('WorkPoints') + m_dir = 'Object' + name = "Point" + part = "Part::Feature" + try: + m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir)) + except: + printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!") + m_dir = m_r.Name + result_msg = " Point(s) created into : WorkPoints/"+ str(m_dir) + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + SelectedObjects = get_SelectedObjects(info=msg, printError=False) + + try: + Selected_Points = [] + + Number_of_Edges = SelectedObjects[1] + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + if msg != 0: + print_msg("Number_of_Edges = " + str(Number_of_Edges)) + print_msg("Number_of_Faces = " + str(Number_of_Faces)) + print_msg("Number_of_Objects = " + str(Number_of_Objects)) + if Number_of_Edges > 0: + Edge_List = SelectedObjects[4] + for m_edge in Edge_List: + Selected_Points.append(m_edge.Vertexes[0]) + Selected_Points.append(m_edge.Vertexes[-1]) + + if Number_of_Faces > 0: + Face_List = SelectedObjects[5] + for m_face in Face_List: + Edge_List = m_face.Edges + for m_edge in Edge_List: + Selected_Points.append(m_edge.Vertexes[0]) + Selected_Points.append(m_edge.Vertexes[-1]) + + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List: + for m_vertex in m_object.Shape.Vertexes: + Selected_Points.append(m_vertex) + m_points = Selected_Points + Number_of_Points = len(m_points) + if msg != 0: + print_msg("Number_of_Points = " + str(Number_of_Points)) + if Number_of_Points >= 1 : + for m_point in m_points: + if msg != 0: + print_point(FreeCAD.Vector(m_point.Point)) + plot_point(m_point.Point, part, name, str(m_dir)) + + print_msg(str(m_dir) + " : " + str(Number_of_Points) + result_msg) + except: + printError_msg(error_msg) + + def point_toSketch(): """ Transform Point(s) in Sketch's Point(s) by projection onto the Sketch's Plane: - First select an existing Sketch; @@ -3322,7 +3631,122 @@ def point_toSketch(): printError_msg(error_msg) return + +def point_toLoad(): + """Load a set of points from an ASCII file: + ASCII format is 3 values by line seperated by blank as : + <15.3f <15.3f <15.3f + Values are read as float. + + Lines starting with characeter : # or / are considered as comment lines + """ + msg=verbose + + error_msg = "Unable to load Point(s) !" + result_msg = " Point(s) loaded from " + createFolders('WorkPoints') + m_dir = 'Load' + name = "Point" + part = "Part::Feature" + + try: + m_r = App.ActiveDocument.getObject("WorkPoints").newObject("App::DocumentObjectGroup", str(m_dir)) + except: + printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!") + m_dir = m_r.Name + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + try: + import Utils.WF_points_set as WFps + except: + printError_msg("Unable to import Utils.WF_points_set !") + + fname, _ = QtGui.QFileDialog.getOpenFileName(None, 'Select a file',os.environ['HOME'],"Text Files (*.txt *.asc *.dat)") + + try: + m_pts = WFps.points_set([],str(fname)) + m_points = m_pts.load() + Number_of_Points = len(m_points) + if Number_of_Points >= 1 : + for m_point in m_points: + if msg != 0: + print_point(FreeCAD.Vector(m_point)) + plot_point(m_point, part, name, str(m_dir)) + + print_msg(str(m_dir) + " : " + str(Number_of_Points) + result_msg + str(fname)) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + +def point_toSave(): + """Save a point or a set of points into an ASCII file. + One (x, y, z) triplet per line seperated by blank. + - Select as much as Points as needed and/or select object(s) + to save points from these object(s) ! + If you select an Edge : 2 points will be saved; + if you select a Plane : 4 points will be saved; + if you select an Object : many points will be saved. + Then click on this button. + """ + msg=verbose + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + error_msg = "Save a point or a set of points into an ASCII file : \n" +\ + "Select point(s) and/or select object(s) \n" +\ + "to save points from these object(s) !" + result_msg = " Point(s) saved into : " + + # Return a list of Points selected for a given document name. + Selection = get_pointsFromSelectedObjects(info=0, printError=True) + + try: + import Utils.WF_points_set as WFps + except: + printError_msg("Unable to import Utils.WF_points_set !") + + try: + SelectedPoints = Selection + Number_of_Points = len(SelectedPoints) + if msg != 0: + print_msg("Number_of_Points=" + str(Number_of_Points)) + print_msg("Point_List=" + str(SelectedPoints)) + m_points = [] + if Number_of_Points >= 1 : + Point_List = SelectedPoints + for m_point in Point_List: + if msg != 0: + print_point(FreeCAD.Vector(m_point.Point)) + m_x = m_point.Point.x + m_y = m_point.Point.y + m_z = m_point.Point.z + m_points.append((m_x,m_y,m_z)) + + if msg != 0: + print_msg(str(m_points)) + + m_pts = WFps.points_set(m_points) + + fname, _ = QtGui.QFileDialog.getSaveFileName(None, 'Select a file',os.environ['HOME']) + + if m_pts.save(str(fname)): + print_msg(str(Number_of_Points) + result_msg + str(fname) ) + else: + printError_msg("Not able to save the requested Point(s)!") + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def plot_centerObjectAxes(): """ Create 3 Axes XY, and Z at center point of all selected objects. """ @@ -3426,6 +3850,7 @@ def plot_2PointsAxis(): result_msg = " : Axis created !" name = "Line from 2 Points" part = "Part::Feature" + Selection = get_SelectedObjects(info=msg, printError=False) try: SelectedObjects = Selection @@ -3457,12 +3882,22 @@ 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. + +def plot_NPointsAxis(): + """ Create a "best fit" line from a set of points using Singular Value Decomposition. + - First select several Points + + The 3 eigenvectors are generated. + Orange one is the best fit line. """ - global verbose msg=verbose - import numpy as np + + try: + import numpy as np + except: + error_msg = "Unable to import numpy !\n" +\ + "You MUSt install numpy to use this function !" + printError_msg(error_msg) m_actDoc = get_ActiveDocument(info=msg) if m_actDoc == None: @@ -3471,7 +3906,7 @@ def plot_NPoints_axis(): createFolders('WorkAxis') error_msg = "Unable to create Axis : \nSelect at least two points!" result_msg = " : Axis created !" - name = "Line from N Points" + name = "Line_from_N_Points" part = "Part::Feature" grp = "WorkAxis" @@ -3541,6 +3976,7 @@ def plot_NPoints_axis(): printError_msg(error_msg) except: printError_msg(error_msg) + def plot_cylinderAxis(): global verbose @@ -4483,7 +4919,243 @@ def plot_clickForAxis(): view.removeEventCallback("SoMouseButtonEvent",m_callback) m_clickForAxis = not m_clickForAxis - + +def plot_objectNAxes(): + """Create a set of axes from selected Objetcs: + - Select object(s) + to create axes from these object(s) ! + if you select a Plane : 4 axes will be created; + if you select an Object : many axes will be created. + """ + msg=verbose + + error_msg = "Create a set of axes from selected Objetcs : \n" +\ + "Select object(s) \n" +\ + "to create axes from these object(s) !\n" +\ + "if you select a Plane : 4 axes will be created;\n" +\ + "if you select an Object : many axes will be created.\n" + + createFolders('WorkAxis') + m_dir = 'Object' + name = "Axis" + part = "Part::Feature" + try: + m_r = App.ActiveDocument.getObject("WorkAxis").newObject("App::DocumentObjectGroup", str(m_dir)) + except: + printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!") + m_dir = m_r.Name + result_msg = " Axes created into : WorkAxis/"+ str(m_dir) + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + SelectedObjects = get_SelectedObjects(info=msg, printError=False) + + try: + Selected_Axes = [] + + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + if msg != 0: + print_msg("Number_of_Faces = " + str(Number_of_Faces)) + print_msg("Number_of_Objects = " + str(Number_of_Objects)) + + if Number_of_Faces > 0: + Face_List = SelectedObjects[5] + for m_face in Face_List: + Edge_List = m_face.Edges + for m_edge in Edge_List: + Selected_Axes.append(m_edge) + + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List: + for m_edge in m_object.Shape.Edges: + Selected_Axes.append(m_edge) + + m_axes = Selected_Axes + Number_of_Axes = len(m_axes) + if msg != 0: + print_msg("Number_of_Axes = " + str(Number_of_Axes)) + if Number_of_Axes >= 1 : + for m_axis in m_axes: + if msg != 0: + print_msg("m_axis.Vertexes[0] = " + str(m_axis.Vertexes[0])) + print_msg("m_axis.Vertexes[-1] = " + str(m_axis.Vertexes[-1])) + Vector_A = m_axis.Vertexes[0].Point + Vector_B = m_axis.Vertexes[-1].Point + + plot_axis(Vector_A, Vector_B, part, name, str(m_dir)) + + print_msg(str(m_dir) + " : " + str(Number_of_Axes) + result_msg) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + +def plot_object3Axes(): + """Create a set of 2 or 3 axes from selected Objetcs: + The most representative axes will be selected from all axis. + The length of main axes will be the cumulative length of all axes with the same direction. + - Select object(s) + to create axes from these object(s) ! + if you select a Plane : 2 axes will be created; + if you select an Object : 3 axes will be created. + """ + msg=verbose + + error_msg = "Create a set of 2 or 3 axes from selected Objetcs : \n" +\ + "The most representative axes will be selected from all axis.\n" +\ + "The length of main axes will be the cumulative length of all axes with the same direction.\n" +\ + "Select object(s) \n" +\ + "to create axes from these object(s) !\n" +\ + "if you select a Plane : 2 axes will be created;\n" +\ + "if you select an Object : 3 axes will be created.\n" + + createFolders('WorkAxis') + m_dir = 'Object' + name = "Axis" + part = "Part::Feature" + try: + m_r = App.ActiveDocument.getObject("WorkAxis").newObject("App::DocumentObjectGroup", str(m_dir)) + except: + printError_msg("Could not Create '"+ str(m_dir) +"' Objects Group!") + m_dir = m_r.Name + result_msg = " Axes created into : WorkAxis/"+ str(m_dir) + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + SelectedObjects = get_SelectedObjects(info=msg, printError=False) + + try: + Selected_Axes = [] + + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + if msg != 0: + print_msg("Number_of_Faces = " + str(Number_of_Faces)) + print_msg("Number_of_Objects = " + str(Number_of_Objects)) + + if Number_of_Faces > 0: + Face_List = SelectedObjects[5] + for m_face in Face_List: + Edge_List = m_face.Edges + for m_edge in Edge_List: + Selected_Axes.append(m_edge) + + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List: + for m_edge in m_object.Shape.Edges: + Selected_Axes.append(m_edge) + + #======================================================================= + # m_axes = Selected_Axes + # Number_of_Axes = len(m_axes) + # if msg != 0: + # print_msg("Number_of_Axes = " + str(Number_of_Axes)) + # if Number_of_Axes >= 1 : + # Selected_AxesWithLength = [] + # Selected_Points = [] + # # Generate list of (Axes, lengthOfAxes) + # for m_axis in m_axes: + # if msg != 0: + # print_msg("m_axis.Vertexes[0] = " + str(m_axis.Vertexes[0])) + # print_msg("m_axis.Vertexes[-1] = " + str(m_axis.Vertexes[-1])) + # m_start = m_axis.Vertexes[0].Point + # m_end = m_axis.Vertexes[-1].Point + # m_diff = m_end.sub(m_start) + # if abs(m_diff.x) <= tolerance and abs(m_diff.y) <= tolerance and abs(m_diff.z) <= tolerance: + # continue + # Selected_Points.append(m_start) + # Selected_Points.append(m_end) + # m_length = distanceBetween(m_start, m_end) + # #m_A = (m_axis.Curve.EndPoint - m_axis.Curve.StartPoint).normalize() + # m_A = (m_axis.Vertexes[-1].Point).sub(m_axis.Vertexes[0].Point).normalize() + # m_B = Base.Vector(0, 0, 0) + # m_dim = len(Selected_AxesWithLength) + # if msg != 0: + # print_msg("m_length = " + str(m_length)) + # print_msg("len(Selected_AxesWithLength) = " + str(m_dim)) + # + # if m_dim == 0: + # Selected_AxesWithLength.append([m_axis, m_length]) + # if msg != 0: + # print_msg("Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + # else: + # m_found = False + # if msg != 0: + # print_msg("Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + # for m_axiswithlength in Selected_AxesWithLength: + # m_C = (m_axiswithlength[0].Vertexes[-1].Point).sub(m_axiswithlength[0].Vertexes[0].Point).normalize() + # #m_C = (m_axiswithlength[0].Curve.EndPoint - m_axiswithlength[0].Curve.StartPoint).normalize() + # #m_found = colinearVectors(m_A, m_B, m_C, info=msg, tolerance=1e-10) + # if abs((m_A.cross(m_C)).Length) <= 1e-10: + # m_found = True + # if msg != 0: + # print_msg("m_found = " + str(m_found)) + # m_axiswithlength[1] += m_length + # + # if not m_found: + # Selected_AxesWithLength.append([m_axis, m_length]) + # m_new_dim = len(Selected_AxesWithLength) + # if msg != 0: + # print_msg("len(Selected_AxesWithLength) = " + str(m_new_dim)) + # print_msg("before sort : Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + # # sort by length + # # sorted(l, key=lambda x: x[2]) + # # sorted(Selected_AxesWithLength, key=lambda AxesWithLength: AxesWithLength[1]) + # Selected_AxesWithLength.sort(key=lambda x: x[1]) + # if msg != 0: + # print_msg("after sort : Selected_AxesWithLength = " + str(Selected_AxesWithLength)) + #======================================================================= + Number_of_Axes = len(Selected_Axes) + if Number_of_Axes == 0 : + printError_msg(error_msg) + return + + Selected_AxesWithLength, Selected_Points = get_mainAxesFromSelectedAxes(Selected_Axes, info=msg) + if Selected_AxesWithLength: + m_new_dim = len(Selected_AxesWithLength) + Vector_Center = meanVectorsPoint(Selected_Points,info=0) + if m_new_dim >= 3 : + m_limit = -4 + elif m_new_dim == 2 : + m_limit = -3 + elif m_new_dim ==1: + m_limit = -2 + else: + printError_msg(error_msg) + return + m_color = [] + m_color.append((1.00,0.00,0.00)) + m_color.append((0.00,0.67,0.00)) + m_color.append((0.33,0.00,1.00)) + + for i in range(-1,m_limit,-1): + m_axiswithlength = Selected_AxesWithLength[i] + m_p1 = m_axiswithlength[0].Vertexes[0].Point + m_p2 = m_axiswithlength[0].Vertexes[-1].Point + m_c = centerLinePoint(m_axiswithlength[0]) + m_mv = Vector_Center.sub(m_c) + Vector = m_p2.sub(m_p1).normalize().multiply(m_axiswithlength[1]/2) + #Axis_User_Name, _ = plot_axis(m_p1, m_p2, part, name, m_dir) + #Axis_User_Name, _ = plot_axis(m_c.add(Vector), m_c.add(Vector.multiply(-1)), part, name, m_dir) + + Axis_User_Name, _ = plot_axis(m_c.add(Vector).add(m_mv), m_c.add(Vector.multiply(-1)).add(m_mv), part, name, m_dir, m_color[i] ) + print_msg(str(Axis_User_Name) + result_msg ) + + print_msg(str(m_dir) + " : " + str(abs(i)) + result_msg) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def plot_2PlanesAxis(): """ Plot the intersection Axis between two planes. """ @@ -5161,6 +5833,7 @@ def faceToSketch(m_obj): print_gui_msg("Faces are not yet supported for external geometry of sketches !") return + def errorToSketch(m_obj): print_gui_msg("Unknown type of geometry !") return @@ -5712,7 +6385,7 @@ def plot_cutCircle(): print_msg("Object is Cylinder") pivot0 = float(piece.Angle/m_numberCircleCut) - printError_msg(error_msg_not_yet) + printError_msg(error_msg_print_not_yet) elif label[:3] == "Arc": if msg != 0: @@ -5864,7 +6537,149 @@ def plot_3PointsPlane(): except: printError_msg(error_msg) + +def plot_2PointsPlane(): + """ Create a Plane from 2 Points. + """ + msg=0 + createFolders('WorkPlanes') + error_msg = "Unable to create Plane : \nSelect two points only !" + result_msg = " : Plane created !" + name = "WorkPlane" + part = "Part::Feature" + 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)) + points = [] + if Number_of_Points == 2 : + Point_List = SelectedObjects[3] + if msg != 0: + print_msg(str(Points_List)) + + Point_A = Point_List[0].Point + points.append(Point_A) + Point_B = Point_List[1].Point + points.append(Point_B) + if msg != 0: + print_point(Point_A, msg="Point_A : ") + print_point(Point_B, msg="Point_B : ") + + Vector_Center = meanVectorsPoint(points,info=msg) + #Vector_Center = centerBBVectorsPoint(points, info=0) + xmax, xmin, ymax, ymin, zmax, zmin = minMaxVectorsLimits(points,info=0) + #print_point(Vector_Center, msg="Center of A, B and C : ") + + length = xmax - xmin + if (ymax - ymin) > length: + length = ymax - ymin + if (zmax - zmin) > length: + length = zmax - zmin + print_msg("length = " +str(length)) + + Edge_Vector = Point_B - Point_A + #Edge_Length = Edge_Vector.Length + Edge_Length = length * 1.5 + Plane_Point = Vector_Center + Plane_Normal = Edge_Vector + + Plane_User_Name, plane = plot_plane(Edge_Length, Edge_Length, Plane_Point, Plane_Normal, part, name) + print_msg(str(Plane_User_Name) + result_msg ) + except: + printError_msg(error_msg) + +def plot_NPointsPlane(): + """Create a "best fit" Plane from a set of points using Singular Value Decomposition. + - First select several Points (at least 3). + """ + msg=verbose + msg=1 + + try: + import numpy as np + except: + error_msg = "Unable to import numpy !\n" +\ + "You MUSt install numpy to use this function !" + printError_msg(error_msg) + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + createFolders('WorkPlanes') + error_msg = "Unable to create Plane : \nSelect at least three points!" + result_msg = " : Plane created !" + name = "Plane_from_N_Points" + part = "Part::Feature" + grp = "WorkPlanes" + + 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 > 2: + 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 + if msg != 0: + print_point(m_point,"Point selected :") + 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]) + Plane_Point = Axis_E0 + + # 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_dir1 = Base.Vector(m_vv[0][0],m_vv[0][1],m_vv[0][2]) + Axis_E1 = Axis_E0 - Axis_dir1.normalize().multiply(m_dd[0]/2.) + Axis_E2 = Axis_E0 + Axis_dir1.normalize().multiply(m_dd[0]/2.) + Axis_dir2 = Base.Vector(m_vv[1][0],m_vv[1][1],m_vv[1][2]) + Plane_Normal = Axis_dir1.cross( Axis_dir2 ) + Edge_Length = m_dd[0] + Plane_User_Name, plane = plot_plane(Edge_Length, Edge_Length, Plane_Point, Plane_Normal, part, name) + print_msg(str(Plane_User_Name) + result_msg ) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def plot_axisPointPlane(): """ Create a plane passing trougth a Line and a Point. """ @@ -5875,6 +6690,7 @@ def plot_axisPointPlane(): result_msg = " : Plane created !" name = "WorkPlane" part = "Part::Feature" + Selection = get_SelectedObjects(info=msg, printError=False) try: SelectedObjects = Selection @@ -6625,6 +7441,7 @@ def get_all_from_bounding_box(ori_X,ori_Y,ori_Z,length_X,length_Y,length_Z,info= return Points, Edges, Faces + def volumBBox_toggled(flag): """ Respond to the change of solid flag. """ @@ -7902,7 +8719,6 @@ def plot_sectionSweep(): # Remove duplicated section App.getDocument(str(App.activeDocument().Name)).removeObject(m_copy.Label) - except: printError_msg(error_msg) @@ -8279,6 +9095,9 @@ def view_trackCamera(): m_lookVector = currEdge.valueAt( currEdge.Length ) m_camera.pointAt( coin.SbVec3f( m_lookVector[0], m_lookVector[1], m_lookVector[2] + m_camHeight ), coin.SbVec3f( 0, 0, 1 ) ) Gui.updateGui() + cam=Gui.ActiveDocument.ActiveView.getCameraNode() + direction = cam.orientation.getValue().multVec(coin.SbVec3f(0,0,1)).getValue() + print_msg("Camera Orientattion is :" + str(direction)) time.sleep( m_sleep ) while currPos.sub(currEdge.valueAt( 0.0 )).Length < currEdge.Length: @@ -8287,6 +9106,9 @@ def view_trackCamera(): m_lookVector = currEdge.valueAt( currEdge.Length ) m_camera.pointAt( coin.SbVec3f( m_lookVector[0], m_lookVector[1], m_lookVector[2] + m_camHeight ), coin.SbVec3f( 0, 0, 1 ) ) Gui.updateGui() + cam=Gui.ActiveDocument.ActiveView.getCameraNode() + direction = cam.orientation.getValue().multVec(coin.SbVec3f(0,0,1)).getValue() + print_msg("Camera Orientattion is :" + str(direction)) time.sleep( m_sleep ) if m_edges_num == 0: printError_msg("No Edge was selected !") @@ -9497,7 +10319,10 @@ def camera_orientation(): yP = pl.Rotation.Q[1] zP = pl.Rotation.Q[2] qP = pl.Rotation.Q[3] - + + cam=Gui.ActiveDocument.ActiveView.getCameraNode() + direction = cam.orientation.getValue().multVec(coin.SbVec3f(0,0,1)).getValue() + msg=\ "___Camera_Orientation____________________"+"\n" +\ "Radians XYZ Q : " + str(pl.Rotation.Q)+"\n" +\ @@ -9507,7 +10332,8 @@ def camera_orientation(): "Degrees Axis.x : " + str(math.degrees(pl.Rotation.Axis.x)) +"\n"+\ "Degrees Axis.y : " + str(math.degrees(pl.Rotation.Axis.y)) +"\n"+\ "Degrees Axis.z : " + str(math.degrees(pl.Rotation.Axis.z)) +"\n"+\ - "Degrees Angle : " + str(math.degrees(pl.Rotation.Angle)) + "Degrees Angle : " + str(math.degrees(pl.Rotation.Angle)) +"\n"+\ + "Direction Vector : " + str (direction) print_gui_msg(msg) @@ -9748,6 +10574,7 @@ def object_align2view_old(): except: printError_msg(error_msg) + def object_align2view(): """ Align the face of selected object(s) to the actual view Plane. @@ -10096,8 +10923,274 @@ def object_alignEdges(): printError_msg(error_msg) except: printError_msg(error_msg) - + + +def angleAlignMainAxis(value): + """ Respond to the change in angle value from the text box. + """ + try: + # First we check if a valid number have been entered + global m_angleAlignMainAxis + if str(value) == '-': + return + m_angleAlignMainAxis = float(value) + print_msg("New angle in degrees is :" + str(m_angleAlignMainAxis)) + except ValueError: + printError_msg("Angle must be valid number !") + + +def object_alignMainAxis(): + """Align the main Axis (first of the 2 axis set) from selected object(s) to the last Edge (or 2 main Axis from an object) selected. + - Click first to select at least one object! + This or These first object(s) will be rotated. + - Click last to select an Edge (or an Object) to align to (this last object is fixed and will never move). + Then Click the button. + NB: + The 2 main first axis are calculated using scan and sort from all axis of the object. + The center of rotation is at center mass location of each selected object. + + In case of several objects selection : + The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one. + In case of several objects selection plus one Edge : + The first main Axis of the object(s) will be aligned on the Edge. + - One click will align first main Axes. + - Second click will also align the second main Axes if exists on last object or + will rotate by 180 deg the moving objects on first main axes. + - Third and following clicks will rotate by 180 deg the moving objects on first main axes. + """ + msg=verbose + msg=1 + + try: + import numpy as np + except: + error_msg = "Unable to import numpy !\n" +\ + "You MUSt install numpy to use this function !" + printError_msg(error_msg) + + m_actDoc = get_ActiveDocument(info=msg) + if m_actDoc == None: + return None + + + error_msg =\ + "INCORRECT Object(s) Selection :\n" +\ + "You Must Select at least one object and one object (or one Edge)!\n" +\ + "In case of several objects selection :\n" +\ + " The 2 main Axis of the first object(s) will be aligned on the 2 main Axis of the last one.\n" +\ + "In case of several objects selection plus one Edge :\n" +\ + " The first main Axis of the object(s) will be aligned on the Edge." + + Selection2 = Gui.Selection.getSelectionEx(m_actDoc.Name) + + SelectedObjects = get_SelectedObjects(info=msg, printError=False) + + + try: + Selected_Axes = [] + Ref_Edge1 = None + Ref_Edge2 = None + Edge1 = None + Edge2 = None + + Number_of_Edges = SelectedObjects[1] + Number_of_Faces = SelectedObjects[2] + Number_of_Objects = len(SelectedObjects[6]) + if msg != 0: + print_msg("Number_of_Edges = " + str(Number_of_Edges)) + print_msg("Number_of_Faces = " + str(Number_of_Faces)) + print_msg("Number_of_Objects = " + str(Number_of_Objects)) + + # Get the Reference Edge : last of the selected or main axes of last object + if Number_of_Edges >= 1: + Edge_List = SelectedObjects[4] + # Get the Reference Edge : last of the selected + Ref_Edge1 = (Edge_List[-1].Vertexes[0].Point,Edge_List[-1].Vertexes[-1].Point) + #del Edge_List[-1] + else: + if Number_of_Objects > 1: + Ref_object = SelectedObjects[6][-1] + Selected_Axes = [] + for m_edge in Ref_object.Shape.Edges: + Selected_Axes.append(m_edge) + Number_of_Axes = len(Selected_Axes) + if Number_of_Axes == 0 : + printError_msg(error_msg) + return + Selected_AxesWithLength, Selected_Points = get_mainAxesFromSelectedAxes(Selected_Axes, info=0) + if Selected_AxesWithLength: + m_new_dim = len(Selected_AxesWithLength) + Vector_Center = meanVectorsPoint(Selected_Points,info=0) + if m_new_dim >= 1 : + # Get the first main axis + m_axiswithlength = Selected_AxesWithLength[-1] + m_p1 = m_axiswithlength[0].Vertexes[0].Point + m_p2 = m_axiswithlength[0].Vertexes[-1].Point + m_c = centerLinePoint(m_axiswithlength[0]) + m_mv = Vector_Center.sub(m_c) + Vector = m_p2.sub(m_p1).normalize().multiply(m_axiswithlength[1]/2) + + m_c.add(Vector.multiply(-1)).add(m_mv) + Ref_Edge1 = (m_c.add(Vector).add(m_mv),m_c.add(Vector.multiply(-1)).add(m_mv)) + if m_new_dim >= 2 : + # Get the second main axis + m_axiswithlength = Selected_AxesWithLength[-2] + m_p1 = m_axiswithlength[0].Vertexes[0].Point + m_p2 = m_axiswithlength[0].Vertexes[-1].Point + m_c = centerLinePoint(m_axiswithlength[0]) + m_mv = Vector_Center.sub(m_c) + Vector = m_p2.sub(m_p1).normalize().multiply(m_axiswithlength[1]/2) + + m_c.add(Vector.multiply(-1)).add(m_mv) + Ref_Edge2 = (m_c.add(Vector).add(m_mv),m_c.add(Vector.multiply(-1)).add(m_mv)) + else: + printError_msg(error_msg) + return + #del SelectedObjects[6][-1] + else: + printError_msg(error_msg) + + if not Ref_Edge1 : + printError_msg(error_msg) + return + if msg != 0: + print_msg("Ref_Edge = "+ str(Ref_Edge1)) + + Number_of_Objects = len(SelectedObjects[6]) + if msg != 0: + print_msg("Number_of_Objects to move = " + str(Number_of_Objects - 1)) + if Number_of_Objects > 0: + Object_List = SelectedObjects[6] + for m_object in Object_List[:-1]: + if msg != 0: + print_msg("m_object = "+ str(m_object)) + Selected_Axes = [] + for m_edge in m_object.Shape.Edges: + Selected_Axes.append(m_edge) + + Number_of_Axes = len(Selected_Axes) + if msg != 0: + print_msg("Number_of_Axes = "+ str(Number_of_Axes)) + if Number_of_Axes == 0 : + continue + + Selected_AxesWithLength, Selected_Points = get_mainAxesFromSelectedAxes(Selected_Axes, info=0) + if not Selected_AxesWithLength: + continue + m_new_dim = len(Selected_AxesWithLength) + if msg != 0: + print_msg("New Number_of_Axes = "+ str(m_new_dim)) + Vector_Center = m_object.Shape.CenterOfMass + if not Vector_Center: + Vector_Center = meanVectorsPoint(Selected_Points,info=0) + if m_new_dim >= 1 : + # Get the first main axis + m_axiswithlength = Selected_AxesWithLength[-1] + m_p1 = m_axiswithlength[0].Vertexes[0].Point + m_p2 = m_axiswithlength[0].Vertexes[-1].Point + m_c = centerLinePoint(m_axiswithlength[0]) + m_mv = Vector_Center.sub(m_c) + Vector = m_p2.sub(m_p1).normalize().multiply(m_axiswithlength[1]/2) + + m_c.add(Vector.multiply(-1)).add(m_mv) + Selected_Edge1 = (m_c.add(Vector).add(m_mv),m_c.add(Vector.multiply(-1)).add(m_mv)) + if m_new_dim >= 2 : + # Get the second main axis + m_axiswithlength = Selected_AxesWithLength[-2] + m_p1 = m_axiswithlength[0].Vertexes[0].Point + m_p2 = m_axiswithlength[0].Vertexes[-1].Point + m_c = centerLinePoint(m_axiswithlength[0]) + m_mv = Vector_Center.sub(m_c) + Vector = m_p2.sub(m_p1).normalize().multiply(m_axiswithlength[1]/2) + + m_c.add(Vector.multiply(-1)).add(m_mv) + Selected_Edge2 = (m_c.add(Vector).add(m_mv),m_c.add(Vector.multiply(-1)).add(m_mv)) + else: + printError_msg(error_msg) + return + + Edge1 = Selected_Edge1 + if Selected_Edge2: + Edge2 = Selected_Edge2 + if msg != 0: + print_msg("Selected_Edge1 = "+ str(Edge1)) + if Selected_Edge2: + print_msg("Selected_Edge2 = "+ str(Edge2)) + A = Base.Vector(Ref_Edge1[-1]).sub(Base.Vector(Ref_Edge1[0])) + if Ref_Edge2: + B = Base.Vector(Ref_Edge2[-1]).sub(Base.Vector(Ref_Edge2[0])) + Z = Base.Vector(0, 0, 0) + C = Base.Vector(Edge1[-1]).sub(Base.Vector(Edge1[0])) + if Selected_Edge2: + D = Base.Vector(Edge2[-1]).sub(Base.Vector(Edge2[0])) + + if colinearVectors(A, Z, C, info=msg , tolerance=1e-7): + #if angleBetween(C,A) == 0.0 or angleBetween(C,A) == 180.0 : + if msg != 0: + print_msg("First main axis are colinear!") + if Selected_Edge2 and Ref_Edge2: + if colinearVectors(B, Z, D, info=msg , tolerance=1e-7): + #if angleBetween(D,B) == 0.0 or angleBetween(D,B) == 180.0: + if msg != 0: + print_msg("Second main axis are colinear!") + rot_axis = Base.Vector(0, 0, 1).cross(D) + rot_center = Vector_Center + rot_angle = 180. + m_angleAlignMainAxis + if msg != 0: + print_msg("rot_axis = "+ str(rot_axis)) + print_msg("rot_center = "+ str(rot_center)) + print_msg("rot_angle = "+ str(rot_angle)) + Draft.rotate(m_object,rot_angle,rot_center,rot_axis) + else: + if msg != 0: + print_msg("Second main axis are Not colinear!") + m_angle, _ = angleBetween(D,B) + rot_axis = D.cross(B) + print_msg("rot_axis = " + str(rot_axis)) + rot_center = Vector_Center + rot_angle = m_angle + m_angleAlignMainAxis + if msg != 0: + print_msg("rot_axis = "+ str(rot_axis)) + print_msg("rot_center = "+ str(rot_center)) + print_msg("rot_angle = "+ str(rot_angle)) + Draft.rotate(m_object,rot_angle,rot_center,rot_axis) + else: + rot_axis = Base.Vector(0, 0, 1).cross(C) + rot_center = Vector_Center + rot_angle = 180. + m_angleAlignMainAxis + if msg != 0: + print_msg("rot_axis = "+ str(rot_axis)) + print_msg("rot_center = "+ str(rot_center)) + print_msg("rot_angle = "+ str(rot_angle)) + Draft.rotate(m_object,rot_angle,rot_center,rot_axis) + else: + if msg != 0: + print_msg("First main axis are Not colinear!") + m_angle, _ = angleBetween(C,A) + rot_axis = C.cross(A) + print_msg("rot_axis = " + str(rot_axis)) + rot_center = Vector_Center + rot_angle = m_angle + m_angleAlignMainAxis + if msg != 0: + print_msg("rot_axis = "+ str(rot_axis)) + print_msg("rot_center = "+ str(rot_center)) + print_msg("rot_angle = "+ str(rot_angle)) + Draft.rotate(m_object,rot_angle,rot_center,rot_axis) + # Case of Cube + # case of Sphere + # case of Tore + # Case of Cylinder + # Case of Cone + # Case of other objects + # Reset the selection changed by Draft.rotate + reset_SelectedObjects(Selection2, info=0) + else: + printError_msg(error_msg) + except: + printError_msg(error_msg) + + def object_jointPoints(): """ Joint Point(s) from selected object(s) to the last Point selected. @@ -10275,6 +11368,7 @@ except AttributeError: #################################################################################### class WorkFeatureTab(): def __init__(self, movable=True): + self.movable = movable if self.movable: # Look if WF movable tab already exists @@ -10363,11 +11457,15 @@ class WorkFeatureTab(): "button_cut_wire_point" : "plot_cutWirePoint", "button_click_for_point" : "plot_clickForPoint", "button_object_base_point" : "plot_baseObjectPoint", + "button_object_center_mass_point": "plot_centerMassObjectPoint", + "button_object_Npoint" : "plot_objectNPoints", "button_point_to_sketch" : "point_toSketch", + "button_points_load" : "point_toLoad", + "button_points_save" : "point_toSave", "button_object_axis" : "plot_centerObjectAxes", "button_twopoints_axis" : "plot_2PointsAxis", - "button_Npoints_axis" : "plot_NPoints_axis", + "button_Npoints_axis" : "plot_NPointsAxis", "button_cylinder_axis" : "plot_cylinderAxis", "button_plane_axis" : "plot_planeAxis", "button_face_normal" : "plot_faceNormal", @@ -10383,8 +11481,10 @@ class WorkFeatureTab(): "button_cut_axis" : "plot_cutAxis", "button_cut_wire_axis" : "plot_cutWireAxis", "button_extension_axis" : "plot_extensionAxis", - "button_click_for_axis" : "plot_clickForAxis", + "button_click_for_axis" : "plot_clickForAxis", "button_object_base_axes" : "plot_baseObjectAxes", + "button_object_Naxes" : "plot_objectNAxes", + "button_object_3axes" : "plot_object3Axes", "button_line_to_sketch" : "line_toSketch", "button_linecenter_circle" : "plot_linecenterCircle", @@ -10395,6 +11495,8 @@ class WorkFeatureTab(): "button_circle_to_sketch" : "circle_toSketch", "button_threepoints_plane" : "plot_3PointsPlane", + "button_twopoints_plane" : "plot_2PointsPlane", + "button_Npoints_plane" : "plot_NPointsPlane", "button_axisandpoint_plane" : "plot_axisPointPlane", "button_axis_point_plane" : "plot_perpendicularAxisPointPlane", "button_planeandpoint_plane" : "plot_planePointPlane", @@ -10440,9 +11542,11 @@ class WorkFeatureTab(): "button_isArea" : "plane_area", "button_isView" : "camera_orientation", + "button_alignface2view" : "object_align2view", "button_align_faces" : "object_alignFaces", "button_align_edges" : "object_alignEdges", + "button_align_main_axis" : "object_alignMainAxis", "button_joint_points" : "object_jointPoints", "button_joint_faces" : "object_jointFaces", } @@ -10482,6 +11586,7 @@ class WorkFeatureTab(): "dist_point" : "distPoint", "angle_align_faces" : "angleAlignFaces", "angle_align_edges" : "angleAlignEdges", + "angle_align_main_axis" : "angleAlignMainAxis", "angle_revolve" : "angleRevolve", "size_letter" : "sizeLetter", "letter" : "letter", @@ -10587,16 +11692,16 @@ class WorkFeatureTab(): break def getMainWindow(self): - """ Returns the main window - """ - # using QtGui.qApp.activeWindow() isn't very reliable because if another - # widget than the mainwindow is active (e.g. a dialog) the wrong widget - # is returned - toplevel = QtGui.qApp.topLevelWidgets() - for i in toplevel: - if i.metaObject().className() == "Gui::MainWindow": - return i - raise Exception("No main window found") + """ Returns the main window + """ + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget + # is returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") def getComboView(self,window): diff --git a/WorkFeature/WF_ObjRot_2015.py b/WorkFeature/WF_ObjRot_2015.py index 2621a22..93ec0aa 100644 --- a/WorkFeature/WF_ObjRot_2015.py +++ b/WorkFeature/WF_ObjRot_2015.py @@ -23,7 +23,21 @@ from FreeCAD import Base from PySide import QtCore, QtGui - +#Print x,y and z of a point:vector. +def print_point(point, msg=""): + """ Print x,y and z of a point:vector. + """ + if point.__class__.__name__ != "Vector": + print_msg("Not a Vector to print !") + return + #print_msg(str(point)) + #m_type = point.__class__.__name__ + #print_msg(str(m_type)) + print_msg(str(msg) + " " + + "x =" + str(point.x) + ", " + "y =" + str(point.y) + ", " + "z =" + str(point.z)) + return def plot_point(Vector_point, part="Part::Feature", name="CenterObjects", grp="Rot_Trans"): if not(App.ActiveDocument.getObject( grp )): @@ -242,6 +256,9 @@ class Translation(): def enable(self, flag=True): """ Enable or not most of the buttons. """ + if self.msg != 0: + func.print_msg("Translation.enable :") + self.comb_start.setEnabled(flag) self.but_start.setEnabled(flag) self.comb_end.setEnabled(flag) @@ -253,7 +270,10 @@ class Translation(): def setEnabledStartInput(self, flag=True): """ Enable or not the input boxes for start point. - """ + """ + if self.msg != 0: + func.print_msg("Translation.setEnabledStartInput :") + self.start_x.setEnabled(flag) self.start_y.setEnabled(flag) self.start_z.setEnabled(flag) @@ -261,7 +281,10 @@ class Translation(): def setEnabledEndInput(self, flag=True): """ Enable or not the input boxes for end point. - """ + """ + if self.msg != 0: + func.print_msg("Translation.setEnabledEndInput :") + self.end_x.setEnabled(flag) self.end_y.setEnabled(flag) self.end_z.setEnabled(flag) @@ -269,14 +292,17 @@ class Translation(): def numberCopies(self,value): """ Respond to the change in number of part value from the spin box. - """ + """ + if self.msg != 0: + + func.print_msg("Translation.numberCopies :") try: # First we check if a valid number have been entered if str(value) == '-': return self.m_num_cpy = int(value) except ValueError: - func.printError_msg("Number must be valid !") + func.printError_msg("Number must be valid !") if self.msg != 0: func.print_msg("New copy number is :" + str(self.m_num_cpy)) @@ -289,7 +315,8 @@ class Translation(): """ Respond to the change of deep copy flag. """ if self.msg != 0: - func.print_msg("deepCopyFlag !") + func.print_msg("Translation.deepCopyFlag :") + self.deep = flag @@ -297,7 +324,8 @@ class Translation(): """ Respond to the change of duplicate flag. """ if self.msg != 0: - func.print_msg("copyFlag !") + func.print_msg("Translation.copyFlag :") + if flag == False: self.m_num_cpy = 1 self.dup_num.setValue(self.m_num_cpy) @@ -325,7 +353,7 @@ class Translation(): """ Clean the list of Duplicated objects. """ if self.msg != 0: - func.print_msg("cleanDuplication :") + func.print_msg("Translation.cleanDuplication :") for m_objdup in self.m_objs_dup: if self.msg != 0: @@ -339,7 +367,7 @@ class Translation(): """ Reset the list of Duplicated objects. """ if self.msg != 0: - func.print_msg("resetDuplication :") + func.print_msg("Translation.resetDuplication :") self.cleanDuplication() @@ -359,7 +387,7 @@ class Translation(): into internal placement lists. """ if self.msg != 0: - func.print_msg("initialize !") + func.print_msg("Translation.initialize :") func.createFolders("Rot_Trans") @@ -440,7 +468,7 @@ class Translation(): func.print_msg("self.placement0[" + str(m_i) + "].Base=" + str(self.placement0[m_i].Base )) func.print_msg("self.placement0[" + str(m_i) + "].Rotation=" + str(self.placement0[m_i].Rotation )) - self.base = self.placement0[0].Base + self.base = self.placement0[0].Base self.center = func.centerObjectsPoint(self.m_objs, info=0) self.origin = App.Vector(0,0,0) @@ -466,7 +494,7 @@ class Translation(): """ Remove all the visualization objects. """ if self.msg != 0: - func.print_msg("removeVisu :") + func.print_msg("Translation.removeVisu :") for i in range(len(self.visuObjects)): App.getDocument(str(App.activeDocument().Name)).removeObject(self.visuObjects[i]) @@ -477,7 +505,7 @@ class Translation(): """ Set the visualization objects. """ if self.msg != 0: - func.print_msg("visu :") + func.print_msg("Translation.visu :") m_start = self.start m_base = self.base @@ -517,7 +545,8 @@ class Translation(): def start_x_entered(self): if self.msg != 0: - func.print_msg("start_x_entered :") + func.print_msg("Translation.start_x_entered :") + try: # First we check if a valid number have been entered self.start.x = float(self.start_x.text()) @@ -532,7 +561,8 @@ class Translation(): def start_y_entered(self): if self.msg != 0: - func.print_msg("start_y_entered :") + func.print_msg("Translation.start_y_entered :") + try: # First we check if a valid number have been entered self.start.y = float(self.start_y.text()) @@ -547,7 +577,8 @@ class Translation(): def start_z_entered(self): if self.msg != 0: - func.print_msg("start_z_entered :") + func.print_msg("Translation.start_z_entered :") + try: # First we check if a valid number have been entered self.start.z = float(self.start_z.text()) @@ -562,7 +593,7 @@ class Translation(): def print_start(self, point): if self.msg != 0: - func.print_msg("print_start :") + func.print_msg("Translation.print_start :") self.start_x.setText(str(point.x)) self.start_y.setText(str(point.y)) @@ -573,7 +604,7 @@ class Translation(): """ Selection of Start point of translation by button. """ if self.msg != 0: - func.print_msg("select_start : Selection of Start point of translation by button !") + func.print_msg("Translation.select_start : Selection of Start point of translation by button !") error_msg = "Select one point !" @@ -600,7 +631,8 @@ class Translation(): """ Reset the combo box for start button. """ if self.msg != 0: - func.print_msg("reset_start_value :") + func.print_msg("Translation.reset_start_value :") + # DeActivate select button self.but_start.setEnabled(False) button_text = "Select" @@ -614,7 +646,7 @@ class Translation(): """ Start point of translation by combo box. """ if self.msg != 0: - func.print_msg("select_start_type : Start point of translation by combo box !") + func.print_msg("Translation.select_start_type : Start point of translation by combo box !") self.reset_start_value() @@ -636,9 +668,9 @@ class Translation(): self.visu() - def end_x_entered(self): + def end_x_entered(self): if self.msg != 0: - func.print_msg("end_x_entered :") + func.print_msg("Translation.end_x_entered :") try: # First we check if a valid number have been entered self.relative.x = float(self.end_x.text()) @@ -660,7 +692,7 @@ class Translation(): def end_y_entered(self): if self.msg != 0: - func.print_msg("end_y_entered :") + func.print_msg("Translation.end_y_entered :") try: # First we check if a valid number have been entered self.relative.y = float(self.end_y.text()) @@ -682,7 +714,7 @@ class Translation(): def end_z_entered(self): if self.msg != 0: - func.print_msg("end_z_entered :") + func.print_msg("Translation.end_z_entered :") try: # First we check if a valid number have been entered self.relative.z = float(self.end_z.text()) @@ -704,7 +736,7 @@ class Translation(): def print_end(self, point): if self.msg != 0: - func.print_msg("print_end :") + func.print_msg("Translation.print_end :") self.end_x.setText(str(point.x)) self.end_y.setText(str(point.y)) @@ -715,7 +747,7 @@ class Translation(): """ Selection of End point(s) of translation by button. """ if self.msg != 0: - func.print_msg("select_end : Selection of End point(s) of translation by button !") + func.print_msg("Translation.select_end : Selection of End point(s) of translation by button !") error_msg = "Select at least one point !" @@ -748,7 +780,7 @@ class Translation(): """ Reset the combo box for end button. """ if self.msg != 0: - func.print_msg("reset_end_value :") + func.print_msg("Translation.reset_end_value :") # DeActivate select button self.but_end.setEnabled(False) @@ -763,7 +795,7 @@ class Translation(): """ End point of translation by combo box. """ if self.msg != 0: - func.print_msg("select_end_type : End point of translation by combo box !") + func.print_msg("Translation.select_end_type : End point of translation by combo box !") self.reset_end_value() @@ -798,7 +830,7 @@ class Translation(): """ Preview the placement. """ if self.msg != 0: - func.print_msg("Preview the placement !") + func.print_msg("Translation.Preview the placement !") if self.selection() == False: return @@ -868,7 +900,7 @@ class Translation(): """ Application by saving into internal placements list. """ if self.msg != 0: - func.print_msg("Apply button pressed !") + func.print_msg("Translation.application :") if self.selection() == False: if self.msg != 0: @@ -892,11 +924,12 @@ class Translation(): self.applied = True self.initialize() + def reset(self): """ Reset to original placement. """ if self.msg != 0: - func.print_msg("reset :") + func.print_msg("Translation.reset :") if self.selection() == False: if self.msg != 0: @@ -904,7 +937,7 @@ class Translation(): return if self.msg != 0: - func.print_msg("Selection detected !") + func.print_msg("Selection detected !") for m_i_obj in range(self.m_num_obj): self.m_objs[m_i_obj].Placement = self.placement0[m_i_obj] @@ -1446,6 +1479,7 @@ class TranslationEvents(DefineAndConnectEvents): "ObjTrans_end_y" : "end_y_entered", "ObjTrans_end_z" : "end_z_entered", } + #################################################################################### class ObjectRotationTab(): def __init__(self): @@ -1477,6 +1511,8 @@ 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) diff --git a/WorkFeature/WF_Utils_2015.py b/WorkFeature/WF_Utils_2015.py index a347b75..8051033 100644 --- a/WorkFeature/WF_Utils_2015.py +++ b/WorkFeature/WF_Utils_2015.py @@ -233,6 +233,11 @@ class DefineAndConnectEvents(): #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))) + + 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("editingFinished()"),getattr(self.obj, str(m_val))) if __name__ == '__main__': myObject = DefineAndConnectEvents(None, None) \ No newline at end of file