From 686a8645643ba74ea3be5646b8fc7b35a70c297d Mon Sep 17 00:00:00 2001 From: vsr Date: Wed, 15 Jul 2009 08:11:22 +0000 Subject: [PATCH] Merge from V5_1_2_BR branch (14 July 2009) --- doc/salome/gui/SMESH/images/eleminfo1.png | Bin 14708 -> 18764 bytes doc/salome/gui/SMESH/images/eleminfo2.png | Bin 16004 -> 33198 bytes doc/salome/gui/SMESH/input/mesh_infos.doc | 3 +- .../SMESH/input/tui_defining_hypotheses.doc | 5 + resources/SalomeApp.xml | 2 + src/Controls/SMESH_Controls.cxx | 12 +-- src/OBJECT/SMESH_Actor.cxx | 24 +++++ src/SMDS/SMDSAbs_ElementType.hxx | 2 +- src/SMESH/SMESH_MeshEditor.cxx | 2 +- src/SMESHGUI/SMESHGUI.cxx | 12 ++- src/SMESHGUI/SMESHGUI_ComputeDlg.cxx | 66 ++++++++++---- src/SMESHGUI/SMESHGUI_ComputeDlg.h | 6 ++ src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 52 ++++++++--- src/SMESHGUI/SMESHGUI_ExtrusionDlg.h | 4 + src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 2 +- src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 9 +- src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx | 26 +++--- src/SMESHGUI/SMESHGUI_HypothesesUtils.h | 13 ++- src/SMESHGUI/SMESHGUI_MeshOp.cxx | 17 +++- src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx | 86 ++++++++++-------- src/SMESHGUI/SMESHGUI_RevolutionDlg.h | 8 +- src/SMESHGUI/SMESHGUI_Selection.cxx | 19 ++++ src/SMESHGUI/SMESHGUI_Selection.h | 1 + src/SMESH_I/SMESH_DumpPython.cxx | 28 +++++- src/SMESH_I/SMESH_Gen_i.cxx | 8 +- src/SMESH_I/SMESH_PythonDump.hxx | 5 +- src/SMESH_SWIG/SMESH_BuildCompound.py | 2 +- src/SMESH_SWIG/smeshDC.py | 18 ---- ...tdMeshersGUI_LayerDistributionParamWdg.cxx | 5 +- 29 files changed, 296 insertions(+), 141 deletions(-) diff --git a/doc/salome/gui/SMESH/images/eleminfo1.png b/doc/salome/gui/SMESH/images/eleminfo1.png index 3aae250c8c7472a4e458aa41b29546c34d1ecdd9..a93a622f1d44046971ac167d2f52e5ff7cfefed3 100755 GIT binary patch literal 18764 zcmeIaXH*s2wk=#_BrXIbN>orlf=HAgK~O-F2uKuAK%!(MOI%1&ksvuLh=3qbaz+8k zISHtMWXbs(Ywz>5bMJZQyWhL-{d%pv)>hja%34*kW{o*UAHDZUsJf~mDG@ypf*_=~ zZ^>&S2$m^=VB-+t!x1S)Dp~|#L2k>-Xt^gXPd+u!x;KZvZXt}1LXlG3ak@-R*>dI1 z1hs*_!AEuDxPiWja+N#%(%qLvut5DO-a+t z{RVXLbipQ-nG)087E=7X6Q18Hlr zQczNS31>HDV|(KuuYw?JjyKTEA7?pP-qA9Vw-`=G&t|{B5zXbNbjHh#t|FPoEo$NR z3w!wwXBYiYC?rrFktHW(k_lpTpBVMm+Kp{@&L>D#XH~RhDQ2p_vLsIRnd)Js$c;#S z+c&B|7k|#-ALUW3yNQ3CS)N;=r{@1$IkS{Od&4;JG-}|OGImrfs;)d+ZS?6$!sj<6 z%SScq+cCmsr>CBMj;A)GoFY1;J@3WW_X}?rSZ(aYEsF@HefMTlqpI<7a?#}$)V$mk zj?QZ>4AD%*y6F65kg&oMmn&zr>E;UAuEo7ugQ*S2&6Y{0+;qdUG41<@Yk(M3+k3r#OssGG z_*1rTkYvbn`ljI#tu_gZ;t!(ccyIBM^fspH)X~)KN?JfPD?)m(5ZtPRc%nw&)US6prdtR*88+#X- zEY;8KEv3)+$k~6lk?5(6ow3NF@zch0_QYD>zKXk>UH44VSE3;Eo={WQO`L}de)0PC zq2o~<)*jf&R@gt2p9Lz`7bw?HUhDAwTFgJ&rEiySd~foZTLQN6F~0MMGw$LzyZwHX zanFc&gHN=c2y9u*U;I8LeOy%ft$Kcwzn{Mk&oA@}sqwBcj?ZVaea7mJ`vq%u3F+kC zOVR~`+yv-wtgny#bbe!(a?`%G3xopuf99RyZb-Awey738#@0pQ+(1sP z2%XU1R2>X@I*v3~qD-!|?sBrri>lh@z3@AXHJ|E<`1s##eCn)vE_O;obqrBT>xC^id{W2c`dot`I~c|%}(-G~(V^5)lb zEx)_eX&cuj3Pl(Zkm4j zW zV=z7?lh~U#o+3ZSQ?WET*)W;#Rj}?~2|2|+S^GNo=e3I5cm1U}hv}6%NxQ>!;~RIG zA9#kF;95_ZFGnRt+q&q9r%oJql&xRrtcgmz+c3;&pUkB9eV-`!fvWq%OJSdha1ZIf z#VED$#o4ileR@0jvy8rqoK|Bq*x7f5bo}>+AAi(Pc~p4Iiw7hnwS^f92b}0GE7D;- z+m&UmQMpG)?-8GBoD#1gRC8(yUefER4lZ$q#+@4NsHl72Q)zHs2lq_5lUeREu6szb z@V4-K90_hXFf5KnF_U}Lm^9~V{7Ur|UX?z4aKdu;vdW=>dL2(GDH6rA)ixy_(Kf%D zI@LHQy(?8_kXr5HVMV&jY%U@7%OrTF@C|mVlhy~K&r>ZMo9=n7q|t}$R#WxCbyj1} zAL#id;y-90IoW%3E;USS2hB3*R_}DjT=l(_SB6y2+l=|92&QZv(3(st3x-ExHFfuh zijzs7xKmvo-00qzU!$|Lx`@&xrX8YzIRLEfnOQSQ%3?i)Pm`5bp@=bEsCP1-*bq>G1lM68u|r{6o^B-#z} ztnXnfHY=q!eVS!V$a8HN9cL&wsJbPwe}+q#>{*#9>AFzJD~qH39ID{Twm}O&o=Iu; zQiDfP#iTOF9+FLAdhk;}O3JQ2MqZ9kVh-Ct`D*z0Vkd<4&oDdH{&?3RN}#+h`;Y&@ zBkS>&`xe39)@#c1_G#ERSM8OVH&-_=b*v97M2XiA5eL)I1Xy8N%!;z{+Flf6JJH!@ z=-bt|8w^x3*|VCE`ccU+;+Xe#P@F`@#^s)=&}tf;YdYO`d@VW~-;gg-N^@HQXHm%P zUFPX-!?&nloo&xrqH6g zi=)Kj?dnbmbq~x=4nAym43!Z(72pl-^HZWLNyDv8M#^@%p8P5Mxn!rz+_my)g{`M; zcpY0cl1bE!X2iE9ZJv?3e8S|hs>6{)S?kcXTnlTPJ6pax!FRT~&$SRbtZDQ@v6K&* zU$I&WbCH+VGNo;nm%sXH(U1~;akOzSibSK8&c5S7qaU{Bp82~>%3lx^LJTS>_}rw? z=&u(}$E4Jolj?ZAswHL?e}!)i5IF9JqH|Q9IOO?d4UjZ*UU;?^$HMlCE&x+;Nielm z038a~W8wHO5B~16vNZY8*k{F+din0V_90;k4H+c~bfHnrbHnRy={jph7bjoeBxa|% z8Xnqi5@U&KYi%_h{$@zH$gKIQi|SIAFJV(Wno&FS8-@M&XVS^fZcWNv#*Inj^EdJa zmCB#t;Im!gZ-1z7Vt@Pg?S+x_%sYouKA#o1h4U1J-Im4|sn zz4rK%l9P)px|y~X#}$b*EG#S}Jhlk$zEf#gDy)f2k@PSfXxF%jU< zr8>rP-As~24s!~YrFuyH^Pk+P2@%?4ao5H-{T5kfos%3YN%b!UD8yc$B{eP8BZW_p z?6dFRA1qImGH}HZ_4f8IOx09U_A)2WR!BG^*-2X2wxOT)6Uyi=w+9e zmuIoEr}7cq!y#i93zrGNm&w;=zjzVvPNHy2?b@!%(1-hkP}nTro9P#eSIq`DsDZxeEG7d&$8&*vu9D~&fy~{57wBfs;bQU zpUi269I3`i?L*G-mEQRDt7{$Z4o`;bat0f@W;;YxZZ}z+E8WT;86M6v@DxRH|11r& z#jwN81a@AV%);6ouD5m4=ec$AuZ{8s`f29MYiUs>B_;hi|4#kVN3(e{gNi3u7TqZ~ z-Q7h~@^^UN-bv)RqlWk?W&0Zymgn-dR+@V9F;ZyQ)oyz^EdIGz6?vt%yl~N3e8E|q zkTtD;v8T$-9)2#d8YJ3Xos8abaB;cW5vM;}7j_zUJDO7_U7h9nbq1XRgN87^T69Ut zwF{h_nLft{ImUHTzX$U}&QNm157>U--qlf#J#sr^{E?k4L?c5c>E+93ot-L+o+2V5 z)!Re*?ccsBn45D1qT1Wr5rjvtgfKllePN)8a)4gQc~l&ifFRR#W$c!UO7nu7;#_a0 zqWb&SJvl=0f^LzwCy_sckG~}hS}Xl|9f~IET2*r>n7!NbJ9WF2rYV@@yyg$pb8&YV zM6kZsNl?R+HCC!W@5nid&#`CPou4Tk}ke(#4>UO4+Zf z!sNGJo1o^?1JAE3d#a!x3Q?3`csC>$=b z8sy3uw7Nt^RAN8PwBfK(an$yxYW%a)JlR;;Yd3vWdd@IF z_3Rn%lyeD+6fzs)1V8Rf|Bi?2qZkz{jAOS)M| zB&~ocuFu{KfrR@yLP0?x>alz&l1c1&-RTKK*f~DgrJ;N*Bs4U1?|T6GdKcQaqdpUZgTnNnHSq5PnzfYe89UUF{-Pa#f@Bd0vzeE);?JHG# zdg6KE!i5K22|^1aMeKhiPdxL^_-E{jk&u;54|i5Hz3Yzt5GzD7hJN_KD>_o-V- z?&sGShy6c~oY$t#hmf6bbn2E2IX#+}u5eyFTV^w=nIx^i#-%DSUl_LJK;9hi+S!3~ zHL^>DRX%;Ej?zsrX@5U_eSIC}J9(t6RcK_mJXx-TIhLcI?qAZq7UvUJYg}cQZ`ofK z;mm^+`80W8zQ5_lZ<-`8N2+O{#P-mN}ot5TaR}!-iJ9KzxlCQg! zjn&!L?kgPa^+(N4R65P>D%XWs4;O@{`W)PLcXvnMeWw~~H~Bd_)9UI930Q}%k9n}v*Y%4)Ut#{w&TJZ zead`iSOc|owug<0Sp(yRtYhK5_&Iw8;FC7*tc+(DKf@tVdX(zD^Tu+tID7BpaP8*g zXP1_y5OO?<(Smz<+Ckq$$jPH*S58?j8X81-vY37|rYWx0eb;Nr|Mcs_z@Q+LjoB8C zN1SG=rlZA=ZYe7Vps>lABwl=lxAoa|g$P;S-3^gVzoD*rcZ;?w?Wb#LB|Way?#&WMuXxlj!2)@wntXLJ`lW1o{Y+Dc!_M;kqrJH(cqQko z26CQ7NgcG$ic#Iv);`B;R86R+rZ!RIS>C=)q4DL_%5?K~S z3JmCw^_F>KUGWJna&q$OiQkWS42!8`X%!j)YwWGe+TZ-WS^o@2z;^5!EKSD1@d1IU0K~B8R>88SL@?Mdy(kPZ8vM2Vb51 zc$qC0Ld~r$U*oZ@@^!4#n)Cebl;>JHlwWlP&1j4r^4NS@u^PfxB}Iacl>VBZLZ*zXt8g$W13ut~tgI{+QBm65++3La9?NUGm5z^| zt;FydGhr4xtf=%st0Jd))m)p+UtP3PUZUpRDG^^|xaT&zr3sMbu~K5pdAWDreP3P< z7jycB2@X;Bb(R6ETHB;{ip!V?moiFOcXm?n_#NOMwWmm(%7qS#;%+F2sg0);$T=}^ zu}m&`(kD(=D=sFJCv^PPcY(#@GafE3l}9i0v`1})^Zu)@!>WpVH#DvAXDMG*FbPn+ zocIeXo1rii64aIpg7|Q-bI<3k1V?x(iyI9(CmgC#AEwUvs8Ul<)MEhj=>HV<{g?WA z|K(7^dj7n=!7&RP*QaH&*^0diS#K#y3W_&vf1&b!d(oIN#fw+M4RrPHNV>dLNoK>0 z2sg$ZWnAMyUFEteTR2st^f~w4P-A-#iCM-w-B5f78yg7fwiSu?sI;1swQlz#$!&tGxXK6LVDKQx3dsl&FeEw zD_ne+<$}pfXelMLm3YuJ3cStj8tfFz%u$X%zs^*h9`a60>E)jz3c~*O?c2q{2w7z% zrN#r7B?0qJ+N!V0eQ+{etGrtJ+4B_FuV0q~$UZ$EQ_dqGK*9X&1O<5Pnd&>a?caj} z(q2+tUS22~nvnW$&oI$J#w39zAZKEckYH?!WNs?TY+K)*_GNc8xqyw0ZBt-9^3enn z9cL+F{wSUe+3L;BMM){>>Ct=COcAT9s_yMn+21)xDz8@TW~%UB5P-Ne16D$1c9YMgY7XlsCk?GQSy+%>Y57dEwn#!^;!l-Pv37Ugs?JoYqf^*i zqtJPKT18Kd0go_>KB@mL^*>;Flj11tyqm)XhFHkS$q5v5LLwqS?~nU%MeL_|vbi&u zF>4DCii@N9J&+rqS87e|9)88Uq*YW>BS{*EtvJEjDOtLBgd{_gwyr&Y2 zItK@-uNd2fp7NgX6@U7a-oN-FB_-0>_ju4$vU0rLyY7<9<7@N}A3kJZXK%9c?TQ)B zy-SdilCt+?Cxlkw;gedkjEoFu9X?vm^OjilHvW>*`|J=Izp$v8!8h~>z9uM0`S|hU zg|h=KSvKy>^WXIyry6%wS&q5a`(k3JkAL*S>l41|_RoZEtS~ zYhhtuNzK`E8Vhs7gT%r+2e!G@_D_s?^eQl=Q8;&aa`JpzBvVsk5b?~9AAwN3#s(CX zhdvmYbw~N58ROZ09l6ZR{XC;4Vv+Su>f?Srm(;xvC--f<1Rl5du-;t#5&eDo^hD&n zPGO`;Q}FHa=ZD^XiNbc+^}bIz9OZ+O6aLw_$4sC{_Do+nZ0(nP_C1wqjie)nx}*}% z-|)lhQ*kkprd!ZZmOqa02Zp97Toe~FA(?ykH2I91n;Ql+IZunOAhag|Pu6N{IL4p* zv#M-4b8X!8b*!5&)!((dI5~0m@${58i3#MMT%Lf(By--LyDqI!$&?7A^c)bJ}4l83q5LQ(s zpKYlXn%G>O zA731Qw7>LXkF93KKtjmIo#cu3W%$eoiFyZ|1H2q;a z-E!CDFAmUGxbIH7^;SArU_vV?%QvNQ|D(F4oSg4=)*4I%aFNQWPC^O1Az9 z{+QhsU-LoIJUny09erzSVG1YT$S%lCF^ZLkheY!8?v0LfR~(M^He?5>i&(HHt6UT@ z2bLEEkos^s!50Y$&+F@NY%TXv`fayyiN(T{w=*;<{OpJ;7dI84afAZYQ0X-PWObs_ z>(N|mWYgZ6IfwNgnQQh_jLgS}?7235&9~#F%)~L76;eM(TLhCNeM3V7Ix?~~y(y%p zO3l7nWLpxs;plj^v8joInmTBKndB!90om)wpXd<*Dyqh^$mbCa=GAxJn4aJ~$(J-o zn&w&y)0s1N6ikMe@6%p=NSGjE&pSz;Orw|cnO?*$yykFcHh^5}hGovo$j6WTk8$fb zt<;`H-E-v0mJ%{q34O3~#+3KRHF{DGwKw5#0*_I(?pVs}*MWIDg&B%bOo*RRji^D{JsNQUxXl6+hp=qPzQ^PV=(Cz~US{?bcwaAZ&&5j+@;xG+ zz3nbj#B(VUg>RFXaA`pR2Z1tdSmla`>>VD;0o?%@+;66(IZ?#^-1~ww-e9vtVQWku z@@7Rx1~bZH+@g)!8|yQ2uK}SUFOrjOx6hbf{&BFq6mpMS=grYmiwN2DkGdTH$lzMF zFN-%u&R=)?4jD_-bB71!al@w6BHI|7#H3A~k<}*8pGnYFV#N z1fos?(`O>}pSv|TKg_4vj&=6c$J(SG0l5| zk3gp*=jA0qFKmNu2q3^R<-1;ZB}-+Os=ME<`9dG zPrNe^tmsTpg~nE~*@^JFdZ$l2@t1i#m;OM(1q|L(V0&FFM;&WP&cxlk-}F736HCXKTYp>qBe&VS15Ynam)V-S9DV^YNR~H-eDWG+RozZ=(*WBqSAW2{~GX8FRoYz74bWo zJQn)-@gIn{9qV5a@8ytkV0MAf{ByaNB{CwSr69Qq)hC^GA@Qkc;1)RmRt>3(^v%GT z$(658_7uq}CZWYNzMlZ_YOFN=maaM}u3KWMaoe@)1H2-y{hx6d(21}BGR06L(04u0 zk6@Jx;Rjke@IM#hOJ&dh0}clEceb#EP_D<+DAH_)9U9_HJ)=ZDTNOfdeU#*zAcbzVe&(Ei+D98f7NXa$H^FrvEhxZI_w0FY!c~TF_!VsogWD88olA&Jq1qo7%j}WU(r2GK*X5cUvA&+FP*(W)40? zL9z!@Kp*^P;yL8qJI*riN>V#JJ5iK30=P9uFTWMgw}43_E~B^?;T0pRXHQSxSZJ!j ztbcTyHmctE#Q;ww!+xqTQf1F)?kmdB6ig}?cJ4~n;ml@Jwiy8ltsf@$_RPr9N}EXh z`j$*wsuuw`I$KJ9CF1MwuKz*wZgu#hzo0Qp`paXdX5hO=T#^9$s>iV)H~P)*I4lia z`E+>k;>8&t&45E7K+-^opcQ?Prd7~ux&Ae;Fn(aX)LIAetE-cyBEs|cCt3LiPJX>3 zN#}I7Ble0M^csOE_w}^zm*4mwm@Pg1`G{n$z5Q0=4kue1_22BbN71(wg^0VXpQ*jY&#*+}G>l!&k3feevea z;~h@~fNmhF(S{D;LF@Xx5j1BrmBCHf@W2P`P@)@^?XfvEYCHAecRB`zX(kx%t6Mk1f=-)3i4^h_3Q>0#JK5%UW4pjl62QR=efh^Fir%5qz?w zbmCd<$zEeNW0vm5R~4J&)uI|z@BHvN)C-M3!@tuhhCTcU4J!i4%HxClJC1OZP8SXp zfxys9`+uiz{9IQs)#p=b;L%G}iR;-rIpOGt~8*3Dyr< zT-k{mQcciOG_bg;6JVly=_WzU&)x ziWi9~!6QbBc`}nyJ=;H$0dNKN_cDyo97moPPdIL0tf&yhbtP+VndVKn;+eazyq>?t zZM(^{7Ft-hKW3He2wGUf+lWMdfQMB}(C7v8YhO;+%u9pM5G}TDW-kjjH*t;Uwt~4f z$Cj8!#plnnb5YU?VX;>bq}+bG_4-^Vr-fAJ&m{tguTnsknpgO*WMEhtBFx>0ORz& zwPomx7r+5Ni;#pQaOifJq=x55(|sbZqHSVP>*SZw(E%b;UO1VGQDyE-t!|1xQWAjm zf)5PXADFR9$Ddip%#t2~z^el*E?YP}2dp2^0XRUx%F4>}dmlJ=rbsd%>!TK_Gw)J; z{I#tKr-2Zo=_uu7J8Y+Kj^_{v@QKxPj+?~p#At9^Q!85Uw^`81@hjh%7( zOrQ%9zw_5!zt`lhnQX>(A$~y5?g?!*4eY)(?M{)zU{~$J`w?`4=HIK737{?pt^;GN#J&fY2n-3CI||yoWLztOd1SNh~|$5vEKj1@!%XruSG`qhd& zckQ(D^{7+5{+zKI`tZ0^8r12B#Isph7ckn2q{kM5Z2g`jP87B+uBf|mm-4@0FlZYM z{sy^7Pu6Y9iR!1H)Lrmg1Q^Fl?%$pG?9yRVH!(Tc`{BM|IK3Fr%2>HvSe#zk{Y`W2 z?iOvJmE=`b$uRt5ky#r?u0S4a1WD8wMQv?4Ni5%3yR_x-`Zb!u$@kHf9kA+qHNpTYaMX4!*)+7;~ydHMjh7$00g`IG>V2j9x5u_a`HUnf|wQ^40Ca@kSIVb_M}PhN`AElbhfz^0R&2tf85+Wv+TG2~=pxRb%{AXs z2E>MFq;Xka4^lKn)H>Q|W6sepFPNBQ<+{sgE^kAH;W4a+3v69ep@}t_Z4Slgh0x|2 zxzFHz&?{Bq>Xyvlg`9z5rXVXl02<*qQm5KoQYo40{)GrX#LLtes z0No3!W6aknkEJV}i6Z3h)KY`B^Mu6g>iw`VD%rQ>>miU>OyO7e`D8bnRZ5NfX=pKD z!#($>js0D8i@D@BQXikI#mJs=e+Pj;x8h0qsIP-?I}9rH<~k0j4Dog{d77NH1e!&HKdwgd%==$-ctBLEr?zPEJ$v ztgzh#ny+>b8!n*;6ZsP6rMX!iBcTDA3cB4M#B2|6%}2mNn|A=v4FLilW8E-qdCqZH zrPX?8sj%*xdoub53IMlG?f%eaOLj+`&D3;DKK3h3K~(CCAMQ@gz}MlenvrA!qm&7e z(YFItHgP#__h#nAu2V>w&SXRWqUCTH z7A7{-j*{H&p|{t!JS0Kl-9Tf5c_^hmBd#NbMp z`sMV*!Qok0nDVpvbiiEpQxaZ#Ga-Ft&#AdF5&lmhu*!7>L8!U3Zh%ISU0hgupd|hc z*4WB;xuT_I&KB_nfP3@blDR)J%RdTj!gDx1InEv*Hui;8{HP<=q&1ul(c6K_*0T?A69#XH&CKSwCdCUa^xc`8KbCrj?-#yX2{@9*Gg&?A0RO}zY)@bt+*6WQiaujh`hYLd(&iaFy@pv zUb-o=hbtaf!M;>F~RzDGrO9>v1K3xhQn22Tm51>Gvwe4ro#fFTgx7UASn z1ldq&*KK9&Vv6s{)5LEr3q$$(=Q^0Bye>h7t#FtNM#-Wf(9twT?lN3_3rS!FxC8~< zru5h!=2K;$5R3+#oZ}_F9v+`XpM3XoCe_K;y9m>IIq;)TO(4qjU~AEIYoWLAxVgF6 zYg@mHW2m6A)Tg(XfYi*u+OGI zLkROdDAeN8C@>IPJOL{P@_91?w9dGLDYLTD~BwB2-@AfG^jr@el%tY3p{_ z7J0r2^lyy#T~Spv?i>!ivbftSk6{yJj9G|6tBF;vLj|Fw*5GuP zZ)r%MQmnQay$T)x92l|tT!e_qS4?Fbn(n&7!O{9#oaoG%GZ?o6Jvn%HngBWx@o?XQ z6oR6n3WQ5za+Z+w5RbF(b=PGyG(6`aP1L8$h1gh$l!Ffr!=Zy`MHcf7dU_%dhCt)M zi1BbYOe2$*#|;b7s$VRMP7r@{zB}a8C#Up79K>yPqJhD_`WduNZ+LEKjij2$%LkS) zeR^5B6a!ftuKdBE@+@F81sK-G7tYl9BMC&eh9k(Nz*zp~jJgct`SYZ3H-pd4XCT*e zaJ$}5*!&ceA67~;G?06@=yCsBFYD#8v1uU3*f==}07|!F>a+KuYvTCM&W-|z+|@NT zV4jKu>18(AZK?q#lO?boKyH!GvB%c(DCNw|OuVQA8zw&?vE5Gr=jZ4av5l46M*$)l zpP-6>4BSDFv#X?x~XbN@|3iZIL%FpB_%iLB(SQs%#O&9XpV__DhPmli5 z3@r95da(A6i9tU}h0%sV62LT|(54N1xK9bds`T;uhZ7YJ?!VqxWJLvh?HaN^OGgKE zzzID#NuRj5bd}prE&crY6Av)>qQN1s{7?+%uYVg8D!M6i%vK!Ngu4OmGz{*}gt*o% zes~5FG6f@JI0O;Sr7^T_u2u%vq4pqkVA@VIKsbHTy?UcyFWdN?S2znMG#=+fyzO16 z4Nt&2`<9^g@4li!-4;A;4Q*`%fFH!f#70UUQzl${j9t&K`1|+o=Kyfhp$1{38Zd&8 z*B^-S8GhE%8| z{W>0q$AjzZ%OqY%Scz9q@15-EZXZHtg$;gGHvjC_$$V25tk^w7`RU zq_XPXC1^8RAi0GZM1fqiXWxGJt;#cCHcvL#fDQhO7{;zUIp9Vf091#^?bFQo_50I+ zjvJaEya3G86y~_N58O#GNvY9>O6Up8AQrgKQ2(N0$ z_I?K{s0DV$-8m;D5?L>Gv@YlF;n6rg&T!prwWRV048@p)_Fg-mC_*6s>L?ai>|T8p z6ciKyGD%{0!bv@EaD8Vd_T)PEZad%Ft&eFQK;fx@B-jM}oYSw)B9Hv=87q=;h|EUF zPj?co35?>?$}%9(AVom~lepEbX&fOdC#O+l+Tu0b{tATIMQxDXJ{?jypLdMP0ZJkY zICEg~&(n%IUVz?AJzq}F7XpX6My=P==+Ya{&9YM8ya~nN zd?=a(>Q_5#f7xcH{ge;OBu#UV)x44u@h-Fp*8$o-S}dxb%ME%2ICTkuVbX{66;|y zcv3mw=%GO)1#3;%l8)|DUhf-03x3yS-LPT)LI91oMU+pk8uqyGe|FzsgY+E;^(7OS zBMg-Y4Im1Pe4rMN-b<}aEiYZ-fAp0KWEeBR>hU7>Oz`IKeHY@t%ByxT8^&k4JW|w0 z-(I;gRm0FNxtmlXb;}6vO8NcQ!s4#Wgpdfp+IjytuYXFI=+o=>HMS#;6O>IFQt6on zm5$hcpqvy{IM#-Qgdi+{?KlHbvyhIl{h$K9*ui2!(1*KgVav-lST}%!PVAVRoXqxi zoQ4c$*B1g~PF%@!IISjnKRh^i4?#iYng!nP+>(F?G?%zYk>gLLnb}!3K#(nv3)m4f zkV=FI8$W-K6>MSB=n*O|fyUx6dweiYrwdlD3;%H0My*jH-&S`=tW%Nmc_WX-i!-aM zypV~SA!poFQ3=hci7cE^e!a|5I5|wxii3M77BMfokxy2`2?TDjVVs{P_4v zBnF*Dt4THVWh-NF1|*DI>}BigPmrj0{LA-xggUwT`9Ics+tiR%j+YJ5c>ezM(*St@ zQviWV0B%wA75%aYU|JX{wWcxhJ$Au#z`-pse~QZ_ay0-DL^6t*x?Z#Da7?^ui*w0+ z|DNagrB2QFJ7p#v4r*sZ-Xws@D*yl(#>WZXH)c#HgrU7os038?N$9T;LUS31T?L-l zmLc-FHiCS^s&m7I#%-_!K7vaV09aoZx%a_V1Aul6u@Nn85z%oC(9Og{lRy5yZHEia zBTcfKPo-ZEFwRY^Wh=*hhk}fuQy}9&mWwueEV61Anq50)4NlX(6=229cP}r9Q)xR4 zSS*THAFftmdR67}WvBjiRK)0aOS`rfJz@=O70X(8X7-`Yo^y`)b2WCpw(E^x zTfvh4gfyT2x0XH^u-lyl(pNTDiwIEI25&C$Qd&-c@iGj)L&A1t6YCE^J*xxukZ7f~@*z(-F(Pdlq za{sp+%eGCibITXo25{pVF0g&Q8Tp9+yt$P>I_HDwzxZ7L$tHHP`j1RyuiF?tFT7-n z)W5%%r(SMni0Odg$)O#)amJW}jZ2yFmvPd{eWLEz?7in>3c&JksKomLzm*0-3NGtL zP#D7CSE`c>q3F&h@hoLQ4wogI*fp&m!NLT`9_&u&s|%9y+Cu?}ds!22q@{F~|~~BsnSdVwwY5Os zfgpgc-GSI!`THc(NcaB%?*SzI_AnJ<8#pU!^Qdxd?Ezu%bwV}?gf>hzUA-Q{>L6U4 zEn~L+5q~J!apr0~Krz(6gJS>P-FN@uK>lxjonpd_6+s9OF@G1}zp>@-fA6OM_eTHL z2L6Ba!Cd942H>QCqtzMfI!ht;L6dYADo3A9Bzhqflvs>YmTx&i*8J~mcm3xWwX;e&h`4{rt2`Fo)v~1SQCj8gx$DNXp8s%IqZQqWR>!xf@JGXMC2jf0DQZ^Frd#5Ciof45}Yy#tvK^8wFpk$J6(657-^V4{D0@?~yZg#s`K&QfFfV``lOGc#>fZt6&jLs(Uh3 zFxTPV=Uc?9SW819Y%}7QlXGc#qKI;JbrnGKO#nJG+TTd8=#{)U;ILp0RZ@B^QP3qB zLbO@UmDk;HRY<7FYMbkWaUD~^PlK14-OtphnZb1oJxif1>>$n3iE-KzYybMS5nw#f zauKj=MJD%0G2_-l?udD#)%h3Mw&Z7-AACy^t8n~D1l!Osokn1AP-9zL+r#O-3U}wl zK0NP$!`X+Ow?!W(e>Cr+-`m@Jz4!EW*;PTImtem|W$YkD?5Y!TOj-BTk32e>d+St5g`^el%HZ>EHd;74@s&o)o zEFOY3+a)s93>-@ja9LM(InPSgC|O%&0B#2!zr5rMh_r<@JM?fa5UFe&9QZ)&p~KPF z7&Aq@$$p&}Woxp2bYg*j#!y>8S-EqiMn5u_UtV1$12kb!?M_i!Tidq-7jGOM9$se< za%ATEF=W#7=}`nll{PAav(CU;I(ChC+KOc>iX)GjoipkMTnd>Kmb zBS}^XI-$<@#1_|SZorAlU~@sm5fYscpJ3VP5rmXAsGhUtyk63r-a{yRx56`p?4q!A z^9A9`u*zLxTqh~=eX`wS_uZeO!!FdJ@+CDj`MNwqCFQQRD{Dh~bY}QFs{^|Y?<}h8 zecrx(TT)z{vAOB=w6(u{ZMvkWDE-Tq+fQ4gixi&UA`T-~x^OljIr-jCw~HS=p4t7G zOA;Dt|0;Yw&*!w}aQB*&R6&0JmC6+EZuj>`1q*wd4*fo65fa_~tE&YPbB`@76i01b zSv>i!WuCeH^{1nwp-!cNYOkf1oSd8^qoSFa*{NOFhlde^M@Q8}LH=)z?^t_#8#XmH zJsTu-4zO3dGqRMLplfJ2I5w7GRO_B=d5vq>MMyv(y|*pX-ns;ET#G7{?2xjq{Ix!pP9B3atY_}(ZQtjVbREom62Ns$r7Tim^%ZP_Q*;`#lr0uLYHLY z=>(81-8_`J0tq5Hph_snj_=1*d7Drf2IPE`leIIP7Ww?4A7z(Bp*VFud8{+@b=^H2 zM5{JuVOep1t%~C-O-$MnmS4|vUF+?WejNs9Rs^NcohtSG2&*{e4{J{1rV{*>B;@u@ LRrvzh2mb#LB6Je| literal 14708 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 VAC2IHu2cv__NfA_NK)_Z{{j5Ia-IMH diff --git a/doc/salome/gui/SMESH/images/eleminfo2.png b/doc/salome/gui/SMESH/images/eleminfo2.png index 9ead335b823ad79ad2ec0fb962d99fb765c7b13f..c417b6d25f37a6a14349ba792d770376fee7f1b0 100755 GIT binary patch literal 33198 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 ReqD}`7Jn|5_eAIY{{gYxKn4H+ diff --git a/doc/salome/gui/SMESH/input/mesh_infos.doc b/doc/salome/gui/SMESH/input/mesh_infos.doc index 37a3deaf4..75b934c2e 100644 --- a/doc/salome/gui/SMESH/input/mesh_infos.doc +++ b/doc/salome/gui/SMESH/input/mesh_infos.doc @@ -53,8 +53,7 @@ the information is displayed in Python Console. \anchor mesh_element_info_anchor

Mesh Element Info

-The Mesh Element Info box gives basic information about the -type and the coordinates of the selected mesh element. +The Mesh Element Info dialog box gives basic information about the type, coordinates and connectivity of the selected mesh node or element. \n It is possible to input the Element ID or to select the Element in the Viewer. diff --git a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc index bd9fbbb10..766c6d12c 100644 --- a/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc +++ b/doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc @@ -382,4 +382,9 @@ n23_params = algo3D.Parameters() tetraN.Compute() \endcode +\n Other meshing algorithms: + +
    +
  • \subpage tui_defining_blsurf_hypotheses_page
  • +
*/ \ No newline at end of file diff --git a/resources/SalomeApp.xml b/resources/SalomeApp.xml index f2fc4e389..37f3d3ab1 100644 --- a/resources/SalomeApp.xml +++ b/resources/SalomeApp.xml @@ -68,6 +68,8 @@ + +
diff --git a/src/Controls/SMESH_Controls.cxx b/src/Controls/SMESH_Controls.cxx index e6946a84a..2ae7f399b 100644 --- a/src/Controls/SMESH_Controls.cxx +++ b/src/Controls/SMESH_Controls.cxx @@ -1955,22 +1955,22 @@ bool ElemGeomType::IsSatisfy( long theId ) case SMDSAbs_Face: if ( myGeomType == SMDSGeom_TRIANGLE ) - isOk = (!anElem->IsPoly() && aNbNode == 3); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 6 : aNbNode == 3)); else if ( myGeomType == SMDSGeom_QUADRANGLE ) - isOk = (!anElem->IsPoly() && aNbNode == 4); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 8 : aNbNode == 4)); else if ( myGeomType == SMDSGeom_POLYGON ) isOk = anElem->IsPoly(); break; case SMDSAbs_Volume: if ( myGeomType == SMDSGeom_TETRA ) - isOk = (!anElem->IsPoly() && aNbNode == 4); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 10 : aNbNode == 4)); else if ( myGeomType == SMDSGeom_PYRAMID ) - isOk = (!anElem->IsPoly() && aNbNode == 5); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 13 : aNbNode == 5)); else if ( myGeomType == SMDSGeom_PENTA ) - isOk = (!anElem->IsPoly() && aNbNode == 6); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 15 : aNbNode == 6)); else if ( myGeomType == SMDSGeom_HEXA ) - isOk = (!anElem->IsPoly() && aNbNode == 8); + isOk = (!anElem->IsPoly() && (anElem->IsQuadratic() ? aNbNode == 20 : aNbNode == 8)); else if ( myGeomType == SMDSGeom_POLYHEDRA ) isOk = anElem->IsPoly(); break; diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index 875146e23..36a44924d 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -1163,11 +1163,19 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode){ aFilter = myBaseActor->GetExtractUnstructuredGrid(); aFilter->ClearRegisteredCellsWithType(); aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); + + VTKViewer_ExtractUnstructuredGrid* aHightFilter = myHighlitableActor->GetExtractUnstructuredGrid(); + aHightFilter->ClearRegisteredCellsWithType(); + aHightFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); + if(myEntityMode & eEdges){ if (MYDEBUG) MESSAGE("EDGES"); aFilter->RegisterCellsWithType(VTK_LINE); aFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); + + aHightFilter->RegisterCellsWithType(VTK_LINE); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE); } if(myEntityMode & eFaces){ @@ -1177,6 +1185,12 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode){ aFilter->RegisterCellsWithType(VTK_QUAD); aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); + + aHightFilter->RegisterCellsWithType(VTK_TRIANGLE); + aHightFilter->RegisterCellsWithType(VTK_POLYGON); + aHightFilter->RegisterCellsWithType(VTK_QUAD); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD); } if(myEntityMode & eVolumes){ @@ -1190,6 +1204,16 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode){ aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); + + aHightFilter->RegisterCellsWithType(VTK_TETRA); + aHightFilter->RegisterCellsWithType(VTK_VOXEL); + aHightFilter->RegisterCellsWithType(VTK_HEXAHEDRON); + aHightFilter->RegisterCellsWithType(VTK_WEDGE); + aHightFilter->RegisterCellsWithType(VTK_PYRAMID); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); + aHightFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); + aHightFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); } aFilter->Update(); if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells()); diff --git a/src/SMDS/SMDSAbs_ElementType.hxx b/src/SMDS/SMDSAbs_ElementType.hxx index a76772e3f..2a5d8e3ba 100644 --- a/src/SMDS/SMDSAbs_ElementType.hxx +++ b/src/SMDS/SMDSAbs_ElementType.hxx @@ -53,8 +53,8 @@ enum SMDSAbs_GeometryType // 3D element SMDSGeom_TETRA, SMDSGeom_PYRAMID, - SMDSGeom_PENTA, SMDSGeom_HEXA, + SMDSGeom_PENTA, SMDSGeom_POLYHEDRA, }; diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index d7a64c1cd..09cf80bf9 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -4971,7 +4971,7 @@ struct SMESH_NodeSearcherImpl: public SMESH_NodeSearcher SMDS_MeshNode tgtNode( thePnt.X(), thePnt.Y(), thePnt.Z() ); list nodes; const double precision = 1e-6; - myOctreeNode->NodesAround( &tgtNode, &nodes, precision ); + //myOctreeNode->NodesAround( &tgtNode, &nodes, precision ); double minSqDist = DBL_MAX; Bnd_B3d box; diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index e485f10ff..8904fb435 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -23,7 +23,7 @@ // File : SMESHGUI.cxx // Author : Nicolas REJNERI, Open CASCADE S.A.S. // SMESH includes -// + #include "SMESHGUI.h" #include "SMESHGUI_NodesDlg.h" #include "SMESHGUI_TransparencyDlg.h" @@ -2091,9 +2091,12 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) /* Warning : however by internal mechanism all subMeshes icons are changed ! */ if ( !aHypothesis->_is_nil() ) { - SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHypothesis->GetName()); - if (aCreator) + // BUG 0020378 + //SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHypothesis->GetName()); + SMESH::HypothesisCreatorPtr aCreator = SMESH::GetHypothesisCreator(aHypothesis->GetName()); + if (aCreator) { aCreator->edit( aHypothesis.in(), anIObject->getName(), desktop() ); + } else { // report error @@ -3056,8 +3059,7 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, 0 ); createPopupItem( 701, OB, mesh, "&& isComputable" ); // COMPUTE - createPopupItem( 711, OB, mesh, "&& isComputable" ); // PRECOMPUTE - createPopupItem( 712, OB, mesh ); // EVALUATE + createPopupItem( 711, OB, mesh, "&& isComputable && isPreComputable" ); // PRECOMPUTE createPopupItem( 214, OB, mesh_group ); // UPDATE createPopupItem( 900, OB, mesh_group ); // ADV_INFO createPopupItem( 902, OB, mesh ); // STD_INFO diff --git a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx index 1852b4b61..142edf8d3 100644 --- a/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ComputeDlg.cxx @@ -1622,7 +1622,7 @@ void SMESHGUI_PrecomputeOp::stopOperation() //================================================================================ /*! - * \brief perform it's intention action: reinitialise dialog + * \brief reinitialize dialog after operaiton become active again */ //================================================================================ @@ -1633,16 +1633,48 @@ void SMESHGUI_PrecomputeOp::resumeOperation() SMESHGUI_BaseComputeOp::resumeOperation(); } +//================================================================================ +/*! + * \brief perform it's intention action: reinitialise dialog + */ +//================================================================================ + void SMESHGUI_PrecomputeOp::initDialog() { QList modes; + QMap modeMap; + _PTR(SObject) pMesh = studyDS()->FindObjectID( myIObject->getEntry() ); + getAssignedAlgos( pMesh, modeMap ); + if ( modeMap.contains( SMESH::DIM_3D ) ) + { + if ( modeMap.contains( SMESH::DIM_2D ) ) + modes.append( SMESH::DIM_2D ); + if ( modeMap.contains( SMESH::DIM_1D ) ) + modes.append( SMESH::DIM_1D ); + } + else if ( modeMap.contains( SMESH::DIM_2D ) ) + { + if ( modeMap.contains( SMESH::DIM_1D ) ) + modes.append( SMESH::DIM_1D ); + } + + myDlg->setPreviewModes( modes ); +} + +//================================================================================ +/*! + * \brief detect asigned mesh algorithms + */ +//================================================================================ + +void SMESHGUI_PrecomputeOp::getAssignedAlgos(_PTR(SObject) theMesh, + QMap& theModeMap) +{ _PTR(SObject) aHypRoot; _PTR(GenericAttribute) anAttr; int aPart = SMESH::Tag_RefOnAppliedAlgorithms; - - _PTR(SObject) pMesh = studyDS()->FindObjectID( myIObject->getEntry() ); - if ( pMesh && pMesh->FindSubObject( aPart, aHypRoot ) ) + if ( theMesh && theMesh->FindSubObject( aPart, aHypRoot ) ) { _PTR(ChildIterator) anIter = SMESH::GetActiveStudyDocument()->NewChildIterator( aHypRoot ); @@ -1660,28 +1692,22 @@ void SMESHGUI_PrecomputeOp::initDialog() CORBA::Object_var aVar = _CAST(SObject,anObj)->GetObject(); if ( CORBA::is_nil( aVar ) ) continue; - - SMESH::SMESH_Algo_var algo = SMESH::SMESH_3D_Algo::_narrow( aVar ); - if ( !algo->_is_nil() ) + + for( int dim = SMESH::DIM_1D; dim <= SMESH::DIM_3D; dim++ ) { - modeMap[ SMESH::DIM_1D ] = 0; - modeMap[ SMESH::DIM_2D ] = 0; - } - else - { - algo = SMESH::SMESH_2D_Algo::_narrow( aVar ); + SMESH::SMESH_Algo_var algo; + switch(dim) { + case SMESH::DIM_1D: algo = SMESH::SMESH_1D_Algo::_narrow( aVar ); break; + case SMESH::DIM_2D: algo = SMESH::SMESH_2D_Algo::_narrow( aVar ); break; + case SMESH::DIM_3D: algo = SMESH::SMESH_3D_Algo::_narrow( aVar ); break; + default: break; + } if ( !algo->_is_nil() ) - modeMap[ SMESH::DIM_1D ] = 0; + theModeMap[ dim ] = 0; } } } } - if ( modeMap.contains( SMESH::DIM_1D ) ) - modes.append( SMESH::DIM_1D ); - if ( modeMap.contains( SMESH::DIM_2D ) ) - modes.append( SMESH::DIM_2D ); - - myDlg->setPreviewModes( modes ); } //================================================================================ diff --git a/src/SMESHGUI/SMESHGUI_ComputeDlg.h b/src/SMESHGUI/SMESHGUI_ComputeDlg.h index c07e86746..d88731203 100644 --- a/src/SMESHGUI/SMESHGUI_ComputeDlg.h +++ b/src/SMESHGUI/SMESHGUI_ComputeDlg.h @@ -147,6 +147,12 @@ public: virtual LightApp_Dialog* dlg() const; + /** + * \brief returns map of assigned algorithms modes + */ + static void getAssignedAlgos(_PTR(SObject) theMesh, + QMap& theModeMap); + protected: virtual void startOperation(); virtual void stopOperation(); diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx index 170292e47..2ed912383 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx @@ -337,6 +337,7 @@ SMESHGUI_ExtrusionDlg::~SMESHGUI_ExtrusionDlg() void SMESHGUI_ExtrusionDlg::Init (bool ResetControls) { myBusy = false; + myIDs.clear(); LineEditElements->clear(); myNbOkElements = 0; @@ -400,6 +401,8 @@ void SMESHGUI_ExtrusionDlg::ConstructorsClicked (int constructorId) GroupArguments->setTitle(tr("EXTRUSION_1D")); if (!CheckBoxMesh->isChecked()) { + LineEditElements->clear(); + myIDs.clear(); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(EdgeSelection); } @@ -410,6 +413,8 @@ void SMESHGUI_ExtrusionDlg::ConstructorsClicked (int constructorId) GroupArguments->setTitle(tr("EXTRUSION_2D")); if (!CheckBoxMesh->isChecked()) { + LineEditElements->clear(); + myIDs.clear(); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(FaceSelection); } @@ -586,17 +591,6 @@ void SMESHGUI_ExtrusionDlg::ClickOnOk() //================================================================================= void SMESHGUI_ExtrusionDlg::ClickOnCancel() { - disconnect(mySelectionMgr, 0, this, 0); - mySelectionMgr->clearFilters(); - //mySelectionMgr->clearSelected(); - if (SMESH::GetCurrentVtkView()) { - SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters - SMESH::SetPointRepresentation(false); - SMESH::SetPickable(); - } - if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) - aViewWindow->SetSelectionMode(ActorSelection); - mySMESHGUI->ResetState(); reject(); } @@ -878,16 +872,45 @@ void SMESHGUI_ExtrusionDlg::enterEvent (QEvent*) ActivateThisDialog(); } +//================================================================================= +// function : closeEvent() +// purpose : +//================================================================================= +void SMESHGUI_ExtrusionDlg::closeEvent( QCloseEvent* ) +{ + /* same than click on cancel button */ + disconnect(mySelectionMgr, 0, this, 0); + mySelectionMgr->clearFilters(); + //mySelectionMgr->clearSelected(); + if (SMESH::GetCurrentVtkView()) { + SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters + SMESH::SetPointRepresentation(false); + SMESH::SetPickable(); + } + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + mySMESHGUI->ResetState(); +} + +void SMESHGUI_ExtrusionDlg::reject() +{ + QDialog::reject(); + close(); +} + //================================================================================= // function : onSelectMesh() // purpose : //================================================================================= void SMESHGUI_ExtrusionDlg::onSelectMesh (bool toSelectMesh) { - if (toSelectMesh) + if (toSelectMesh) { + myIDs = LineEditElements->text(); TextLabelElements->setText(tr("SMESH_NAME")); + } else TextLabelElements->setText(tr("SMESH_ID_ELEMENTS")); + myFilterBtn->setEnabled(!toSelectMesh); if (myEditCurrentArgument != LineEditElements) { @@ -910,7 +933,7 @@ void SMESHGUI_ExtrusionDlg::onSelectMesh (bool toSelectMesh) if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(EdgeSelection); } - else if (aConstructorId == 0) + else if (aConstructorId == 1) { if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(FaceSelection); @@ -922,6 +945,9 @@ void SMESHGUI_ExtrusionDlg::onSelectMesh (bool toSelectMesh) } SelectionIntoArgument(); + + if (!toSelectMesh) + LineEditElements->setText( myIDs ); } //================================================================================= diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h index 6a1b353ee..4425d29f7 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h @@ -69,9 +69,12 @@ public: SMESHGUI_ExtrusionDlg( SMESHGUI* ); ~SMESHGUI_ExtrusionDlg(); + void reject(); + private: void Init( bool = true ); void enterEvent( QEvent* ); /* mouse enter the QWidget */ + void closeEvent( QCloseEvent* ); void keyPressEvent( QKeyEvent* ); int GetConstructorId(); @@ -135,6 +138,7 @@ private: QPushButton* buttonHelp; QString myHelpFileName; + QString myIDs; QPushButton* myFilterBtn; SMESHGUI_FilterDlg* myFilterDlg; diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx index dc98cd310..01e0f8195 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx @@ -560,11 +560,11 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup, myGrpTypeGroup->button(grpType)->setChecked(true); onGrpTypeChanged(grpType); + myTypeId = aType; if ( grpType == 0 ) { myCurrentLineEdit = 0; myElements->clear(); setSelectionMode(aType); - myTypeId = aType; setShowEntityMode(); // depends on myTypeId diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index 3e3c6338f..19023d018 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -498,10 +498,10 @@ void SMESHGUI_GenericHypothesisCreator::onReject() QString SMESHGUI_GenericHypothesisCreator::helpPage() const { QString aHypType = hypType(); - QString aHelpFileName; + QString aHelpFileName = ""; if ( aHypType == "LocalLength" ) aHelpFileName = "a1d_meshing_hypo_page.html#average_length_anchor"; - if ( aHypType == "MaxLength" ) + else if ( aHypType == "MaxLength" ) aHelpFileName = "a1d_meshing_hypo_page.html#max_length_anchor"; else if ( aHypType == "Arithmetic1D") aHelpFileName = "a1d_meshing_hypo_page.html#arithmetic_1d_anchor"; @@ -528,9 +528,8 @@ QString SMESHGUI_GenericHypothesisCreator::helpPage() const else if ( aHypType == "LayerDistribution") aHelpFileName = "radial_prism_algo_page.html"; else if ( aHypType == "SegmentLengthAroundVertex") - aHelpFileName = "segments_around_vertex_algo.html"; - else - aHelpFileName = ""; + aHelpFileName = "segments_around_vertex_algo_page.html"; + return aHelpFileName; } diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index 5f3500230..50de8b762 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -22,8 +22,8 @@ // SMESH SMESHGUI : GUI for SMESH component // File : SMESHGUI_HypothesesUtils.cxx // Author : Julia DOROVSKIKH, Open CASCADE S.A.S. + // SMESH includes -// #include "SMESHGUI_HypothesesUtils.h" #include "SMESHGUI.h" @@ -82,8 +82,9 @@ namespace SMESH THypothesisDataMap myHypothesesMap; THypothesisDataMap myAlgorithmsMap; - typedef QMap THypCreatorMap; - THypCreatorMap myHypCreatorMap; + // BUG 0020378 + //typedef QMap THypCreatorMap; + //THypCreatorMap myHypCreatorMap; QList myListOfHypothesesSets; @@ -319,24 +320,26 @@ namespace SMESH return false; } - SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator(const QString& aHypType) + HypothesisCreatorPtr GetHypothesisCreator(const QString& aHypType) { if(MYDEBUG) MESSAGE("Get HypothesisCreator for " << aHypType.toLatin1().data()); SMESHGUI_GenericHypothesisCreator* aCreator = 0; // check, if creator for this hypothesis type already exists - if (myHypCreatorMap.find(aHypType) != myHypCreatorMap.end()) { - aCreator = myHypCreatorMap[aHypType]; - } - else { + // BUG 0020378 + //if (myHypCreatorMap.find(aHypType) != myHypCreatorMap.end()) { + // aCreator = myHypCreatorMap[aHypType]; + //} + //else + { // 1. Init list of available hypotheses, if needed InitAvailableHypotheses(); // 2. Get names of plugin libraries HypothesisData* aHypData = GetHypothesisData(aHypType); if (!aHypData) - return aCreator; + return HypothesisCreatorPtr(aCreator); QString aClientLibName = aHypData->ClientLibName; QString aServerLibName = aHypData->ServerLibName; @@ -376,7 +379,8 @@ namespace SMESH } else { // map hypothesis creator to a hypothesis name - myHypCreatorMap[aHypType] = aCreator; + // BUG 0020378 + //myHypCreatorMap[aHypType] = aCreator; } } } @@ -386,7 +390,7 @@ namespace SMESH } } - return aCreator; + return HypothesisCreatorPtr(aCreator); } diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.h b/src/SMESHGUI/SMESHGUI_HypothesesUtils.h index 18813f4c8..89c1335df 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.h +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.h @@ -22,7 +22,7 @@ // SMESH SMESHGUI : GUI for SMESH component // File : SMESHGUI_HypothesesUtils.h // Author : Julia DOROVSKIKH, Open CASCADE S.A.S. -// + #ifndef SMESHGUI_HYPOTHESESUTILS_H #define SMESHGUI_HYPOTHESESUTILS_H @@ -47,6 +47,9 @@ // STL includes #include +// boost includes +#include + class HypothesisData; class HypothesesSet; class SMESHGUI_GenericHypothesisCreator; @@ -55,6 +58,8 @@ class algo_error_array; namespace SMESH { + typedef boost::shared_ptr HypothesisCreatorPtr; + SMESHGUI_EXPORT void InitAvailableHypotheses(); @@ -82,12 +87,12 @@ namespace SMESH const HypothesisData* ); SMESHGUI_EXPORT - SMESHGUI_GenericHypothesisCreator* GetHypothesisCreator( const QString& ); + HypothesisCreatorPtr GetHypothesisCreator( const QString& ); SMESHGUI_EXPORT SMESH::SMESH_Hypothesis_ptr CreateHypothesis( const QString&, - const QString&, - const bool = false); + const QString&, + const bool = false ); SMESHGUI_EXPORT bool AddHypothesisOnMesh( SMESH::SMESH_Mesh_ptr, SMESH::SMESH_Hypothesis_ptr ); diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.cxx b/src/SMESHGUI/SMESHGUI_MeshOp.cxx index c617ecc79..f34871254 100644 --- a/src/SMESHGUI/SMESHGUI_MeshOp.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshOp.cxx @@ -22,8 +22,8 @@ // SMESH SMESHGUI : GUI for SMESH component // File : SMESHGUI_MeshOp.cxx // Author : Sergey LITONIN, Open CASCADE S.A.S. + // SMESH includes -// #include "SMESHGUI_MeshOp.h" #include "SMESHGUI.h" @@ -1053,7 +1053,9 @@ void SMESHGUI_MeshOp::createHypothesis (const int theDim, SMESH::CreateHypothesis(theTypeName, aHypName, false); } else { // Get hypotheses creator client (GUI) - SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(theTypeName); + // BUG 0020378 + //SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(theTypeName); + SMESH::HypothesisCreatorPtr aCreator = SMESH::GetHypothesisCreator(theTypeName); // Create hypothesis if (aCreator) { @@ -1117,7 +1119,9 @@ void SMESHGUI_MeshOp::onEditHyp( const int theHypType, const int theIndex ) if ( aHyp->_is_nil() ) return; - SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator( aHyp->GetName() ); + // BUG 0020378 + //SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHyp->GetName()); + SMESH::HypothesisCreatorPtr aCreator = SMESH::GetHypothesisCreator(aHyp->GetName()); if ( aCreator ) { // Get initial parameters @@ -1699,11 +1703,14 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_MeshOp::getAlgo( const int theDim ) SMESH::CreateHypothesis(aHypName, aHypData->Label, true); } else { // Get hypotheses creator client (GUI) - SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHypName); + // BUG 0020378 + //SMESHGUI_GenericHypothesisCreator* aCreator = SMESH::GetHypothesisCreator(aHypName); + SMESH::HypothesisCreatorPtr aCreator = SMESH::GetHypothesisCreator(aHypName); // Create algorithm - if (aCreator) + if (aCreator) { aCreator->create(true, aHypName, myDlg); + } else SMESH::CreateHypothesis(aHypName, aHypData->Label, true); } diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx index 6003776fb..e9e7fef05 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx @@ -93,7 +93,8 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule ) mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ), myVectorDefinition(NONE_SELECT), myFilterDlg( 0 ), - mySelectedObject(SMESH::SMESH_IDSource::_nil()) + mySelectedObject(SMESH::SMESH_IDSource::_nil()), + myActor(0) { mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI )); @@ -383,6 +384,7 @@ void SMESHGUI_RevolutionDlg::Init (bool ResetControls) LineEditElements->clear(); myElementsId = ""; myNbOkElements = 0; + myIDs.clear(); myActor = 0; myMesh = SMESH::SMESH_Mesh::_nil(); @@ -412,14 +414,13 @@ void SMESHGUI_RevolutionDlg::Init (bool ResetControls) //================================================================================= void SMESHGUI_RevolutionDlg::ConstructorsClicked (int constructorId) { - //disconnect(mySelectionMgr, 0, this, 0); + disconnect(mySelectionMgr, 0, this, 0); - SALOME_ListIO io; + /* SALOME_ListIO io; mySelectionMgr->selectedObjects( io ); SALOME_ListIO aList; - mySelectionMgr->setSelectedObjects( aList ); -// LineEditElements->clear(); - myNbOkElements = 0; + mySelectionMgr->setSelectedObjects( aList );*/ + buttonApply->setEnabled(false); buttonOk->setEnabled(false); mySimulation->SetVisibility(false); @@ -447,6 +448,9 @@ void SMESHGUI_RevolutionDlg::ConstructorsClicked (int constructorId) if (!CheckBoxMesh->isChecked()) { + LineEditElements->clear(); + myIDs.clear(); + myNbOkElements = 0; if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(aSelMode); } @@ -457,8 +461,8 @@ void SMESHGUI_RevolutionDlg::ConstructorsClicked (int constructorId) if (CheckBoxMesh->isChecked()) onSelectMesh(true); - //connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - mySelectionMgr->setSelectedObjects( io ); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + // mySelectionMgr->setSelectedObjects( io ); } //================================================================================= @@ -545,6 +549,7 @@ bool SMESHGUI_RevolutionDlg::ClickOnApply() } SMESH::UpdateView(); + SMESH::Update(myIO, SMESH::eDisplay); if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); @@ -572,19 +577,14 @@ void SMESHGUI_RevolutionDlg::ClickOnOk() //================================================================================= void SMESHGUI_RevolutionDlg::ClickOnCancel() { - disconnect(mySelectionMgr, 0, this, 0); - mySelectionMgr->clearFilters(); - //mySelectionMgr->clearSelected(); - if (SMESH::GetCurrentVtkView()) { - SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters - SMESH::SetPointRepresentation(false); - } - if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) - aViewWindow->SetSelectionMode(ActorSelection); - mySMESHGUI->ResetState(); reject(); } +void SMESHGUI_RevolutionDlg::reject() +{ + close(); +} + //================================================================================= // function : ClickOnHelp() // purpose : @@ -685,7 +685,6 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument() if (myBusy) return; // clear - myActor = 0; QString aString = ""; myBusy = true; @@ -708,20 +707,23 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument() return; Handle(SALOME_InteractiveObject) IO = aList.First(); - myMesh = SMESH::GetMeshByIO(IO); - if (myMesh->_is_nil()) + SMESH::SMESH_Mesh_var aMeshVar = SMESH::GetMeshByIO(IO); + if (aMeshVar->_is_nil()) return; - myActor = SMESH::FindActorByObject(myMesh); - if (!myActor) - myActor = SMESH::FindActorByEntry(IO->getEntry()); - if (!myActor) + SMESH_Actor* anActor = SMESH::FindActorByObject(aMeshVar); + if (!anActor) + anActor = SMESH::FindActorByEntry(IO->getEntry()); + if (!anActor) return; int aNbUnits = 0; if (myEditCurrentArgument == (QWidget*)LineEditElements) { myElementsId = ""; + myMesh = aMeshVar; + myActor = anActor; + myIO = IO; // MakeGroups is available if there are groups if ( myMesh->NbGroups() == 0 ) { @@ -747,7 +749,7 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument() myNbOkElements = true; } else { - SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh(); + SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh(); if (!aMesh) return; @@ -909,17 +911,16 @@ void SMESHGUI_RevolutionDlg::enterEvent (QEvent*) void SMESHGUI_RevolutionDlg::closeEvent (QCloseEvent*) { /* same than click on cancel button */ - ClickOnCancel(); -} - -//======================================================================= -// function : hideEvent() -// purpose : caused by ESC key -//======================================================================= -void SMESHGUI_RevolutionDlg::hideEvent (QHideEvent*) -{ - if (!isMinimized()) - ClickOnCancel(); + disconnect(mySelectionMgr, 0, this, 0); + mySelectionMgr->clearFilters(); + //mySelectionMgr->clearSelected(); + if (SMESH::GetCurrentVtkView()) { + SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters + SMESH::SetPointRepresentation(false); + } + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(ActorSelection); + mySMESHGUI->ResetState(); } //======================================================================= @@ -928,8 +929,10 @@ void SMESHGUI_RevolutionDlg::hideEvent (QHideEvent*) //======================================================================= void SMESHGUI_RevolutionDlg::onSelectMesh (bool toSelectMesh) { - if (toSelectMesh) + if (toSelectMesh) { + myIDs = LineEditElements->text(); TextLabelElements->setText(tr("SMESH_NAME")); + } else TextLabelElements->setText(tr("SMESH_ID_ELEMENTS")); myFilterBtn->setEnabled(!toSelectMesh); @@ -956,7 +959,7 @@ void SMESHGUI_RevolutionDlg::onSelectMesh (bool toSelectMesh) if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(EdgeSelection); } - else if (aConstructorId == 0) + else if (aConstructorId == 1) { if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(FaceSelection); @@ -969,6 +972,9 @@ void SMESHGUI_RevolutionDlg::onSelectMesh (bool toSelectMesh) } SelectionIntoArgument(); + + if (!toSelectMesh) + LineEditElements->setText( myIDs ); } //================================================================================= @@ -1118,6 +1124,8 @@ void SMESHGUI_RevolutionDlg::onSelectVectorMenu( QAction* action){ if(!action) return; + disconnect(mySelectionMgr, 0, this, 0); + switch(myMenuActions[action]) { case POINT_SELECT: SMESH::SetPointRepresentation(true); diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h index 028817e98..4d0c51693 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h @@ -29,6 +29,9 @@ // SMESH includes #include "SMESH_SMESHGUI.hxx" +// SALOME GUI includes +#include + // Qt includes #include #include @@ -70,13 +73,14 @@ public: SMESHGUI_RevolutionDlg( SMESHGUI* ); ~SMESHGUI_RevolutionDlg(); + void reject(); + private: enum {NONE_SELECT, POINT_SELECT, FACE_SELECT}; void Init( bool = true); void closeEvent( QCloseEvent* ); void enterEvent( QEvent* ); /* mouse enter the QWidget */ - void hideEvent( QHideEvent* ); /* ESC key */ void keyPressEvent( QKeyEvent* ); int GetConstructorId(); bool IsAxisOk(); @@ -90,6 +94,7 @@ private: QString myElementsId; QWidget* myEditCurrentArgument; /* Current argument */ SVTK_Selector* mySelector; + Handle(SALOME_InteractiveObject) myIO; SMESH::SMESH_IDSource_var mySelectedObject; @@ -152,6 +157,7 @@ private: QString myHelpFileName; + QString myIDs; QPushButton* myFilterBtn; SMESHGUI_FilterDlg* myFilterDlg; diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index e49ee940b..d3b80a7c4 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -29,6 +29,7 @@ #include "SMESHGUI_Utils.h" #include "SMESHGUI_VTKUtils.h" #include "SMESHGUI_GEOMGenUtils.h" +#include "SMESHGUI_ComputeDlg.h" #include #include @@ -113,6 +114,7 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const else if ( p=="controlMode" ) val = QVariant( controlMode( ind ) ); else if ( p=="displayMode" ) val = QVariant( displayMode( ind ) ); else if ( p=="isComputable" ) val = QVariant( isComputable( ind ) ); + else if ( p=="isPreComputable" ) val = QVariant( isPreComputable( ind ) ); else if ( p=="hasReference" ) val = QVariant( hasReference( ind ) ); else if ( p=="isImported" ) val = QVariant( isImported( ind ) ); else if ( p=="facesOrientationMode" ) val = QVariant( facesOrientationMode( ind ) ); @@ -384,6 +386,23 @@ QVariant SMESHGUI_Selection::isComputable( int ind ) const return QVariant( false ); } +//======================================================================= +//function : isPreComputable +//purpose : +//======================================================================= + +QVariant SMESHGUI_Selection::isPreComputable( int ind ) const +{ + if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] != "Unknown" ) + { + QMap modeMap; + _PTR(SObject) pMesh = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() ); + SMESHGUI_PrecomputeOp::getAssignedAlgos( pMesh, modeMap ); + return QVariant( modeMap.size() > 1 ); + } + return QVariant( false ); +} + //======================================================================= //function : hasReference //purpose : diff --git a/src/SMESHGUI/SMESHGUI_Selection.h b/src/SMESHGUI/SMESHGUI_Selection.h index e1b1cc2df..ce64db54a 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.h +++ b/src/SMESHGUI/SMESHGUI_Selection.h @@ -54,6 +54,7 @@ public: virtual bool isAutoColor( int ) const; virtual int numberOfNodes( int ) const; virtual QVariant isComputable( int ) const; + virtual QVariant isPreComputable( int ) const; virtual QVariant hasReference( int ) const; virtual QVariant isVisible( int ) const; diff --git a/src/SMESH_I/SMESH_DumpPython.cxx b/src/SMESH_I/SMESH_DumpPython.cxx index e67e4a355..07ab0f695 100644 --- a/src/SMESH_I/SMESH_DumpPython.cxx +++ b/src/SMESH_I/SMESH_DumpPython.cxx @@ -130,6 +130,26 @@ namespace SMESH return *this; } + TPythonDump& + TPythonDump:: + operator<<(const SMESH::GeometryType& theArg) + { + myStream<<"SMESH."; + switch(theArg){ + case Geom_POINT: myStream<<"Geom_POINT"; break; + case Geom_EDGE: myStream<<"Geom_EDGE"; break; + case Geom_TRIANGLE: myStream<<"Geom_TRIANGLE"; break; + case Geom_QUADRANGLE: myStream<<"Geom_QUADRANGLE"; break; + case Geom_POLYGON: myStream<<"Geom_POLYGON"; break; + case Geom_TETRA: myStream<<"Geom_TETRA"; break; + case Geom_PYRAMID: myStream<<"Geom_PYRAMID"; break; + case Geom_HEXA: myStream<<"Geom_HEXA"; break; + case Geom_PENTA: myStream<<"Geom_PENTA"; break; + case Geom_POLYHEDRA: myStream<<"Geom_POLYHEDRA"; break; + } + return *this; + } + template void DumpArray(const TArray& theArray, std::ostringstream & theStream) { @@ -225,9 +245,11 @@ namespace SMESH case FT_Taper: myStream<< "aTaper"; break; case FT_Skew: myStream<< "aSkew"; break; case FT_Area: myStream<< "aArea"; break; + case FT_Volume3D: myStream<< "aVolume3D"; break; case FT_FreeBorders: myStream<< "aFreeBorders"; break; case FT_FreeEdges: myStream<< "aFreeEdges"; break; case FT_FreeNodes: myStream<< "aFreeNodes"; break; + case FT_FreeFaces: myStream<< "aFreeFaces"; break; case FT_MultiConnection: myStream<< "aMultiConnection"; break; case FT_MultiConnection2D:myStream<< "aMultiConnection2D";break; case FT_Length: myStream<< "aLength"; break; @@ -239,13 +261,17 @@ namespace SMESH case FT_LyingOnGeom: myStream<< "aLyingOnGeom"; break; case FT_RangeOfIds: myStream<< "aRangeOfIds"; break; case FT_BadOrientedVolume:myStream<< "aBadOrientedVolume";break; + case FT_LinearOrQuadratic:myStream<< "aLinearOrQuadratic";break; + case FT_GroupColor: myStream<< "aGroupColor"; break; + case FT_ElemGeomType: myStream<< "anElemGeomType"; break; case FT_LessThan: myStream<< "aLessThan"; break; case FT_MoreThan: myStream<< "aMoreThan"; break; case FT_EqualTo: myStream<< "anEqualTo"; break; case FT_LogicalNOT: myStream<< "aLogicalNOT"; break; case FT_LogicalAND: myStream<< "aLogicalAND"; break; case FT_LogicalOR: myStream<< "aLogicalOR"; break; - case FT_Undefined: myStream<< "anUndefined"; break; + case FT_Undefined: + default: myStream<< "anUndefined"; break; } myStream< 4 ) aNbNode /= 2; // do not take into account additional middle nodes - SMDS_MeshNode* node1 = (SMDS_MeshNode*)face->GetNode( 1 ); - for ( int nIndx = 1; nIndx <= aNbNode; nIndx++ ) + SMDS_MeshNode* node1 = (SMDS_MeshNode*)face->GetNode( 0 ); + for ( int nIndx = 0; nIndx < aNbNode; nIndx++ ) { - SMDS_MeshNode* node2 = (SMDS_MeshNode*)face->GetNode( nIndx < aNbNode ? nIndx+1 : 1 ); + SMDS_MeshNode* node2 = (SMDS_MeshNode*)face->GetNode( nIndx+1 < aNbNode ? nIndx+1 : 0 ); if ( setOfEdge.insert( SMESH_TLink ( node1, node2 ) ).second ) { listOfElemType.push_back( SMDSAbs_Edge ); @@ -3840,7 +3840,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, int smID = smIDs[ i ]; if ( smID == 0 ) continue; const SMDS_MeshElement* elem = *iE; - if( smID >= maxID ) { + if( smID > maxID ) { // corresponding subshape no longer exists: maybe geom group has been edited if ( myNewMeshImpl->HasShapeToMesh() ) mySMESHDSMesh->RemoveElement( elem ); diff --git a/src/SMESH_I/SMESH_PythonDump.hxx b/src/SMESH_I/SMESH_PythonDump.hxx index 1ea9f59ff..bee3cbb83 100644 --- a/src/SMESH_I/SMESH_PythonDump.hxx +++ b/src/SMESH_I/SMESH_PythonDump.hxx @@ -63,7 +63,7 @@ public: * \retval TCollection_AsciiString - The file name */ static const char* SmeshpyName() { return "smesh"; } - static const char* GenName() { return "smesh.smesh"; } + static const char* GenName() { return "smesh"; } }; namespace SMESH @@ -108,6 +108,9 @@ namespace SMESH TPythonDump& operator<<(const SMESH::ElementType& theArg); + TPythonDump& + operator<<(const SMESH::GeometryType& theArg); + TPythonDump& operator<<(const SMESH::long_array& theArg); diff --git a/src/SMESH_SWIG/SMESH_BuildCompound.py b/src/SMESH_SWIG/SMESH_BuildCompound.py index 87c7e47ca..843071ed1 100644 --- a/src/SMESH_SWIG/SMESH_BuildCompound.py +++ b/src/SMESH_SWIG/SMESH_BuildCompound.py @@ -93,6 +93,6 @@ Compound1 = smesh.smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 0, smesh.SetName(Compound1, 'Compound_with_RenamedGrps_and_MergeElems') # create a compound of two meshes with uniting groups with the same names and # creating groups of all elements -Compound2 = smesh.smesh.ConcatenateWithGroups([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 1, 0, 1e-05) +Compound2 = smesh.smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()], 1, 0, 1e-05, True) smesh.SetName(Compound2, 'Compound_with_UniteGrps_and_GrpsOfAllElems') #end diff --git a/src/SMESH_SWIG/smeshDC.py b/src/SMESH_SWIG/smeshDC.py index 07a467e1c..d3ece5045 100644 --- a/src/SMESH_SWIG/smeshDC.py +++ b/src/SMESH_SWIG/smeshDC.py @@ -557,24 +557,6 @@ class smeshDC(SMESH._objref_SMESH_Gen): aMesh = Mesh(self, self.geompyD, aSmeshMesh) return aMesh - ## Concatenate the given meshes into one mesh. - # @return an instance of Mesh class - # @param meshes the meshes to combine into one mesh - # @param uniteIdenticalGroups if true, groups with same names are united, else they are renamed - # @param mergeNodesAndElements if true, equal nodes and elements aremerged - # @param mergeTolerance tolerance for merging nodes - # @param allGroups forces creation of groups of all elements - def Concatenate( self, meshes, uniteIdenticalGroups, - mergeNodesAndElements = False, mergeTolerance = 1e-5, allGroups = False): - if allGroups: - aSmeshMesh = SMESH._objref_SMESH_Gen.ConcatenateWithGroups( - self,meshes,uniteIdenticalGroups,mergeNodesAndElements,mergeTolerance) - else: - aSmeshMesh = SMESH._objref_SMESH_Gen.Concatenate( - self,meshes,uniteIdenticalGroups,mergeNodesAndElements,mergeTolerance) - aMesh = Mesh(self, self.geompyD, aSmeshMesh) - return aMesh - ## From SMESH_Gen interface # @return the list of integer values # @ingroup l1_auxiliary diff --git a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx index ffdc4a7f1..481d34e02 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_LayerDistributionParamWdg.cxx @@ -198,8 +198,9 @@ void StdMeshersGUI_LayerDistributionParamWdg::onEdit() return; CORBA::String_var hypType = myHyp->GetName(); - SMESHGUI_GenericHypothesisCreator* - editor = SMESH::GetHypothesisCreator( hypType.in() ); + // BUG 0020378 + //SMESHGUI_GenericHypothesisCreator* editor = SMESH::GetHypothesisCreator(hypType.in()); + SMESH::HypothesisCreatorPtr editor = SMESH::GetHypothesisCreator(hypType.in()); if ( !editor ) return; if ( myDlg ) myDlg->hide();