From 913aaa14de1406e2640ada90bbce495c95106966 Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 10 Feb 2017 21:20:38 +0300 Subject: [PATCH] Fix crash of SALOME_TESTS/Grids/smesh/bugs_13/N9 (SMDS_VolumeTool.cxx) Add "Show IDs" check box to Mesh Information dlg Avoid warning in Choose Entity dialog when no entities are selected, disable [OK] button instead --- doc/salome/gui/SMESH/images/eleminfo1.png | Bin 22050 -> 20085 bytes doc/salome/gui/SMESH/images/eleminfo2.png | Bin 32039 -> 29562 bytes doc/salome/gui/SMESH/input/mesh_infos.doc | 3 + src/SMDS/SMDS_VolumeTool.cxx | 2 + src/SMESHGUI/SMESHGUI.cxx | 3 +- src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx | 31 ++++--- src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h | 2 + src/SMESHGUI/SMESHGUI_IdPreview.h | 8 ++ src/SMESHGUI/SMESHGUI_MeshInfo.cxx | 85 ++++++++++++++----- src/SMESHGUI/SMESHGUI_MeshInfo.h | 30 ++++--- src/SMESHGUI/SMESHGUI_Selection.cxx | 46 +++++++--- src/SMESHGUI/SMESHGUI_Selection.h | 4 +- src/SMESHGUI/SMESH_msg_en.ts | 4 + src/SMESHUtils/SMESH_MeshAlgos.cxx | 5 +- src/SMESH_SWIG/smeshBuilder.py | 4 +- src/StdMeshers/StdMeshers_ViscousLayers.cxx | 41 ++++++++- 16 files changed, 202 insertions(+), 66 deletions(-) mode change 100755 => 100644 doc/salome/gui/SMESH/images/eleminfo1.png mode change 100755 => 100644 doc/salome/gui/SMESH/images/eleminfo2.png diff --git a/doc/salome/gui/SMESH/images/eleminfo1.png b/doc/salome/gui/SMESH/images/eleminfo1.png old mode 100755 new mode 100644 index 74c76db637d8c3ee849b2936b9bb4d0ac53f1980..9f9e03a41be2ff845a6f61b37aa2e984873a12a5 GIT binary patch literal 20085 zcmeIaby$>bw>~_`qdXRff~b^%bSNoEC`t?=-K9u(cNu_!gdiXiBi-Gt(heaEAuZh? zIW)g@Kl^$2`yTuE?(g`%Klkx%4?SSUnS1X0y4E_^d7f+C^H%P?I zmYZieCN*U`%+#pDSi>x^f-d^z=i64S8~gRxhJ4~X^>^0YglX^z!}hbooi+CUeE5zy zuGC2p8lJN#R7?B7Nfatn>p}nub>&Yn6zbgTn<&&NQBo9&FyT*>&kOlKP+uM}ogK z)`0WvjaN&ZbgdS=i&d-J^TQbLh1x>HIGu|=RX*(rF5|0#m9~?WxjI!dEpFPX38KDJ zD*2zKBA8R)Gt7pQ3)<+z+fJYEU|-HPh@|7=<1vxf!&nd8eEXccOma^%)J1pc_O6%j z^Pgk^6i2m;Mf?vRs=S(>F$$BRm*}6?Y%{t|_t9}?leW@kEpa+5gI{>G)puliV$#sg zUdh0Ktl7ls{Zh&GA~?*A0k16%jqU;RkrInDjg)-3TEq+G<@Y4|r^42!v1woIrXANC zY|#^8ro`ysPO78|iS_;yoq?WoV|g~`Vno*lOU$WyuD%HjRI2sZJ*s+a5ZOkTR3H7$ zv+eFDcRFvj-_<`Q0>0pSAMRgToXBX!%TE?s6?-5z+z)csn{ieserA> zliyBCQ%!a7Qrg?_)VUgbvcb8-(8z+(|eP*Z@n<&?U!*gCnlHD$XzhR-=gO!c{-Q)o3^#ZcPCrQEDP(-7~~ZZwp(87Vh- znbcN8r)o=nzL3D|_tRU{0v-+Bs>vVobUiI|SI)BLNkzOWHpLl#;@Rgp`625wvr3lf z&^9$Mo@>9CpP5qriAt7Af1l+L+eXU$#2Ga+J-Z$WhMtv@)=G>AIZ7ZZEBBGBqr&ejb3XXt@(uCTXdWE z%@8O*zF%`NarP6RcWv$HMvzW_czCCT)z7?qonRedHtnCy3$x!Je$7-Y`9x#c_ice= z%W|kJOLmCC!8=IPZK}&?Z!YOrV=yr>k$WmSA(Q%IW~p3pe~1W8k?BaptCw5b-<-)V z?)e})?X-F{$SHE;#zU1%)uMx5ilctLg@LRPv)+s>-J1P{yt5RA<&85kGKyUjwW{G; zK?2T4B3|GAC~>dOd2+a&rR!#!DgN$UktRFucIlG?51G6gUM)f*p`4wadxsuNMD6iB zk1jDhDXhShm#fF^?0z(o@fN#8|Kx)~Uqm`KESW_iD(E<^mRe(ew!(ID^FfV#oZwOT zg5PVC;n%05N4=vRCud}rhbxrw>V(zq*A1pn@>!`5c3?#Eg5#>vjg~L8N8j&Uu$?ct zP4ftSEGsN0b$ms7QC)U0esHl#wZoO|=SrMdAdlm^0g~9GqobL6#{{y`+~~l|9HoPP zQ$rsPX5VcqXm+Y#RV_b+8hi;FDzna7s}Gr5s<5B$iyOkTSj^_j%LulZ^<*ZUzQkbK z*EX-ZTo*5xdr5>AmmQ7cvD}lv9-zb178)s17v|nS(kwAc2|oJ$D#dbeGumvRuwvW0 zOszA7Iti_mI;btDtsT3)bR>1DDWre%Di<3M-BHZWv6^mlF68%OOrCRwQTw$|yq@Bb z_=iSxehuEw-gkH8In75W)GK!%>pHHie|Qpm?^&;~+a{x{t80d33~#05VySot&24LI z>k>@+Yn9wb48*Ox z*bepAiO%;~*9{zrUgdNNt*)-_Np$6k+u!Kqj=Jx#6B|9%0 z(^z1*apP;MKzNyPD(0P+Q$r9h#-mVSc~IyE+U&UDl4_JZ35`JV(c#_*|EW{N`EJ^7 zmZjh4{))C$$MCEChno5RE|mV#Z7agp?&^QMTwBy)SIw?>R2zSl^Ji*v<%E}*6kPwp z{Cq}Q{6Z#e$f0wF{kI16H6gR)U@C#nt0c6_9%17@nnK*4ShIi3vzz{I`ZdN{qlUti zH)gB7zl!yR`}&R?Z@FAr%Pl_RCYaiK>6<5j8= zMy83cd;aShjNWJK8iz*yHNQl(N<85`>TSvy9qzRx5X3uXUR5yt#u^yZ|yL{jKr^yc+IH8c~LmWO}NM z>qD+EZQ(dh*RVFDjOph&y-8};Jl3OaD~@u}oM?YyYSnuGYm0MTNuLBw^)I^@9*VzD z$3`j2pocCV>t(AeuxT6wAMG5fd3x`J4wkqJ_D*x|@n;>rbN9;bh!>8~kM4<-&BIJt z8e${6(qe?WcI}OeO(#!9FewQr?Q;|f50s+;K8il|udFq1y|q2dY?9ymHrCf!a9cPzk@*qB<1`4&fuaWP#-=8-?hhH)?tQL^VzJ7ESB^qW zWs!7+`P%LJV13oT+~phgKO3D(GL-12=k|cCU`IxDxKiuF7Eh4!zXCe@isf7(s=1J# zto`(9ZQ?c`{??<`6%&?x+3vr{ntIJ;;Db$VUJmzS9^K_-*Ddg1(A>)wZj0OMQVqR& zy!<@4OPj9M{KafzaQBrvC$^vCf_PhEt?P!;h~os9U+DcoY{(gHU}xXoU*()}X7w1A zPZ-ldhWB`mu_kR{86FvNoJhl{+-@Zb9=|^G$8N;$$tx#A6U0e`K8|zp>IpCRq}Z1R z5KyI#r*kQ_Sh^EANOMOW@~-w3RiB0&9OwOUyzDChU|BqG^Cl)|O%b=7Hq`cH;2 zp(Jb?Rxcyc;Z;2cCSJ&1HLWvNRoUPJT}HXJEr5?M0Rf)htylFxYL8`N;-vr9YWlK+ z!wAaf_#QVI3AI4-!LA^gVp;qOlZIlL!~BHU;n7fDKs8l@z>OR8!lQY~b%Uj*Irvc> zBOZ=2-`7H=TouEmL5eHGc+^ul;wlffxgR%ncgR$5m)VqaJzQPg-LXSMTGQX7)HWhR zT8FCgiD?C5pNU9>9DS~r2)>uuW>M7dB(7cklxJjl)MG>Tuw71LBhqrQ$8E|UI ziUnSF)Q>=|U-N%GF~DUUA%gM0CcGI+Hy@?v)#XD#$o=#S>Tqu{FD#jek}tA#M8~)@ zUb-xA7DJg8r57D(HiVh&%+m2^AXl$V9CV&b-xwc{EVZBQ$PmM-o?%pbm?slswN>8I zBDuBHD>2QitT^dU+xvdCt_l_O@@f50{l7s1GKUtW@+%pZJah-a0 zxH+j%QK4Zy(|}g$DYc|Lw3{%lxno!;9z+wfyet#KHWYn@ci#7jxZ_x@rC0J z$B$n(IvJt(NQ6-Jy)(@-S?|f<#b2VN%%TmU>0;riNk%KJ2(qs&_0kv@!W#Ah8&N5< z8X@bHy;(Gn?L6kGMtJI6OJ61GIv3T&0EPDok@!Ac&n*=s3i|uiYHMrPx3~MU@@kpU z%o>>=ZgNPZ>V1xhp_hwKS4-`b7ZrV}GE{rG&uuX$PY(6D-v2zVY|PWxbl+-B7-|6* zvvzsD-+5}Yt#X|zC)1rb@0oRYAILebCWJG{8M)ubJ;yo?+U;^DRZ92wazk*E$k5uC z*V4FYBw5e-#fg)2=#`ZfCa>U-kWNLB*5eBW{y%@JpFDYTexfn(+C7`kr$}gG^`oJD z*hc<&y_uhmEO7sFe@dXUurj~Z@IAOd*(eUZzG-Zf{KS7asxv+lkjI`+yh4 zt{X;MO9Na(izj^AY$O>YLHUgZ;m@3p`4(%WWU; z>KGL%*Nwk&OY|fvF&$wZf-}@A#YN)DmQ|cp_g#%zo(dh96j_X!;A%bH*|bV!`t$Vq z3k|W#HExbs+bUVA8L*VhR{kP%5PdSu-hyTwCJ91gODbvXaS@?Y7q!KMsf1ZqMTOn+ z6_S*P>IQ1G_^fr+at2E*^LQz~vkXO3FN)~qJ?uPi=5?F?PVTtaCtKyT+K$Uj?L)c>lLoT<8UAVF&f0 zQm=#na+VB(48^d4?7$}f!4a8CmX|m4EYgI?*))}*9=Lv5mato!RU{Z5p%O@xl^nSc zC*=NQjF#VFc11cIUE3I#<*{qW?5@{AyfGu`YIvXEm(}d=0y)AHE7&#LCvi9OEErJ3 z?K_d@{xXiJprpJbx`*;&?O-QBaW+gV{Xh6p|EzLLN8^X} z{>1a&BUpGj^omUse0y@tS2@At;;!Vr1O$ieRVw+&om$U%EU*tzhK`RZHt|42sbAVTyG65boZ6 z7FB^1dX&%M^k9M9K8c5Bj#f!`Y`?C`_%~n2xgXDJcDIMjAY+T9l^Pn)B3VLA%b!@# z85G`Xpt!0l6sL0;bv?#zIfxhPh7y45)Z!uw2?+_0#m@)ks-90v+J;^8vP4suGc~G$ zotAdGIgdLxW_xq%!_TnlDJFj+#5@C8<5wK>P0)w*}@-mSEo4)`9$5j8LHNK|xlf3;4_i$=)p zoo<|vwDHl7P7JSS;v@fHgJ+8bsE$zcN4CE|rAAFX&QIL7PO6(d1C;OGeI<)@8mz*+pb!r8*$Cs(Dn8{^ji3!nzt)|iQ!%U0uSxN z6h~dUX35iNnN*AZk(?o=PlAq_^s@1ZN@-6_j~4BVMi@}nji(0XKO|2y24wU;4>1MQ zwj3;fxXR`|mRa-Q#fdOFXJ_ZzbaX#^j3p)CjCy;gT%4HX(cih#*w|z?QW>ILBp$@t z>$3CvnM$^L*ZPJuN9|{PB%4ZO068~!Qf@N?2^tF&sL%~NOGc;F0qHTX{WzmL!t%q@%yWD;5N9qkBjnH{P@zXT4qIEvp?#-U^sjQm!&3`qrUsX ztS>t{V^3dSe{(Bd=o;U%#6A3?d9;Ypl6?R;kU;FWy3Z;V+s~>+!)N{ytk_<`d3o-c z%q$HE*iE^+y1QmL#SLl}8oZYciQ~7g^gBucM|-ntrM}~}QpYSzW}Z69bkJE8i3ucUGuyHkU;J+J#Yb1j zJzcGnW}cl8)e>j7jO4uCr;$#wKnjlBk}Q!Hm#=hKLR2W_Pa!h%{*33VfDA39+QKLQ zwx|CI1OLXw{<=atI#%kKRa5l`>beS>W@)jxH}TaA2L*jO)Lm@X`S|z_*RdR#${Arr z(geQ@^ehJS@xs&>1J-P9gXb=X4vgr42SN25MfL4Qf(dU7@}B5+PD&-G51Sl0ffV1C zmC1and>>gA-=$PSA9pj)>uDOUoK*(bYICySc_gp#liP>V_iIk2X3K??UOV|tIe)N&1e`WKbGdi$2iJ^a?a1DUmNdb5uE+m^_718>S&9;&rzVCD)c z(&+!-5~-dnNm^n#ByO&n*Y)e`E7s*KwLFEPQcLAz$@k|l&w~k2t^6}GcUz~~fEyj` zZe$H9>1-jXH+ZnhmeeR6nf^pFeT7X&)u>3r`)D^Ue(5KgoJB>UIXKSo=)g5=I!zXn zaE6>EOJ$K)zBk@mN@*<^(g2QqpNa+(~bwC(x#I2?|U$Ygh)g|$=9!=oBf$M+QRob}ehm{w&rP5RgaD0EM3 zE$G?9i^q~h(wr>-GWebCUQ?ZJMCjAjClZwc{gYXxdfvOTT6I4YH@xE`1}yrLTa}dg z=pOr%P%AGFmT(&`oK?lnVx#0Fh-noOhpdO<$UKH~>m<~3sb(+1%(vn6CQCnOaoTb_ zyY^wpzc*&dypCd5);4fWK{2e@<5h3ktRq4a#_QL=%*)+V(!|A0W@=a1WvUmvL|8VE zXFy;@a%NR|@JiUQei)H7dt*8C(dvp%oQ`Gz&$)Jw!;fP}3mO|5riNQdselUJII6o( zC>>QHx4SW`CNED85L};W+1+5fzP47-HdJ@)Gt(J!%bG(@h|3_9#$q$Scm36=?WnS- zG{19Rn&)XOEKG-L_RT%lTg82YuCdK`Snki~Fqj4t$G3YB`jPC5_s8T7N3C^lqn6 z-h5tlHiWXGg?8-AtX@f5LA3Krc3}K)B9*QisVZ9H&6j7n}1pYs@Z zRC9;4?|+Z%oz=5Yk!f?RDKaTg(Q<3PeCblSJ%faeJmY9|*pbNY2hAY_-U*3FGOcR% z1U#nPYwkD(^sd|5+Gc9y)zkS1erM1L9?YkAis}_|z(vv6_=+Mt)^T1oE zuQKPvca;wVtU~g6@g4y?Em*7;kR5QZKip4i9x7FN`t}Y3*!n$pC8+UUmS$tczAou6Kb@62SYc^>%oZEHpNt&hRSF5LCGc#k5rxJn0AQ4bG4 zYOA42mGiV7KiC^@tK^E_juYOB8QG6W1~CwXxr2U1bY6M-djxeM@lOe8TWw-F>M})r z*E`rx`hG3COeVG^@C<12Z z6Hd-NW%(D-zKVD4BOQS*V}aZBzSAo1hBKz}Vt6ZEc5V#5-Xj0xdP*9ND zW9PTb7N35@pRynCJoMb#L_6xRsAm88#A8lIOPd!j|$R8M;memVGF$z{rb;?>UOGg?RFYk#Ao9?PPy|>BstvK1rT14xs+5Wu zN^B>^(cNHOSVflsJ(lV9kL@oqmUCSCsQ{~~S?5&)an+L|O@S~EShx>#;FoKKZ7yWx zeYfDv0_$dBs4Nd`WRu?hSblptbU3|iSWJv`Z9VFGpxqMr>g;S9IK!>=_4RgsJ5c?N z1uk4VPb;i#U3XaO8Q9}(dX!rmp0Q1dSueNcAU8No zCJQ|os(cR(RP%Ie6l;>ZB6oh zXQqpOx%JRej|KyMwj<7vcWn2>1ndX2*|pf;<5$P@!Zx@1^|W%Y2yXs(qm=rq=K&Zp(9XXNxNZ}+~ zJ*&K>PdS5y`1D^19fOo`DgATH6F&CS1M-4i2jw89GQ)05f3L59lp+AWzp)gFfj+BbS-n@}fWIwReI!*o?Q~b#-;Z2fyo;X(uNq zfnvC|aBk{oMj3Kl`|VNhcmB+oGllO28=~obs_B|Vsxj2?0S929MQo1E@tWqa!0~YA za>WL%7td4O`?3CU^VBUlEYt+Dix(4r{E!c#5gIhxDQGzS4d=?p$S8TZkMEZgIi!O= z|LNl7edZ*BPXBXP69INCN2@iUZk1&Sqsq0)hyC%lZr)Tp$GS2&dEzH{p|_w|BXdhbq0T@&%DhQ4M392N~Z6f+St%Tyx2xv_x*hbX7C1oTnl zjpgqjn3AB$b@J4yOwd)=`0bM6nddmKlRmKx{&+*oi$+Rb3D<6X+ue=#h$bb4( zxh^NcdaPE!VJ@_GZ-Hf`-1bozYkhahZMayG!%Zd7fx6@4#)I6}g7f)N>$y)ia#{}6!lJz()Rq(pd9I=us{UH>wIGs}{imAd| zgHxBwtj8iDI)F>X>71cs)2URB;kE4Uh`SFDQ4|f)`n**4Y#yvuZv+$53TKy%d1(=m z&^S1uT?diM03>-48W3t=p2X=8qbMFT8gG3bIdD} z#)hZLVR8ZJP2n_{6%t<;VF`XE{@KXtwmo3n3r@BW3|fRGg96QZU@gbVpQam_){;Q^aQ(ZXsJ28nt<>@X zBhdFqu?%PaKGc`1llA%Yb?EyuadRtIIj=f7p;6iwoH0gSU{R<5aR7*xh5lvNc)dRl z&=pVoh;s)!o7`ZvYf-7yNT&Nrg#?78JhKdwerkPBViDbmO#0gQ|4 zR5~CJrvZhQy4RDTp$nqrft8gNv;1eDgM))uos0jm+5qJ8zy}mSq9a$$WAfw6!0l;M z`fzj@I89j)+x%r$Q0#BH8ZDr3g&~&B+e-`rRUZU9p}4?hUE{U5a_cNX%SF+xwOm_=aL zC`<-!sSNb6#9{#6InXegATD|03$-gJSqK$>A|RG2G;a_zL0AzSUJ*Jh5Y5<&M7PWE zg{aV|a%DzhY5`?%1D@Dl6LiU!J$whJ3Q(nhlL)R%1JK=UiC)`0XPRW@ag*k)mFZczfsK#f!=X`eM*xU}0uvZk!Cm_kVs! z2>KbaL#jLOYbmhlYkXD~xTBLOwQ0qKE0-_R%gMII_KwY#Y^otQkZn3-8wSsU#FFSEf|2GJIN45lRJx_HY%uJK5Lk=1v6 zIChM{)nK`85^T4zDXoxO@nu%^&%jsaVGtqGN7~IVYVfMw+C*b-nYA9w|44yPUqLqy z&_;tps*hD!-kxbJV6@i$Tu{Flx|SS~*4VEF$RX=HuO0 z6d*4Xlaf@xj?bFDxc}su33~PrDksn-MOdcI-C4|HK{E{ww$pKa3XKSo#>wzwDv&PF z)0smEBUC#wDynP{cWVA5w56uUCmuXe2dY?-KdyU$&)NCVdPKr(^T(^J9Ofb4?7|>? zfTYudO$oc}>f$mt9i>;wf8n-9?dorUgAOMlL@vZ=4OZRF*>1QF95rnE9NXOsMOlg| zQf5P?IS3X*lg9-7G~^+OTm#(X$jAr}Xe?N5X{g5CW8TN@8aI6ezXBl%14f$)T7n5+ z7?_U=pcB{DPBfSCcPv)=miW6LYI>e9(0YYh$W2+uZ8M)0_ZQb6l^e=`_KGe8nmtZK zNLovW8Fj|TnO&hT?F88cRiMypV{PqyvO^u04MY)VO#8xMNmiSYeP)ysZqfSJmlsG+ z@-mxdGMvCdD+8w37K{4gSYf~@rHF_$moGdSgf_rq_#mX5ii(Q%B%{N*&Cxj`K)RrXrvxGrpk?+J zC2IYTD0ewh{z>3dh-5+}GE&uc*Y7$B`V9Nx$==@rWv5(j^Gv7KLj#B@-35ZFs|Tfz z&VcbYS$~LHr|bC7!3F?-N#PHa&L#q#a6ED{GCB?p4!CGD{K`mVX{YeM4Ak6+w6rwf z^_lRHRr-+XzLQKsLISgT{^!AB(|8R{#AcYYB986K<-Zrgk=P3hBigRF>Y?G^r9 z;WFZM_4Vawkzc)vDCZ0)ACaYAhkK@@)vkyNoN0?rf-+{Dfq6kllZ9OX zd!r2@Y2sZbPD8a#2WJ4;ycEmBy{*648H}iX`SJkh6}LoLBY8I94*>yzoxQyhQ1+?W zS!2^G{HXiwL%sm{`Rr(n; zkFVe?q`X?W=f8}cK7D$y$T-9gLXae5YPk~g|%_1E8YXfn>p&fDg^GF90XcFfM4{&q&0L(pj$GZQ#Psy&ILFT{4xE{ z%tcDG2_MYZrhb&o&=CgtUuD*lo&aKQVceepG`xW3Biu&ix>Ps#kqCOiHfKW0 z?ailQSdlfwr7I*MfsPDv#4@FR{ZH!iG2U}q1AFkS-p>>Q1z|AKFolrt$loXfb6Yyn z1Psy2*?4z{iH6glF+_TsMK;>F!27{m<2JdD&hRtVT+A<_)#@X-zHz0Co>GQhDRcE! zB%7A%SqgS#AnoLolq`@PSUb3Q9Qau8Cx-YvJUzkTxQk7xokEJaYz!}g@62ksu}FmO zTmR6R0OV20P)vb&yIb=epO+LA6p&B`fX=;mTT0y%8<2BISK@W(2EimZ216|YrNvg| zQp@USYiby>i*`ggvxpbllJZ#%hlYfNAjYTRce1Qf2^!bO01Dkeg|cVL%zC9dMUJZx z4Ka)H&UDAGM3zE9V*$4ovM5{EeVNB|t&xJikUE!+l~sn6lr%ENbfGWD-1O|3Gu_Z= z$b(T}6G&JvhRh=O-miE(+klnhhT(!B>ifLC!irUHq1@S=n*MBu2F1iEjYo_EUxq8} zdoz?6;OcHSM(wey=RW{_p#1)(SoYDN9&iS*m!U?;vW*%GK>7ADHJz7o#gt3=zcay4C66ml#yZxwF1%v!C%20?!Q5 z->`LaMV-P*P;!)d#28OhV5H-i{*^u1r0#G2{`~`nj_A<)_|+&nvH!}Ka=;nDK1XID z5E0_yl6;R)a?jpvBfQkGxOU3;0SKPG-}NM1H94*kLPW-LEA=EIAD|Hp(YLi+Hinpl z;2Ei5ggyU!_~m4UGNYfbFT%9}1_DAt%4FatfE5N%AbwsLM0*anVCXR5ZpIp&a0#0; zG1g|Fc{MBSQa})}hFs+|cyqKfNdj&K|480DDFKn1X--W&a6B&0L(6Ipf`kVIyNvbX z2zw4T4GIMK=WeStcqAFI2Mu2bk`fcM<740#@Het91QApr*Q8>7QUzR_4hY+^=uJvC+Ucfg(e-O zC)m?A(d|Y&W<8Q%io#0wAxbLL^2D!u?CyBezj=!PrjYlM2im#TUoH%!g<&+qp))_1 z_tC)_$SbgKyO+$t2>&GHUOK&QW){`SsYzSNZfmm*RK>g{^oFYC*~_f*Kx0&(FA77V zn(;Bf@l1Apk7p{T1R!bwW@pl>f)PUCxxbBAIsk2o9%m)iv0E3TYF`Y0pB`2E1NC4+ z2-H4Rz<=KK^tVtN2pznmdu}=6ezs1P>cfW*q5dhFn4~+cjxH~Sp~_KFhmxm4;{kEa z7yELMqEHNrgADO_A8x_$%ZX4dX+Sv(A{D|M7W>%98RZ|qUO&nG(}(3cnQgyR^@rtu z5#%rMKt6W)o_*o(-gA0~$ZD`t|MD-?sZnYV8I2x6>2U<`!FD3YKR7&$Q&$*`xaZ=$ zE+XUM;lXXxc7FAYEUBNBbZf`Q>4g8s$IE8zJ7ggk5pI)5`^l)7;`sth2dr{ z6vdYy-T{!AF$+WMS;7OwuVd8Jpb(R`fZ+C0N zv@8^?o}UHJRlpMuy2>Sv@mPQRx4*y&jo`wUFJBfzdjdi<6LDujr`XyVx++0hL9)=H z!D~1}LL%q9tKS&V3gd==@;%^a*(W|mvHQrk`GIe?2<#<{u4b!G3(C}oaF&;BP|!dc zIRb$|OjA(5V5>b~hYha36(X1@9mNi!LKaDW$jODJu=Q+k5*ERn3WIsfj&#VotHLuN zvAWK3R6{qC_+F(Tiv6X0TPny>$JNm|{KdGXw+!(=Ab-ffJE^dr%>>T}-UIy#Sl~#r z{@gf1@)I^EVZVj8dX$j)hf3$w6|gyq!A4lzoX4%>@%=C^%Hwt5BCWL^qC@9JcI(a^ zd69$PuSP+S$FfsAU~lyKH83?ko&c0`bii=R75LpA^iz~9rH=~E3i}aUXZx?70}>Lh zykyX*$m6vfOb449v91tI2CE3My?icBx5^Jg2NG5)Sax)kB4Sk6|Fp~!pO>gwtr z4XbhRQS(83qw)p%joCEeE?93(xObusbU4!DfT$8icl*IadOM!dzHNkjD9TNv)8`9rchzsVECQ~ z5H3f%Lh;$NXR6q$3d3sYe&|ksXJB@Gbf_9a`_FnAoyT(m#bA^1pKUY%cg=PVSR=$L zfWj%FbO>gXv|^>+y`d~M4(tIyk8~KY>NMaCl3~-?ci*$=X~t}>f&En22IRC3;d!9= zh491n9`1ywsXI|;#L!^2;Gl-W=G}l^D+uPAgLN#VO>spCOaP&~A!u)>c)#t&;kcBx zZf`pR^Os@cKx4f2GLTj#SYhoTR6|6LTvGeaqgrU9&WfRt1`5dUR39IdY@C1!WN=&0 zq@K(8Nf;FzU^#^)Lt+@3RiRJ=lZt$UbRcDAW2`dKvXCn!FlAe_*)5Gsh04%}!{o9_#XLP5 zXxu0|c)Lt@oOIUP4LZ}6;fiZuyiCh*vjM#>8aCMg@~<_+pz8)5usX020S;qXEoo8L z&9!;Sin72ygqE?!r{xSCMK;xJ^~$mIA2sgIF|};BaV&9{>9D`J<7+|p)VXu9 zr%yasX^Q^qPTIRs=*5jN6sq|aIO%u4fXNf3AJ0|s?ddF0sMj&QiJ)`0az6OoR=iUw>a^I8ovqE#n9uM8A1)PD*ic8X_o zJvKe>6t5ZAx-TW&-ONC}M1|5Oh>}}2fCBFZUflAiwf+UL#aq{fwcS?rX8OK%5PTuO z5a84e#Z#HX)QJ0y3&bvTm3v`+7u^jIYFQc0P)6)TjLP-Fra4VO#{*^(ldm+~PkPt@ zw-LdemF(%DdNSgXPTRjWKCu)uX^xj8wTSM^vG1n*Y{2kW{qai%xt+TGciE44>+MXX zs1B(&A)Wd4mRe<*?s*^hVt=iOrxUc8W~tTYU1rlVDvyn+syZrLxy9o)_w`*=iNrG$ zcy{F;XR3akBmFY+?>i3vxDESXtlNKAS^xKC|IO{||3lX;aP2$>z98Tj`Cfp3y&M03 z=;i$HCH%jdWdAoKtpEHXhW{UL{qN)D5zkPSEmxx7#;ds;e_{(ssU!F(3Fdpa|HyiI z{f`m>0kpXigLrsp&-*h{FLx9P^e(hs5o36s)z!wm%snZSno*LJ!xdNHEuX^?_w^dN zxqS9GnxHDd0$xBW*Ph0pz)NA#j; zWJwiF1$sC`tYjnJNIlN>Scov0UkR}Gc=qe*aIvBEIZ9qZBVC(^mS+XO)$DvbTQEDB zdxhbO=^eMGuNkSvQ+ug9W3 B$qpaSg|+nPpw~j#B_7z;Jd5s$mB8S+{X~%14j1B zov?I+U^5=0j!)#r2W_}5c0#i!o%inbZobn_*x8#QNmOi2Tw1+R#(GmKMJ`yUVV*E} zes1nf_QYqJcfrBIZ|)V18a|Mnze>bm-Pz*#Dmt0n z#L01K)0L+>Hq84PJhN1r^aS^6J_;-^xg0X&HOdBBy}KkQcz32PZYZrIA(4srz%)0^ z(3hrPZ)KP?E-r2j<`tV{rLBVBNVUcA<>eptzLZRUPd>u6M`@zxiWgC?O;*Nn*@dtf zYka_NxeFeQ`0Mw2;+x+^Q#9m1V`zA{VchuLdW?d^8=nw=my~qc?lO4DAy{wxgbTC; z7d7qqn@JjK?MuW2w=IufU-D~S8nB=E+M6|*=k>c^D6cHYY?Z4PZ#R^_tzNVD^@_;& z=0|Q*JHd@Mk;X&3$c0N!j)U&mf46S3?>sce6tJicUrLMTrJw1jx#P866y#f*mmnNO zBF4PuZ2p;s^JgXWvYJ)&ssx(eQB!brV6K|$9d;5l_a;eDS#-8g2kZ;S^(?M+$n`f@ z;L`9K&ZFY;`a3i)~7w2c*}|#hOCd(+Tytw zBH6W6=l1QksDrZS#&VA8jF&OHG8l=~Yw#b}^p4h}CcsJxB4=3%ZVaR#8I&^{xkX%R ztn9jFDiotIt;FLIcI4Tw<2g;+G!bL{c0eyyYu4>nAr*r&3xEB_)2-3%+F8OJN)y*s z*}%#2$>2aNM-{8^k&7H=dNDU<%y{YiS&D`?F`v6K92wP(PTu_ z7>zgNh)xyKZzKfH5#i?Ku^o+Z9es(_Z)%^GoQ@4{?A zydy;U_R0uldwY9VZ|_#dS~HcsjDbeqhOiq)6n5H+R^IFIe8sU7@qIN+_m_Z`tC+zt zuMQ?iqw3wJMceO8Y3J_MS_viALDa9z8w1$`w4&GpMfL_&3S4nbm3^_ZEbi}d-K3a85S}^8Fq3iN2TieyzVyspOTKL!cIn?jaxiutgzGJp(-PwxC^4BObZsv;` zrgCPh5%Q{alzw;hK6|a>2HRcp?ImGHLygN(x=yYRj*gAAdY&o=za>P1?>=wtOPP_1 zTorD-8M4Tf7JnJe!XnnT>1u(^*OxncJpG$XtMTM46Wb}+iAXK0AYVS#rHnLZ%R_T& z3)jw3p|v3l<{HfG2dsiilCaw98Ngkb=-%{TpVDF^Qw85d?L2yQwlkL8($dnlnHo#9 zeBy0GOYNZDd~HcKs$q0xms7ZtAiqMqAMh0ETcDPir=Dn~6@op&R-0y|0E zkR)-_N88ECSuNgv3vbxqwKkkw^T{HkJ`2npGO7%rq(0a;Ge9ef!JgHaiCKE@ZJ+0T zHTz!YnKPcmPpb6nzOcRYWNdX&i`P;xdp~PFO_*;L_r=Wd$(jv5)UAVC6~`6)W**1a zSLgiY?v~)MSFKzjI!tqyU&&J9k8h0Itk~n4@aAqYk6YQUa_1+yiF^AO`S(;xY^uq2 zwvY!H$Ms!y|31>C%q&*M)T6Dbsi`klalb<#$MVPB<>jRAHH(0RO^&s5hAE2n4$jUJ z?)&Lb;ds)Fl{w@()$7J;SEvybnjE(8 zn0Jj|6peZFrcP&HWKFkOVy*9ZMPQSe@{2}V@H-|3k`U`y&jqh$%i&@sf&2GiR6mX< zbE&0oRG3*)OQPxZ+T;Qp&Np5m&dgnW1vp@m*eVllwA1tW)aUWdc+TZRL40o-%BJ{d ziG8zAr>D{%pKoN3{nmX))mu9@+rf0=$A#^aW4UqnPkFKfvApYf=8FPL=ZB1WCDb+1 jcqS!W8tRUZ9)Zj{QSB|yZ(Q)baVWIdlgGKDPhb8Ytw*kV literal 22050 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 literal 32039 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%0D0ttB^4M6aV5Z>}6ym$=GVfU1QI=Ilf`zH+ zlk$*Dy~s4cd)hiW)1OMBqAm&re>EL|F2 zgK#+|f5c|y27>U9w>RIZ%x%rKXU<+iM1RsN&VrAC`NhtD=T_c%L{D(PX_Y|b;@q4i zX=vlD3s5D_HcwrIH4oSkthZk}xw(~q`vW-0!4pxbz;H`aUjfL7p+0U8eGoRw^;J3m z5v1~JWT>Q%%tuO0wdx!~W(}%~!+@O_507I*F#Z)%#ryYPHBSCLIGCNA`_U=f_9S(* z7UoCVTU95~pk(~~#*&%h#nI7GsK|yjUYpq|0XKMf&cHc`ayPTE5FZ!Erg>5PJo2wQ zAILdCX;vI~5UEdL;FYBkp<22EPc%2r0H+U@Tww&d_d%w??}5|4ytEXi7D{`DNoOq5`kbX6nyr>}S=8lfVh3a~n)L4nxeWnL z2kBg%`i+o~5NLFlX|V_X`Sb9jN4PIShUDLq@9WdTL|0df+q~nqAhJ<>GvTWIKcSD8 z#$|hede8vI$H$@coSvShlbjqMgNoGZ?VNXl{P-~3;}RX6xK-yBp~Mp)?Jr-xgf?;4 zt2Jom!sS~FP`oC}9aEwu`T4=V-Uh0HWwr1s;F^A}H5`OsiSam#C~!q+DPX7r^cw6L z9Lxa?At$GGdUNAyd1WOn^$P=7Ej{U}sSh0-B4dW3rUV}C*#`vFfhkPY!)h?e02BTt zz@Q|uB}F&SU@FKitgNhnOgb_=e0TQ^BJjzz<S*B^Kkx7vB5&XvNM?;6^vqiN`eCS^U%%4EoBkKvxuo9idv+>$Xn?+W zMv3OVt+^vdLZ!x9+K-?$wYIJ>Z+qR^dPmkwRu+fDVW2)R(60$6$N_uz3!+2uU!NXL zoV|`!j^k#=G)K~hqaN|U18Z0JyzxT*!s6n)*jNuJR?nWDf3JG|_mrxNO83MipT9i# z6esFtmX^;@EbuWyU!eDx1fD$DIAtUal`Gf?*q$S)n?lG4Lz}zSrRq3V^#D-9$>A=P zd06By-w26`HPzLTgoLt4Q=2_lcaThjOdFxl_jf2Le9xXe1EB^<aj{!tHIBv=*yNB3;p>9 zfJd8bh|bi4DSx``r;`%5KIP_WKzq~BxWUDB?Iy9H_vREn z*n7o8UTM>b!j3c-o<&5cW~&Lqm^_O#t->{|birr7<-Vl#D;?q|fq`dAG1qGY&&EN; zV`5_B=2rV044x984m27KY$;tKe3(-VM)CDEWtd@ma6=)ZRj6OO)SV_bQ-_&ZLv9jz z!w>^0^WU0Lf^~{s_!dGe!O+#%_|%a2sXX2uK(s8CcN#`U5xZ)Erw3LTlmsUwVuntX zuvgc*?dw;Wk_E7xkZFJZJcLrTJ7B_!0V=_yYdTV9ZzqHeULn&Uol~X< zpfO#hF4b9c*qUjB=?zN}z`0JLu^?1rSJw{?Q&6t{{E7ZocmMfQ1!#C0+Z`MPlU4UE z6=JS1w$&+$Eho3eTrYHdLPB~V(U|G%0%_x<6ABGW&MnH1^N#QAnl5K-dATRJkl@dO zhUn+#r^~6Gn7@(T2dI+_4eH<1BN>EDU7Ah20}o(2!CSXRfx7^rhw~KR=Lgd0^eQEV z@i4o4tjMBWthf+ND~!66lM~V-G?JiqAehdL)<=m*lqa#@DP@PCF-?DCvX8!wxbHZ;s0t7o4N&TcfxV26@ z3%`(Qd}hrTXn18xf~{R4DIk3Vcn!EL-S5nB5J9KiYRrXZ`>OjwU;<6g%-jOi1=3M# zd*B4z5G#yUte)jUg^y%>{_F(ux5{-_;KXCA#0Ug`Xur}$@83HM7oaU&Aq{Px1$!D~ zzRKz`9E8kVw}TKD^5-Xo`|9dJnKOv)yy%f3w}GzjvaEy%gq{pQw|7G&GxpA2^n8yn z(V30avG29xHlDixn}eB8Obe@ZY-|i{B3Q}b6M|GYJ~!R<`R zL`)SB%c7W>nE^nEiHU(xve9vV;hc5Sj`eymO58QB6&fmdn}fMGp09j$+!B($q@kf9 zufx{-{X0l1d(e=fsX|B<#6<&3%Q=W1UcYJLE9K$gflbP#1fF_>0tbuEbQ+k9goFe{ z8uzY#pJ^oBsr?lStex<0+nYfX}QkZgHFi}7$3t6E!=L^#e zq@3NoJxK3R=<~~^r4Jax>etrSKLj8eo~I5Hh*5&5t7VG^^8~)%_@=MRb5`OoN!(bgpCepQcwdwb7_m#mf-~^Br zX(CtXC4IDVo@3Aog|!(O86u*hpvINz|9Hp?5p1-aT>hs|3&&S64&QrwW0;VRj_aUa zW77ydJ(s$ioorwQ!fgY^OMRsK23+`UKKfwCp z<;&yxv!i;jkqIwz;O&7v#iJ#U#$K(ys!GiN7EjEo7f42HeFuOi%k?C}sB2XK!v))YZXmxVLTPvuqx32G7kx`vaEHA}v6PE+1-;gg((gE41Ets5-Tega0PThI zm8}7=;4xpjaP9Xj9Uag9G~m{pY)r}lMWn4H`KP}c1+Kfw%YO$-i^l~w6~HN4;VQ)q zpVcW4KA?>}Jx_9pD?!YCDS}QI8ve~2H$LYqLPSFRGjU}o({t#xAPtk_@p-Ha0!Adq zn_OIcp-j!Gi=v>=f(4|ZafyazVRBM-ED^dGL@Ht6;n3BkVPHToX+7+YK_kVI;W2ZCtZ3Kd%FG z0N|(vu@V)xA^3f^j*b&OJ^b!VeZY?FsQrkpU8>*)Na+s-3AjMP<=7ldf%t{ga7 z2C{Uj6-dZGqS!^qcyu4K$ye&M5|fY^l|Fu8Xm};24YUhexR2oYC`=rrMzc}sKWLSE zv^GX@D;Zegc&)FO!TWRuL@P?YwQ)X;j&h4vmmUo&WeJjEODswxL_+EO=MNuPD^uU- z-@k~E#|e@6vLg~w13nxsb4Fnyk2yg|jT$;XIuzA2FrcHUNhjgu1Yufb<#6?FSY0C{ zBW9+Ez5oSD#DWCCwpvBzb-*Pcuv|EA2D}HYkQzOplta0N3}y#(oRcHsGSm7|Gh5#3 zJZ!NDrY^4y^8tq!K%(ypG**R7djCEwJRFLdyw!K?<$ULuF@@X!08TKiAwYq*s#9Rd zck32~p~<-Me|@Sf^E&uFpbi0K1z>Pf`xEL0en?HHTz)hgGNw%n7JP}{(P}yLf#BG^ z8%sDc^FUQ&eM4$M@PiN&urXkUuM_NpgV4tF%?AUrWd#X)ER(uFWTU)#mU z#x_6Xg^UC1pn)&tE+Tci`|z0r+>yp+K(-AgNPJ0x5Q&d6Y0<*2b1FPMg-}yrtpXr= z783GGVItsY6{IFi)urql0z?rm#g;V*`wWiEJp#BF4^mEp&@e|_5);pdNPv5Rs~>8k z-UisiNMhXiZsl6}mSjsS8Od&{M zpDE3CAt3TjQhbkQD4n9;-8h9T%6r#TRT<`coRZ4SQRrDxxK6@Sw6PV%dVxtjcl=FU zgdTHYv5joY)px4@78BsNITjAV^+|`C{XvFLPZfCWhE!1vYog&$H>?<*Q+o z4zRPa0hpq!=Y64-m^aZOgdsaxQ9XC`2|8H|l^s36*HjIF9Z;*JsHpeXAe^F2YQ!l) zexsWstfA+cmAL;-tO1;+YABx&(@&E0?f>=bzP1`}5CVqWr7(IR>jypij5|ZH26JI; zm?wl+mizNTZyd%-9KI7c2xigV9hCgHcdt-JpZ?>wmGFr|B%H%M&8sdrMmG|gC^o18 zPXq0=`VV`MF){nhugfqUf|5z$jdP_=V5NdGF8ohG5|+=bqsIlHJI3&BwWko5*GTE{ z$BDKHGMu0qG?br$Ave&=g7Jw(u0%p!AhdCFd%N+bW`z_e3(R!t`wI{zVRUarLw2J}P#+)**dFxU2RaH3Ev=~iFo0D-$hl=?Ts8bYzYTQ* zSO8!`J9~SeC9vVJGHI7RzD)SP++hv$^YEhJ#qR zyFimAj)>%3TU*Pp`0<7#gZ@6z+}k&ABz$%jKq-WChmAsjAt}UJZKHzr0dXQXu;PJq7(JoQms`yWHm@Fl`<@pcE<_5@>F3 zUk1e(?5x?@Svp|{P+&4eu#B3o#9*AoL5X-*gIYnM38c;D=G!nefuO>_RPu1g**<#I)7J-O<-0jQfKh!(B0COtc3vT&*w0p@hKh>wFrXk(0i^eu zsPk`1GKXA{4Cuz)ZbDp#C-kgpvuZjz)XY$KZ|g&jnGB6iI7uI^51eRfQZO+|X?g_j z#)PRbbf`9T2Uy_b)Y{cGQQ-`_3|J+bt*=-W@)nnuSut?yT;%XM||?r_t`(aGxT|0NQo)&G9Jae;zB zLpLf_c<6o@h4UXz$2{i4~8vPCE?%zl>xLgSP96qC%6PGSpI7Sx0{OU`XI^* z4R;E7C3y2pZFM_4JKYmuJ@IQ`(-%doHGJCE3V;I{!ehigX!)sxA8Kml* z)YR0xyraUv6XFqw%s>SAQ+_^V&miDJLrJM1<#6Acr_TZTAhu>6@Df-X#_*5I%C?|= zgFu-f^&6WXoKG1?x1^w&D3vOPGwbTc8yY5oM!;-`Rng-b5hm`r1|YuUoj_<`BG#pH z`4~OmO@9&gdd|$4D=I32ECM0ASBuD@`?|Un5cz=(1%3xEdh5iHRXd;W+DqTRLj#Be zTmdjTsJ~p321E|>H0;I#08F}0k;)8r6FLguvRNk)SiI0?T0GLOfuO0MZr{XJ%z|XOdQ~3K zl%gUVz_*>{Hy|WEJOR4q?d1irGB|v_ywoRd6C%)9w_wQb5d6K;(o$p^&{2R-o?h7q zk{4lNM5LtLTwEQkt?KIP8@szr9t{RrFl}l<0o6_<)@F?Wst4=H7Y6r(VpM@~tq*vl z4cB2HGx%{V!QlnnuLF#Q&Q3^$Y`|w^`o9U1kb}Z+QM?FOz=VO^h?;|$Jeww-Ea-k0 zY5C>BsB3PvgykE&ZmjfuFNk|?>31G9G%!end3hnYHUQ;TVR>b=Qh=9NeM<_qRP;{up5QzfqFANZwDB3pUjcya!8rkg6{S~f^vG9cz!k(-@CT5zT`AHK zyo(Cal>hbLkmv=fS~L=}5wA}~L`2Nt|GTh&Am+XKP3MxQr)LdS2{^L=41zTx5#2&= z1|fsHpnD*gXMmfa@U+K8yf&D)50@z@DWcy3;U+`>4|u^g%y!yo>)oJ3SUvXauDcG7K+i1+Me*q71+i1!6fO!4L(m&??w_5e$--d3GuMY@I3% zHGDohPSn8;t+;+!oSp3LJk+e85Z78ElSn(C@U#&j)%Mu z@&4zOniZ0$M{vzs;Fdt$1%W~0;a7z05vWPnEoa$`l~n2w;J20{sXMXveJE(+DQQ5(CchrkUAUC_za2b59#u+uHabbNt(_ ztf=TmXJ_-dZnP1Qrn#9J!wM(Zj!^pL3t7Fp?@rq*IyERo6clbS0kO(Ojy1>xfO0Mi zSgIr@!4-p|0bpbFF{oxR9d09yDqXJe^KU^MMloN~|J=nO@K7nJsi&DY!M`*!n+Aq^ zce*u*A!u|-)vSt1IO)wBc@!o)o9%!E-!YX*{l$M~0jB3aKfi=R1&Q;3P4V$#rOPbQ z!ORfp^Hm%p87-|o0NDjb)z>e70O$(BtNKf-3#Cv4{r6UAqgo)Qs1F-m<4gixtU?)r zYW=q}0wTgp$ye!EXa6fCC%#J<}yYT*9I#d`};wr39~+0sFcve0=nq zH`wjm;I6()NB~K43Qy93AL1c|w3{WT-b8wvP z2cE^n$Fskc!}TF7QS(uk)>Zbfho==}guG{ytXiqVKC)mK&X(jK#tC?oHxc{X0{8f5 zL;viYX>_ChnMM0(VIu&iO131^k^pfl6xJxQWpA)&Wmp~F4C1k%I3iUV{&Flnkt*Ar zO=KEsBUlpHi&DUNZA!%Fda_bH_CR#AV!284=&jQJF$h4ye%IQXnn#Zw0niPJ=$rCh zNV)4P6DOMnpCNfppT}|WuKcVxFRUTxj{s?)Q<<06)JQ-a@A%jcw(Qy3E`y-UjDgY( zK@Myt9H@3~?hRO&U^HE!aLR*>j4UNvsx6cd5dEQ?U@g7t(0Q0U0ua$0E_F4TwiH|P zHk!+wt*uCAcwPa!t~_&c=o6YTuIHM?0H4nRke_$$ojTQ+{vRmd?cDZ3Fy&_zeP?Gr zbZcK91)b;>QuOoo+1K@QTV6G!M;Gr91JH!U{$~{|IB>8%3n85R58%EjJeJiz1_Cjt zHqP3^EiD9e9N)Kt9OU08&?9yzD5^$qZd5I+ML{KoAf3-Q4B^!4c;|l(=mSviSg!T| zKctOKiBvj0m=d5qLJo<%W-JTduA2nh;5%|a73yz6Qo1DU{TT-NpSL=75henna&Zr5 zkrXyR(Zs9n6Fqz-hS)L0@&Y>{BORUWw6unQ^fG`g;x)abGW0S^v?!`@*boMK%_|76 zw@LZZy}tADx#ll&t9rkKBIs$*q5h=|p53g3-why;J=ud;4S{LXZrKa^PfHYEety0r z1n5FNZ?GbRbMo@SU%mwJkscSP)8eyGx_DVB(&&9yvd9srW4O4u;bCEr$FZ@nxc0Zz zEG;yg_;q|da=GsbDYhM36x$qM!Or*(fl`{spkcrsC9~oo$XkHK1&P_Fy~xEGW{g^r zm>?`1p+tL-ycrqqseKxLzXm&8rx7PpO=oMvHV>K$e@o$)!^R}gIw30sFh4)vUPa|) z_vLou=OUDn&U=v1?TY7n+F=QZ2M-?~*luBm5x~}Gp`m9xz4!RVkunaT6s#o-xj`c2 z@#Ea|^r;u*Y~Tq1G*wW*=Z2hE6>LO>N$>4_0GtBkT70@P9X1|tB_KFxCv*gf0f7FH z<)iGW%yKFMeEWBE8kq*~^14~u;&^yPKuD+`od2E-CFl*F&d!8LB!Ih^4a2sZQ(8O2 zS_4OaH_afB4jW$7^dTw+DJjV9T_Goj>V_Wvx7`6MV{dGPczy7+!nc!Mb=>GnG>_$^6 z=AFY`+h8VG(`0CX=oPIXqB8FsAGrQ1_d> zxP2Dn|GD}36bbK3bR%yz$qBU0n;fR=MRfNqzkgh~pSS$qce)S_LofVSUTVGCmLOd0welV)K1nb+)LC#$uZq zBP}i9OXiRwX0w1YjZ6ar44%lcHOY@18(jkf)_B#knEM}Y8`b&II$}4#!ETj44_Qc3 z!VQ&Qg-zRlC1%D$7B-$BBuV2{JZ#if&_{13Mo`ydl#7 z#>P{i!X^vuq{YY|#iW_*3l4^j!7KOqP0hohE0tbKxQ9;4C zoUnPu!_5sy`z=1c7g13V9|T$g2)yFv{e8>|C{=REh|7XuOwWPRlF*A$WQ*T%68r@V z`~T9CknH)bu z?t^Pq4m1NkQv2l9@3eCz8QWO7Z5f#w1M)2<2%W4l45hZ402I0I9VoDfkeW!uKNa>u zys9z=^XT?ghWFKbE$0xDmqE-gc&9q;RRY0o*=bN*d<@?&-A-nWW5d`nE{Oy@|!H)BhXoal|UF5 z@>~QY85wNbefa!ow zx46E3cC=nUKQ{-?Xbfe}_6>U>wzTep4^CcKHFSRsHo?J$L)|L3k0QeC=4U>5Q(DV- z(iAC@zSq4+uvK^%Sy-KaD%(#+VPxy*D$DM6 z%6?^SqFx$}B#w_3WxQ{NJq@DtTz9Z%KvDc zCM5%o2YY%T^A)EdB@xsdl%+^#f9-y2BRoAL9|HU!N$~MG?=Jm@#n*QN+b) zpsRo_OooP@3ZERzcYjn!;nmd<=n-A>tSciGJ1a5R7L~ zxHLroPM^$m(ETG*K?8d#cr5P;h4*bzQbeB8;wR6Gphh+{q~+w?X{`%9I|Y#e>HqnD z33xUuux$VgBosFC2o4uSH5BqQKezSzR{=Lb z{9VFy<($*`Z7_skWdduUUklZrk2=SBuy?XQ0ZV#)@Qa+GAkmQYA*^%qO!NZgWxoI9ZmBKT2WP#*^Ndd>hhpC~V1ZBhlzZK5$iQTyI7?=TY)u%KhZg{P# z)7vuk)a6{JAm?GX1qj*EsL4l{*sjw&PLd`H^_DP}kqL^7BrV0o%UogXAj{T=z2l~& zp&&vsQd7r4nTXlNk4ivqa!W`Ug8B*jXGcb=i;6Vd>eJ^9v4Q?Y#v3xqpw3^n_ho}J z2=+L5qah($)bxlT59WELi^Gq7TFD{l%gxT7Q&2Eo<$e?W{MZ--6ji|eSy5S`S0EAq z2W<6r1N$GAGN=W`)sp8Be;C0?acmhFpzh~}z3oqi+=RQQ<&zMIh1=M|VktCM?r3uU zDF~`hP|)k||C5}_EhxB+v@kd4rFmHgm}-zDb%gnUDl8uLUbsOov7{qmXb0R#GPEwq zJjfOj426(m6BMLmcAIV{Df<7~`|@xo-@fmWmXSh4CDKG%NQ#gpObZGrrEE#bzDD+? zG)l=@+1G?NDNBTiEF)`{ls!w4B_T|fc|KFW=Y8+@eV*qy-oM}DopZ{b z_xsr{-?b&VL#nyQmH7S}+~mvHG?CE8!1G&cQXSS-tf67IVtT{Nm9{&m)7KamBD&-} z)TtOrp_<3ZbiUw`_{*MS|4Z9k^8UeUIbov}T6ZHOk;P&RPQ=1u1EMU%W|#jRG4S4% zfg5jfFq%V{7_cRwSHKIgFCERzPSD;>)r%XRJUM|XhOrkHzM``7=8YRGod>{Do<6-* zM*AE%zDt)<&_Tlvf_b)#*06yldo>z7`N`0_k`fY5F^>hNtJCD+fnA2o${dVTxJ#En z1tOrM94kFi{VRY8C<%av03HL8dN}RnzfNC+Ke#K9RB*P!KO6IZR8$mxH)=2dtz!3I zD|1pmTpQSnr4J$%zy?oEneRr7Z0PpLz8kOhBTfS1y29oxv})K9s#yXAliRTv@_7B^ zmtX(V-%sIa%fIpz#V#PAx)=hMOP2=hifGG8STKhw2JtZq^74Q+{!L4m$}Qz%*^sOT z^&q)@iQj(HByjdhDc`zDsPg}hXBa(era$cS*1Ok9m zaZ~{RIyw^4(_{aFW(9~tFNOoRuy_h;pC|>>zF~|FpkWCQ%}zx zeJUShB2eJL^V-Bl@!KbATh5xC@XHoXDNlJizs^+7#Jbg3h#8tj(?$at_BWRH_3aBRe%=i{UvW42Xrxam3U(23d2_KveANIr0j5>gx9XVA8 zPMxZ9dPt79SL0y_82^#WV5owa181$oD8s*KZ$H?cn*m8JkReB-!XEE_`*RH*_=OW2 zG#K@p;S6)=Jp@qL)KvI=_|7Oc9V*xSofF;{!Cb4Vs$!FX(?S9CS+Wy*ee>qTXU|4p zv&IT=xpIZOL(L^&&6L!s%52XgO=x{7A&}+)8ulD7S<&r7e={zNn`rj_B#3T=9`yah zg#k2dmd@n*LaFr z;Qs3g6qB%J!PkI+DC+htN(cl^=pWFz;_Lxr?Wv!nf8x&{2i-C!8NUnWAN&xFer>=5 zL}pEtgb~;RoOJ&FL^2i21FAJ>{V-qyET4cJRY+KvlZ+)P!>5Th0(Afb3~C#;V8*#O zZ5SKdn8J6! zGm@k9!b@l{W&xnVh6lXuGb7OLQ>>hen4%&bgE;1=vS%stZ`>wt&?4~drdhPDrOST0 z76NnzFb6=<8`jQJdIiJOi{1kV-a2cOm+1=i*kloa))5r{C4G5K=P)(~G zIl{&-I|U&!rU`C?B$N*Xk${Vw4`=wOso`E386*V);pZ1iJFC zcfAvpYj0pELFMQ#X7|K>`w6HoO45R%9YsYTlCTJUeoyVt7Rs;P1R)=;AMi+qVHxtW z30HZLA{#fxpr|4&AT@ObwF$)uGb!9lL=w~nLAP%+sK~9)>IW`w(}*s+CnZFQRq&8P zy9`#K*Om$6CVD!C%(>VPG+fhRCY(Vx%LgQ+M|*ngfxZI-z#TR6rulK~h3&b78zed% zT2K%L9&pd74>Tf!V9!lPsH2zH0?sv}SzbN(X6-MGiq7P94C~Uli{NfL7q;{oQn2F{jGh#bpM%0w^(hdwanv06D21 zGD$r1KsFVhFa7D$0{9>qDHc!P@h}(op&#L!*oF^fwCh*d+An{Uk^dg zgn%8q=iQjB(u!d*gyqRay)XL|2!ypk-y#&QyiyZ3d;IzJP$hmn%z{nIS!eS6o2e z6k17oM>umJAxnp z6%MS>_vxPBGe7L`cY^bUuG-Yp8Okk9n=W*(Sl}Zg*6~`Uui8hkQMt$;GmLg$2J}#UiqJ7AD1}7J&GQeI-7o742ns5K2NDPC6;weGju;hbASt1L=kMs~ z?1WlR7Ki~>a(jCW(euc<$vE5Gn;6~&DWF4?`x^m5Ka5D7cO%b~-!EjkI|agi6fyX05h- zsw;#JbJd^v10pGEBj%Q8J(gG$fCtSO)LOJ#YV70DhS1umFJ~`a6l7eK!+FfT`L#aP zHT^JJs!Y7XbVcES`g4QxIeYr(a|49%E$So533Ij^1|PWjk=$umkoI{85=j9)ZCQr_ zu??}IkPa0VcC@sdMze9bAkWL$O);@dJlfW*J?IqmBGFsdFXHI-Ta~!jeGwxKt*vG^ zH0KR-3ieCz4L7B+lPGFcb+`y53Qz-<-DrNNWA{6PqQa-g0wt0R#LnD^Th~1H9@5WJ zU4vq8F9hX)8^of3MQ5nl;;1uDG(eVn>9>gi5Q6=51(=3L2qz@k+pzZX(JZSurjR>0 zeik*^9eiBEU%uQ!`wsKZ%T2`-X96Vz)_LOY%MK2&!9*Yf6mUnS`keE3BVWxc z=b|N`LVcE;+y@~m5Yz*6BNCy*sxlf?D1KQmSvnkphzxKoIQ!E&Iu)i_s0}+_8+IHh zcqKrndK6^g9xrrHi!)Pj~P;V3Fvs+lb>LFojp%N=B9 zGcM1Orc?J#mRvpO_dRl~*&KbHJ0OeXBY_|z8yXvVWu45|jXfXr7gLdnsQv}vqm&dV zX8}obtu))AyT;N`9-XlA;iiR&`-X=w;5h-WsS{|!tgS~ds6lTJLIOG;lNOPoAEwAi z!UD$WcuY+#3gsLpG|onoMrneUtz=MY^5M|JDp-BtiFARN*0xg?+ylBQ2%^D7`swb> zjCF#HQkxnHo7(JbGr&0=9UPI6pNWfL?gLB(Dg*y*rT2yGo&)sRK6cR7V7TQwXZowS zaOaGTNgeNCE5!Oda`^BrgFIvtVO8zjwJT5;dhP$aH>96Ye$kFeg-cjH4~Uk%v}}&R zof0N@9^Q-jtaS;B#~1YvXv9k8e5M3cpbrx}`=ST67zY_81pSbtl$5NT9Ba5`-@=cJ zyx15%bM4*eF<@jNlCVrk6sZ4HX9v*;2w#Z59DaI1KI&8&GvRx~^x6xM?xnSDs1aoJ z5?pt7O%(4Cel8Vr{)0>^`75k$uJT>5i?EQuRmk5uK8W!oj$^M06;^FwG>l{_gf4BP zNt<hBiG@)M}BjcBT85}X`Pk3}-sxw-A14Buw?cKg{F4TBFdFdneoL|3bG`t%hv z3dmLf!ChsDxUopII_S*+M558z&ldz*X53Pp9r|L*x~eDM@%LJW2v;@lRXD}?1kH~2 zKIy>0w}uRAt+iw!K!i8#$&-BdU*FLJ)??$MON3Gj&EV)*AkC}~DtJl=AjaFV^Ot%T zu~P+Hs`I8=u)%YJ(qsLlYHVIan_9#U9DdEkJim=c1eGhviVGT=e> z;U(xPE}aXAjWl&f?CM+eBA817XTkQH|N8ZwKX3bfFXD!_ZM|iIz!E@AqWZ5yWn^5T z7lce8H#1YOz&SmSQAYsE&0-jbH5S4PRxw`WBA{m@l3@SFrr_*y1~?Cx9%J?Vi7Ws{ zT%njrdXKU|qtOqN+QHcw-}$krDF$tv&k_^tQ|x~rV)y}^tI(s>JS;XT?Ht4ja`kfa zY3gvBSJTRfxHtv0Vca4*57W{_@^=%I)(naCpO|rFt<@FPM2ba1LIMu1jEsy2b4v*C zZ+ur{ceiv`ZRqI0&aWA`jPU}T$l6ZKaZ=5Jsmp%(hwhu)@!|H^GQ##>+spIYm~*J%TViR8S?~ zQ!CLbEEKt4eBq2|1ZbTXyJU0Hsm@pH7%i{3bS;sc zy%+!z)Q%DCE1CiKdgG79X^$7M!}0NHG`;MrR>^zM=Z(L@Ea#4B4YY|c>f(yvTUX@X ze}VKCyjzNZM!;M_Amq+y&0SFf3=i;WiHL~>RrW#m0eT8Dzr8tHv(V)hnSXdNHRTlQ z#{_XDRFqiycoof0RO6o@YY{ixpTk$wk10m;%;Y8l&4DToaoG&R7y^(Ce~4+R85z<4 z;-nb0t)=u|48F(g)Y;KdL|^p4uL^C~)7PI|dennej5F7!U~cK4D4Jw8$0p2CIF*lU zYU*ffA48@ZJU14PA4Yi(I_RY9A#d2q(h}2E@oX>a;z9&0{E%WQE=)D85b)fbS9G4g z4JQCt+&x^vOiWAwgTivTTiG@Tc6p~&B6F6J+^}g=T_N1@g&3Ayy1mjqox8Tm3m+UM z0opz6GmOLu;>Jsw#0+>4_k>Y7p!@>MqAH?zCjry}I|C0U12IiZZFnJW)P@AksqKy3 zL&{gwZ&D~uZe0hXA;mB`TxCbS+a3oscQY>ii6&-7&;L*B|Ia_+@66r7+JQU&Rt(;J z9=%5a7Bi6Ld8F)@6qFvK3S!f4kT4au!*vnh=QqS!!O#GqIvVoH*0pB>cZ-VFfGfus zF)<>weMQQGXjzb*75=6R7c#9{#nAC$Y!VY#bC3IOAuv^tL+Zys{sZH~Y|26c?tv<9 z(iUauiPb~lD6#a!;;pN$M!wXeCGPAB31Pvha%V|)sL8;j@WM9PzGqYL8GZd>yaoo! zvt8ZY(bJ%1!K)xYe?l?ku))3}czl3^b8|o0EuF~oHI<&+=XkGy3;hx#7iK7_t3t4} z5Y-|kFTIPwT;Y>J$R+&1@@mh`^qIFEPPx{sZ=%jWM92`L5^xE*kz#Z6CeDvIi`? ztnOiH`8}g}5t2GMMQ<(wECFq&J_pojbYvv5ezT&>7@xN>aj){Phbwk6+z4s?cQ>tv zGZ%nbB&0)$vZ;Hb|Mi~%iD=VXjRSp4Y|6ZjyUBOKZ_ikhzkaJ=uduy&@kXez@eJDi|MfXC?Q(Urmq?$;s5@t*y1vt}4bjDqK^ z)@6KvL~@tUS{@$E45lU~QwXfAUg5W?AM!ceyBaI07?60oU-K)SxaTR^S+dd%1srvg zabc8Q23JF)i>@lF6*WPfe=Ex<;Wo~rf9f6337o2o)&u;#;SZ51Nwj|8XN=F$k*tWX z|MOGUzp0133}(&BZ7tJM=u=SH%nsDsL&5+`pYdIXExx77iD9_hy0yHrQsu=Om+GCX zOOC(UvZVVnPDi9@YQ)Nfy1j88)vLm1@crP_K9?#tajmK0y8m2V=GkX}1H=>FPL!`R zBBs8kIui~jq1r_JsWwLpApm-EkvAD~Fx1u)$re>D5n3@UgnlfVG4g#mZtnY}gEy={ zy-?O+4<_C7ko9XlfXMr>>(>tg>H$OpkP*2gv;b_JZ-ax6Qc}u2Js-@^Emv65vZwR& z2g%^dIS}knpab)S+3V9l-_fGa%(=c(GM5W(ngNr?d4xXgH(dI4c6UHj5s66n_rTT# ztOyo0Y8sM;CM;OY*m-%g@O}Zc82(tKT#v)W#n?6c+=wKWGKjmo5W_Lnr!si3d3JGmaK`*&;O0E9!B@WC=kOci^VO=3|4yaTyVHu~zt z3$5eF>)*cJEGT#p=@#?T|0hhF7#qu%>V-c6?lT8RNATkk`}S!ZJ2w1E;zoQRu6bLB zQ_LD|#0VA_(}5>K0kR)0JHRxUq{Rbp9c?@EuA|P2&UXDIq0VNTv z#N)>nARHVwm>saVbFDvOyRxXIrM?^|4Ge1f zegbw?Ccb>};ye#}?#EA_EKVlSJ*P*asBd!Ic6Dqq{#IiN_jP3-4mwUUqzL)nMwG*( z6vu7CG4vy(Ks-a`&ic@Zh*r~OtgHdBrCnzrI;i8qV@eF*50W#?+EBNbU3o{PG9qEs z1CXeIK^n3NypXO16Mun|w^Bin$z#mRloW;Y*z!AFzy$@gV8->C?-RhK1ZJ$>2LhOd zgk9B7ukGJK>IYtov*`yW3Gj%r7s~uGgE_sr$?04N(YZM3A*wTlW6_gHjq2HVkVr!V zgtVEIjEwpVFP;AIZBZ?G24ntf1lz3Vpq#=Sg)0dpMEUx1l=lF+_ZX^DHRId?X91-M z7&!>_09x{hh;>a5@W2Z$u8Uw+QNEC*i7H0@YOOqk!pfgyp=s9C1RjF8GBeorS;=S2+>10CXnT_Hy~V8_wtV}1*kiLCvcDtd2hZ7 zs)zIt&1ja~3QLUiNCto=2shKK7b1g!U;!#CPQ^|^?~5+r?}&+>CTjX`Pl!wkyb!b}BPZwb!{T5t zicEF?jxt~pFaw>-ce?fNivcY4!on4JSKa>6(Ko!$jciY z6BAH4pi^3RO%MGpN>t0okMW>Iu3u*^_F||rQq^H<6_=L&M$e$4SwT1zuq}o`*U?e` z_2m?**IpMF1fKy`c(ub|?7!m4shwE3C#XpXAKB52O?*icuO_CZAeNKAP}1#Gko zU?0%9nAmfV-$cS@#pZI!HC&Zp+mzrBgH3~xGKw3vXBRF7d~};8^J{n2*Sxz8l@3PV zL2NO!F>4RaVQIosejC zPbd`t1CfMY)Jt^1ddyc zkz>yge#3T?Yt5R_`1o`1$&WRhC0{B4#K%Q0Li7NLd9*dGb{;)%nHF`>U#MSHxjo86 zaAFE{ad*0g`~$#J&Jd39@fEuNvc&8nA|itO<}eJI0Tj)Ex5~;6VXu_DcgAQmJ~@fr z|FpLDU8)Ti%pIJZI0|7?;^5_dFS)mT+P1qW{rPhU_MPMvSqPbAL%+i3ozlAmY{puc z3FZ+~+!K#BYKX`O00Vp=BE;g02V?At zUS?%M2@Ko=>KO_L+`0GenV@KbjWITM=%=pnUiz)SUp+=Du+|i(VfTj*h%M88AH<}T z@gRH8u7wWp&E<@zMz+hlt4H@0Q*Sj={o&O>HV2nRe5S~x*qX5-^iXAo^%jNQZNpa7Qubo}Z=<+=Th>8j+t z=^~3AsL<|cM-XRbGNBhzTwEL)dII8W)Da|_K+i%X#Yow}af%KEan#!=0EHxeYLu<3 z=ZfX3jN~Phl_0rLNxBsOdo}DJ9+9E7de3Tt(!Mg-7+N^6!cP7BKmPlI{ChF{|F#jD zA9fTy%zl{t?3Az}>@3D7%kfl$>}S96^%gbmru8b!1Sjbl20-!uUJuga(l~Y<(Wj;f zz(U6P^kMd)4_?r5zZ8dI=6|RtYSR6k`EJK-7qk+CQ$3qgQ(EI?2!8eouN=Flz?59- z+>nohX0+f(F_-O+oNa7MN$0#3UU41i38gvQa(HL91xnDawmUz!!T8RH6%bl|NFyj zN0ruX-xREh_>biu5kKl{q%NB5P=Tg+OjuObTb!c)Jd=H=yKk^+{! zeA%*=;>UJbzSbEfK}Nx&A^B7Zl#M4fGh)e++;o4$aZZen zH~f)5elI%UFW4SggvXpfs}sco!4*Cr7Ca{ze8<+j)E?n2Mv6X*n3rPRuv;jRH_nk? zDSj{YxTuH44$cV7l3(ko5&X6^jyJ7tbI&F>$e8zlGq4BBi{&IFymcbj{JgpS-hqC- zj2uiSUBiV185_5#`Sk8e$9CQYfG+CHUhR`7BfEV$$yk~(v9Tjxh7h=tLl0Q+t>lz{ zL~Uj0M&jRiM6UDEAD5mN=5S~Ey!eRqN1z35?sl=th(D2)bt4E>(2ShH+cw=f@X3_R z&*1uPK8;|${g=NzkK1$e0>BbuOUrzb%dJrOEThwS#m~RJ)z1ZZz{=8g0*|OIiYMM( zEUVNF)IMP?#XKq#ZrXsn^GmtZ(yKHq$r!m5-f`U__u!-2MkEeIY zW6ayVd-t8xq==Aub9X$UmlASSg9(CUN#u%7PI47VabI4Y`Der|xH9>%!T8`n1Ix0u zo?PX;8j-kdizQ|3-UV|p&!&YZ%9yqvs{ggU-AXH@e>k-9W;u6I9amb`8A4}Ze1fOn z)FET(evNo}-HrzkrrFAxSE@PocDh);DI~0((#!l^6|vZM3b+4-5y`Z>CY-J;rx|^~ zsp;{h?wZsuBFvk87~e9{cB*-wzZ&}o_fhQdM-fKB{ucjyEo~GWtISuHZT@B&pQPC; zL#1xBrm8COf?oDHk6yys?{TeycRxJrR0}qgbE!&}oBF4sx++Xa$jS(vZR|q^ z4YeD}EYiBrLQu71?yw=#6J2HlStePnAfXG6p9#|568{EU<*DrA|W0`>)H;+0*N?H7}}eEoC@`)DCMNdQLv?`yT>| Bg^U0I diff --git a/doc/salome/gui/SMESH/input/mesh_infos.doc b/doc/salome/gui/SMESH/input/mesh_infos.doc index 49a5a5ce4..e20375251 100644 --- a/doc/salome/gui/SMESH/input/mesh_infos.doc +++ b/doc/salome/gui/SMESH/input/mesh_infos.doc @@ -78,6 +78,9 @@ The user can either input the ID of a node or element he wants to analyze directly in the dialog box or select the node(s) or element(s) in the 3D viewer. +If Show IDs is activated, IDs of selected nodes or elements are +displayed in the 3D viewer. + \note The information about the groups, to which the node or element belongs, can be shown in a short or in a detailed form. By default, for performance reasons, this information is shown in a short form (group names diff --git a/src/SMDS/SMDS_VolumeTool.cxx b/src/SMDS/SMDS_VolumeTool.cxx index dca32c258..d7dd7f826 100644 --- a/src/SMDS/SMDS_VolumeTool.cxx +++ b/src/SMDS/SMDS_VolumeTool.cxx @@ -425,11 +425,13 @@ struct SMDS_VolumeTool::SaveFacet SaveFacet( SMDS_VolumeTool::Facet& facet ): myToRestore( facet ) { mySaved = facet; + mySaved.myNodes.swap( facet.myNodes ); } ~SaveFacet() { if ( myToRestore.myIndex != mySaved.myIndex ) myToRestore = mySaved; + myToRestore.myNodes.swap( mySaved.myNodes ); } }; diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 31f16a61f..705afa376 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -4383,6 +4383,7 @@ void SMESHGUI::initialize( CAM_Application* app ) hasNodes("(numberOfNodes > 0 ) && hasActor"), hasElems("(count( elemTypes ) > 0)"), hasDifferentElems("(count( elemTypes ) > 1)"), + hasDifferentObjElems("(count( objElemTypes ) > 1)"), hasBalls("({'BallElem'} in elemTypes)"), hasElems0d("({'Elem0d'} in elemTypes)"), hasEdges("({'Edge'} in elemTypes)"), @@ -4532,7 +4533,7 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), anId, -1 ); popupMgr()->insert( action( SMESHOp::OpDEChoose ), anId, -1 ); - popupMgr()->setRule( action( SMESHOp::OpDEChoose ), aClient + "&& $type in {" + mesh + "} &&" + hasDifferentElems, QtxPopupMgr::VisibleRule ); + popupMgr()->setRule( action( SMESHOp::OpDEChoose ), aClient + "&& $type in {" + mesh + "} &&" + hasDifferentObjElems, QtxPopupMgr::VisibleRule ); popupMgr()->insert( separator(), anId, -1 ); diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx index 8c9ac135b..5af7f7815 100644 --- a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.cxx @@ -97,6 +97,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nb0DElemsLab, 0, 1 ); my0DElemsTB->setEnabled( nbElements ); nb0DElemsLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Edges nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Edge ) : aMesh->NbEdges(); @@ -112,6 +113,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbEdgesLab, 1, 1 ); myEdgesTB->setEnabled( nbElements ); nbEdgesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Faces nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Face ) : aMesh->NbFaces(); @@ -127,6 +129,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbFacesLab, 2, 1 ); myFacesTB->setEnabled( nbElements ); nbFacesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Volumes nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Volume ) : aMesh->NbVolumes(); @@ -142,6 +145,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbVolumesLab, 3, 1 ); myVolumesTB->setEnabled( nbElements ); nbVolumesLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); // Balls nbElements = myActor ? myActor->GetObject()->GetNbEntities( SMDSAbs_Ball ) : aMesh->NbBalls(); @@ -157,6 +161,7 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) hl->addWidget( nbBallsLab, 4, 1 ); myBallsTB->setEnabled( nbElements ); nbBallsLab->setEnabled( nbElements ); + myNbTypes += ( nbElements > 0 ); QVBoxLayout* aDlgLay = new QVBoxLayout( mainFrame() ); aDlgLay->setMargin( 0 ); @@ -165,8 +170,10 @@ SMESHGUI_DisplayEntitiesDlg::SMESHGUI_DisplayEntitiesDlg( QWidget* parent ) button( OK )->setText( tr( "SMESH_BUT_OK" ) ); - connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() ) ); - connect( this, SIGNAL( dlgOk() ), this, SLOT( onOk() ) ); + connect( this, SIGNAL( dlgHelp() ), this, SLOT( onHelp() )); + connect( this, SIGNAL( dlgOk() ), this, SLOT( onOk() )); + + updateButtons(); } /* @@ -192,14 +199,6 @@ void SMESHGUI_DisplayEntitiesDlg::InverseEntityMode(unsigned int& theOutputMode, void SMESHGUI_DisplayEntitiesDlg::onChangeEntityMode( bool isChecked ) { QCheckBox* aSender = (QCheckBox*)sender(); - if ( myNbCheckedButtons == 1 && !isChecked ) { - SUIT_MessageBox::warning(this, tr("SMESH_WRN_WARNING"), - tr("WRN_AT_LEAST_ONE")); - disconnect( aSender, SIGNAL(toggled(bool)), this, SLOT(onChangeEntityMode(bool)) ); - aSender->setChecked( true ); - connect( aSender, SIGNAL(toggled(bool)), this, SLOT(onChangeEntityMode(bool)) ); - return; - } if ( my0DElemsTB == aSender ) InverseEntityMode( myEntityMode, SMESH_Actor::e0DElements ); else if ( myEdgesTB == aSender ) @@ -210,9 +209,9 @@ void SMESHGUI_DisplayEntitiesDlg::onChangeEntityMode( bool isChecked ) InverseEntityMode( myEntityMode, SMESH_Actor::eVolumes ); else if ( myBallsTB == aSender ) InverseEntityMode( myEntityMode, SMESH_Actor::eBallElem ); - + isChecked ? myNbCheckedButtons++ : myNbCheckedButtons--; - + updateButtons(); } /*! @@ -248,3 +247,11 @@ void SMESHGUI_DisplayEntitiesDlg::onOk() SMESH::UpdateView( wnd, SMESH::eDisplay, entry ); } } + +/*! + * \brief Enable/disable OK button depending on nb of selected entities + */ +void SMESHGUI_DisplayEntitiesDlg::updateButtons() +{ + setButtonEnabled( myNbCheckedButtons > 0 || myNbTypes == 0, OK ); +} diff --git a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h index e6305b2d6..4901bd6ce 100644 --- a/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h +++ b/src/SMESHGUI/SMESHGUI_DisplayEntitiesDlg.h @@ -40,6 +40,7 @@ public: private: void InverseEntityMode( unsigned int& theOutputMode, unsigned int theMode ); + void updateButtons(); private slots: void onOk(); @@ -51,6 +52,7 @@ private: unsigned int myEntityMode; SMESH_Actor *myActor; int myNbCheckedButtons; + int myNbTypes; QCheckBox* my0DElemsTB; QCheckBox* myEdgesTB; QCheckBox* myFacesTB; diff --git a/src/SMESHGUI/SMESHGUI_IdPreview.h b/src/SMESHGUI/SMESHGUI_IdPreview.h index 6c72b1fd5..6890f1df6 100644 --- a/src/SMESHGUI/SMESHGUI_IdPreview.h +++ b/src/SMESHGUI/SMESHGUI_IdPreview.h @@ -55,6 +55,14 @@ public: void SetPointsData( SMDS_Mesh* theMesh, const TColStd_MapOfInteger & theNodesIdMap ); void SetElemsData ( const std::vector & theElemsIdMap, const std::list & theGrCentersXYZ ); + template< class INT_ITER, class XYZ_ITER > + void SetElemsData ( INT_ITER theElemsBegin, INT_ITER theElemsEnd, + XYZ_ITER theGrCentersBegin, XYZ_ITER theGrCentersEnd ) + { + std::vector elemsIds( theElemsBegin, theElemsEnd ); + std::list gcXYZ( theGrCentersBegin, theGrCentersEnd ); + SetElemsData( elemsIds, gcXYZ ); + } void SetPointsLabeled( bool theIsPointsLabeled, bool theIsActorVisible = true ); void AddToRender ( vtkRenderer* theRenderer ); diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx index b8328b4a6..f85d5d3f7 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx @@ -33,6 +33,7 @@ #include "SMESHDS_Mesh.hxx" #include "SMESHGUI.h" #include "SMESHGUI_FilterUtils.h" +#include "SMESHGUI_IdPreview.h" #include "SMESHGUI_IdValidator.h" #include "SMESHGUI_SpinBox.h" #include "SMESHGUI_Utils.h" @@ -2826,7 +2827,7 @@ void SMESHGUI_AddInfo::saveInfo( QTextStream &out ) \param page specifies the dialog page to be shown at the start-up */ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) -: QDialog( parent ), myActor( 0 ) + : QDialog( parent ), myActor( 0 ) { setModal( false ); setAttribute( Qt::WA_DeleteOnClose, true ); @@ -2835,13 +2836,13 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) myTabWidget = new QTabWidget( this ); - // base info + // base info myBaseInfo = new SMESHGUI_MeshInfo( myTabWidget ); myTabWidget->addTab( myBaseInfo, tr( "BASE_INFO" ) ); // elem info - + QWidget* w = new QWidget( myTabWidget ); myMode = new QButtonGroup( this ); @@ -2850,11 +2851,13 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) myMode->button( NodeMode )->setChecked( true ); myID = new QLineEdit( w ); myID->setValidator( new SMESHGUI_IdValidator( this ) ); + myIDPreviewCheck = new QCheckBox( tr( "SHOW_IDS" ), w ); + myIDPreview = new SMESHGUI_IdPreview( SMESH::GetViewWindow( SMESHGUI::GetSMESHGUI() )); int mode = SMESHGUI::resourceMgr()->integerValue( "SMESH", "mesh_elem_info", 1 ); mode = qMin( 1, qMax( 0, mode ) ); - - if ( mode == 0 ) + + if ( mode == 0 ) myElemInfo = new SMESHGUI_SimpleElemInfo( w ); else myElemInfo = new SMESHGUI_TreeElemInfo( w ); @@ -2864,9 +2867,10 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) elemLayout->setSpacing( SPACING ); elemLayout->addWidget( myMode->button( NodeMode ), 0, 0 ); elemLayout->addWidget( myMode->button( ElemMode ), 0, 1 ); - elemLayout->addWidget( myID, 0, 2 ); - elemLayout->addWidget( myElemInfo, 1, 0, 1, 3 ); - + elemLayout->addWidget( myID, 0, 2 ); + elemLayout->addWidget( myIDPreviewCheck, 1, 0, 1, 2 ); + elemLayout->addWidget( myElemInfo, 2, 0, 1, 3 ); + myTabWidget->addTab( w, tr( "ELEM_INFO" ) ); // additional info @@ -2905,18 +2909,19 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) l->addWidget( myTabWidget ); l->addLayout( btnLayout ); - myTabWidget->setCurrentIndex( qMax( (int)BaseInfo, qMin( (int)ElemInfo, page ) ) ); + myTabWidget->setCurrentIndex( qMax( (int)BaseInfo, qMin( (int)ElemInfo, page ))); - connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); - connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() ) ); - connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() ) ); - connect( myTabWidget, SIGNAL( currentChanged( int ) ), this, SLOT( updateSelection() ) ); - connect( myMode, SIGNAL( buttonClicked( int ) ), this, SLOT( modeChanged() ) ); - connect( myID, SIGNAL( textChanged( QString ) ), this, SLOT( idChanged() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() ) ); - connect( myElemInfo, SIGNAL( itemInfo( int ) ), this, SLOT( showItemInfo( int ) ) ); - connect( myElemInfo, SIGNAL( itemInfo( QString ) ), this, SLOT( showItemInfo( QString ) ) ); + connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() )); + connect( dumpBtn, SIGNAL( clicked() ), this, SLOT( dump() )); + connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() )); + connect( myTabWidget, SIGNAL( currentChanged( int ) ), this, SLOT( updateSelection() )); + connect( myMode, SIGNAL( buttonClicked( int ) ), this, SLOT( modeChanged() )); + connect( myID, SIGNAL( textChanged( QString ) ), this, SLOT( idChanged() )); + connect( myIDPreviewCheck, SIGNAL( toggled(bool) ), this, SLOT( idPreviewChange(bool) )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( deactivate() )); + connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( reject() )); + connect( myElemInfo, SIGNAL( itemInfo( int ) ), this, SLOT( showItemInfo( int ))); + connect( myElemInfo, SIGNAL( itemInfo( QString ) ), this, SLOT( showItemInfo( QString ))); updateSelection(); } @@ -2926,6 +2931,7 @@ SMESHGUI_MeshInfoDlg::SMESHGUI_MeshInfoDlg( QWidget* parent, int page ) */ SMESHGUI_MeshInfoDlg::~SMESHGUI_MeshInfoDlg() { + delete myIDPreview; } /*! @@ -2983,6 +2989,7 @@ void SMESHGUI_MeshInfoDlg::reject() if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) aViewWindow->SetSelectionMode( ActorSelection ); QDialog::reject(); + myIDPreview->SetPointsLabeled(false); } /*! @@ -3016,7 +3023,9 @@ void SMESHGUI_MeshInfoDlg::updateSelection() disconnect( selMgr, 0, this, 0 ); selMgr->clearFilters(); - if ( myTabWidget->currentIndex() == BaseInfo || myTabWidget->currentIndex() == AddInfo || myTabWidget->currentIndex() == CtrlInfo ) { + if ( myTabWidget->currentIndex() == BaseInfo || + myTabWidget->currentIndex() == AddInfo || + myTabWidget->currentIndex() == CtrlInfo ) { SMESH::SetPointRepresentation( false ); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) aViewWindow->SetSelectionMode( ActorSelection ); @@ -3106,28 +3115,48 @@ void SMESHGUI_MeshInfoDlg::modeChanged() } /*! - \brief Caled when users prints mesh element ID in the corresponding field. + \brief Called when users prints mesh element ID in the corresponding field. */ void SMESHGUI_MeshInfoDlg::idChanged() { + myIDPreview->SetPointsLabeled( false ); + SVTK_Selector* selector = SMESH::GetSelector(); if ( myActor && selector ) { Handle(SALOME_InteractiveObject) IO = myActor->getIO(); TColStd_MapOfInteger ID; - QSet ids; + QSet ids; + std::vector idVec; + std::list< gp_XYZ > aGrCentersXYZ; QStringList idTxt = myID->text().split( " ", QString::SkipEmptyParts ); foreach ( QString tid, idTxt ) { long id = tid.trimmed().toLong(); - const SMDS_MeshElement* e = myMode->checkedId() == ElemMode ? + const SMDS_MeshElement* e = myMode->checkedId() == ElemMode ? myActor->GetObject()->GetMesh()->FindElement( id ) : myActor->GetObject()->GetMesh()->FindNode( id ); if ( e ) { ID.Add( id ); ids << id; + if ( myMode->checkedId() == ElemMode ) + { + idVec.push_back( id ); + aGrCentersXYZ.push_back( myElemInfo->getGravityCenter( e )); + } } } selector->AddOrRemoveIndex( IO, ID, false ); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) { + + if ( myMode->checkedId() == NodeMode ) + myIDPreview->SetPointsData( myActor->GetObject()->GetMesh(), ID ); + else + myIDPreview->SetElemsData( idVec, aGrCentersXYZ ); + + bool showIDs = ( !ID.IsEmpty() && + myIDPreviewCheck->isChecked() && + myTabWidget->currentIndex() == ElemInfo ); + myIDPreview->SetPointsLabeled( showIDs, myActor->GetVisibility() ); + aViewWindow->highlight( IO, true, true ); aViewWindow->Repaint(); } @@ -3135,6 +3164,16 @@ void SMESHGUI_MeshInfoDlg::idChanged() } } +/*! + * \brief Show IDs clicked + */ +void SMESHGUI_MeshInfoDlg::idPreviewChange( bool isOn ) +{ + myIDPreview->SetPointsLabeled( isOn && !myID->text().simplified().isEmpty() ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) + aViewWindow->Repaint(); +} + void SMESHGUI_MeshInfoDlg::showItemInfo( int id ) { if ( id > 0 && myActor->GetObject()->GetMesh()->FindNode( id ) ) { diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.h b/src/SMESHGUI/SMESHGUI_MeshInfo.h index 2edf2e58a..843a37f5b 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.h +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.h @@ -52,17 +52,19 @@ class QAbstractButton; class QButtonGroup; +class QCheckBox; class QContextMenuEvent; +class QGridLayout; class QLabel; class QLineEdit; class QPushButton; class QTabWidget; class QTextBrowser; -class QGridLayout; -class SMESH_Actor; -class SMDS_MeshNode; class SMDS_MeshElement; +class SMDS_MeshNode; +class SMESHGUI_IdPreview; class SMESHGUI_SpinBox; +class SMESH_Actor; class ExtraWidget; @@ -157,6 +159,8 @@ public: void clear(); virtual void saveInfo( QTextStream &out ) = 0; + gp_XYZ getGravityCenter( const SMDS_MeshElement* e ) { return gravityCenter(e); } + protected: struct XYZ { @@ -168,6 +172,7 @@ protected: double x() const { return myX; } double y() const { return myY; } double z() const { return myZ; } + operator gp_XYZ() const { return gp_XYZ( myX, myY, myZ ); } }; typedef QMap< int, QList > Connectivity; @@ -382,19 +387,22 @@ private slots: void deactivate(); void modeChanged(); void idChanged(); + void idPreviewChange(bool); void showItemInfo( int ); void showItemInfo( const QString& ); void dump(); private: - QTabWidget* myTabWidget; - SMESHGUI_MeshInfo* myBaseInfo; - QButtonGroup* myMode; - QLineEdit* myID; - SMESHGUI_ElemInfo* myElemInfo; - SMESHGUI_AddInfo* myAddInfo; - SMESHGUI_CtrlInfo* myCtrlInfo; - SMESH_Actor* myActor; + QTabWidget* myTabWidget; + SMESHGUI_MeshInfo* myBaseInfo; + QButtonGroup* myMode; + QLineEdit* myID; + QCheckBox* myIDPreviewCheck; + SMESHGUI_IdPreview* myIDPreview; + SMESHGUI_ElemInfo* myElemInfo; + SMESHGUI_AddInfo* myAddInfo; + SMESHGUI_CtrlInfo* myCtrlInfo; + SMESH_Actor* myActor; Handle(SALOME_InteractiveObject) myIO; }; diff --git a/src/SMESHGUI/SMESHGUI_Selection.cxx b/src/SMESHGUI/SMESHGUI_Selection.cxx index 2cf05756e..b6976df86 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.cxx +++ b/src/SMESHGUI/SMESHGUI_Selection.cxx @@ -120,7 +120,8 @@ QVariant SMESHGUI_Selection::parameter( const int ind, const QString& p ) const if ( p=="client" ) val = QVariant( LightApp_Selection::parameter( p ) ); else if ( p=="type" ) val = QVariant( myTypes[ind] ); else if ( p=="hasActor" ) val = QVariant( getActor( ind ) != 0 ); - else if ( p=="elemTypes" ) val = QVariant( elemTypes( ind ) ); + else if ( p=="elemTypes" ) val = QVariant( elemTypes( ind, false ) ); + else if ( p=="objElemTypes" ) val = QVariant( elemTypes( ind, true ) ); else if ( p=="isAutoColor" ) val = QVariant( isAutoColor( ind ) ); else if ( p=="numberOfNodes" ) val = QVariant( numberOfNodes( ind ) ); else if ( p=="dim" ) val = QVariant( dim( ind ) ); @@ -168,7 +169,7 @@ QVariant SMESHGUI_Selection::parameter( const QString& p ) const //======================================================================= //function : getVtkOwner -//purpose : +//purpose : //======================================================================= SMESH_Actor* SMESHGUI_Selection::getActor( int ind ) const @@ -184,18 +185,42 @@ SMESH_Actor* SMESHGUI_Selection::getActor( int ind ) const //purpose : may return {'Elem0d' 'Edge' 'Face' 'Volume' 'BallElem'} at most //======================================================================= -QList SMESHGUI_Selection::elemTypes( int ind ) const +QList SMESHGUI_Selection::elemTypes( int ind, bool fromObj ) const { QList types; SMESH_Actor* actor = getActor( ind ); if ( actor ) { TVisualObjPtr object = actor->GetObject(); if ( object ) { - if ( object->GetNbEntities( SMDSAbs_0DElement )) types.append( "Elem0d" ); - if ( object->GetNbEntities( SMDSAbs_Ball )) types.append( "BallElem" ); if ( object->GetNbEntities( SMDSAbs_Edge )) types.append( "Edge" ); if ( object->GetNbEntities( SMDSAbs_Face )) types.append( "Face" ); if ( object->GetNbEntities( SMDSAbs_Volume )) types.append( "Volume" ); + if ( object->GetNbEntities( SMDSAbs_0DElement )) types.append( "Elem0d" ); + if ( object->GetNbEntities( SMDSAbs_Ball )) types.append( "BallElem" ); + } + } + else if ( fromObj ) + { + if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] != "Unknown" ) + { + _PTR(SObject) sobj = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() ); + CORBA::Object_var obj = SMESH::SObjectToObject( sobj, SMESH::GetActiveStudyDocument() ); + SMESH::SMESH_IDSource_var idSrc = SMESH::SMESH_IDSource::_narrow( obj ); + if ( !CORBA::is_nil( idSrc ) ) + { + SMESH::array_of_ElementType_var typeVar = idSrc->GetTypes(); + for ( CORBA::ULong i = 0; i < typeVar->length(); ++i ) + switch ( typeVar[i] ) { + case SMESH::EDGE: types.append( "Edge" ); break; + case SMESH::FACE: types.append( "Face" ); break; + case SMESH::VOLUME: types.append( "Volume" ); break; + case SMESH::ELEM0D: types.append( "Elem0d" ); break; + case SMESH::BALL: types.append( "BallElem" ); break; + case SMESH::ALL: + case SMESH::NODE: + case SMESH::NB_ELEMENT_TYPES: break; + } + } } } return types; @@ -439,13 +464,10 @@ bool SMESHGUI_Selection::isAutoColor( int ind ) const if ( ind >= 0 && ind < myTypes.count() && myTypes[ind] != "Unknown" ) { _PTR(SObject) sobj = SMESH::GetActiveStudyDocument()->FindObjectID( entry( ind ).toLatin1().data() ); - CORBA::Object_var obj = SMESH::SObjectToObject( sobj, SMESH::GetActiveStudyDocument() ); - - if ( !CORBA::is_nil( obj ) ) { - SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj ); - if ( !CORBA::is_nil( mesh ) ) - return mesh->GetAutoColor(); - } + CORBA::Object_var obj = SMESH::SObjectToObject( sobj, SMESH::GetActiveStudyDocument() ); + SMESH::SMESH_Mesh_var mesh = SMESH::SMESH_Mesh::_narrow( obj ); + if ( !CORBA::is_nil( mesh ) ) + return mesh->GetAutoColor(); } return false; } diff --git a/src/SMESHGUI/SMESHGUI_Selection.h b/src/SMESHGUI/SMESHGUI_Selection.h index 5847126f7..71690c713 100644 --- a/src/SMESHGUI/SMESHGUI_Selection.h +++ b/src/SMESHGUI/SMESHGUI_Selection.h @@ -71,8 +71,8 @@ public: virtual int nbChildren( int ) const; virtual bool isContainer( int ) const; - // parameters got from actor return nothing if an actor is not visible - virtual QList elemTypes( int ) const; + // parameters got from actor, return nothing if an actor is not visible + virtual QList elemTypes( int, bool ) const; // == objElemTypes w/o actor virtual QList labeledTypes( int ) const; virtual QString displayMode( int ) const; virtual QString shrinkMode( int ) const; diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index ec5537169..c3d9d8579 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -7422,6 +7422,10 @@ as they are of improper type: ELEM_MODE Element + + SHOW_IDS + Show IDs + BUT_DUMP_MESH &Dump diff --git a/src/SMESHUtils/SMESH_MeshAlgos.cxx b/src/SMESHUtils/SMESH_MeshAlgos.cxx index 1112eb973..464a06813 100644 --- a/src/SMESHUtils/SMESH_MeshAlgos.cxx +++ b/src/SMESHUtils/SMESH_MeshAlgos.cxx @@ -459,6 +459,7 @@ struct SMESH_ElementSearcherImpl: public SMESH_ElementSearcher _ebbTree[i] = NULL; _ebbTreeHeight[i] = -1; } + _elementType = SMDSAbs_All; } virtual ~SMESH_ElementSearcherImpl() { @@ -878,10 +879,10 @@ SMESH_ElementSearcherImpl::FindClosestTo( const gp_Pnt& point, TopAbs_State SMESH_ElementSearcherImpl::GetPointState(const gp_Pnt& point) { - double tolerance = getTolerance(); - _elementType = SMDSAbs_Face; + double tolerance = getTolerance(); + ElementBndBoxTree*& ebbTree = _ebbTree[ SMDSAbs_Face ]; if ( !ebbTree ) ebbTree = new ElementBndBoxTree( *_mesh, _elementType, _meshPartIt ); diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index f289a5fe7..748d4baaf 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1469,7 +1469,7 @@ class Mesh: errText = "code %s" % -err.code if errText: errText += ". " errText += err.comment - if allReasons != "":allReasons += "\n" + if allReasons: allReasons += "\n" if ok: allReasons += '- "%s"%s - %s' %(err.algoName, shapeText, errText) else: @@ -1507,7 +1507,7 @@ class Mesh: reason = ("For unknown reason. " "Developer, revise Mesh.Compute() implementation in smeshBuilder.py!") pass - if allReasons != "":allReasons += "\n" + if allReasons: allReasons += "\n" allReasons += "- " + reason pass if not ok or allReasons != "": diff --git a/src/StdMeshers/StdMeshers_ViscousLayers.cxx b/src/StdMeshers/StdMeshers_ViscousLayers.cxx index f84fc5b5e..e977252e6 100644 --- a/src/StdMeshers/StdMeshers_ViscousLayers.cxx +++ b/src/StdMeshers/StdMeshers_ViscousLayers.cxx @@ -445,6 +445,7 @@ namespace VISCOUS_3D bool Is ( int flag ) const { return _flags & flag; } void Set ( int flag ) { _flags |= flag; } void Unset( int flag ) { _flags &= ~flag; } + std::string DumpFlags() const; // debug void SetNewLength( double len, _EdgesOnShape& eos, SMESH_MesherHelper& helper ); bool SetNewLength2d( Handle(Geom_Surface)& surface, @@ -9199,10 +9200,48 @@ void _LayerEdge::SmoothPos( const vector< double >& segLen, const double tol ) //================================================================================ /*! - * \brief Create layers of prisms + * \brief Print flags */ //================================================================================ +std::string _LayerEdge::DumpFlags() const +{ + SMESH_Comment dump; + for ( int flag = 1; flag < 0x1000000; flag *= 2 ) + if ( _flags & flag ) + { + EFlags f = (EFlags) flag; + switch ( f ) { + case TO_SMOOTH: dump << "TO_SMOOTH"; break; + case MOVED: dump << "MOVED"; break; + case SMOOTHED: dump << "SMOOTHED"; break; + case DIFFICULT: dump << "DIFFICULT"; break; + case ON_CONCAVE_FACE: dump << "ON_CONCAVE_FACE"; break; + case BLOCKED: dump << "BLOCKED"; break; + case INTERSECTED: dump << "INTERSECTED"; break; + case NORMAL_UPDATED: dump << "NORMAL_UPDATED"; break; + case MARKED: dump << "MARKED"; break; + case MULTI_NORMAL: dump << "MULTI_NORMAL"; break; + case NEAR_BOUNDARY: dump << "NEAR_BOUNDARY"; break; + case SMOOTHED_C1: dump << "SMOOTHED_C1"; break; + case DISTORTED: dump << "DISTORTED"; break; + case RISKY_SWOL: dump << "RISKY_SWOL"; break; + case SHRUNK: dump << "SHRUNK"; break; + case UNUSED_FLAG: dump << "UNUSED_FLAG"; break; + } + dump << " "; + } + cout << dump << endl; + return dump; +} + +//================================================================================ +/*! + case brief: + default: +*/ +//================================================================================ + bool _ViscousBuilder::refine(_SolidData& data) { SMESH_MesherHelper& helper = data.GetHelper();