From 59b5446863dc5eea40bbc83261d976760cdc395d Mon Sep 17 00:00:00 2001 From: akl Date: Thu, 23 Apr 2015 12:42:06 +0400 Subject: [PATCH] 22853: EDF 9924 GEOM: Dimension histogram --- doc/salome/gui/GEOM/images/editgroup.png | Bin 38874 -> 1753014 bytes .../gui/GEOM/images/geomcreategroup.png | Bin 33690 -> 1269739 bytes .../gui/GEOM/images/shape_statistics.png | Bin 0 -> 389143 bytes .../GEOM/images/shape_statistics_simple.png | Bin 0 -> 246293 bytes .../GEOM/input/shape_statistics_operation.doc | 28 + .../GEOM/input/using_measurement_tools.doc | 1 + .../gui/GEOM/input/working_with_groups.doc | 7 +- src/CMakeLists.txt | 4 +- src/EntityGUI/CMakeLists.txt | 2 + src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 21 + src/EntityGUI/EntityGUI_SubShapeDlg.h | 2 + src/GEOMBase/GEOMBase.cxx | 6 +- src/GEOMBase/GEOMBase.h | 2 +- src/GEOMGUI/GEOM_msg_en.ts | 87 ++- src/GEOMGUI/GEOM_msg_fr.ts | 89 ++- src/GEOMGUI/GEOM_msg_ja.ts | 93 ++- src/GEOMGUI/GeometryGUI.cxx | 3 + src/GEOMGUI/GeometryGUI_Operations.h | 1 + src/GEOMUtils/CMakeLists.txt | 2 + src/GEOMUtils/GEOMUtils_ShapeStatistics.cxx | 145 +++++ src/GEOMUtils/GEOMUtils_ShapeStatistics.hxx | 61 ++ src/GroupGUI/CMakeLists.txt | 2 + src/GroupGUI/GroupGUI_GroupDlg.cxx | 27 + src/GroupGUI/GroupGUI_GroupDlg.h | 2 + src/MeasureGUI/CMakeLists.txt | 2 + src/MeasureGUI/MeasureGUI.cxx | 4 + .../MeasureGUI_ShapeStatisticsDlg.cxx | 533 ++++++++++++++++++ .../MeasureGUI_ShapeStatisticsDlg.h | 92 +++ 28 files changed, 1199 insertions(+), 17 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/shape_statistics.png create mode 100644 doc/salome/gui/GEOM/images/shape_statistics_simple.png create mode 100644 doc/salome/gui/GEOM/input/shape_statistics_operation.doc create mode 100644 src/GEOMUtils/GEOMUtils_ShapeStatistics.cxx create mode 100644 src/GEOMUtils/GEOMUtils_ShapeStatistics.hxx create mode 100644 src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.cxx create mode 100644 src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.h diff --git a/doc/salome/gui/GEOM/images/editgroup.png b/doc/salome/gui/GEOM/images/editgroup.png index c7f55074e27ea482a3fe678945ae82c6b0ea61e4..4501fa61ff4701073ab349387730f3f9ec365f1d 100755 GIT binary patch literal 1753014 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 literal 38874 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 D@P^m% diff --git a/doc/salome/gui/GEOM/images/geomcreategroup.png b/doc/salome/gui/GEOM/images/geomcreategroup.png index 0f67a625c1f772ed7a469793c067a109ff01e0e1..c982f0bc93886bc8de8acdf5d47824c77bc3c99b 100755 GIT binary patch literal 1269739 zcmeFa4V;zLb??9Dg<(J#Q2`l1QNUmTt0-v$Dh5qzunmc}H_g~<6VuqF=AWby?>}j% z(cI8BX~DGj-`KoVO`8^P(}16}P3%q6n>32pD%Mma5CO%)41&DB%rLM2XFW6Pu+EzO zyq)vBp7Yy&hQ0S%Yp=cbcORcM&vW)U^Tqe9ym{jI>En$t6IZ_e? zY%*gfO*0eQ=Q*bdntaFKef6jRC!YoIHG~obKmY_lAUuJ%uj6_57oJQw%edETne}W^ zPx$Wq^nu-GXlTf^U-KT*+&aM$iodA8=cGCOvrXpszMqnz1V8`;Yy{%IcIVxnjX^cCxYuiorIg4`L!(U}t8C1;iB(l$)4bFen7S~V0u~r*nlH=d??caC4abWm+0g{|2@4h#E{zf;%yZ&H( zS*TzC%0B9=^D7$ z92uHgnsYcAm%3$*?|o!?S)V$$e5G@gj0EJz7OT}5!kQtl>3_b>UCUj6@R*s<)N2m+ z)7LBwm-qkvx6HILrwu1WmQ#K0XMZHShW)TGNKbasMvkXnAhe$P(#EDI85g$oTi2xK z9`oJ%Z{Z=O+AA(Lu<89|91D-iQwzb?uIF-6mRm?e_8)m8hRTTWs3D&N1vy z+g01Qt(W7|G0wrArZRur{!(17Ac9Q#p#(1(u`ks1LBMwH{@#a&|DVzXC<)#2)wBQq zNIhS>ZT_TP*mkx4bdF(vVdoEP=eJ(XOLC18Un!B>lI-iflbs~qXIjl^({$o_bH({T zHH&7=G?Ut|HO&`ZYo_;{GJOYMG=u;3q#4+C*qj(U$-KJ%Tr)7~xH;Z>etF_<82y<2 zyB{8Y6#7eF-ESrj(D&7zEq`_QVz)!Ovf}u$#ad>APR$Z%X&5kv2Aw26c#iWrIJ?aK z1CvS}O0efUFO&WKZLVxm^J(*s_pNZ-l%OUw_L##1&iIkCX#8vDKe}ge*Bo(vK{#jR zX%q{!4a<*@`~nem4j#|7T-Q^dTgGB@-2*=^wW(oS8ykG`i{Eh8Jz(Dd2Y+Y&@-zR< zP3XV;`6rxTc+Rf%{H9ZeVztTG56{7VNba?M9)r4u30SV(yxR9aw1u1IFYms_ZBH4n z--H>ycKi4%ISbPW@F!!_?kHAz+qdkkU-qYstLj+A0= z_Q7k1moPM7ng)K}JiFtc&E-4(&0IC-1#{7*L+15E$IYf^wwi4RCYqD8-))Aby~XTk z8EcxFT1`J)Jj7u-+v5f1GsQ{bZ#0j-`zF2C`8{4>f2fN|V9n+moopN7EP$KH=}FJ% z*KUb`W3#{iT;~pc;&AdWDNO0kRfx>^#$Ge2soS-E>i+Abs??S?C80CVp@Fu@bCkx* zhFI5ipL@!19Q35%r)R|fCq8RyX&fl6n_XYpa>)Egk2riP=3yJ>>fsc@Q_R6O*7dUz zbxjknUB`d=YvxzxYZ?T|dg>!EW8qYzAAWm^Y^1Zl3P@CG(&E^%FCH z=XcD`W7EvBX&*6t7hUFjZfy85XP+~GeyEfO;q!Rh*>%tPl`g4AA;S^l-~1C8eyw=E zUfcyVICtM|=Gf3Vqb?|)`r}7TxASPcXNdlYk#XP)(;ZHTpTU;%O!t(fX4;fSb7cGi(|5s@&L4Gi-nR@G z+u+_oxxWKZNFzTK9u@A(dRU`%uAhLpf?|O_++OF2)AgU z`PplS`}~rjTG_CQ#vdOXZ+eHElOWE|ga7YunAiKANAzSrQs^-}>CPtc5e55XL#kQk zzP^VQzH^AUX$_w1(sSs(^fRJkHZBisuljyAzJBDqXb->cYMg`p+CBPO{eeIK59d|Z zU=B4?f|vT?Heb7g{f!oY6NKdgSos1>}qWp7F5+z*ugW8t#TKVue;ec4IecbISduJgx*MWIL1$NDE4 zvib3SZ*`NqP`k~u9vez_Zo+f4G>%G`IczU;zjg7v?gY+1+^3og$4!07=AJ+LrfG5h z2crMjhGXWjRI^Vh^YSC-mG)@YE&;!5H?4Z*UmP$O&|`MzC26~pWHNm14)VwLL3NNn zojbHYt!IDQuG+rWdjI}IXFuU}=U4v2Jo=GE?o|J9*Ho9Op4TtFQX+S=ydJ6gP0pdC zH;vzEe(}Q1X2RfkW@6(JbL5r3H$xY_!wii-`yPoJHr%y*zWm*PanN}I>@6)oj$<8N zuF5VR_$ZphR9Ef&gBO_h{^38F+09+%^w8MS<8gvOchM{V;QyMrWA+*Mp*i0r2|{}Z zrkFdw@VL3K>1f$_8av5(e0|h8P^bM*XzX_UjeHxT@G0#sZ)q{x`!058@|xpq|2fuq z^L_X%fSgZ+=Qh38I2?y#;>56Q&A&UplVw2ac?PZJ6Vz zb-K|Q^XWf+)NOhB88JguF9a;tak=#Gd}xZ(ooeX%efC#PX))5~>$t_=un)@^AtL`} z#m67njmjfsgDraYr|hck2CVmkPC}o2Yli!L?GEctd(r-b{5>*q%d7pA`syB?{gw1FHT>55!LPnR|MQJJUw1P4 z!*7`H{N`kLX0P?y!YU>5Ft_M72VrGi&l_m`dmeeioZol$StDUWB=NX9k(;Eg=lBtOPdzyiK1bR4={Nvk!y>Ln`C|pu&bTtY#ZQ@DjpeSV z4I8+%b72{rWR4D<{Uv5ZTxNw%eGu@wb`t@4{kC1RnG*S-JY(}GeXzZ)mj09SXPdVg zSXKzvybGxCj*$njcnC2Ged$=kr{mvg+CqGHYT48t?1_FgA zuy^pn;kO;!TLF0)u`cbtUu^h>F%iBO!0H9U!Vrl2I-Ylbac@lA>$SxvlKRULSH!GVxm# zfjK>#PgoV3K-|~vy!(rLx8h!}ExuABPx>+Y*ohaI-cv`+f!)uWA?L5OL@v(zEX`xj zF=Hn<2Xf?_2$3CO00@8p2!KFX0&!ov^X@M!m#}tmuh%wjDUm0A@QvOoZ<$C3mV6E^ z*&>7t1V8`;Kp;B;abLUh?k{fAaj(}BUn!CE9r@{luUgC?0s#;Jfx04aYTXp)=^xGl z)YYaJak1m4Tv8TxDXEi`68htxyt>Q)9S{Hk5C8!X0D=4vxb;iV8=1_LJ?)mCbt4iG z009sH0T8H30!ZXFxvf|f2!H?xfIz(vKq9Y~oyIyr00cl_n84rPa_DO~3s9r41|;IO1V8`;K%hPdAd%O{K4X<200JNY0yRniiM&QP7Rv$w5C8!Xs1E{2bSkbje7Ali_4;aZp(9J{npm#fB&@1K};PTr*x}hmbz-�kl~T8bDC0w4ea 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 literal 33690 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 diff --git a/doc/salome/gui/GEOM/images/shape_statistics.png b/doc/salome/gui/GEOM/images/shape_statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaaa9ad37fc46b510b88f13d812e7d05d3cbeb8 GIT binary patch literal 389143 zcmeHw3%p!adGB}5%sD4HNlrq@$r}2ZPq99(wpz`@M-zk4kYEU}9P)mW_59{@%3Z6r*;$3m_@(+rneHcebi|Wj_7p$zy7Qb z{Do7s-TT(-7t*5}rtfk(BR}}tx77#G;(_W#1%{L zb4XK`UH8sq*Dihk`|tR`GP?Fdcig`0j`z*H@AsG8HS_vKzkAc~{b|o6qM5YlO>cbr zAGOhvm8+Jw{rHI?M~~>%58YL4xIO#>0zd!=0D)#h;H#f~xQ)k@=YO2^=fC@t+(ZEa zKmZ5;fhI+Ob3G^jwi(yn=_dVy2lqGWP%$hZ00e*l5MTuQ)_#rp_iZok_?b{Rd6X*@ zAOHk_01#+$1l*$@9%JD|f4V~*EYK@Ew$O<~J87s;i0rGaJx5*RCexTH=MyFAQ!H2y|^5aZIiSNWva$v>*aWzwWbcFX<^xdc3yyN{hfyVZg>ujCS(K0h)a2 zja4lG97KNPXc~Y1RkZV0|K_}VI4iNZ8r9I+2d{HOzw#qLXw)I38h4WTBxx(vL1)Bx z(y#Tb+e;euq{nNEuax+yt=+~?l-4nFOe}k@zVi;E7O}<(Gy&zcAHTN3%9YFiy@EEk zdk<~ucdppYU}%#ghF+1}idyJ)U+{d8D-lC%{j_GXqz`n8^Qdr8k_(&IJb zD<%H6Huq9blb=|h&+FTqzqrM9NLnJ#T${0B6dEL951YJJ1D5J6IGbW?jPejHiNn26I&@8e^zt*#EFX?$pdc3yy zN{QdLi|%q>G+g*wUcAw!!6EAII7yxDLv(4!k7?V<^JvfDbm|{yr&EP?>KHmg(?;x} z5pDgnqi{AI7@ElHZYd^g>6O>txoc`U!Rg)b@XHl6Ca@h_tXAO$CyvgYr2PZs34L7t zcv+JFv-{pxHp;6$`s1?xnvY#m*5{6vvGGkAF<{DSJ0fG&eq+$~{^n2K<*I6%nlE;} z_@=(-mgL)rgeJDQ7QW_%vBkPtN87UTOg{IUwRpYOqrA=;8+omJ*^7#wpFLY_rhPLf zi9J&;Zr?UuiO-CIeR=Wx;wvS7+m8Q=kw0{<{X9wewn6Id9HP-9h|ccmr=C$~(4=u= zX#eq7=;hr%rC)5`Lr=amK%-7PPZwS^iJod(MCaw6pC~PlY4D|=QsLSC^h(z_dVc3vDvUc!hewPrPx@_@ z$3FjdXYpZdL%0|b@v)fr;4-Ysi z^l*7i_lxwa{u$Dx1H;E3C4$p1W!TPm2ijXd@vrpNKlvZ7sK~5-V1e7`1UkC?IPEWt zDwz_Q62Yh8H3m^RJXjpVIOizq;INM{vD@^8Ha>Th*q#(l{9JgP{Ft0C^2MLX=~#p& zw!VG;B9~;tqZ(ggziDdAYhA{6>lfBblfHWQWp2B-VBheOyw-i}m5haH1lZHDndUfF zKDI79x)yt;aNNFSyqpImUvje7eRjvOM~P1*ekXevW%J-wMaocta)sB@FSq=F=4|;n zU2^V5I_sPv+O_X6t@+tgv}yMkIx_1mG&K2g+S1uYx!edE;1{m?@YwcNM%?u}Nq=v? za;MLHljrwVM(j0uef6KNrpre@OP~A0TPudbJNc(iD6HCub`FfCeTCB>qIb8Sq;Wat zGl0QSw0gzW6*ib4G9{*u9g&fwDSfWR4*Sw2(im9L@xQOoo@+jv$-4S zV`$yi`nQ*y{%nV7<~v%(L0;=Nd(4kog6v6bUUtnm#h#aZwRErXGKPYiECTG~HaF=P zapf4L_{CRB{JuviZF%R1<$7uF)OXR^Q@=yMe(4FCyY-v2_0VKGH2E$%b=G;#wU@=+ z+9}5?Ke&_!;d5N$%(|z4gO}FZt7632`M-T&0^Rn|BQz<0$PMbxKKx#{=3VC*xzjsX zMtQ%JFb@ss#9PEu66canexo$7zy70l47W|pz3qtdeSiLC>UWN2jt}vV43fM1?--sR z+x!KMp*&d@;}JVQ{peM$55L$&))jPc;C?xcIYrv*KemQ0AMq@G_7C4v6d(RS-of(e z!ZaiC_}dZ#oo$5@_KxdPiRP=M)-(;T*XX{E>FyZ6eaGqJ;M=~q!I>i4ygB6IBVMWF z0wi{%uCV73M@i1$d)g@}RM+sc`@4U$iypV&x6j!)tEZsr*w4=Ctq|{cLOcdL&!GO^ zD`|3XJ00krN2ktwHBpE2VPt@Ao4cdp(DXxq(KKn>d9IxRUqP{CozF>cXJI@&J1~{D zotjL$2F3{(#ad?>rf}cISBWVZKAt%_l&8~4e^^e*xC@KZmxNogWXK#I>~?LjJx-!- zY%F8UNvJW{Vir5Y0rs)og%p5!S z1AWOjo3OUO*5!50b+O#`#a}s%Hrkix1wr$RZF#K++pE-#ZjWQ~vs1~J_-ykZhvqk4 zo%A`Pzx(}51Mw@1g_WFgddKe$x=0NAKd)yi&2ug%{O*$*XmI*9PU1g(%;2T#_4bA3 z-Pa{!ZYd_uwG$y$i^+x{{q+7TD&qXmr~ZLD9YFX`O0j3BEm-+8`pNyTtJvkTuIPy! zt{?wM@e5+y*1p)z{I1_PcHT{Y_s7nUi>uPvUZ6t*V^l<^nL%UV7$in{N5g$CLN|Bl z%#+yt^jVIJ$l7B0qd)&ji66xl%f90i-=%N-$)YmMBzDH!ET%7$-%NeK*E)}L@!#&I zGx^xZc^cbxs)B{Q)`RScd{7-^&&)NZJ(Dl?Ou4vyukn8CeG^NjZ-4k#^p(3_`i8YeJLlc=!NKyM>X2Cc#vso>9pjwNPTG9xY&K1r z&PPoZu@A?u?f zXu8_+TGwOz=KFe`?nL6(e|bjGQchc5>lS-O8-~2mW&35t#~#a7`U(?il=D3aT@DU9m(~uAb>@J*9WDON7?ThVjIY!QxrBqyOPx~)w7XM2unr4oHd1j1fIG<_o zLSoX**d=~bPV~jU#CK?DOhxQ^jDE40wrsLY6W?Kcv3xTYuh+UcR`)gT9{HG@VqaeC zVeOe#O#4ChzC65}Htm%9#`a(AmG}uY{Kos6`y+g6r99ytc4P ziC=bKHlZYFUT%3iCM?ZrkcrNd zX>c4JbdqCPG3KDmrxrBinB^(UOhdjx);1p2(?!{^>6g(Q*|NTe9VS=EnYw;{*?=j} zG$~3~NX=IJz1DfG`t@#mjSC*~TDRHLHbmZ5Yx`;0v-yof3mWf!=L2*7G}2hu#%qhE zl=x-$WD`n)<_@MT+;Xc2EIWTaIFT-bV&jMe>L>_Y^UwymtmA3wU?t~SQ+BKt#SmnH zz%T+quXPra*Sp^Aw+C4TqpKywmq zw>jsjg;U2V-|2kqvC1;w+*g3@q#bLO;Wez<_Q6TTBM^7Hpr1MoJ0t{NM+B07t!Ld{ z(oiQoUR!)B@t^*n&n6g`mLJ(e`}>}u@zc+Dl7I2~|0p&GPCDNnefb&6caL=vf4Z?o ziK`i8cMUlowhf=_`@AVjd#JB{<=DeS!`A|&?F{y7gFw=+`>fkb8r7u7YmINo%2mrt zD?!?4KV4(aq?1Pv(C%#;Xvq0hxX8uH{`sy^)HT}qL{gt@MK%NlAOHl?L?G$cde-eF zjb+l~wZ&IT{HbrNog;$H%6P zJ)ejk2($(Q|NCqAKY?ojQkiQk0;#|Xqd))%0DwEq4I%>qKmZ7&f&dbKDzL&R5C8%|AiD@OW8%Ml?|IJ8d*XKiviqz< zWIzB2WCnp|Tm&)$E&>4pKmZ725dkFrEY1pI0s=q)2&9Mr5`T)|!ZZ*70ze>(2$cPl zLly%>OxZrZ7R@7)*gM-=J@lWWT;M{nw&AF3j z8?_JL*txyE-R(0?ZcbDqnBWEoB#OY&4=j!Gc^459f1=aTdd8~R@$+JF%PqIi(f&cY z|0Bz2{`~or%Q@e|POxyYm!!`LUy{DGxkdp3o(MethWF2Ck!u042zWjVzzBmtwIB3e z@|sKN;E^-v@BaQ9)Y;WZ7hG@wb#!!uaT!j=xzA}S;pf^Z*Pbi&dBI6~(Fqq6q<}z1 z5LmKu)$+P$|EW`^(#tzu&Ilw#apH-in;8Hi1`_4d-czSe(UVU;N$c0Ir`4<1(Ce># zAB~?lgTA=xAL+Vh0~VHk^{4d+x($KD_16=O~}c6DNC4{9N-R&4d50 zuC7unNjIiVn?`+oeMy^zy%s_scH*}sAselQF!da2Jr+dIU=m`4Iq%uBWeeSZ|HtX( zTb9wn^XAjxBLj5s@NwF{<1iiAzk`mSI8Hqi=F;Qe`-SuFZwK9T&j(|l{kWg>I-mBs ziJy1-ocueA37^lE(oXz*hLu*?vv*HgreU{55Qv@lZ8(_;ju!%5Oups?$!fmX5t`IO zXS+fZADU<5i=0;-)t>gpx@KSd(L6IY;fa5#h3+M6bc zzlQpD9ix|D-bK%EdxBm$w1-X{KSFzVZKb0Jx6zvxzK*V4xR8z>IZC5Ojf!;`?_9{^ z9_;7Ziii5V<3D%Sxn&R>K75#ZdU{GU?(3p?O!woPyspl!s%^7hzu1H?vFbR@I79|D z5YPyulK8a)GeL2mA39-)e2}b-&vy7>vuTspayGuiVyi3VufONsFUhq4_HoHLSy%hk z_ABj{%i8!s;}*Z{$IGvdA&GX-?tka5o%CYgKAJoKdfK)3I6b%R8T#ewf2MsqpQ6r@ z6R9w8j866Mq!}}&()jV?>FCj;^vaP}+)sd=JYIDvJN6kq>S1Gh_wJ?6&QA9+V#EkK zapFYD2Orf)Uyf~bpOdZbv!d=xo9SAX`=)IzYx248r!Vrl7JJ$c^HG3+4T0E;fFxjT zTqhu=>%L9iOV=iA+S0nVwkabtKIk1g zcC3@YkI~+J2b^TqMu!f(M59M_(cxE4(wOd(^o9j*aCgJw#*L%%&O48$PMu2K-QBMH zAlqSMtX7T_eOe_=+iArNyUl|@B8fi;jwneeifoWy<|l10jL)z#Nynz`@gku6VPlFa z7j)FqGq#5&Pwb%=`ktcRDf6hKvzu}QUCw2k3+dc*&!v$gN4hS1#`MsXsZ-o@e!d`o zaLD<(@aYYA)UXnfPiyzgN#C@Mg&>hBgOQL3#Qtuh-er3EG-b@b)-!p2eUqo{NZXY0 z>zh2Wp=&Lp+ajZBx-EQNn|!~%$>2K3%9JV8J+j+5)_0QP@G*~{-K668vtuS>zrM-yvupC==&~)X zuiK^{^nrjN5PQeZyGk?Z=$)qUwT$LVAY2E@ntaoa_z=1&FFwSljW0Y~ZIc&YT3+H{ znvE}Xmh+M|eVKMdPv{~qaR^=dY1KhHe)fCT*=NyfE}lhCZ1@(u?=Dj{lVni8 zOxfv}^1`>#O`2cd4LY?j@Jah7HC81hR?%5`T?m#_M>dM($H{6Xke@ zudSaxeL5{%_y&5__U&%M=ihQZe*8G`7pvr)I<;V77zh9X7Xc)GJP~3c5cQ5Nd@1LQ zna))`&O;YIw>HnNH6Lvt(5whN`0JhD^SKrv^a>;)Tj_g{+<@C{5KdGwK5xPlKL(2xiq@i*kOWhdyY?)bBV5F!Br*+T${ zKYMf1P!S>VH`H_?SRmjcfW(g{LM#LxSn)tCeJBF~AW(Y*koaqlc?^#qd+N?l)$>{a z@6d6s?u`vNKp@Kq;2XVJo*l#n1b_e#NCSZ-D_1Q?_D=&@*aQMV00?9l0VMtmPYyx@ z0zd!=q=5hue;TO5CJ+DuKp?{iAn|8-au6C2h=Rb!Km5gM*}N7Y$|xXPYXoq~PpuJ$ zztj;}w{~6XKHvZd)Efc5%&yvk#9u9P(91Le6M83IN=Qm4`_!F517|9v}e1{lL^nAB>ZgXAgGtGIR0D)Q~kd?2&Bk|XI=Hah4 z2(%Hk=bQx34=2gz+H=K4fZNUu1o&Yq7tFbUp5FYljg=~`UVddz_4Y4uG{0)F=(Y}VUUB{(54l_COs#KUF7h7FX<=O~}c zyNRE7{rP;cEiz^pU0ror1ZwElHbxuG#0LF%2n-bbcmH4b!WZc7yYHqTxp+|!#Y+4- zx$`2R`*8z$?(IvxUrfr76AzHv2| zAUR(nA(*iezs^;m^wlM^25=m-QI;mD3Z zNG`hPa*f0jKPPQ7nM)#P*JfLiy@VCS7dg~Gzz+dQ{Cu?z@9udw%{4z{$ItrQH;bm} zw#aFkEinq8?>H}Uux`*D=tYlZ{p>Pd%W|KKrs;N(8;x(%5gO|15zt3CvuDq)Fm&Wd z@u=sVndg-8wr<^8){omsJn_d3$Xp2G+JkzvC(WheN)HmiyhQJAPfThg(b5bJ9f+^ zaZ=`_=#?0&;p;>%`r=>ngl4NnPsbHjm+jf~O+R8gie1wN`q2@v?c6s$v5_u$^(7TM zeWu&wqkFB?NG2zVi|apOkn8c{sw*XR9OJ}B{- zd`XyM!{iHH>L9+CoS&YJXVT2Rj@#sM3}I;!FY4+L(C7Wy!us{=>9Wf%qbskx(mmec zzL%`ltG1n3;t!jkgXDtv)eaPTK%g1~IAKas)XB3NTeZ|_)VOPjQ9XS59ozi;7eA-p zdhKr!*M4$I#GP2;H-o_ujfn{QjfemzeVy=S5y<*jY7zIr|C#$Xt_7(6nGkf0vu5p@ z)Q);|)QK+wa%6*DyoMR=Mn<4f62FOYqsDEHqnY|aiN983O+4}YC44_#tp*G~KmZ5; zfqEg3m7i{=B`a4gPdxkA3sv|90zd!=WF3K~-S%f4c*NHl2rON?v^55bQ8o+$%a$#p z6(3!ZiFmQ&&%`t!h$Iofzz87m<9PrCfB+C^F$9qKTWrEHTp$1hfB+Ido&!Jt2mpZ= zLjYI!wAh4aak$ejSeDwg0PEJS%i@p`6A(xQ0lu0oZowiD7eVM}5`hW56Wkx;X?Jea z>;5Q@^V{|9ZN)bC^$+!AasUXbsStSS#h2*D8*hv~rfaUbCXq{+k@#az1q@^n0ZH;) zbMlu3K(~?nvp93j8&lA?c}I;J<=&~K76>$4;?K&@gEq@A)nx_G#GmZW4!^CvjoNcg z(sv%Y_FQQJ$mNP{B>u!vhe00%{1X4zv194>+ixdM{)Y}7^0AT(D|X`dN`Ot9P#oNY z#umiaQx`>6>!IzB04IG;@cQxUi(g$*dUo5h*5jU8=gca}aAVtZ+sgXr0D)=|@Jjq= zo_Qwy-aCJfMvfdw%kN)Kya?>ux35|^q4Z)W{!m_8Ob9I& z9@*_K0=y7B{P4rX3&XD6yHa}+B(ex_((~KJ+IX7AZC%8k(9EQ2lNVX8{rKWnWK7#) zNBGhgIiX7}bdlqlc|w=A$TMH_L|)T1joVyAhueNOna@RJr0o)i|7lyAZp!+}nR;34 zbAp$%eO>_a`8;)WbhtIg+SOIL2uzqTf%fj*TN(%-WN`s->c_wRIPs#;_i}MV646zlcp`~E&`Ssbon&;zUVhZ&FB4+{Q0~;Km0Dh zSpc~3BESoSSvosAO%mB?6+$2YfdB+_;-7K$3|IOGKlp*K7B3Djy!e8zOf}5J62Dgx zt0t%*9ZC8uCw{d~6u#Ee?I0UkHmI#_1<49u>u{Tsur4;f&~(BUn$`{5j-wmaM_O`{ z^yR!?cKn?1x$utPmiU=&78}i!K_3VNA)pgKf8G?fXuYsHL2`*Des;u(LMNRd=V|fH zB$<|rihOo9|{$yN@p7_0zKaY=h@wUWo+uhq}f)Q#U5Eg;LKq0JX>T-!D{?wxl z>7bDlmJBheG1wMjzlA{iwdqQHsDS_wh=zdPxzC+DH?;DmO`Af?h80Xa@pIzvODr5% z5I-n*oscSQU3br?uTj?mXj$>ClUtB4Q>VgT7y~h7qK-k&f!|pD#$x)6IfRB&=R2D7 zI|jM4xo$VyU=VQT5YUUjuYdh(y7=OY>8pSLRocIAKkeJUudLp`e?P5Xzn)l5>m@a) z#1{cuU^*!=-|X9Tf@nH{=|m^Cz4$?PnV*D>Fn&ZvVwG_u>0fM#FS9Rnu1y~Io2g8k zII%Pw{v3ddB>57h_v0Rl-QU?%Vl8#d6TmtIN_e&Rvu@9!^raMEYKsgqPpu@k>7 zIfS8U8QtcA`Snen4G2FOKc2SbC+EjA#*Q)69|7An{lEC-FX*+Gzn1R4`))ece~kK%_0#IrtBL70`NT%CWaX;m zv9o_-(ZCQ800Kaui4pMH!mnMomae?wO81*xe7z_4y=0Su2Z=u^Bw+^#00AK2gMeQ$ z|H)5(LJMBMfVlRP^D!TZg~T5TE(kX`0w4PDyPY5MpGk|}^v1V0_)rjjBO?%$-2dZ8 z|51|#fHA}((8$ju#0~_2K*Jyql=y2o5G4Luq77d)L*Ro;KUgzga0CQ`5LmWs8Ljx} ziXgF?@sapz1~nYj3IV={-6M}aQY&}x0|Y`LkfrBj3ri;WW}{hQxpX2{oq?ANq^4yb40xCr#m@O-SVzmT;BZ4=9gr+@n7rztE?ZVGh)Pu$m;i<{qyfO z^0ferD;9#t(+&k7&{PQ2WD(HGUXs41`7HpqzxQ?*@C)Z%NKgIuQ)S@WXk`KsI@K%! z5zJ>wlrcr}&(xG47$8tn1ZtA_CD}{umGo^RA31VliLBd9H1BeJ?yPf5vVJ_9uC}f1 zn6k`c+ahE7VRdcmKiNNd6iSw1GeiAyCuAf6;{( z(Wa+2S&w>jGS&F&ow#mm8E#LTI?W~Zz1-*4+_$w|=CHi*nI^Wio|h~qSgk8^x;AC1 zv8#2s%|-l5U&n3o%@|w*>feX%{ScDB!UIhp&?*SjdNuOnG zMRfU=Qk?AcLwKUgGD7oe3!i=2+FH-XXFZ#Y$Z~CyvFWg!=-G7q_-rob|es`e3U5n!)joXh$C<}I7a zYXRVe!e%e%#;KaG+pe+UfBcR?j!T5jG%YXfD6(S9R*OC1Rclw<(QUD-Y33MNM)O6- ztUvpi&$^d>hM7xK7kwZA1Zs}}=TXk5)t1-h2GE}74+Z690;pM^NNii|0*<(S7s)4bY2vaTV^KW$Ignikfs)-lJ&cD?w_GcjPA zS-$Z3FW`EA6BP7;K$9a-v&1jEeopdozOQNAww3<=ewWObbxN`nIi_hoU+O6`CQs<` zwZ7zPv-7Cz;9(@c+-wPbjfk3SgSh40KyEAYtK&p!XV;T069538uAy{<7A}^7a zq5tsTe@K%2dC=UCx(IytJKx0u&@#^$3=|015lB7p+ucT^O7f4U)tu7z-h29II5~+& zEsP}!5C8(LjX*;rex4#Etk!;_V)Q@&2qcGq{o0!3?86ce00KY&2xJTaB>s#|2*LpZ zKmZ7&jQ|pV+6X6Oe^JkfH)P;ifMf;(D?k7UWCsB(0@;}hL;?hW01&7N0!aKdff-JK z01yBI*+Bq_KRa`QNPqwk00K2Z0ExdQFvAHD00KZDI|v~0XJ;-D2@r^Zz`#S}=iyp_ z7y!1cDi(p3oq7x$2mparMF5GvRc9XK1_D5!Wf4H)Z`rBGz<~e|XjKFn<~MxePSCow z>*AV#J`ex`3IX|Pc11$7K@ez}#Lx55+uKWWvly?sLFNr%0)e_BuypBCdgReZ>KX%_ zM?~O)J0JX{`TrO8? zGmZQFKmh_k00=ZY0xgyJ+uNL7zVpbnJ4v1&!^vLie7>dNX!hqe#s>s|fCmC~$#hev zO!d5Nqvq+hNBoh~_XU?4I+Ux7@4p3ySh#<0&L6dd(pi7f(`_L01(I$ z0(DFL)qoInw{QB83;XqDJ@N@JF94GGr51g&&vYA2~c;Ob8T(Dq4&A%dD_rzbXoxVKRcJJQp9^3FaK0o*vNGE-6>xDqK#Rh61 z&{7CoH(}y`Mz|KBP$;w%JdHNkx-SBa0vIQM6d(Wu!Xbdf9}cH_N!2Cs`|bEO&#Nt9 zX}-|n)_UhJwrn)vp#}m#pb`Nj{z^=;M5#;S&k_KL1qc9vw5sr_=WB+e<-l zg4O*JBLj^n>ut%o3RN&I6$Bo5a26(!aR7a zesav;x^-(whTB|3N4J^g*JoZ7Tc$nJw($LIN}PT*+pTrMj=$E3!=Hh`6QBRlJ8&(4 z0ZLPKWp^BAP(iXbzNYCm`}6CYJX5|J{_NSaD~4&aQz2AG0v3Tff)Cd~pji=!lK6sT zZG27BZN}5DZ}Lp}YWSNrZK{|?o1F@wIudZ~Q%CUO8VEEi0{p>kn8%Y(JxO!t&MlMG zea1)kxy?mv>$ZGYEIhN%vQcaW`4aouCezHmj>p#KxN2QmX2*};5wG=A3;voN0l(jw zkFw+4_{2uK=)#LiaB*MsxqZp2FY)BFlE{jIpuV3klgGZbJ>hd)T*AaBab>A)nZ(ba z_xAR>Kf}zw!0GkK(&Qi(AdpoA`1>(_mrCno8D@v-nYx7!xq!E zFSe`gn>?|j=}gn{h)m|{B`a4gZ>j80&d)BlwHGr#|3E)KcomQ~*C;>$2*gJqsSJ3= zSN`gbw5|n6D#rL|)z?BxEdn~>^BvlC^5;H3P=Ejsh>w6=2N~Z|vKF!$SF)oFw$@UK zzrD@b@jH)PyOZSkF`VqBmbViWf53pw}hw^U!Sxo@r?o_pIMJ?{CjJJAdbq z%jf9XZO^)k0Dtehv#YZr@pC+T_U`cv%f{=S(CgarR8lrg*&ur?&qd@+edaMu_-5ba zMdh}mfJuhuvDx-ULO zkNdWmgZN?xH4v~N@W6@(Y-G?ffZBOgUQ~VY zFEL18+tG>K#%EbA!?tuk3}5?08wh9waFYy;MmF1ZP5eQS$Ptg0(+h#->$aA!Roj+4 zE2iZ2|&A!dP zwrR?19=C(|rabyU00=Z50(DRPevs*-9G264bB8ayC<_VOoH%hJS8kD?a*(9VL`kGY ziQ<3FXG%56l6Aa_pFJ}kGZwL_?Q0oRpXH)TdG$>?Lt~=_LAHDMZubfw{xFmuI(dq&PLe{?wIAQcv(duZW4U_k>sZkS0zjbg z5Wp{&HQt;dVjutnfIut+koaT42W21t1b{%}A%Mi+cyoq`fdCKy0i{Q8~uw%WA-b@`yTUQZgn)es6000Kau)e&f!#E)+ow)#^Y;|BsjKoG#Ok05~> z2mk>f&>{#R@wdoCW0*hy2mk>=0Eu6aKn(Mn%Q31x#hlAyB44t zoS*{)fI#LEz#@?ODMEli00;nqWD!8(PZm#D0|Gz*2xJ}sB>v1#5ds7PKmZ6NivSXT zvUtK85C8%|AoB$PtvBZwF%SR(Esg*Ze~Ui> zFnk~Y1X>S)*gxbm=lnUXhZ;r<1b_e#XkY|lCH@^dchKf7n;Ure2ptFj0U*$N2;iuv z_2wKS1_D5!{s_G7b2F~a#I*oe1nU1}KmfP=5rF`0GCh zhyVxx0U%IQ1d#Y^3OAeq0U!Vb>W@IID}2_iU044RG*|?DuSi<~mNrzfLBpISHxIxv zeJsOxh?V%+!Q#b>!}x)WgTR6X3+RzYAMwP(6U)W_*#C`8TnpeCdP^{>p1+nrC)yx^ zWi-6}q=T^Z(`8=lMW9e91o;3zBm%%PBv2U=!<;2I8Nf0*EQ2f|@dqJPLq4APH3T~$ zSD3SefOO0N%jB>OvXp4zzyA8`gZ#A||NGzne&{jdi60uO%m`x6lA8)(nH-iumf|P= z!SbV??|k<=K|WiCf5W01s9@mZH~1*Bes;jC9RirM$Br^u z*e4F#GIh%gCD;iY6T1wO)fl85f07vKxOtpu$Id=#Rf6U$P8=FH6SFk^#)&zOZrWq= zdQN-My~dJuoL+vDq&H0B=Rt4ZzP)VhJYkv^WkRCJmN|{siQ>mkcKY<`Wn(qR9x<#? z;(qajGT;cAakE}6VhUt27-qSazdUOv3&wy{T%wdrSp7C-SD zpJt}{iH*&+rs?*KvuBjy`@)MaxP77X3yX`;-A)SsbWB0!y<|CNj#Kk>U-&XM8I$zI zuh6CM#TU8_BjJe+)27h5W?3Dl@H9KOXy*@o}4F z{V-q|jRE($hz&1{f@~J8l>ZNkTl?j9nAk;*Yh6rVGRGXZjE&{Zv1^{T7p86c45Jf9 zCdjVvgXY9?a9;Opw^zx^*jQf4Z%C+@3vqwx_JvOQY5?1=;tL_2aQ!JznvnX(k4mC-PitKe{b4 zTF3_cn+knt`u$4Mzi_Rc11_iw9O!WEi1Od*4k%SoiK7ib~RteA9bujx?y5X zN=A<x57jmiAeBBm-Ae$m5wYDMi$9^?kw{3bhT9A$(pX1QukhsK8 zl-lMeioTa@kX_B!ZLue`ps{KkOkL^Ms+O43^kmb{j&uuq}4adf9lb>{aHhbD9^Mi`b2GgE=>dCV4Finro z^dr8sOps0(jM$H#P4=N5wzwrWkqZ-hP;557j??68o*9qCB{j$AS41w!+J>8snd1?E z+}6A(V>NZzrnV(MlB(ICUrEZ3mmT(P<7qm#O$>D3Pu9fV<|`>0#}TJA<&J;j6C3H0 zS6@OGU3gIm8>Z=%Sa?iNvuK||e*9!PPKlZAnBy^ZneT^z%^u5ZJK~RJ#iyT5SIGEh z`Vl+Yk8TU!&yQ)7`)2HHN8%To;>V^hJeG}8s?`hf5fr2Nm9bYd)*#)W7?bA9n3A@u z?RohSdKgSZR_uCVFZ?Xl4U_oSZ&+WJluR&9KKFIelcjl@uH}lL>-c8Oif zGtIQG`OM?~o4+@1vRn%w@}^u^`y!`nZHwvRgWJs0eWr2o(=qun4s9o@zU#D#f7)ji z>b@#^4BC&0nU-UNT9*5o@5i(0GObp{j4f%uCT?Qiq-(rbM#mLJR_tf7ZkRpH`U9M#QoaW9H{l?8L7xb7F&LpJ}aJqTmrlwv{mrGxl0x znTDU&z3z3sL;Ts#e&)+>RAw4jYAk|qW!b3MrX916Kgo9N#LpjG=wkLYuNB)-@Q5PY zidcpn^P075+z<4^%EysQW6n5!zmkSeKYz92r9G}7TzQ;PVyNZwEa^FjpZJY$^e(%1 zS<*2!w7n>A1*6C|G$>6JJmxI9$pn_kVHsp8(Zv6WhdvSHujTkrp3G5XTMo#K4!8y9 z?2MydUoF=Hq&6!ph-+$C1{qFt5eRYyzCQwZ;``&1MK0znxmf|0$zd5}35h=lp&Ih> z#IGUP3Aw_YB?P2n23RJCWss%ViT{BW4+QxDKO_RcG9*wL62qJ&HyOY(IV^)LwavKp z&Y}75{v_?+(?`elJWr3^b7_zc_&@*%00AJ-KnUFYxee6aJCk<&@-gb)x1D1DhED^H z9iajNAOHk_fP+A~iGTN`T_;k%769`I1b_e#00Pw_(Dr|?f7|!cT?wiU4SGNT2mk>f zkQxF={HZ|;!$1HC0D){GfW)88c|lY_00;nq)DS@8PYqfa1_D3;2xJohB>rs9ODjY* z<~x7!Yg`M^3Nwu{W*Px30-2s31P26w01!wX0VMw9F@;4S00e+QrV&8m&-C;lI3NH7 zfI#vHl>Lwof8UqC_lp7qfB+Bx0?mT}=XPDn5d{_7C^<->OkHUCgCLLdMHfB+C!de_5k b|9s;I`XAc5{%S^J(RGX8^ytFdKKB0s_+vqw literal 0 HcmV?d00001 diff --git a/doc/salome/gui/GEOM/images/shape_statistics_simple.png b/doc/salome/gui/GEOM/images/shape_statistics_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..bc2c0767b8f6f143d7a2f0a197447ebd27a4256f GIT binary patch literal 246293 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�ljhpS;NZ>Tq3{ts0?;v7}(?7!C4+$vMUGcOP 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 Statistics dialog box, in the Main Menu select Inspection - > Shape Statistics. + +\image html shape_statistics.png + +In this dialog: +- "Selected objects" standard selection box allows selecting one or more geometrical objects. + +- "Type" combo-box with the following items: "Edges length", "Faces area", "Solids volume". +\note "Type" combo-box includes only parameters applied to the currently selected shape (e.g. "Solids volume" will not be available for face or shell being selected); multiple selection is processed correspondingly (i.e. only types applicable for all selected shapes will be available). + +- "Number of intervals" spin box is used to specify number of distribution histogram ranges. + +- "Scalar range" checkable group box that, when switched ON, allows specifying custom values range used for plotting and creating groups. +\note By default, "Scalar range" controls is empty; pressing "Compute" button allows automatic computing initial range of the chosen parameter. This is needed as computation of the parameters range can be time-consuming for large or complex models. In case of multiple selection, scalar range is computed as common from all selected shapes. + +- "Plot" button opens or uses an opened Plot2d viewer and plots the distribution histogram for the selected shape(s). + +- "Create groups" button allows creating a groups according to the currently specified parameters. The groups names will include numerical values of the range, e.g. "Edges_length_0-20", "Edges_length_20-40", etc. Empty groups are not created. + +- Close dialog box, by pressing Close button. + +*/ diff --git a/doc/salome/gui/GEOM/input/using_measurement_tools.doc b/doc/salome/gui/GEOM/input/using_measurement_tools.doc index 77a5ee4b3..515a94ce4 100644 --- a/doc/salome/gui/GEOM/input/using_measurement_tools.doc +++ b/doc/salome/gui/GEOM/input/using_measurement_tools.doc @@ -19,6 +19,7 @@
  • \subpage managing_dimensions_page "Dimensions"
  • \subpage whatis_page "WhatIs"
  • \subpage inspect_object_operation_page "Inspect Object"
  • +
  • \subpage shape_statistics_operation_page "Shape Statistics"
  • \n To check their integrity: diff --git a/doc/salome/gui/GEOM/input/working_with_groups.doc b/doc/salome/gui/GEOM/input/working_with_groups.doc index 36a0d49a3..df36fd6a2 100644 --- a/doc/salome/gui/GEOM/input/working_with_groups.doc +++ b/doc/salome/gui/GEOM/input/working_with_groups.doc @@ -24,7 +24,7 @@ This functionality is available in OCC viewer only. To create a group of sub-shapes of a geometrical object in the main menu select New entity > Group > Create -\n The following menu will appear: +\n The following dialog box will appear: \image html geomcreategroup.png @@ -101,6 +101,11 @@ In order to filter out some entities: The entities which satisfy entered filtering parameters will be automatically highlighted in the 3D viewer. +\b Plot button into "Filter" group box provides an access +to the \ref shape_statistics_operation_page "Shape Statistics" functionality with simplified look-n-feel: + +\image html shape_statistics_simple.png + \n TUI Command: geompy.CreateGroup(MainShape, ShapeType), where MainShape is a shape for which the group is created, ShapeType is a type of shapes in the created group. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d271e268e..6f830743b 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,8 +43,8 @@ IF(SALOME_BUILD_GUI) SET(SUBDIRS_GUI OBJECT DlgRef GEOMFiltersSelection Material GEOMGUI GEOMBase DependencyTree GEOMToolsGUI DisplayGUI BasicGUI PrimitiveGUI GenerationGUI - CurveCreator EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI - RepairGUI MeasureGUI GroupGUI BlocksGUI AdvancedGUI + CurveCreator MeasureGUI EntityGUI BuildGUI BooleanGUI TransformationGUI OperationGUI + RepairGUI GroupGUI BlocksGUI AdvancedGUI GEOM_SWIG_WITHIHM ) ENDIF() diff --git a/src/EntityGUI/CMakeLists.txt b/src/EntityGUI/CMakeLists.txt index ecfc09a2d..0bb93f921 100755 --- a/src/EntityGUI/CMakeLists.txt +++ b/src/EntityGUI/CMakeLists.txt @@ -39,6 +39,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/GEOMImpl ${PROJECT_SOURCE_DIR}/src/GEOMGUI ${PROJECT_SOURCE_DIR}/src/GEOMBase + ${PROJECT_SOURCE_DIR}/src/MeasureGUI ${PROJECT_SOURCE_DIR}/src/SKETCHER ${PROJECT_SOURCE_DIR}/src/CurveCreator ${PROJECT_SOURCE_DIR}/src/ShapeRecognition @@ -67,6 +68,7 @@ SET(_link_LIBRARIES DlgRef GEOMSketcher CurveCreator + MeasureGUI ) # optional sources diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx index 9db5fbab0..598d05de6 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -165,6 +166,7 @@ EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidge myLessFilterSpin = new SalomeApp_DoubleSpinBox(myFilterGrp); myGreaterFilterSpin = new SalomeApp_DoubleSpinBox(myFilterGrp); myApplyFilterButton = new QPushButton(tr("GEOM_BUT_APPLY"), myFilterGrp); + myPlotDistributionButton = new QPushButton(tr("GEOM_PLOT_DISTRIBUTION"), myFilterGrp); QGridLayout* filterLayout = new QGridLayout(myFilterGrp); filterLayout->addWidget(myLessFilterCheck, 0, 0); @@ -174,6 +176,7 @@ EntityGUI_SubShapeDlg::EntityGUI_SubShapeDlg(GeometryGUI* theGeometryGUI, QWidge filterLayout->addWidget(myGreaterFilterCombo, 1, 1); filterLayout->addWidget(myGreaterFilterSpin, 1, 2); filterLayout->addWidget(myApplyFilterButton, 0, 3); + filterLayout->addWidget(myPlotDistributionButton, 1, 3); QVBoxLayout* layout = new QVBoxLayout(centralWidget()); layout->setMargin(0); layout->setSpacing(6); @@ -250,6 +253,7 @@ void EntityGUI_SubShapeDlg::Init() connect(GroupPoints->PushButton4, SIGNAL(clicked()), this, SLOT(showOnlySelected())); connect(myApplyFilterButton, SIGNAL(clicked()), this, SLOT(ClickOnOkFilter())); + connect(myPlotDistributionButton, SIGNAL(clicked()), this, SLOT(ClickOnPlot())); connect(myLessFilterCheck, SIGNAL(stateChanged(int)), this, SLOT(MeasureToggled())); connect(myGreaterFilterCheck, SIGNAL(stateChanged(int)), this, SLOT(MeasureToggled())); @@ -491,6 +495,11 @@ void EntityGUI_SubShapeDlg::SubShapeToggled() GroupPoints->CheckButton1->isChecked() && shapeType() < GEOM::VERTEX); + myPlotDistributionButton->setEnabled( myFilterGrp->isEnabled() && + ( shapeType() == TopAbs_EDGE || + shapeType() == TopAbs_FACE || + shapeType() == TopAbs_SOLID ) ); + activateSelection(); } @@ -936,6 +945,18 @@ void EntityGUI_SubShapeDlg::ClickOnOkFilter() updateButtonState(); } +//================================================================================= +// function : ClickOnPlot() +// purpose : opens "Shape Statistics" dialog box in order to plot sub-shapes distribution. +//================================================================================= +void EntityGUI_SubShapeDlg::ClickOnPlot() +{ + QDialog* dlg = new MeasureGUI_ShapeStatisticsDlg( this, myShape, (TopAbs_ShapeEnum)shapeType() ); + if ( dlg ) { + dlg->show(); + } +} + //================================================================================= // function : MeasureToggled() // purpose : diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.h b/src/EntityGUI/EntityGUI_SubShapeDlg.h index e3618ac41..c2f14e66e 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.h +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.h @@ -73,6 +73,7 @@ private slots: void showOnlySelected(); void ClickOnOkFilter(); + void ClickOnPlot(); void MeasureToggled(); private: @@ -102,6 +103,7 @@ private: SalomeApp_DoubleSpinBox* myLessFilterSpin; SalomeApp_DoubleSpinBox* myGreaterFilterSpin; QPushButton* myApplyFilterButton; + QPushButton* myPlotDistributionButton; QGroupBox* myFilterGrp; }; diff --git a/src/GEOMBase/GEOMBase.cxx b/src/GEOMBase/GEOMBase.cxx index e10909ddc..0cfe8f6ae 100644 --- a/src/GEOMBase/GEOMBase.cxx +++ b/src/GEOMBase/GEOMBase.cxx @@ -859,7 +859,7 @@ QString GEOMBase::GetEntry( GEOM::GEOM_Object_ptr object ) // Function : PublishSubObject // Purpose : Publish sub-shape under the main object //================================================================ -void GEOMBase::PublishSubObject( GEOM::GEOM_Object_ptr object ) +void GEOMBase::PublishSubObject( GEOM::GEOM_Object_ptr object, const QString& name ) { SalomeApp_Study* study = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); if ( study && !CORBA::is_nil( object ) ) { @@ -868,9 +868,9 @@ void GEOMBase::PublishSubObject( GEOM::GEOM_Object_ptr object ) GEOM::GEOM_Object_var father = object->GetMainShape(); QString fatherEntry = GetEntry( father ); if ( entry.isEmpty() && !CORBA::is_nil( father ) && !fatherEntry.isEmpty() ) { - QString name = GetName( object ); + QString aName = !name.isEmpty() ? name : GetName( object ); GeometryGUI::GetGeomGen()->AddInStudy( GeometryGUI::ClientStudyToStudy( studyDS ), - object, name.toLatin1().data(), father.in() ); + object, aName.toLatin1().data(), father.in() ); } } } diff --git a/src/GEOMBase/GEOMBase.h b/src/GEOMBase/GEOMBase.h index 242e5fdcd..69e21e778 100644 --- a/src/GEOMBase/GEOMBase.h +++ b/src/GEOMBase/GEOMBase.h @@ -133,7 +133,7 @@ public : static QString GetEntry( GEOM::GEOM_Object_ptr object ); /* Publish sub-shape under the main object */ - static void PublishSubObject( GEOM::GEOM_Object_ptr object ); + static void PublishSubObject( GEOM::GEOM_Object_ptr object, const QString& name = QString() ); static void Synchronize( QList& left, QList& right ); }; diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index c1e7addb1..c67b290fe 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -431,6 +431,10 @@ Please, select face, shell or solid and try again GEOM_FAST_CHECK_INTERSECTIONS Fast intersection + + GEOM_SHAPE_STATISTICS + Shape Statistics + GEOM_CIRCLE Circle @@ -2556,6 +2560,10 @@ Please, select face, shell or solid and try again MEN_FAST_CHECK_INTERSECTIONS Fast intersection + + MEN_SHAPE_STATISTICS + Shape Statistics + MEN_CHECK_FREE_BNDS Check Free Boundaries @@ -2838,7 +2846,7 @@ Please, select face, shell or solid and try again MEN_MEASURES - Measures + Inspection MEN_MIN_DIST @@ -3591,6 +3599,10 @@ Please, select face, shell or solid and try again STB_FAST_CHECK_INTERSECTIONS Fast intersection + + + STB_SHAPE_STATISTICS + Shape Statistics STB_CHECK_FREE_BNDS @@ -4224,6 +4236,10 @@ Please, select face, shell or solid and try again TOP_FAST_CHECK_INTERSECTIONS Fast intersection + + TOP_SHAPE_STATISTICS + Shape Statistics + TOP_CHECK_FREE_BNDS Check free boundaries @@ -5384,6 +5400,10 @@ shells and solids on the other hand. GEOM_HEALING_STATS_COL_2 Modification + + GEOM_PLOT_DISTRIBUTION + Plot + GeometryGUI @@ -5433,7 +5453,7 @@ shells and solids on the other hand. TOOL_MEASURES - Measures + Inspection TOOL_IMPORTEXPORT @@ -7335,6 +7355,69 @@ Do you want to create new material? Objects And Results + + MeasureGUI_ShapeStatisticsDlg + + GEOM_SHAPE_STATISTICS_TYPE + Type + + + GEOM_SHAPE_STATISTICS_LENGTH + Edges length + + + GEOM_SHAPE_STATISTICS_AREA + Faces area + + + GEOM_SHAPE_STATISTICS_VOLUME + Solids volume + + + GEOM_SHAPE_STATISTICS_NB_INTERVALS + Number of intervals + + + GEOM_SHAPE_STATISTICS_SCALAR_RANGE + Scalar range + + + GEOM_SHAPE_STATISTICS_COMPUTE + Compute + + + GEOM_SHAPE_STATISTICS_MIN + Min + + + GEOM_SHAPE_STATISTICS_MAX + Max + + + GEOM_SHAPE_STATISTICS_CREATE_GROUPS + Create Groups + + + GEOM_SHAPE_STATISTICS_DISTRIBUTION_NB_ENT + Number of entities + + + GEOM_SHAPE_STATISTICS_MIN_ERROR + Set minimal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MAX_ERROR + Set maximal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR + Minimal range value can not be more than maximal + + + GEOM_MSG_GROUPS_CREATED + %1 groups created + + TransformationGUI_ExtensionDlg diff --git a/src/GEOMGUI/GEOM_msg_fr.ts b/src/GEOMGUI/GEOM_msg_fr.ts index 69786b158..0ab7e34fc 100644 --- a/src/GEOMGUI/GEOM_msg_fr.ts +++ b/src/GEOMGUI/GEOM_msg_fr.ts @@ -431,6 +431,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau GEOM_FAST_CHECK_INTERSECTIONS Intersection rapide + + GEOM_SHAPE_STATISTICS + Shape Statistics + GEOM_CIRCLE Cercle @@ -2512,6 +2516,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau MEN_FAST_CHECK_INTERSECTIONS Intersection rapide + + MEN_SHAPE_STATISTICS + Shape Statistics + MEN_CHECK_FREE_BNDS Contrôler les contours libres @@ -2794,7 +2802,7 @@ Choisissez une face, une coque ou un solide et essayez de nouveau MEN_MEASURES - Mesures + Inspection MEN_MIN_DIST @@ -3539,7 +3547,11 @@ Choisissez une face, une coque ou un solide et essayez de nouveau STB_FAST_CHECK_INTERSECTIONS Intersection rapide - + + + STB_SHAPE_STATISTICS + Shape Statistics + STB_CHECK_FREE_BNDS Vérifier les contours libres @@ -4164,6 +4176,10 @@ Choisissez une face, une coque ou un solide et essayez de nouveau TOP_FAST_CHECK_INTERSECTIONS Intersection rapide + + TOP_SHAPE_STATISTICS + Shape Statistics + TOP_CHECK_FREE_BNDS Valider les contours libres @@ -5316,6 +5332,10 @@ le paramètre '%1' aux préférences du module Géométrie.GEOM_HEALING_STATS_COL_2 Modification + + GEOM_PLOT_DISTRIBUTION + Plot + GeometryGUI @@ -5365,7 +5385,7 @@ le paramètre '%1' aux préférences du module Géométrie. TOOL_MEASURES - Informations + Inspection TOOL_IMPORTEXPORT @@ -7268,6 +7288,69 @@ Voulez-vous en créer un nouveau ? Objets et résultats + + MeasureGUI_ShapeStatisticsDlg + + GEOM_SHAPE_STATISTICS_TYPE + Type + + + GEOM_SHAPE_STATISTICS_LENGTH + Edges length + + + GEOM_SHAPE_STATISTICS_AREA + Faces area + + + GEOM_SHAPE_STATISTICS_VOLUME + Solids volume + + + GEOM_SHAPE_STATISTICS_NB_INTERVALS + Number of intervals + + + GEOM_SHAPE_STATISTICS_SCALAR_RANGE + Scalar range + + + GEOM_SHAPE_STATISTICS_COMPUTE + Compute + + + GEOM_SHAPE_STATISTICS_MIN + Min + + + GEOM_SHAPE_STATISTICS_MAX + Max + + + GEOM_SHAPE_STATISTICS_CREATE_GROUPS + Create Groups + + + GEOM_SHAPE_STATISTICS_DISTRIBUTION_NB_ENT + Number of entities + + + GEOM_SHAPE_STATISTICS_MIN_ERROR + Set minimal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MAX_ERROR + Set maximal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR + Minimal range value can not be more than maximal + + + GEOM_MSG_GROUPS_CREATED + %1 groups created + + TransformationGUI_ExtensionDlg diff --git a/src/GEOMGUI/GEOM_msg_ja.ts b/src/GEOMGUI/GEOM_msg_ja.ts index 6b5668ec8..75807fcc7 100644 --- a/src/GEOMGUI/GEOM_msg_ja.ts +++ b/src/GEOMGUI/GEOM_msg_ja.ts @@ -415,6 +415,10 @@ GEOM_FAST_CHECK_INTERSECTIONS Fast intersection + + GEOM_SHAPE_STATISTICS + Shape Statistics + GEOM_CHECK_SELF_INTERSECTIONS_FAILED 自己交差の検出に失敗しました @@ -2467,6 +2471,10 @@ MEN_FAST_CHECK_INTERSECTIONS Fast intersection + + MEN_SHAPE_STATISTICS + Shape Statistics + MEN_CHECK_FREE_BNDS 自由境界の確認 @@ -2749,7 +2757,7 @@ MEN_MEASURES - 計測 + Inspection MEN_MIN_DIST @@ -3482,7 +3490,11 @@ STB_FAST_CHECK_INTERSECTIONS Fast intersection - + + + STB_SHAPE_STATISTICS + Shape Statistics + STB_CHECK_FREE_BNDS 自由境界をチェック @@ -4100,8 +4112,12 @@ 自己交差の確認 - TOP_FAST_CHECK_INTERSECTIONS - Fast intersection + TOP_FAST_CHECK_INTERSECTIONS + Fast intersection + + + TOP_SHAPE_STATISTICS + Shape Statistics TOP_CHECK_FREE_BNDS @@ -5211,6 +5227,10 @@ GEOM_NO_SHAPES_SELECTED There are no shapes that meet filtering parameters + + GEOM_PLOT_DISTRIBUTION + Plot + GeometryGUI @@ -5260,7 +5280,7 @@ TOOL_MEASURES - Measures + Inspection TOOL_IMPORTEXPORT @@ -7153,6 +7173,69 @@ Objects And Results + + MeasureGUI_ShapeStatisticsDlg + + GEOM_SHAPE_STATISTICS_TYPE + Type + + + GEOM_SHAPE_STATISTICS_LENGTH + Edges length + + + GEOM_SHAPE_STATISTICS_AREA + Faces area + + + GEOM_SHAPE_STATISTICS_VOLUME + Solids volume + + + GEOM_SHAPE_STATISTICS_NB_INTERVALS + Number of intervals + + + GEOM_SHAPE_STATISTICS_SCALAR_RANGE + Scalar range + + + GEOM_SHAPE_STATISTICS_COMPUTE + Compute + + + GEOM_SHAPE_STATISTICS_MIN + Min + + + GEOM_SHAPE_STATISTICS_MAX + Max + + + GEOM_SHAPE_STATISTICS_CREATE_GROUPS + Create Groups + + + GEOM_SHAPE_STATISTICS_DISTRIBUTION_NB_ENT + Number of entities + + + GEOM_SHAPE_STATISTICS_MIN_ERROR + Set minimal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MAX_ERROR + Set maximal range value or switch-off Scalar range + + + GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR + Minimal range value can not be more than maximal + + + GEOM_MSG_GROUPS_CREATED + %1 groups created + + TransformationGUI_ExtensionDlg diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index 790e65a7d..25832ed53 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -644,6 +644,7 @@ void GeometryGUI::OnGUIEvent( int id, const QVariant& theParam ) case GEOMOp::OpCheckSelfInters: // MENU MEASURE - CHECK SELF INTERSECTIONS case GEOMOp::OpFastCheckInters: // MENU MEASURE - FAST CHECK INTERSECTIONS case GEOMOp::OpManageDimensions: // MENU MEASURE - MANAGE DIMENSIONS + case GEOMOp::OpShapeStatistics: // MENU MEASURE - SHAPE STATISTICS case GEOMOp::OpShowAllDimensions: // POPUP MENU - SHOW ALL DIMENSIONS case GEOMOp::OpHideAllDimensions: // POPUP MENU - HIDE ALL DIMENSIONS libName = "MeasureGUI"; @@ -1025,6 +1026,7 @@ void GeometryGUI::initialize( CAM_Application* app ) createGeomAction( GEOMOp::OpGetNonBlocks, "GET_NON_BLOCKS" ); createGeomAction( GEOMOp::OpCheckSelfInters, "CHECK_SELF_INTERSECTIONS" ); createGeomAction( GEOMOp::OpFastCheckInters, "FAST_CHECK_INTERSECTIONS" ); + createGeomAction( GEOMOp::OpShapeStatistics, "SHAPE_STATISTICS" ); #ifdef _DEBUG_ // PAL16821 createGeomAction( GEOMOp::OpCheckGeom, "CHECK_GEOMETRY" ); @@ -1288,6 +1290,7 @@ void GeometryGUI::initialize( CAM_Application* app ) createMenu( GEOMOp::OpCheckSelfInters, measurId, -1 ); createMenu( GEOMOp::OpFastCheckInters, measurId, -1 ); createMenu( GEOMOp::OpInspectObj, measurId, -1 ); + createMenu( GEOMOp::OpShapeStatistics, measurId, -1 ); int toolsId = createMenu( tr( "MEN_TOOLS" ), -1, -1, 50 ); #if defined(_DEBUG_) || defined(_DEBUG) // PAL16821 diff --git a/src/GEOMGUI/GeometryGUI_Operations.h b/src/GEOMGUI/GeometryGUI_Operations.h index 915f5d1f1..865ac91d9 100644 --- a/src/GEOMGUI/GeometryGUI_Operations.h +++ b/src/GEOMGUI/GeometryGUI_Operations.h @@ -200,6 +200,7 @@ namespace GEOMOp { OpHideAllDimensions = 5016, // POPUP MENU - HIDE ALL DIMENSIONS OpFastCheckInters = 5017, // MENU MEASURES - FAST CHECK INTERSECTIONS OpInspectObj = 5018, // MENU MEASURES - INSPECT OBJECT + OpShapeStatistics = 5019, // MENU MEASURES - SHAPE STATISTICS // GroupGUI --------------------//-------------------------------- OpGroupCreate = 6000, // MENU GROUP - CREATE OpGroupEdit = 6001, // MENU GROUP - EDIT diff --git a/src/GEOMUtils/CMakeLists.txt b/src/GEOMUtils/CMakeLists.txt index 039990ab7..a2bbfd9d0 100755 --- a/src/GEOMUtils/CMakeLists.txt +++ b/src/GEOMUtils/CMakeLists.txt @@ -53,6 +53,7 @@ SET(GEOMUtils_HEADERS GEOMUtils.hxx GEOMUtils_Hatcher.hxx GEOMUtils_HTrsfCurve2d.hxx + GEOMUtils_ShapeStatistics.hxx GEOMUtils_Trsf2d.hxx GEOMUtils_TrsfCurve2d.hxx GEOMUtils_XmlHandler.hxx @@ -63,6 +64,7 @@ SET(GEOMUtils_SOURCES GEOMUtils.cxx GEOMUtils_Hatcher.cxx GEOMUtils_HTrsfCurve2d.cxx + GEOMUtils_ShapeStatistics.cxx GEOMUtils_Trsf2d.cxx GEOMUtils_TrsfCurve2d.cxx GEOMUtils_XmlHandler.cxx diff --git a/src/GEOMUtils/GEOMUtils_ShapeStatistics.cxx b/src/GEOMUtils/GEOMUtils_ShapeStatistics.cxx new file mode 100644 index 000000000..81ae5aeba --- /dev/null +++ b/src/GEOMUtils/GEOMUtils_ShapeStatistics.cxx @@ -0,0 +1,145 @@ +// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File : GEOMUtils_ShapeStatisticsDlg.cxx +// Author : Alexander KOVALEV, OPEN CASCADE S.A.S. + +#include "GEOMUtils_ShapeStatistics.hxx" + +#include +#include +#include +#include +#include + +namespace GEOMUtils +{ +//================================================================================= +// function : ComputeMeasures() +// purpose : gets measures of the given type for list of shapes in the range +//================================================================================= + std::map ComputeMeasures( std::list shapes, + TopAbs_ShapeEnum entity, + Range &range) +{ + bool hasRange = (range.min != -1.0); // -1.0 means that range must not be used + if ( !hasRange ) + range.min = 1e+32, range.max = 0.0; + // list of measures of entities + std::map measures; + + std::list::const_iterator it; + for ( it = shapes.begin(); it != shapes.end(); ++it ) { + double aMeasure; + TopTools_IndexedMapOfShape aSubShapesMap; + TopExp::MapShapes(*it, aSubShapesMap); // map of all global indices + TopTools_IndexedMapOfShape aMx; + TopExp::MapShapes( *it, entity, aMx ); // map of current type sub-shape indices + int aNbS = aMx.Extent(); + int index = -1; + for ( int i = 1; i <= aNbS; ++i ) { + aMeasure = 0.0; + const TopoDS_Shape& aSubShape = aMx( i ); + //Get the measure: length, area or volume + GProp_GProps LProps, SProps, VProps; + if ( entity == TopAbs_EDGE ) { + BRepGProp::LinearProperties( aSubShape, LProps ); + aMeasure = LProps.Mass(); + } else if ( entity == TopAbs_FACE ) { + BRepGProp::SurfaceProperties( aSubShape, SProps ); + aMeasure = SProps.Mass(); + } else if ( entity == TopAbs_SOLID ) { + BRepGProp::VolumeProperties( aSubShape, VProps ); + aMeasure = VProps.Mass(); + } + // Don't pass sub-shapes with out of range measure, if range is used + if ( hasRange ) { + if ( aMeasure < range.min || aMeasure > range.max ) + continue; + } else { + // get range min and max + if ( aMeasure < range.min ) range.min = aMeasure; + if ( aMeasure > range.max ) range.max = aMeasure; + } + // get global index of sub-shape + index = aSubShapesMap.FindIndex( aSubShape ); + // keep measures to distribute it + measures[index] = aMeasure; + } + } + return measures; +} + +//================================================================================= +// function : ComputeDistribution() +// purpose : gets distribution data for single shape +//================================================================================= +Distribution ComputeDistribution( TopoDS_Shape shape, + TopAbs_ShapeEnum entity, + int intervals, + Range range) +{ + std::list aShapes; + aShapes.push_back( shape ); + return ComputeDistribution( aShapes, entity, intervals, range ); +} + +//================================================================================= +// function : ComputeDistribution() +// purpose : gets distribution data for list of shapes +//================================================================================= +Distribution ComputeDistribution( std::list shapes, + TopAbs_ShapeEnum entity, + int nbIntervals, + Range range) +{ + // get list of measures and compute range (if it was not specified) + std::map measures = ComputeMeasures( shapes, entity, range ); + + // compute a step + double aStep = (range.max - range.min) / nbIntervals; + + // compute distribution in intervals + Distribution aDistr; + std::map::iterator dit; + for ( int i = 0; i < nbIntervals; i++ ) { + Range localRange; // range of current interval + localRange.min = range.min + ( i * aStep ); + localRange.max = range.min + ( (i+1) * aStep ); + localRange.count = 0; + + std::vector indicesToErase; + for ( dit = measures.begin(); dit != measures.end(); dit++ ) { + if ( ( dit->second >= localRange.min && dit->second < localRange.max ) || + ( i == nbIntervals-1 && dit->second == localRange.max ) ) { + localRange.count++; + localRange.indices.push_back( dit->first ); + // measure is in interval, so remove it from map of search + indicesToErase.push_back( dit->first ); + } + } + aDistr.push_back( localRange ); + for( int j=0; j < indicesToErase.size(); j++ ) + measures.erase( indicesToErase[j] ); + } + + return aDistr; +} + +} //namespace GEOMUtils diff --git a/src/GEOMUtils/GEOMUtils_ShapeStatistics.hxx b/src/GEOMUtils/GEOMUtils_ShapeStatistics.hxx new file mode 100644 index 000000000..703050e51 --- /dev/null +++ b/src/GEOMUtils/GEOMUtils_ShapeStatistics.hxx @@ -0,0 +1,61 @@ +// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File : GEOMUtils_ShapeStatisticsDlg.hxx +// Author : Alexander KOVALEV, OPEN CASCADE S.A.S. + +#ifndef _GEOMUtils_ShapeStatistics_HXX_ +#define _GEOMUtils_ShapeStatistics_HXX_ + +#include +#include +#include + +#include + +namespace GEOMUtils +{ + // struct to store range data + typedef struct { double min; double max; long count; std::list indices; } Range; + // distribution is a set of ranges + typedef std::vector Distribution; + + // function to get measures of entities and compute range for list of shapes + Standard_EXPORT std::map ComputeMeasures( + std::list shapes, + TopAbs_ShapeEnum entity, + Range &range ); + + // function to get distribution data for single shape + Standard_EXPORT Distribution ComputeDistribution( + TopoDS_Shape shape, + TopAbs_ShapeEnum entity, + int intervals, + Range range ); + + // function to get distribution data for list of shapes + Standard_EXPORT Distribution ComputeDistribution( + std::list shapes, + TopAbs_ShapeEnum entity, + int intervals, + Range range ); + +} + +#endif // _GEOMUtils_ShapeStatistics_HXX_ diff --git a/src/GroupGUI/CMakeLists.txt b/src/GroupGUI/CMakeLists.txt index acf593702..73e18271b 100755 --- a/src/GroupGUI/CMakeLists.txt +++ b/src/GroupGUI/CMakeLists.txt @@ -39,6 +39,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/GEOMImpl ${PROJECT_SOURCE_DIR}/src/GEOMGUI ${PROJECT_SOURCE_DIR}/src/GEOMBase + ${PROJECT_SOURCE_DIR}/src/MeasureGUI ${PROJECT_SOURCE_DIR}/src/DlgRef ${PROJECT_BINARY_DIR}/src/DlgRef ${CMAKE_CURRENT_SOURCE_DIR} @@ -56,6 +57,7 @@ ADD_DEFINITIONS( SET(_link_LIBRARIES GEOMBase GEOMUtils + MeasureGUI ) # --- resources --- diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx index 82a51075e..a13977ef6 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.cxx +++ b/src/GroupGUI/GroupGUI_GroupDlg.cxx @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -200,6 +201,7 @@ GroupGUI_GroupDlg::GroupGUI_GroupDlg (Mode mode, GeometryGUI* theGeometryGUI, QW myLessFilterSpin = new SalomeApp_DoubleSpinBox(myFilterGrp); myGreaterFilterSpin = new SalomeApp_DoubleSpinBox(myFilterGrp); myApplyFilterButton = new QPushButton(tr("GEOM_BUT_APPLY"), myFilterGrp); + myPlotDistributionButton = new QPushButton(tr("GEOM_PLOT_DISTRIBUTION"), myFilterGrp); QGridLayout* filterLayout = new QGridLayout(myFilterGrp); filterLayout->addWidget(myLessFilterCheck, 0, 0); @@ -209,6 +211,7 @@ GroupGUI_GroupDlg::GroupGUI_GroupDlg (Mode mode, GeometryGUI* theGeometryGUI, QW filterLayout->addWidget(myGreaterFilterCombo, 1, 1); filterLayout->addWidget(myGreaterFilterSpin, 1, 2); filterLayout->addWidget(myApplyFilterButton, 0, 3); + filterLayout->addWidget(myPlotDistributionButton, 1, 3); QVBoxLayout* layout = new QVBoxLayout(centralWidget()); layout->setMargin(0); layout->setSpacing(6); @@ -326,6 +329,7 @@ void GroupGUI_GroupDlg::Init() connect(myIdList, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged())); connect(myApplyFilterButton, SIGNAL(clicked()), this, SLOT(ClickOnOkFilter())); + connect(myPlotDistributionButton, SIGNAL(clicked()), this, SLOT(ClickOnPlot())); connect(myLessFilterCheck, SIGNAL(stateChanged(int)), this, SLOT(MeasureToggled())); connect(myGreaterFilterCheck, SIGNAL(stateChanged(int)), this, SLOT(MeasureToggled())); @@ -1135,6 +1139,16 @@ void GroupGUI_GroupDlg::updateState (bool isAdd) subSelectionWay() == ALL_SUBSHAPES && myIsShapeType && getShapeType() != TopAbs_VERTEX); + // manage of 'Plot' button access + GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + GEOM::ListOfLong_var aSubShapes = aShOp->SubShapeAllIDs( myMainObj, getShapeType(), false ); + bool hasCurrentEntities = aSubShapes->length() > 0; + myPlotDistributionButton->setEnabled( myFilterGrp->isEnabled() && + myIsShapeType && + ( getShapeType() == TopAbs_EDGE || + getShapeType() == TopAbs_FACE || + getShapeType() == TopAbs_SOLID ) && + hasCurrentEntities ); if (subSelectionWay() == ALL_SUBSHAPES) setInPlaceObj(GEOM::GEOM_Object::_nil()); } @@ -1423,6 +1437,19 @@ void GroupGUI_GroupDlg::ClickOnOkFilter() updateState(true); } +//================================================================================= +// function : ClickOnPlot() +// purpose : opens "Shape Statistics" dialog box in order to plot sub-shapes distribution. +//================================================================================= +void GroupGUI_GroupDlg::ClickOnPlot() +{ + TopoDS_Shape aMainShape = GEOM_Client::get_client().GetShape(GeometryGUI::GetGeomGen(), myMainObj); + QDialog* dlg = new MeasureGUI_ShapeStatisticsDlg( this, aMainShape, getShapeType() ); + if ( dlg ) { + dlg->show(); + } +} + void GroupGUI_GroupDlg::MeasureToggled() { myLessFilterSpin->setEnabled(myLessFilterCheck->isChecked()); diff --git a/src/GroupGUI/GroupGUI_GroupDlg.h b/src/GroupGUI/GroupGUI_GroupDlg.h index ad8f4e159..231ea033a 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.h +++ b/src/GroupGUI/GroupGUI_GroupDlg.h @@ -83,6 +83,7 @@ private slots: void showOnlySelected(); void selectionChanged(); void ClickOnOkFilter(); + void ClickOnPlot(); void MeasureToggled(); private: @@ -133,6 +134,7 @@ private: SalomeApp_DoubleSpinBox* myLessFilterSpin; SalomeApp_DoubleSpinBox* myGreaterFilterSpin; QPushButton* myApplyFilterButton; + QPushButton* myPlotDistributionButton; QGroupBox* myFilterGrp; }; diff --git a/src/MeasureGUI/CMakeLists.txt b/src/MeasureGUI/CMakeLists.txt index c7ab327c1..31e2375ac 100755 --- a/src/MeasureGUI/CMakeLists.txt +++ b/src/MeasureGUI/CMakeLists.txt @@ -129,6 +129,7 @@ SET(_moc_HEADERS MeasureGUI_ManageDimensionsDlg.h MeasureGUI_CreateDimensionDlg.h MeasureGUI_DimensionInteractor.h + MeasureGUI_ShapeStatisticsDlg.h ) # header files / uic wrappings @@ -163,6 +164,7 @@ SET(MeasureGUI_SOURCES MeasureGUI_DimensionCreateTool.cxx MeasureGUI_DimensionInteractor.cxx MeasureGUI_DimensionFilter.cxx + MeasureGUI_ShapeStatisticsDlg.cxx ${_moc_SOURCES} ${_uic_files} ) diff --git a/src/MeasureGUI/MeasureGUI.cxx b/src/MeasureGUI/MeasureGUI.cxx index 37c8ed4b2..1ab692d32 100644 --- a/src/MeasureGUI/MeasureGUI.cxx +++ b/src/MeasureGUI/MeasureGUI.cxx @@ -53,6 +53,7 @@ #include "MeasureGUI_FastCheckIntersectionsDlg.h" // Method FAST CHECK INTERSCTIONS #include "MeasureGUI_PointDlg.h" // Method POINTCOORDINATES #include "MeasureGUI_ManageDimensionsDlg.h" // Method MANAGEDIMENSIONS +#include "MeasureGUI_ShapeStatisticsDlg.h" // Method SHAPE STATISTICS #include @@ -129,6 +130,9 @@ bool MeasureGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent ) case GEOMOp::OpFastCheckInters: dlg = new MeasureGUI_FastCheckIntersectionsDlg( getGeometryGUI(), parent ); break; // FAST CHECK INTERSCTIONS + case GEOMOp::OpShapeStatistics: + dlg = new MeasureGUI_ShapeStatisticsDlg( parent ); + break; // FAST CHECK INTERSCTIONS case GEOMOp::OpPointCoordinates: dlg = new MeasureGUI_PointDlg( getGeometryGUI(), parent ); break; // POINT COORDINATES diff --git a/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.cxx b/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.cxx new file mode 100644 index 000000000..9387cf4a8 --- /dev/null +++ b/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.cxx @@ -0,0 +1,533 @@ +// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File : MeasureGUI_ShapeStatisticsDlg.cxx +// Author : Alexander KOVALEV, OPEN CASCADE S.A.S. + +// internal includes +#include "MeasureGUI_ShapeStatisticsDlg.h" + +// GEOM includes +#include +#include +#include +#include + +// GUI includes +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +// Qt includes +#include +#include +#include +#include + +// Qtx includes +#include + +// OCC includes +#include + +#include + +//=========================================================================== +// class : MeasureGUI_ShapeStatisticsDlg() +//=========================================================================== +MeasureGUI_ShapeStatisticsDlg::MeasureGUI_ShapeStatisticsDlg( QWidget* parent, TopoDS_Shape aShape, TopAbs_ShapeEnum aSubShapeType ) + : GEOMBase_Helper( SUIT_Session::session()->activeApplication()->desktop() ), + QDialog( parent ), + myHistogram ( 0 ) +{ + myShapes.push_back( aShape ); + + QIcon iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); + + setWindowTitle( tr( "GEOM_SHAPE_STATISTICS" ) ); + setAttribute( Qt::WA_DeleteOnClose ); + + myApp = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + + QVBoxLayout* topLayout = new QVBoxLayout( this ); + + QGridLayout* settingsLayout = new QGridLayout(); + + /********************** Selected Objects **********************/ + + QLabel* objsLabel = new QLabel( tr( "GEOM_SELECTED_OBJECTS" ), this ); + QPushButton* selBtn = new QPushButton( this ); + selBtn->setIcon( iconSelect ); + myEditMainShape = new QLineEdit( this ); + myEditMainShape->setReadOnly(true); + + settingsLayout->addWidget( objsLabel, 0, 0 ); + settingsLayout->addWidget( selBtn, 0, 1 ); + settingsLayout->addWidget( myEditMainShape, 0, 2 ); + + if ( !aShape.IsNull() ) { + objsLabel->hide(); + selBtn->hide(); + myEditMainShape->hide(); + } + + /********************** Type **********************/ + + QLabel* typeLabel = new QLabel( tr( "GEOM_SHAPE_STATISTICS_TYPE" ), this ); + myCBTypes = new QtxComboBox( this ); + myCBTypes->setCleared( true ); + if ( aSubShapeType != TopAbs_SHAPE ) { + fillTypes( aSubShapeType == TopAbs_EDGE, + aSubShapeType == TopAbs_FACE, + aSubShapeType == TopAbs_SOLID ); + myCBTypes->setEnabled( false ); + } + + settingsLayout->addWidget( typeLabel, 1, 0 ); + settingsLayout->addWidget( myCBTypes, 1, 2 ); + + /********************** Number of intervals **********************/ + + QLabel* nbIntervalsLabel = new QLabel( tr( "GEOM_SHAPE_STATISTICS_NB_INTERVALS" ), this ); + myNbIntervals = new QtxIntSpinBox( 1, 1000, 1, this ); + myNbIntervals->setValue( 10 ); + + settingsLayout->addWidget( nbIntervalsLabel, 2, 0 ); + settingsLayout->addWidget( myNbIntervals, 2, 2 ); + + /********************** Scalar Range **********************/ + + myScalarRangeBox = new QGroupBox( tr( "GEOM_SHAPE_STATISTICS_SCALAR_RANGE" ), this ); + myScalarRangeBox->setCheckable( true ); + myScalarRangeBox->setChecked( false ); + QLabel* minLabel = new QLabel( tr( "GEOM_SHAPE_STATISTICS_MIN" ), this ); + myMin = new QLineEdit( this ); + QtxDoubleValidator* aValid = new QtxDoubleValidator( this ); + aValid->setBottom( 0.0 ); + myMin->setValidator( aValid ); + QLabel* maxLabel = new QLabel( tr( "GEOM_SHAPE_STATISTICS_MAX" ), this ); + myMax = new QLineEdit( this ); + myMax->setValidator( aValid ); + + QPushButton* buttonCompute = new QPushButton( tr( "GEOM_SHAPE_STATISTICS_COMPUTE" ), this ); + connect( buttonCompute, SIGNAL( clicked() ), this, SLOT( clickOnCompute() ) ); + + QGridLayout* scalarRangeLayout = new QGridLayout(); + scalarRangeLayout->setMargin( 11 ); settingsLayout->setSpacing( 6 ); + + scalarRangeLayout->addWidget( minLabel, 0, 0 ); + scalarRangeLayout->addWidget( myMin, 0, 1 ); + scalarRangeLayout->addWidget( maxLabel, 1, 0 ); + scalarRangeLayout->addWidget( myMax, 1, 1 ); + scalarRangeLayout->addWidget( buttonCompute, 0, 2, 2, 1 ); + + myScalarRangeBox->setLayout( scalarRangeLayout ); + + /********************** Buttons **********************/ + + myButtonPlot = new QPushButton( tr( "GEOM_PLOT_DISTRIBUTION" ), this ); + myButtonPlot->setDefault( true ); + myButtonCreateGr = new QPushButton( tr( "GEOM_SHAPE_STATISTICS_CREATE_GROUPS" ), this ); + QPushButton* buttonClose = new QPushButton( tr( "GEOM_BUT_CLOSE" ), this ); + QPushButton* buttonHelp = new QPushButton( tr( "GEOM_BUT_HELP" ), this ); + + QHBoxLayout* buttonsLayout = new QHBoxLayout(); + buttonsLayout->addWidget( myButtonPlot ); + buttonsLayout->addWidget( myButtonCreateGr ); + buttonsLayout->addWidget( buttonClose ); + buttonsLayout->addWidget( buttonHelp ); + + if ( !aShape.IsNull() ) { + myButtonCreateGr->hide(); + } + /********************** Layouting **********************/ + + topLayout->addLayout( settingsLayout ); + topLayout->addWidget( myScalarRangeBox ); + topLayout->addLayout( buttonsLayout ); + + // Signals and slots connections + + connect( selBtn, SIGNAL( clicked() ), this, SLOT( onEditMainShape() ) ); + + connect( myButtonPlot, SIGNAL( clicked() ), this, SLOT( clickOnPlot() ) ); + connect( myButtonCreateGr, SIGNAL( clicked() ), this, SLOT( clickOnCreateGroups() ) ); + + connect( buttonClose, SIGNAL( clicked() ), this, SLOT( reject() ) ); + connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( clickOnHelp() ) ); + + connect(myApp->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(onEditMainShape())); + + if ( aShape.IsNull() ) + onEditMainShape(); +} + +//=========================================================================== +// function : ~MeasureGUI_ShapeStatisticsDlg() +// purpose : Destroys the object and frees any allocated resources +//=========================================================================== +MeasureGUI_ShapeStatisticsDlg::~MeasureGUI_ShapeStatisticsDlg() +{ +} + +//================================================================================= +// function : createOperation +// purpose : +//================================================================================= +GEOM::GEOM_IOperations_ptr MeasureGUI_ShapeStatisticsDlg::createOperation() +{ + return getGeomEngine()->GetIGroupOperations(getStudyId()); +} + +#define RETURN_WITH_MSG(a, b) \ + if (!(a)) { \ + theMessage += (b); \ + return false; \ + } + +//================================================================ +// Function : getFather +// Purpose : Get father object for object to be added in study +// (called with addInStudy method) +//================================================================ +GEOM::GEOM_Object_ptr MeasureGUI_ShapeStatisticsDlg::getFather(GEOM::GEOM_Object_ptr theObj) +{ + GEOM::GEOM_Object_var aFatherObj; + if (theObj->GetType() == GEOM_GROUP) { + GEOM::GEOM_IGroupOperations_var anOper = GEOM::GEOM_IGroupOperations::_narrow(getOperation()); + aFatherObj = anOper->GetMainShape(theObj); + } + return aFatherObj._retn(); +} + +//================================================================================= +// function : getSourceObjects +// purpose : virtual method to get source objects +//================================================================================= +QList MeasureGUI_ShapeStatisticsDlg::getSourceObjects() +{ + QList res; + res << myMainObj; + return res; +} + +//================================================================================= +// function : onEditMainShape() +// purpose : called when selection button was clicked +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::onEditMainShape() +{ + // restore initial parameters for dialog box + myEditMainShape->setText(""); + myEditMainShape->setFocus(); + + //get shapes from selection + QList selShapes = getSelected( TopAbs_SHAPE, -1 ); + + myButtonPlot->setEnabled( !selShapes.isEmpty() ); + myButtonCreateGr->setEnabled( selShapes.count() == 1 ); + + if ( !selShapes.isEmpty() ) { + if ( selShapes.count() == 1 ) + myMainObj = selShapes[0]; + QString aName = selShapes.count() > 1 ? QString( "%1_objects").arg( selShapes.count() ) : GEOMBase::GetName( myMainObj.get() ); + myEditMainShape->setText( aName ); + } + + updateTypes( selShapes ); +} + +//================================================================================= +// function : currentType() +// purpose : returns currently selected type of shapes in 'Type' combobox +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::fillTypes( bool hasEdges, bool hasFaces, bool hasSolids ) +{ + if ( hasEdges ) + myCBTypes->addItem( tr("GEOM_SHAPE_STATISTICS_LENGTH"), (int)TopAbs_EDGE ); + if ( hasFaces ) + myCBTypes->addItem( tr("GEOM_SHAPE_STATISTICS_AREA"), (int)TopAbs_FACE ); + if ( hasSolids ) + myCBTypes->addItem( tr("GEOM_SHAPE_STATISTICS_VOLUME"), (int)TopAbs_SOLID ); + + myCBTypes->setEnabled( myCBTypes->count() > 0 ); +} + +//================================================================================= +// function : updateTypes() +// purpose : update 'Type' combobox with available types +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::updateTypes( QList theShapes ) +{ + myCBTypes->clear(); + myCBTypes->setEnabled( false ); + + int hasEdges = -1, hasFaces = -1, hasSolids = -1; + + myShapes.clear(); + // get types of the shapes and its sub-shapes + foreach( GEOM::GeomObjPtr aShapePtr, theShapes ) { + if ( !aShapePtr ) + return; + + TopoDS_Shape aShape; + if ( !GEOMBase::GetShape( aShapePtr.get(), aShape ) || aShape.IsNull() ) + return; + + myShapes.push_back( aShape ); + + GEOM::ListOfLong_var aSubShapes; + GEOM::GEOM_IShapesOperations_var aShOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + if ( hasEdges != 0 ) + hasEdges = aShOp->NumberOfSubShapes( aShapePtr.get(), TopAbs_EDGE ) > 0; + if ( hasFaces != 0 ) + hasEdges = aShOp->NumberOfSubShapes( aShapePtr.get(), TopAbs_FACE ) > 0; + if ( hasSolids != 0 ) + hasEdges = aShOp->NumberOfSubShapes( aShapePtr.get(), TopAbs_SOLID ) > 0; + } + fillTypes( hasEdges, hasFaces, hasSolids ); +} + +//================================================================================= +// function : currentType() +// purpose : returns currently selected type of shapes in 'Type' combobox +//================================================================================= +TopAbs_ShapeEnum MeasureGUI_ShapeStatisticsDlg::currentType() +{ + return (TopAbs_ShapeEnum)( myCBTypes->itemData( myCBTypes->currentIndex() ).toInt() ); +} + +//================================================================================= +// function : clickOnPlot() +// purpose : called when Plot button was clicked +//================================================================================= +bool MeasureGUI_ShapeStatisticsDlg::isValid(QString& theMessage) +{ + if ( myScalarRangeBox->isChecked() ) { + RETURN_WITH_MSG( !myMin->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MIN_ERROR") ) + RETURN_WITH_MSG( !myMax->text().isEmpty(), tr("GEOM_SHAPE_STATISTICS_MAX_ERROR") ) + RETURN_WITH_MSG( myMin->text().toDouble() <= myMax->text().toDouble(), tr("GEOM_SHAPE_STATISTICS_MIN_MAX_ERROR") ) + } + return true; +} +//================================================================================= +// function : clickOnPlot() +// purpose : called when Plot button was clicked +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::clickOnPlot() +{ + GEOMUtils::Range aRange; + if ( myScalarRangeBox->isChecked() ) { + QString msg; + if ( !isValid( msg ) ) { + showError( msg ); + return; + } + aRange.min = myMin->text().toDouble(); + aRange.max = myMax->text().toDouble(); + } else { + aRange.min = -1.0; // flag that range is empty + aRange.max = -1.0; // flag that range is empty + } + + GEOMUtils::Distribution aShapesDistr = + GEOMUtils::ComputeDistribution( myShapes, currentType(), myNbIntervals->value(), aRange ); + + QList xVals, yVals; + double width = -1, min = -1; + double xmin = 1e+32, xmax = 0.0, ymax = 0.0; + int i=0; + GEOMUtils::Distribution::const_iterator it; + for (it = aShapesDistr.begin(); it != aShapesDistr.end(); it++) { + GEOMUtils::Range ran = *it; + if ( width < 0 ) width = ran.max - ran.min; // bar width + if ( min < 0 ) min = ran.min; // global min + xVals << width / 2. + i*width + min; // get a middle of bar + yVals << ran.count; + // get global boundary max values + if ( ran.min < xmin ) xmin = ran.min; + if ( ran.max > xmax ) xmax = ran.max; + if ( ran.count > ymax ) ymax = ran.count; + i++; + } + + // plot the computed distribution + SUIT_ViewManager* aViewManager = myApp->getViewManager( Plot2d_Viewer::Type(), true ); // create if necessary + if( !aViewManager ) + return; + Plot2d_ViewWindow* aViewWnd = dynamic_cast(aViewManager->getActiveView()); + if( !aViewWnd ) + return; + Plot2d_ViewFrame* aPlot = aViewWnd->getViewFrame(); + if ( !aPlot ) + return; + + aPlot->EraseAll(); + + // create or reuse histogram + if( !myHistogram ) + myHistogram = new Plot2d_Histogram(); + else + myHistogram->clearAllPoints(); + // set histogram parameters + myHistogram->setData( xVals, yVals ); + if ( width != 0.0 ) + myHistogram->setWidth( width ); + myHistogram->setAutoAssign(true); + myHistogram->setName( myEditMainShape->text() ); + myHistogram->setHorTitle( myCBTypes->currentText() ); + myHistogram->setVerTitle( tr("GEOM_SHAPE_STATISTICS_DISTRIBUTION_NB_ENT") ); + myHistogram->setColor( QColor(0, 85, 0) ); + // display histogram + aPlot->displayObject( myHistogram, true ); + if ( width == 0.0 ) // only one X value + aPlot->fitAll(); + else + aPlot->fitData( 0, xmin, xmax, 0.0, ymax ); +} + +//================================================================================= +// function : clickOnCompute() +// purpose : called when Compute button was clicked +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::clickOnCompute() +{ + GEOMUtils::Range aRange; + aRange.min = -1.0; // flag that range is empty + aRange.max = -1.0; // flag that range is empty + std::map measures = GEOMUtils::ComputeMeasures( myShapes, currentType(), aRange ); + if ( measures.size() != 0 ) { + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 ); + myMin->setText( DlgRef::PrintDoubleValue( aRange.min, aPrecision ) ); + myMax->setText( DlgRef::PrintDoubleValue( aRange.max, aPrecision ) ); + } +} + +//================================================================================= +// function : clickOnCreateGroups() +// purpose : called when Create Groups button was clicked +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::clickOnCreateGroups() +{ + onAccept(false, false, false); +} + +//================================================================================= +// function : execute(ObjectList& objects) +// purpose : +//================================================================================= +bool MeasureGUI_ShapeStatisticsDlg::execute(ObjectList& objects) +{ + if ( myMainObj.isNull() ) + return false; + + GEOM::GroupOpPtr anOper = GEOM::GEOM_IGroupOperations::_narrow(getOperation()); + + GEOMUtils::Range aRange; + if ( myScalarRangeBox->isChecked() ) { + QString msg; + if ( !isValid( msg ) ) { + showError( msg ); + return false; + } + aRange.min = myMin->text().toDouble(); + aRange.max = myMax->text().toDouble(); + } else { + aRange.min = -1.0; // flag that range is empty + aRange.max = -1.0; // flag that range is empty + } + + SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); + int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 ); + QString aTypePrefix = myCBTypes->currentText().replace(' ', '_'); + QString objIOR, aMin, aMax, aGroupName; + SalomeApp_Study* study = getStudy(); + + GEOMUtils::Distribution aShapesDistr = + GEOMUtils::ComputeDistribution( myShapes, currentType(), myNbIntervals->value(), aRange ); + + int nbGroups = 0; + + GEOMUtils::Distribution::const_iterator it; + for (it = aShapesDistr.begin(); it != aShapesDistr.end(); it++) { + std::list idList = (*it).indices; + int nn = idList.size(); + if ( nn > 0 ) { + GEOM::ListOfLong_var aNewList = new GEOM::ListOfLong; + aNewList->length(nn); + int ii = 0; + std::list::const_iterator id_it; + for ( id_it = idList.begin(); id_it != idList.end(); id_it++ ) { + aNewList[ii++] = *id_it; + } + + // Create an empty group + GEOM::GEOM_Object_var aGroup; + aGroup = anOper->CreateGroup( myMainObj.get(), currentType() ); + + if (CORBA::is_nil(aGroup) || !anOper->IsDone()) + return false; + + // Add sub-shapes into group + anOper->UnionIDs(aGroup, aNewList); + if (!anOper->IsDone()) + return false; + + // publish group + aMin = DlgRef::PrintDoubleValue( (*it).min, aPrecision ); + aMax = DlgRef::PrintDoubleValue( (*it).max, aPrecision ); + aGroupName = aTypePrefix + "_" + aMin + "_" + aMax; + GEOMBase::PublishSubObject( aGroup, aGroupName ); + + // this is needed just to avoid error message + objects.push_back(aGroup._retn()); + + nbGroups++; + } + } + + SUIT_MessageBox::information( this, tr( "INF_INFO" ), tr( "GEOM_MSG_GROUPS_CREATED" ).arg( nbGroups ) ); + + return true; +} + +//================================================================================= +// function : clickOnHelp() +// purpose : called when Help button was clicked +//================================================================================= +void MeasureGUI_ShapeStatisticsDlg::clickOnHelp() +{ + GeometryGUI* aGeomGUI = dynamic_cast( myApp->module( "Geometry" ) ); + myApp->onHelpContextModule( aGeomGUI ? myApp->moduleName( aGeomGUI->moduleName() ) : QString(""), "shape_statistics_operation_page.html" ); +} diff --git a/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.h b/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.h new file mode 100644 index 000000000..80131321b --- /dev/null +++ b/src/MeasureGUI/MeasureGUI_ShapeStatisticsDlg.h @@ -0,0 +1,92 @@ +// Copyright (C) 2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// GEOM GEOMGUI : GUI for Geometry component +// File : MeasureGUI_ShapeStatisticsDlg.h +// Author : Alexander KOVALEV, Open CASCADE (alexander.kovalev@opencascade.com) +// +#ifndef MEASUREGUI_SHAPESTATISTICSDLG_H +#define MEASUREGUI_SHAPESTATISTICSDLG_H + +// GEOM includes +#include +#include "GEOM_GenericObjPtr.h" + +// Qt includes +#include +#include +#include +#include + +// Qtx includes +#include +#include + +class Plot2d_Histogram; + +//========================================================================== +// class : MeasureGUI_ShapeStatisticsDlg +// purpose : +//========================================================================== + +class MeasureGUI_ShapeStatisticsDlg : public QDialog, public GEOMBase_Helper +{ + Q_OBJECT + +public: + MeasureGUI_ShapeStatisticsDlg( QWidget*, TopoDS_Shape aShape = TopoDS_Shape(), TopAbs_ShapeEnum aSubShapeType = TopAbs_SHAPE ); + ~MeasureGUI_ShapeStatisticsDlg(); + +protected: + // redefined from GEOMBase_Helper + virtual GEOM::GEOM_IOperations_ptr createOperation(); + virtual bool isValid (QString&); + virtual bool execute (ObjectList&); + virtual GEOM::GEOM_Object_ptr getFather (GEOM::GEOM_Object_ptr); + virtual QList getSourceObjects(); + +private slots: + void onEditMainShape(); + void clickOnCompute(); + void clickOnPlot(); + void clickOnCreateGroups(); + void clickOnHelp(); + +private: + void fillTypes( bool, bool, bool ); + void updateTypes( QList theShapes ); + TopAbs_ShapeEnum currentType(); + +private: + SalomeApp_Application* myApp; + QLineEdit* myEditMainShape; + QtxComboBox* myCBTypes; + std::list myShapes; + GEOM::GeomObjPtr myMainObj; + QtxIntSpinBox* myNbIntervals; + QGroupBox* myScalarRangeBox; + QLineEdit* myMin; + QLineEdit* myMax; + QPushButton* myButtonPlot; + QPushButton* myButtonCreateGr; + Plot2d_Histogram* myHistogram; + +}; + +#endif // MEASUREGUI_SHAPESTATISTICSDLG_H -- 2.39.2