From 184f00f38ef65b5d58b798e8c13042c16e030a4f Mon Sep 17 00:00:00 2001 From: dmv Date: Wed, 8 Jul 2009 10:34:09 +0000 Subject: [PATCH] 0020082: EDF 869 GEOM : Edges Orientation indicator/reverse --- .../gui/SMESH/images/a-arithmetic1d.png | Bin 12239 -> 14764 bytes doc/salome/gui/SMESH/images/a-nbsegments1.png | Bin 5628 -> 15530 bytes doc/salome/gui/SMESH/images/a-nbsegments2.png | Bin 6027 -> 21081 bytes .../gui/SMESH/images/a-startendlength.png | Bin 5404 -> 17193 bytes .../distributionwithanalyticdensity.png | Bin 13463 -> 35416 bytes .../images/distributionwithtabledensity.png | Bin 16346 -> 38836 bytes .../gui/SMESH/input/1d_meshing_hypo.doc | 18 + idl/SMESH_BasicHypothesis.idl | 61 ++- src/OBJECT/Makefile.am | 3 + src/OBJECT/SMESH_PreviewActorsCollection.cxx | 206 +++++++++ src/OBJECT/SMESH_PreviewActorsCollection.h | 78 ++++ src/SMESHGUI/SMESHGUI_Hypotheses.cxx | 6 + src/SMESHGUI/SMESHGUI_Hypotheses.h | 4 + src/SMESHGUI/SMESHGUI_MeshOp.cxx | 17 + src/StdMeshers/StdMeshers_Arithmetic1D.cxx | 38 +- src/StdMeshers/StdMeshers_Arithmetic1D.hxx | 14 + .../StdMeshers_NumberOfSegments.cxx | 35 ++ .../StdMeshers_NumberOfSegments.hxx | 9 + src/StdMeshers/StdMeshers_Regular_1D.cxx | 16 +- src/StdMeshers/StdMeshers_Regular_1D.hxx | 1 + src/StdMeshers/StdMeshers_StartEndLength.cxx | 39 +- src/StdMeshers/StdMeshers_StartEndLength.hxx | 12 + src/StdMeshersGUI/Makefile.am | 9 +- .../StdMeshersGUI_EdgeDirectionParamWdg.cxx | 417 ++++++++++++++++++ .../StdMeshersGUI_EdgeDirectionParamWdg.h | 107 +++++ .../StdMeshersGUI_NbSegmentsCreator.cxx | 31 +- .../StdMeshersGUI_NbSegmentsCreator.h | 4 + .../StdMeshersGUI_StdHypothesisCreator.cxx | 55 ++- src/StdMeshersGUI/StdMeshers_msg_en.ts | 4 + .../StdMeshers_Arithmetic1D_i.cxx | 100 ++++- .../StdMeshers_Arithmetic1D_i.hxx | 13 + .../StdMeshers_NumberOfSegments_i.cxx | 99 +++++ .../StdMeshers_NumberOfSegments_i.hxx | 12 + .../StdMeshers_StartEndLength_i.cxx | 97 ++++ .../StdMeshers_StartEndLength_i.hxx | 12 + 35 files changed, 1505 insertions(+), 12 deletions(-) create mode 100644 src/OBJECT/SMESH_PreviewActorsCollection.cxx create mode 100644 src/OBJECT/SMESH_PreviewActorsCollection.h create mode 100644 src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.cxx create mode 100644 src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.h diff --git a/doc/salome/gui/SMESH/images/a-arithmetic1d.png b/doc/salome/gui/SMESH/images/a-arithmetic1d.png index d34a5e24cf55507697450e297255e8c99a9c6698..aa43beb5fba8e483c67be55bbec8e90627d6fcd5 100755 GIT binary patch literal 14764 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

5Ke6ddO=&i@v+SEkkoOg`W zE}$AGJN9jBcBcJE7DKkSM`8=q@N1$=KBRYf=t{}lb{&KF!QIxtYXq4XIxn}yB(vb~ zaOcU$K@=+G9Kj_>grg7Jv(!x6sYVDfC6Djz(o(wu`iil&@shtI&BnDy;4OvSwwdw7 zZ0+Bm26r2`GJzS>;RT^7;+iOe;jD%uG!d*@aSi0Qy0cSjhm$ zXqoaQrJ{bX!@^{kfWLTfa4@f<@ffAwYsgaus>yW*iSBmw*w%`+Z=WT{Bo#zWI0b&e@-+=FY> z0(K=S#=WT`(39OkK*I)eooN8brY`g;c?8b127#hP2d3h~gbf=LlV5jtHx$>|-R%^= zfc4&*ZSPJKOQ4_dm|j>9U_pKV`AN!r{G0tJ-1gpH&YAD2Ka7aw-o0Rr1bEjd0udb_ zAJ}iwhC-%jRhTV^q>smQ>*!mob1*WtYkZF6{B@;7ZRwY8ZveGO#vn&T>iqdKhXsZG zjR_=@yGeKL#5Fn2w)BFN4j*aM!1L7Qo^b{(JER;p`bl`|3pIP`r!rgH0|}koKbY^_ z@kO8R=!Wdi$%E2$_4#))Qg&M~OWpFG?Qo1KfF9SK9-$phj<xCtt0kR2{7z~Sc9qH@ZFUYx8dxY8Ewn{BAL^D!gi?3LYlC%p2D z{i7uRgCzW49mrDJfU_?!IcS);1>Ip(%?BVKZ|(w@T&Bk^RBlU? zGyVy(@MXah3kwUXr)p4e+0+(S-kGGZ#IRhBMxi971-j3{$L*R$7unzz?}jKJTHJc| z<>g&o_HyDZhwy0qi)K8+GR~}iS7JK-JKuhvcit-O^iN3ez9^mTT10Nyh_w8b-y)73 z_shs&7&KGL(>8oKJ3HGYT=%^IQ8?|8%d5;vrq9X^7Mn_#_xq)#x18iek|(<{y{jQ| z(Vyd!gveNql*E`QYg2=Bbgea>sC6xo+1 zw}6thx8e6Zu#<_TzxGI4`U2o(COydyeT`#B!HAlkTITYLEKCl+0;+VO96^uQgODP< z`gpcHiOzZqe6=X=4Kf~j_$vmlq-!0~H_O@2`*y~#@f&v#AMLFoqFEGEaSg|sMn*Sk<_%VLGe^bJaMvO|%((SKrta^{VhnIrR&Toj7%;>G^5*HVo~1NPg3jI#qT-^kCgb9lL9 z?+OUSW@j_6jFk5Mh+;yDF_Rt=m1{n5)4${+{No2Hlf0rL6O*{#?yeKs60kAa5TnVFeN%c)+GvTlWDFXTg zcH-J-xgYq@{THP9#^Id3hh5K|_vbz3RYJJki87zr(HR*TkJBcj6;)IaeSIXp;3-I{ zs5-miIFKS=6d7Hf4rIP20BRj9q{N;@#VL;E5VRmw-fL>;#O#Mx@*yuIX1j}P<^MACK@+ZVVdAV$&#C`@y>beS9zO;Oi1vp`O@*y z*s(vhYFEl%0t6I2Mpg5B|Ef$%CX1TEOUL7-NWjWyfpOAsUbaSyp3bT^k8i)B)3~PS z2v&rflvE>4)a}DLf|8AMlOj)~q>#sRBzV|5Cu_t{9S-0Sur}sHg)t7x}6=S3~4O z-cZI_#_rx1_G{t&!cV1?sKlxyL&jPfYM{*8(6GyKhp}DlCzGGW{};TerSG_#^`^cC zD}+RovXz^>hPx6d2 z=-!S703P68!mLrG0|ITeocY=}7<{(v%dvw%%YTlPM(YfVSJop{2I1O(R2O-Au*`Kt zawHt-88ryEoAVj%@)>ROZAJEzNzi+4K2CQ#qEau? zY>~`6uAn7(Bn|CZkZ0(tGK4^=%<#Pcr8X0FyBiazq&3eI&$LcVMW19A;E<`}9@VLz zdkU3g-OrsnXEpXUhqKVB@Gm%AQF2eehrP%F03WEHrQu>4ie3Xq^O`Y?RXnAq0~8xq zptgB&iFgT_B;h4Gn5)duCv}6ABnFqN?{{_5jp|0nj<|csYe?h%2 zsouC0*1;S{*U8DrUPm|6ot$i!jd2m68h}@OA@fC+Osa?@Va1rP%~ohIy3^|!=3r}% z<#$O#toZ;^{)UKl<=d9ePeUPc3JRb9BXY6sbXS^D@)$z6yL~=MJ4e!q#e+N`3|KYi z%V6u;>8VG|m`1Ek|DH;EcNi7_(nu+TVmzn)hT~*|8z8zOvZcJdya5||(D{EtU9A8- z$wSK<^He%>vrtGp4WVS4++*sFUB33{FLiYb0>mw?7%U9977#)bs%}t;LSNYec`4?y zHV?dW;NFrz>U%aEPX3FcyH{57et$>fd4;Jmpl|Z>@)rmR9TvN(KxsFad>s-T1csp0 zTuv>a2DiMVvT-?26Kdp6_JcnF2&}R(D@cw5;zs>MME_f6M#j(0FBBi|QD~U2=RqmM zWsdgOk-%khTPsH#Y_^gtPc`|t1+g&Fvtk7n092VzHi+1kdZv8)Cd{S#?UAQ0l!8mw zt`VFi8AQUcAH1v_*+eH>Wij-2{2Q-<=hj6?hV?_6z^VI-B1gu6smNq)2W`_rV6L__ZM$3YrCd!3vQ{caWR@xix#sfy6mRNgIgwP;l zP)g#?M={Rq@oJix7b@&Y}F zcQcJ8hcoe}SNp6ydg+7WAMkoAuL2$R-y-W0yFgm-DEC=f*P2!ZQY`GI+CX8mC~QS@ zmLp4A`s%jEh6ePsbs4l0<$$mJGsOEh#in7aZWv0=1pq|)ei0y0G-3;lyrIUC~emS26mMG9LxOsv1SXkfgR~OCg2>> zXciCi`J_quq!aGZ@OT~VJ{b`M;vXM|!IJ9r-~4q6D|MZureW`|@$};EWm`Mp2gzPU zdK7?@q!}gD&b^8kfU`5s5-#w_A*d`_aK58 z%u%E;OAUxKcgKf5s_{&TMMazvXUC2p8_=w>xGk6xj{o3zQ)&Z_)kj}ifWzVPN=kT# zCr_M+qcE7E9xuf0{k}pOs^1{VZNAMAe*XNqY|Pp)C_n!mz4yUuphA>Q)mcY`>e7Kk z8f4DC0?eP@Hg%Rvg?DdmZ>6T=DGW{QLgmEoDoZLplgq$n0cDfe7sOJ0{QM$LOE;=4 zM;6C?B$0zElHowPTK}$WG2{`R<18xr{AY&!zNS*^);Y0<(+IIjNJyx_X#}k@wJJENpJ;~+vb28L|R>4CS3y0_o7yTktO|7R{e;eS32dih^JuZilK|a}F?_RX2ahcMG zM5{%M(0Yy59{*Za%c02(`ty;L>zz6VGCA8nUOy239}^(bqb<3JOxL8Hwzn&lzs&W;+|BDpj1$0IJel zExp$puspD^V~cfawtMz%DIG>`-~k*0JX7P7qdnlzL4buVo6+b6hKSoi#}|kqzz`m{ zq*xA{4SB8*>$$W1 z{}g(Zaym4Lir*AumgglUo1kw3+CRp|wgCta2@W<~6_hhRa1}_6m>bd^Rvn8 zezSYGTj|tzuni21n3%CzV>WbOh8ds}kWp(G8aATmLMQaFHpE(|ra#Y?LA_MJrzzv4 zMiF%$*!BE|(~#yU;p-=M!OpA0BFMs5g^L5;TpB-jO`kkDkBFdS;^ZXuZIL3Z0Dhg> zSO^*05~_w90*ord_EipD(Rh$E59BJ-bcE4Mjo9d!PnC#+=!#uHhLqhSs@};FJ^M!v z{8HmW?*e{tCbWL0S!qYg4L`mK1KEE+i1^xWXMLu{jysY7u>9ohcZ6rvpQJ895~_h@ zZGFq>`Fyp@TQ_d!*Uaqw`-FZi&A**3MLZ99E?uWJJUu?t)xd~?7|`L>)(5#|8c?R) zf;JQS!G!VQf@N!!Y~9`5crEuit8J%xNhFUS85-WHac&4t(05{f$Vqhd>Stj4dhRV~ zK!A9k4=FCA1ac)LJbWQu$7beJ5dCaHUOMA_zAvL&A;GvYD?zxfXIzd0&dwbK0hE&7 zAS>^F4Ga@J9s>nN_WQvtZd-27G4jAEu~btbAp+X0Dv$!d+50l&*@VMEarZ4y$Ok%& zVFhZr+Z$q-S>yfJKbs#bB?^BU#dRi?^sI++H#VE_mAiHtbwo1s0ZlKBMv0-d%(kN2 zmHt6Eg2t?1%bKdHs;+DO2svft_P2bq>kB;%X!Py+^`~toPBeUdCc(#B-^9O}-gtbj zF*~oVzVb!dv}jvf$2XD64;~_U*8~u!@``>cQ}**ni_!`(fcARI5q;f_)l;x zKlGx2%BT;^I$B*p)!3Hj2}vdU+wG#WxQbW*(RH&VXtHqk{{0VN8-I*Se+=eF(LhUk z@@|M6`=A;*s95?U|3VSk!Uf>Ve?wLIK7M>Y_U+wJZZXY2k2pVBqw*7 zJoKWZk0d#luH0a*PfyB@2lbzdSf-^2yBpeLk);rKUs_f+CM~Up#@;-@9XEY#b69YBpS?h4*nZi`4Z|ze}u@nwTYY4{4n!7eUf<= zk6rYObBa)8br^lE7nD?d|A zb{jJ=F#(L5%)AfiMY$#^v0CV>#l$pav{?!A1Huc2GL5P95`*VQe9sPWPeH#${tGx^ zP#^8$Xt{Bi>)Q*!*>qYS2mtw7f~AG76ii)EXxxrq$_q<}r|vP4lCMDrM|N&*^v93S z-x33d@j;I%r}H14^?ZOdY{()9%rq_3^&{~ASe29Uj0p5(bQqNz@=%Tf(0PYi950gK zAv~^Y%CR^t>7Nm#qnB4 zuJ-B9zgAxxdUs6_z0c+?*|Nl&1)66%S|g!K#oASGM;hrI(Y*_xx)9O|EE`6fB~pkAz@+N6_FkrwL$iC9i)_$KoegDvOfz*`~w`$7&w}g#6Y?0 zm0N?8fjkK^&Q9pVfxQ+5xZnV6+#Fj3+Q2q9&QFrId*?JrO7hl$1k1w!Cdu2! z<3GuoGN#)wY$Zi`A1R?pf3ZHNZ0yMf20)b8yM=n}8kf1;d;9?%-JVxrQ7@u$C`0CR z|0|z5YtVl47wb}R|2v2OM*(6I@5}!4g$lDCF3b&P2K{R#cA zHW~hIFR4ZIG+NTaMHH2+l-z>uGR~3$r>YD{kU#Dj{ZskU^MjXFq?x(X2LJr{;eV7c z|EmKEo|qosD&|lHfqnv1+`Z-Ywhnv+&Y=T>BUtAT75{se8s8Hf zmJGB^fOa;;oa-73HXfw*k}hY(3s|AF9XN;c*{h=qk8raZ}fe0)GjZgGB( zH@QLhbRREOOsme>8J?X3I;aQuSWEpCL5PR$=Is@({YLRk)v3u3Ek&_oAeb?u<4`Y} zuIQ5hHa$T_X%bj}4ui@rT84_NUA{NY3o;%mJ?6;tjXKsKt6E}}lm?fS14C3Qx z(8{-qnaTj+94Uw&fD3;B2EAOn_*bDuWbMx4O2LJ%XlT$C&E|VW zy>3=B7CJtHeKA$xdFU`OFi?hCXJ%%eH_!X|^Es%*HIoh;c`6wlrd3fu0|3wL5VUfn z;!3EW$Nhz?B0i^3A_`8YU)D&}evY#hqpAQ{Fk?l6UtSh`2k}`N62L2!z}p*wh2g-* zO~73MkJD-LS))&Xv`Fv>i|GSvaE0_F01>hKMZH+z`STn7{r&#_{=x|i!gkFfzrm~m zClB9dmn|QIr>h`Mp-(ta$T|TILcUhT;_dY)5G(olobF_JZnj(!u>KtjS`Wg(zG@zO z2K2F8-UBPaBK5+Zg#B&G2joPAe(yl>pPQR=Y~Q+NR$?GsqMwvHm^JO_-o8xc;A2~Z zDj&0QlL=es%#kHppq18Yl8K=01Zz2U&>9SdDOd-9*nA&*jar8RA0m|e0q7;tCNBQY`N%{Y7NE!@*sj2B&eg@u(9(+y5PZWl;sDl;1GWP6m9YSI65pGv0M5D`KdKkr2J+?oMIwAz zIy**7YLywjLxdeD6rSLj1-`pe$c7g5iU3`LXF|UU)V6kZjCYs%@fs8~fYv!J&lZWf zh%I29f$}-VO`QSa_z*O={LE8fz^9+-KBsPg@BRR7Ss@^*2A68_yX4qum2cye zhPy{%F*$jp?9D29g8wIw%%~2e zh+9^twC0cg9X}!%B~w9{-?m0Pu63E~Pmf?Wp%gvrFj-#2|T-0`JJX)_`3Lc@GDG+{L^RBB~J|B{~yKc(n0_L literal 12239 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 EAK@i2JOBUy diff --git a/doc/salome/gui/SMESH/images/a-nbsegments1.png b/doc/salome/gui/SMESH/images/a-nbsegments1.png index 27668505c45da70a23f6f807219bac4ec45b0acd..0cd778fc43dea4d6f45b809c0fa0a550aa319919 100755 GIT binary patch literal 15530 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 c9oU;z4HV74KkXfnB0pJQT=!S5C4bbPyhe` literal 5628 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 literal 6027 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 Zhe-Qie@!<|g?(fPtjw>P;Y>X4{Rc-i&{6;Z diff --git a/doc/salome/gui/SMESH/images/a-startendlength.png b/doc/salome/gui/SMESH/images/a-startendlength.png index 947567d7f8d9172ab6aa8bc73ead4e13fb112f4b..ba29d91dffc017315911b93648a0da8c61e58dd7 100755 GIT binary patch literal 17193 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 diff --git a/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png b/doc/salome/gui/SMESH/images/distributionwithanalyticdensity.png index 7dea248c62f0f07df95e5cc39a1f4186b7f5fd68..83c086b438f0f500646e431a10f0fb4898fe0842 100755 GIT binary patch literal 35416 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�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

ABD_FrF8aZco}ENwYj>wf|GhO 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 V8-;w}KO6x%*Yz|@uUS9&{{Zd^GB^ML diff --git a/doc/salome/gui/SMESH/images/distributionwithtabledensity.png b/doc/salome/gui/SMESH/images/distributionwithtabledensity.png index 3bd40bc458fa3f23233ee829ee152edadb3e1a7b..60847cde5ffe148afd4d31f4ac30c4125a6d3aa6 100755 GIT binary patch literal 38836 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 G@qYkS3VJ{Q literal 16346 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"Reverse Edges" list box allows to specify the edges for which the splitting should be made +in the direction opposing to their orientation. This list box is enabled only if the geometry object +is selected for the meshing. In this case the user can select edges to be reversed either directly +picking them in the 3D viewer or by selecting the edges or groups of edges in the Object browser. + \image html a-arithmetic1d.png \image html b-ithmetic1d.png "Arithmetic 1D hypothesis - the size of mesh elements gradually increases" @@ -106,6 +112,12 @@ edges generated by these segments will represent nodes of your mesh. Later these nodes will be used for meshing of the faces abutting to these edges. +The direction of the splitting is defined by the orientation of the underlying geometrical edge. +"Reverse Edges" list box allows to specify the edges for which the splitting should be made +in the direction opposing to their orientation. This list box is enabled only if the geometry object +is selected for the meshing. In this case the user can select edges to be reversed either directly +picking them in the 3D viewer or by selecting the edges or groups of edges in the Object browser. + \image html image46.gif You can set the type of distribution for this hypothesis in the @@ -149,6 +161,12 @@ geometric progression. Then mesh nodes are constructed at segment ends location and 1D mesh elements are constructed on them. +The direction of the splitting is defined by the orientation of the underlying geometrical edge. +"Reverse Edges" list box allows to specify the edges for which the splitting should be made +in the direction opposing to their orientation. This list box is enabled only if the geometry object +is selected for the meshing. In this case the user can select edges to be reversed either directly +picking them in the 3D viewer or by selecting the edges or groups of edges in the Object browser. + \image html a-startendlength.png \image html b-art_end_length.png "The lengths of the first and the last segment are strictly defined" diff --git a/idl/SMESH_BasicHypothesis.idl b/idl/SMESH_BasicHypothesis.idl index 9c428ba14..db057f860 100644 --- a/idl/SMESH_BasicHypothesis.idl +++ b/idl/SMESH_BasicHypothesis.idl @@ -29,7 +29,6 @@ #include "SMESH_Hypothesis.idl" #include "SMESH_Mesh.idl" - /*! * StdMeshers: interfaces to standard hypotheses and algorithms */ @@ -209,6 +208,26 @@ module StdMeshers */ long ConversionMode() raises (SALOME::SALOME_Exception); + + /*! + * Set list of edges to reverse + */ + void SetReversedEdges( in SMESH::long_array list ); + + /*! + * Returns list of edges to reverse + */ + SMESH::long_array GetReversedEdges(); + + /*! + * Set entry of the main object + */ + void SetObjectEntry( in string entry ); + + /*! + * Get the entry of the main object + */ + string GetObjectEntry(); }; /*! @@ -226,6 +245,26 @@ module StdMeshers * Returns or parameter value */ double GetLength(in boolean isStartLength); + + /*! + * Set list of edges to reverse + */ + void SetReversedEdges( in SMESH::long_array list ); + + /*! + * Returns list of edges to reverse + */ + SMESH::long_array GetReversedEdges(); + + /*! + * Set entry of the main object + */ + void SetObjectEntry( in string entry ); + + /*! + * Get the entry of the main object + */ + string GetObjectEntry(); }; /*! @@ -277,6 +316,26 @@ module StdMeshers * Returns or parameter value */ double GetLength(in boolean isStartLength); + + /*! + * Set list of edges to reverse + */ + void SetReversedEdges( in SMESH::long_array list ); + + /*! + * Returns list of edges to reverse + */ + SMESH::long_array GetReversedEdges(); + + /*! + * Set entry of the main object + */ + void SetObjectEntry( in string entry ); + + /*! + * Get the entry of the main object + */ + string GetObjectEntry(); }; diff --git a/src/OBJECT/Makefile.am b/src/OBJECT/Makefile.am index bd233661a..8ef36754f 100644 --- a/src/OBJECT/Makefile.am +++ b/src/OBJECT/Makefile.am @@ -34,6 +34,7 @@ salomeinclude_HEADERS = \ SMESH_ActorUtils.h \ SMESH_ActorDef.h \ SMESH_DeviceActor.h \ + SMESH_PreviewActorsCollection.h \ SMESH_ExtractGeometry.h \ SMESH_ActorUtils.h \ SMESH_FaceOrientationFilter.h @@ -45,11 +46,13 @@ dist_libSMESHObject_la_SOURCES = \ SMESH_Object.cxx \ SMESH_DeviceActor.cxx \ SMESH_Actor.cxx \ + SMESH_PreviewActorsCollection.cxx \ SMESH_ExtractGeometry.cxx \ SMESH_ActorUtils.cxx \ SMESH_FaceOrientationFilter.cxx libSMESHObject_la_CPPFLAGS = \ + $(QT_INCLUDES) \ $(KERNEL_CXXFLAGS) \ $(GUI_CXXFLAGS) \ $(MED_CXXFLAGS) \ diff --git a/src/OBJECT/SMESH_PreviewActorsCollection.cxx b/src/OBJECT/SMESH_PreviewActorsCollection.cxx new file mode 100644 index 000000000..59238dcf1 --- /dev/null +++ b/src/OBJECT/SMESH_PreviewActorsCollection.cxx @@ -0,0 +1,206 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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 +// +// SMESH OBJECT : interactive object for SMESH visualization +// File : SMESH_PreviewActorsCollection.cxx +// Author : +// Module : SMESH +// + +#include "SMESH_PreviewActorsCollection.h" + +#include "utilities.h" + +#include "SALOME_InteractiveObject.hxx" + +// OCC includes +#include +#include +#include + +// VTK includes +#include +#include +#include +#include +#include + +#include "VTKViewer_Actor.h" + +#include "SVTK_DeviceActor.h" +#include "SALOME_Actor.h" + +// QT +#include +#include + +#ifdef _DEBUG_ +static int MYDEBUG = 0; +#else +static int MYDEBUG = 0; +#endif + +using namespace std; + + +//vtkStandardNewMacro(SMESH_PreviewActorsCollection); + + +SMESH_PreviewActorsCollection +::SMESH_PreviewActorsCollection() +{ + if(MYDEBUG) MESSAGE("SMESH_PreviewActorsCollection - "<setEntry( theEntry.toLatin1().constData() ); + + // get indexes of seleted elements + TopExp::MapShapes(theShape, myMapOfShapes); + + TopExp_Explorer exp( theShape, theType ); + for ( ; exp.More(); exp.Next() ) { + int index = myMapOfShapes.FindIndex( exp.Current() ); + if ( index ) { + // create actor if the index is present + if ( GEOM_Actor* anActor = createActor( exp.Current() )) { + // Create new entry for actor + QString aString = theEntry; + aString += QString("_%1").arg( index ); // add index to actor entry + + // Create interactive object + Handle( SALOME_InteractiveObject ) anIO = new SALOME_InteractiveObject(); + anIO->setEntry( aString.toLatin1().constData() ); + + // Init Actor + anActor->SetVectorMode( true ); + anActor->setIO( anIO ); + anActor->SetSelector( mySelector ); + anActor->SetPickable( true ); + anActor->SetResolveCoincidentTopology( true ); + + // Add Actor to the Actors Map + myMapOfActors.insert(index, anActor); + } + } + } + mySelector->ClearIObjects(); + + return true; +} + +GEOM_Actor* SMESH_PreviewActorsCollection::createActor(const TopoDS_Shape& shape) +{ + GEOM_Actor* actor = GEOM_Actor::New(); + actor->SetShape(shape,0,0); + + //Color Properties + /* + vtkProperty* aProp = vtkProperty::New(); + vtkProperty* aHLProp = vtkProperty::New(); + vtkProperty* aPHLProp = vtkProperty::New(); + + aProp->SetColor( 255, 0, 0); + actor->SetProperty(aProp); + + aHLProp->SetColor( 255, 255, 255); + actor->SetHighlightProperty(aHLProp); + + aPHLProp->SetColor( 155, 155, 155); + aPHLProp->SetLineWidth ( 3 ); + aPHLProp->SetOpacity ( 0.75 ); + actor->SetPreHighlightProperty(aPHLProp); + + aProp->Delete(); + aHLProp->Delete(); + aPHLProp->Delete(); + */ + + return actor; +} + +GEOM_Actor* SMESH_PreviewActorsCollection::GetActorByIndex(int index) +{ + return myMapOfActors.value(index); +} + +int SMESH_PreviewActorsCollection::GetIndexByShape( const TopoDS_Shape& theShape ) +{ + return myMapOfShapes.FindIndex( theShape ); +} + +void SMESH_PreviewActorsCollection::AddToRender(vtkRenderer* theRenderer) +{ + myRenderer = theRenderer; + + QMap::iterator iter = myMapOfActors.begin(); + for ( ; iter != myMapOfActors.end(); ++iter ) + iter.value()->AddToRender( theRenderer ); +} + +void SMESH_PreviewActorsCollection::RemoveFromRender(vtkRenderer* theRenderer){ + QMap::iterator iter = myMapOfActors.begin(); + for ( ; iter != myMapOfActors.end(); ++iter ) + iter.value()->RemoveFromRender( theRenderer ); +} + +void SMESH_PreviewActorsCollection::SetSelector(SVTK_Selector* theSelector) +{ + mySelector = theSelector; +} + +void SMESH_PreviewActorsCollection::HighlightAll( bool theHighlight ){ + QMap::iterator iter = myMapOfActors.begin(); + for ( ; iter != myMapOfActors.end(); ++iter ) + iter.value()->Highlight( theHighlight ); +} + +void SMESH_PreviewActorsCollection::HighlightID( int index ){ + GEOM_Actor* anActor = GetActorByIndex( index ); + if ( anActor && !anActor->isHighlighted() ) + anActor->Highlight( true ); +} + +void SMESH_PreviewActorsCollection::SetShown( bool shown ){ + QMap::iterator iter = myMapOfActors.begin(); + for ( ; iter != myMapOfActors.end(); ++iter ) + iter.value()->SetVisibility( shown ); +} diff --git a/src/OBJECT/SMESH_PreviewActorsCollection.h b/src/OBJECT/SMESH_PreviewActorsCollection.h new file mode 100644 index 000000000..857570ace --- /dev/null +++ b/src/OBJECT/SMESH_PreviewActorsCollection.h @@ -0,0 +1,78 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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 +// +// SMESH OBJECT : interactive object for SMESH visualization +// File : SMESH_PreviewActorsCollection.h +// Author : OCN +// Module : SMESH +// $Header: /home/server/cvs/SMESH/SMESH_SRC/src/OBJECT/SMESH_PreviewActorsCollection.h,v 1 +// +#ifndef SMESH_PREVIEW_ACTOR_COLLECTION_H +#define SMESH_PREVIEW_ACTOR_COLLECTION_H + +#include +#include +#include "SMESH_Object.h" +#include +#include +#include +#include +#include +#include + +class vtkRenderer; +class GEOM_Actor; + +class SMESHOBJECT_EXPORT SMESH_PreviewActorsCollection +{ + public: + SMESH_PreviewActorsCollection(); + ~SMESH_PreviewActorsCollection(); + + virtual void AddToRender(vtkRenderer* theRenderer); + virtual void RemoveFromRender(vtkRenderer* theRenderer); + + bool Init( const TopoDS_Shape& theShape, TopAbs_ShapeEnum subShapeType = TopAbs_EDGE, const QString& = QString("") ); + + void SetSelector( SVTK_Selector* ); + + void HighlightAll( bool ); + void HighlightID( int ); + + GEOM_Actor* GetActorByIndex( int ); + + int GetIndexByShape( const TopoDS_Shape& ); + + void SetShown( bool ); + + protected: + GEOM_Actor* createActor( const TopoDS_Shape& ); + + protected: + TopoDS_Shape myMainShape; + SVTK_Selector* mySelector; + vtkRenderer* myRenderer; + TopTools_IndexedMapOfShape myMapOfShapes; + QMap myMapOfActors; +}; + + +#endif //SMESH_DEVICE_ACTOR_COLLECTION_H diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index e636ea8d6..3e3c6338f 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -159,6 +159,7 @@ bool SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ Dlg->setType( type() ); retrieveParams(); Dlg->show(); + Dlg->resize( Dlg->minimumSizeHint() ); if ( !myEventLoop ) myEventLoop = new QEventLoop( this ); myEventLoop->exec(); // make myDlg not modal @@ -383,6 +384,11 @@ SMESH::SMESH_Hypothesis_var SMESHGUI_GenericHypothesisCreator::hypothesis() cons return myHypo; } +void SMESHGUI_GenericHypothesisCreator::setShapeEntry( const QString& theEntry ) +{ + myShapeEntry = theEntry; +} + //================================================================================ /*! * \brief Return hypothesis containing initial parameters diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index 6cf6c524d..f4db07a2e 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -64,6 +64,9 @@ public: QString hypType() const; QString hypName() const; bool isCreation() const; + + QString getShapeEntry() const { return myShapeEntry; } + void setShapeEntry( const QString& theEntry ); protected: struct StdParam @@ -121,6 +124,7 @@ private: bool myIsCreate; QtxDialog* myDlg; QEventLoop* myEventLoop; + QString myShapeEntry; }; class SMESHGUI_HypothesisDlg : public QtxDialog diff --git a/src/SMESHGUI/SMESHGUI_MeshOp.cxx b/src/SMESHGUI/SMESHGUI_MeshOp.cxx index ae29fc4b1..c617ecc79 100644 --- a/src/SMESHGUI/SMESHGUI_MeshOp.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshOp.cxx @@ -1063,6 +1063,15 @@ void SMESHGUI_MeshOp::createHypothesis (const int theDim, int obj = myDlg->getActiveObject(); removeCustomFilters(); // Issue 0020170 + + // Set Geometry + QStringList aList; + myDlg->selectedObject( SMESHGUI_MeshDlg::Geom, aList ); + if (aList.count() != 0) + aCreator->setShapeEntry( aList.first() ); + else + aCreator->setShapeEntry( QString() ); + myDlg->setEnabled( false ); aCreator->create(initParamHyp, aHypName, myDlg); onActivateObject( obj ); // Issue 0020170. Restore filters @@ -1116,6 +1125,14 @@ void SMESHGUI_MeshOp::onEditHyp( const int theHypType, const int theIndex ) getInitParamsHypothesis( aHyp->GetName(), aHyp->GetLibName()); aCreator->setInitParamsHypothesis( initParamHyp ); + // Set Geometry + QStringList aList; + myDlg->selectedObject( SMESHGUI_MeshDlg::Geom, aList ); + if (aList.count() > 0) + aCreator->setShapeEntry( aList.first() ); + else + aCreator->setShapeEntry( "" ); + int obj = myDlg->getActiveObject(); removeCustomFilters(); // Issue 0020170 myDlg->setEnabled( false ); diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx index d2e0b1bf2..a24909a0c 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.cxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.cxx @@ -104,9 +104,32 @@ double StdMeshers_Arithmetic1D::GetLength(bool isStartLength) const */ //============================================================================= +void StdMeshers_Arithmetic1D::SetReversedEdges( std::vector& ids ) +{ + if ( ids != _edgeIDs ) { + _edgeIDs = ids; + + NotifySubMeshesHypothesisModification(); + } +} + +//============================================================================= +/*! + * + */ +//============================================================================= + ostream & StdMeshers_Arithmetic1D::SaveTo(ostream & save) { - save << _begLength << " " << _endLength; + int listSize = _edgeIDs.size(); + save << _begLength << " " << _endLength << " " << listSize; + + if ( listSize > 0 ) { + for ( int i = 0; i < listSize; i++) + save << " " << _edgeIDs[i]; + save << " " << _objEntry; + } + return save; } @@ -119,12 +142,25 @@ ostream & StdMeshers_Arithmetic1D::SaveTo(ostream & save) istream & StdMeshers_Arithmetic1D::LoadFrom(istream & load) { bool isOK = true; + int intVal; isOK = (load >> _begLength); if (!isOK) load.clear(ios::badbit | load.rdstate()); isOK = (load >> _endLength); + if (!isOK) load.clear(ios::badbit | load.rdstate()); + + isOK = (load >> intVal); + if (isOK && intVal > 0) { + _edgeIDs.reserve( intVal ); + for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) { + isOK = (load >> intVal); + if ( isOK ) _edgeIDs.push_back( intVal ); + } + isOK = (load >> _objEntry); + } + return load; } diff --git a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx index 94952b774..e3f3c37a8 100644 --- a/src/StdMeshers/StdMeshers_Arithmetic1D.hxx +++ b/src/StdMeshers/StdMeshers_Arithmetic1D.hxx @@ -27,11 +27,15 @@ #ifndef _SMESH_ARITHMETIC1D_HXX_ #define _SMESH_ARITHMETIC1D_HXX_ + + #include "SMESH_StdMeshers.hxx" #include "SMESH_Hypothesis.hxx" #include "Utils_SALOME_Exception.hxx" +#include + class STDMESHERS_EXPORT StdMeshers_Arithmetic1D: public SMESH_Hypothesis { @@ -43,6 +47,14 @@ public: double GetLength(bool isStartLength) const; + void SetReversedEdges( std::vector& ids); + + void SetObjectEntry( const char* entry ) { _objEntry = entry; } + + const char* GetObjectEntry() { return _objEntry.c_str(); } + + const std::vector& GetReversedEdges() const { return _edgeIDs; } + virtual std::ostream & SaveTo(std::ostream & save); virtual std::istream & LoadFrom(std::istream & load); friend std::ostream& operator << (std::ostream & save, StdMeshers_Arithmetic1D & hyp); @@ -64,6 +76,8 @@ public: protected: double _begLength, _endLength; + std::vector _edgeIDs; + std::string _objEntry; }; #endif diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx index 0d05c5b1c..e03a921e8 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.cxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.cxx @@ -481,6 +481,7 @@ int StdMeshers_NumberOfSegments::ConversionMode() const ostream & StdMeshers_NumberOfSegments::SaveTo(ostream & save) { + int listSize = _edgeIDs.size(); save << _numberOfSegments << " " << (int)_distrType; switch (_distrType) { @@ -503,6 +504,13 @@ ostream & StdMeshers_NumberOfSegments::SaveTo(ostream & save) if (_distrType == DT_TabFunc || _distrType == DT_ExprFunc) save << " " << _convMode; + + if ( _distrType != DT_Regular && listSize > 0 ) { + save << " " << listSize; + for ( int i = 0; i < listSize; i++ ) + save << " " << _edgeIDs[i]; + save << " " << _objEntry; + } return save; } @@ -619,6 +627,18 @@ istream & StdMeshers_NumberOfSegments::LoadFrom(istream & load) load.clear(ios::badbit | load.rdstate()); } + // load reversed edges IDs + int intVal; + isOK = (load >> intVal); + if ( isOK && _distrType != DT_Regular && intVal > 0 ) { + _edgeIDs.reserve( intVal ); + for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) { + isOK = (load >> intVal); + if ( isOK ) _edgeIDs.push_back( intVal ); + } + isOK = (load >> _objEntry); + } + return load; } @@ -695,3 +715,18 @@ bool StdMeshers_NumberOfSegments::SetParametersByDefaults(const TDefaults& dflt return (_numberOfSegments = dflts._nbSegments ); } +//============================================================================= +/*! + * + */ +//============================================================================= + +void StdMeshers_NumberOfSegments::SetReversedEdges( std::vector& ids ) +{ + if ( ids != _edgeIDs ) { + _edgeIDs = ids; + + NotifySubMeshesHypothesisModification(); + } +} + diff --git a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx index 1be5b9176..985d192b2 100644 --- a/src/StdMeshers/StdMeshers_NumberOfSegments.hxx +++ b/src/StdMeshers/StdMeshers_NumberOfSegments.hxx @@ -161,6 +161,13 @@ public: int ConversionMode() const throw (SALOME_Exception); + void SetReversedEdges( std::vector& ids); + + void SetObjectEntry( const char* entry ) { _objEntry = entry; } + + const char* GetObjectEntry() { return _objEntry.c_str(); } + + const std::vector& GetReversedEdges() const { return _edgeIDs; } /*! * \brief Initialize number of segments by the mesh built on the geometry @@ -188,6 +195,8 @@ protected: std::vector _table, _distr; //!< the table for DT_TabFunc, a sequence of pairs of numbers std::string _func; //!< the expression of the function for DT_ExprFunc int _convMode; //!< flag of conversion mode: 0=exponent, 1=cut negative + std::vector _edgeIDs; //!< list of reversed edges ids + std::string _objEntry; //!< Entry of the main object to reverse edges }; #endif diff --git a/src/StdMeshers/StdMeshers_Regular_1D.cxx b/src/StdMeshers/StdMeshers_Regular_1D.cxx index 6edeeb036..3b5abcbee 100644 --- a/src/StdMeshers/StdMeshers_Regular_1D.cxx +++ b/src/StdMeshers/StdMeshers_Regular_1D.cxx @@ -180,12 +180,15 @@ bool StdMeshers_Regular_1D::CheckHypothesis { case StdMeshers_NumberOfSegments::DT_Scale: _value[ SCALE_FACTOR_IND ] = hyp->GetScaleFactor(); + _revEdgesIDs = hyp->GetReversedEdges(); break; case StdMeshers_NumberOfSegments::DT_TabFunc: _vvalue[ TAB_FUNC_IND ] = hyp->GetTableFunction(); + _revEdgesIDs = hyp->GetReversedEdges(); break; case StdMeshers_NumberOfSegments::DT_ExprFunc: _svalue[ EXPR_FUNC_IND ] = hyp->GetExpressionFunction(); + _revEdgesIDs = hyp->GetReversedEdges(); break; case StdMeshers_NumberOfSegments::DT_Regular: break; @@ -209,6 +212,9 @@ bool StdMeshers_Regular_1D::CheckHypothesis _value[ END_LENGTH_IND ] = hyp->GetLength( false ); ASSERT( _value[ BEG_LENGTH_IND ] > 0 && _value[ END_LENGTH_IND ] > 0 ); _hypType = ARITHMETIC_1D; + + _revEdgesIDs = hyp->GetReversedEdges(); + aStatus = SMESH_Hypothesis::HYP_OK; } @@ -221,6 +227,9 @@ bool StdMeshers_Regular_1D::CheckHypothesis _value[ END_LENGTH_IND ] = hyp->GetLength( false ); ASSERT( _value[ BEG_LENGTH_IND ] > 0 && _value[ END_LENGTH_IND ] > 0 ); _hypType = BEG_END_LENGTH; + + _revEdgesIDs = hyp->GetReversedEdges(); + aStatus = SMESH_Hypothesis::HYP_OK; } @@ -821,6 +830,11 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & t bool reversed = false; if ( !_mainEdge.IsNull() ) reversed = ( _mainEdge.Orientation() == TopAbs_REVERSED ); + else if ( _revEdgesIDs.size() > 0 ) { + for ( int i = 0; i < _revEdgesIDs.size(); i++) + if ( _revEdgesIDs[i] == shapeID ) + reversed = true; + } BRepAdaptor_Curve C3d( E ); double length = EdgeLength( E ); @@ -948,7 +962,7 @@ bool StdMeshers_Regular_1D::Evaluate(SMESH_Mesh & theMesh, const TopoDS_Edge & EE = TopoDS::Edge(theShape); TopoDS_Edge E = TopoDS::Edge(EE.Oriented(TopAbs_FORWARD)); - int shapeID = meshDS->ShapeToIndex( E ); + // int shapeID = meshDS->ShapeToIndex( E ); double f, l; Handle(Geom_Curve) Curve = BRep_Tool::Curve(E, f, l); diff --git a/src/StdMeshers/StdMeshers_Regular_1D.hxx b/src/StdMeshers/StdMeshers_Regular_1D.hxx index 244ebe6a1..0ee10b45b 100644 --- a/src/StdMeshers/StdMeshers_Regular_1D.hxx +++ b/src/StdMeshers/StdMeshers_Regular_1D.hxx @@ -127,6 +127,7 @@ protected: int _ivalue[3]; std::vector _vvalue[1]; std::string _svalue[1]; + std::vector _revEdgesIDs; // a source of propagated hypothesis, is set by CheckHypothesis() // always called before Compute() diff --git a/src/StdMeshers/StdMeshers_StartEndLength.cxx b/src/StdMeshers/StdMeshers_StartEndLength.cxx index d22555ffb..46e9a7cc3 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.cxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.cxx @@ -105,9 +105,33 @@ double StdMeshers_StartEndLength::GetLength(bool isStartLength) const */ //============================================================================= +void StdMeshers_StartEndLength::SetReversedEdges( std::vector& ids ) +{ + if ( ids != _edgeIDs ) { + _edgeIDs = ids; + + NotifySubMeshesHypothesisModification(); + } +} + +//============================================================================= +/*! + * + */ +//============================================================================= + ostream & StdMeshers_StartEndLength::SaveTo(ostream & save) { - save << _begLength << " " <<_endLength; + int listSize = _edgeIDs.size(); + save << _begLength << " " << _endLength << " " << listSize; + + if ( listSize > 0 ) { + for ( int i = 0; i < listSize; i++) { + save << " " << _edgeIDs[i]; + } + save << " " << _objEntry; + } + return save; } @@ -120,12 +144,25 @@ ostream & StdMeshers_StartEndLength::SaveTo(ostream & save) istream & StdMeshers_StartEndLength::LoadFrom(istream & load) { bool isOK = true; + int intVal; isOK = (load >> _begLength); if (!isOK) load.clear(ios::badbit | load.rdstate()); isOK = (load >> _endLength); + if (!isOK) load.clear(ios::badbit | load.rdstate()); + + isOK = (load >> intVal); + if (isOK && intVal > 0) { + _edgeIDs.reserve( intVal ); + for (int i = 0; i < _edgeIDs.capacity() && isOK; i++) { + isOK = (load >> intVal); + if ( isOK ) _edgeIDs.push_back( intVal ); + } + isOK = (load >> _objEntry); + } + return load; } diff --git a/src/StdMeshers/StdMeshers_StartEndLength.hxx b/src/StdMeshers/StdMeshers_StartEndLength.hxx index 00f228771..35ae4e0c4 100644 --- a/src/StdMeshers/StdMeshers_StartEndLength.hxx +++ b/src/StdMeshers/StdMeshers_StartEndLength.hxx @@ -31,6 +31,8 @@ #include "SMESH_Hypothesis.hxx" #include "Utils_SALOME_Exception.hxx" +#include + class STDMESHERS_EXPORT StdMeshers_StartEndLength:public SMESH_Hypothesis { public: @@ -40,6 +42,14 @@ class STDMESHERS_EXPORT StdMeshers_StartEndLength:public SMESH_Hypothesis void SetLength(double length, bool isStartLength) throw(SALOME_Exception); double GetLength(bool isStartLength) const; + + void SetReversedEdges( std::vector& ids); + + const std::vector& GetReversedEdges() const { return _edgeIDs; } + + void SetObjectEntry( const char* entry ) { _objEntry = entry; } + + const char* GetObjectEntry() { return _objEntry.c_str(); } virtual std::ostream & SaveTo(std::ostream & save); virtual std::istream & LoadFrom(std::istream & load); @@ -63,6 +73,8 @@ class STDMESHERS_EXPORT StdMeshers_StartEndLength:public SMESH_Hypothesis protected: double _begLength, _endLength; + std::vector _edgeIDs; + std::string _objEntry; }; #endif diff --git a/src/StdMeshersGUI/Makefile.am b/src/StdMeshersGUI/Makefile.am index 38425ec0c..6d1ceae87 100644 --- a/src/StdMeshersGUI/Makefile.am +++ b/src/StdMeshersGUI/Makefile.am @@ -35,7 +35,8 @@ salomeinclude_HEADERS = \ StdMeshersGUI_DistrTable.h \ StdMeshersGUI_NbSegmentsCreator.h \ StdMeshersGUI_ObjectReferenceParamWdg.h \ - StdMeshersGUI_LayerDistributionParamWdg.h + StdMeshersGUI_LayerDistributionParamWdg.h \ + StdMeshersGUI_EdgeDirectionParamWdg.h # Libraries targets lib_LTLIBRARIES = libStdMeshersGUI.la @@ -46,7 +47,8 @@ dist_libStdMeshersGUI_la_SOURCES = \ StdMeshersGUI_DistrTable.cxx \ StdMeshersGUI_NbSegmentsCreator.cxx \ StdMeshersGUI_ObjectReferenceParamWdg.cxx \ - StdMeshersGUI_LayerDistributionParamWdg.cxx + StdMeshersGUI_LayerDistributionParamWdg.cxx \ + StdMeshersGUI_EdgeDirectionParamWdg.cxx MOC_FILES = \ StdMeshersGUI_StdHypothesisCreator_moc.cxx \ @@ -54,7 +56,8 @@ MOC_FILES = \ StdMeshersGUI_DistrTable_moc.cxx \ StdMeshersGUI_NbSegmentsCreator_moc.cxx \ StdMeshersGUI_ObjectReferenceParamWdg_moc.cxx \ - StdMeshersGUI_LayerDistributionParamWdg_moc.cxx + StdMeshersGUI_LayerDistributionParamWdg_moc.cxx \ + StdMeshersGUI_EdgeDirectionParamWdg_moc.cxx nodist_libStdMeshersGUI_la_SOURCES= \ $(MOC_FILES) diff --git a/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.cxx b/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.cxx new file mode 100644 index 000000000..01b64b3a4 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.cxx @@ -0,0 +1,417 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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 : StdMeshersGUI_EdgeDirectionParamWdg.cxx +// Author : Open CASCADE S.A.S. (dmv) +// SMESH includes +// +#include "StdMeshersGUI_EdgeDirectionParamWdg.h" + +// SMESH Includes +#include +#include "SMESHGUI_MeshUtils.h" +#include +#include +#include +#include "SMESHGUI_GroupUtils.h" +#include "SMESH_Gen_i.hxx" +#include "SMESHGUI_GEOMGenUtils.h" + +// SVTK Includes +#include +#include +#include +#include + +// SALOME GUI includes +#include +#include +#include + +// SUIT Includes +#include + +// GEOM Includes +#include + +// Qt includes +#include +#include +#include +#include +#include + +// OCCT includes +#include +#include +#include +#include +#include + +// SALOME KERNEL includes +#include + +#define SPACING 6 +#define MARGIN 0 + +//================================================================================ +/*! + * Constructor + */ +//================================================================================ + +StdMeshersGUI_EdgeDirectionParamWdg +::StdMeshersGUI_EdgeDirectionParamWdg( QWidget * parent ): + QWidget( parent ) +{ + QPixmap image0( SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap( "SMESH", tr( "ICON_SELECT" ) ) ); + + QGridLayout* edgesLayout = new QGridLayout( this ); + edgesLayout->setMargin( MARGIN ); + edgesLayout->setSpacing( SPACING ); + + myListWidget = new QListWidget( this ); + myAddButton = new QPushButton( tr( "SMESH_BUT_ADD" ), this ); + myRemoveButton = new QPushButton( tr( "SMESH_BUT_REMOVE" ), this ); + myListWidget->setSelectionMode( QListWidget::ExtendedSelection ); + + edgesLayout->addWidget(myListWidget, 0, 0, 3, 3); + edgesLayout->addWidget(myAddButton, 0, 4); + edgesLayout->addWidget(myRemoveButton, 1, 4); + + edgesLayout->setRowStretch(2, 5); + edgesLayout->setColumnStretch(2, 5); + + setLayout( edgesLayout ); + setMinimumWidth( 300 ); + + init(); +} + +//================================================================================ +/*! + * Destructor + */ +//================================================================================ + +StdMeshersGUI_EdgeDirectionParamWdg::~StdMeshersGUI_EdgeDirectionParamWdg() +{ + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) { + myPreviewActor->RemoveFromRender( myRenderer ); + aViewWindow->Repaint(); + } + myEntry = ""; + myParamValue = ""; + myMainShape.Nullify(); + + delete myPreviewActor; +} + +//================================================================================ +/*! + * Create a layout, initialize fields + */ +//================================================================================ + +void StdMeshersGUI_EdgeDirectionParamWdg::init() +{ + myParamValue = ""; + myListOfIDs.clear(); + mySelectedIDs.clear(); + + mySMESHGUI = SMESHGUI::GetSMESHGUI(); + mySelectionMgr = SMESH::GetSelectionMgr( mySMESHGUI ); + mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); + + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( ActorSelection ); + + connect( myAddButton, SIGNAL(clicked()), SLOT(onAdd())); + connect( myRemoveButton, SIGNAL(clicked()), SLOT(onRemove())); + + connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + connect( myListWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onListSelectionChanged())); + + updateState(); +} + +//================================================================================ +/*! + * Create a layout, initialize fields + */ +//================================================================================ + +void StdMeshersGUI_EdgeDirectionParamWdg::showPreview( bool visible) +{ + if ( myIsShown != visible ) { + myPreviewActor->SetShown( visible ); + + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->Repaint(); + + myIsShown = visible; + } +} + +//================================================================================= +// function : SelectionIntoArgument() +// purpose : Called when selection as changed or other case +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::SelectionIntoArgument() +{ + mySelectedIDs.clear(); + + // get selected mesh + SALOME_ListIO aList; + mySelectionMgr->selectedObjects( aList ); + int nbSel = aList.Extent(); + + if (nbSel < 1) + return; + + SALOME_ListIteratorOfListIO anIt (aList); + + for ( ; anIt.More(); anIt.Next()) { // Loop on selected objects + Handle(SALOME_InteractiveObject) IO = anIt.Value(); + + GEOM::GEOM_Object_var aGeomObj = GetGeomObjectByEntry( IO->getEntry() ); + if ( !CORBA::is_nil( aGeomObj ) ) { // Selected Object From Study + GEOM::GEOM_Object_ptr aGeomFatherObj = aGeomObj->GetMainShape(); + QString aFatherEntry = ""; + QString aMainFatherEntry = ""; + TopoDS_Shape shape; + if ( !CORBA::is_nil( aGeomFatherObj ) ) { + // Get Main Shape + GEOM::GEOM_Object_var aGeomMain = GetGeomObjectByEntry( myEntry ); + if ( !CORBA::is_nil( aGeomMain ) || aGeomMain->GetType() == 37 ) { // Main Shape is a Group + GEOM::GEOM_Object_ptr aMainFatherObj = aGeomMain->GetMainShape(); + if ( !CORBA::is_nil( aMainFatherObj ) ) + aMainFatherEntry = aMainFatherObj->GetStudyEntry(); + } + aFatherEntry = aGeomFatherObj->GetStudyEntry(); + } + + if ( aFatherEntry != "" && ( aFatherEntry == myEntry || aFatherEntry == aMainFatherEntry ) ) { + if ( aGeomObj->GetType() == 37 /*GEOM_GROUP*/ ) { // Selected Group that belongs the main object + GEOMBase::GetShape(aGeomObj, shape); + if ( !shape.IsNull() ) { + TopExp_Explorer exp( shape, TopAbs_EDGE ); + for ( ; exp.More(); exp.Next() ) { + int index = myPreviewActor->GetIndexByShape( exp.Current() ); + if ( index ) { + mySelectedIDs.append( index ); + myPreviewActor->HighlightID( index ); + } + } + } + } else if ( aGeomObj->GetType() == 28 /*GEOM_SUBSHAPE*/ ) { + GEOMBase::GetShape(aGeomObj, shape); + if ( !shape.IsNull() && shape.ShapeType() == TopAbs_EDGE ) { + int index = myPreviewActor->GetIndexByShape( shape ); + if ( index ) { + mySelectedIDs.append( index ); + myPreviewActor->HighlightID( index ); + } + } + } + } + } else { // Selected Actor from Actor Collection + QString anEntry = IO->getEntry(); + QString str = "_"; + int index = anEntry.lastIndexOf( str ); + anEntry.remove(0, index+1); + int ind = anEntry.toInt(); + if ( ind ) + mySelectedIDs.append( ind ); + } + } +} + +//================================================================================= +// function : onAdd() +// purpose : Called when Add Button Clicked +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::onAdd() +{ + if ( mySelectedIDs.size() < 1 ) + return; + + myListWidget->blockSignals( true ); + for (int i = 0; i < mySelectedIDs.size(); i++) { + if ( myListOfIDs.indexOf( mySelectedIDs.at(i) ) == -1 ) { + QString anID = QString(" %1").arg( mySelectedIDs.at(i) ); + + QListWidgetItem* anItem = new QListWidgetItem( anID, myListWidget ); + anItem->setSelected(true); + + myListOfIDs.append( mySelectedIDs.at(i) ); + } + } + onListSelectionChanged(); + + myListWidget->blockSignals( false ); +} + +//================================================================================= +// function : onRemove() +// purpose : Called when Remove Button Clicked +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::onRemove() +{ + if ( myListWidget->count() < 1 ) + return; + + myListWidget->blockSignals( true ); + QList selItems = myListWidget->selectedItems(); + QListWidgetItem* item; + foreach(item, selItems) { + QString idStr = item->text(); + int id = idStr.toInt(); + + int index = myListOfIDs.indexOf( id ); + myListOfIDs.removeAt( index ); + delete item; + } + + onListSelectionChanged(); + myListWidget->blockSignals( false ); +} + +//================================================================================= +// function : onListSelectionChanged() +// purpose : Called when selection in element list is changed +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::onListSelectionChanged() +{ + mySelectionMgr->clearSelected(); + TColStd_MapOfInteger aIndexes; + QList selItems = myListWidget->selectedItems(); + QListWidgetItem* anItem; + foreach(anItem, selItems) + myPreviewActor->HighlightID( anItem->text().toInt() ); +} + +//================================================================================= +// function : setGeomShape +// purpose : Called to set geometry +//================================================================================ +void StdMeshersGUI_EdgeDirectionParamWdg::SetMainShapeEntry( const QString& theEntry ) +{ + if ( theEntry != "") { + myParamValue = theEntry; + myEntry = theEntry; + myMainShape = GetTopoDSByEntry( theEntry ); + updateState(); + } +} + +//================================================================================= +// function : updateState +// purpose : update Widget state +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::updateState() +{ + bool state = false; + if ( !myMainShape.IsNull() ) + state = true; + + myListWidget->setEnabled( state ); + myAddButton->setEnabled( state ); + myRemoveButton->setEnabled( state ); + + if (state = true) { + myPreviewActor = new SMESH_PreviewActorsCollection(); + myPreviewActor->SetSelector( mySelector ); + myPreviewActor->Init( myMainShape, TopAbs_EDGE, myEntry ); + myPreviewActor->SetShown( false ); + myIsShown = false; + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) { + myRenderer = aViewWindow->getRenderer(); + myPreviewActor->AddToRender( myRenderer ); + aViewWindow->Repaint(); + } + } +} + +//================================================================================= +// function : GetGeomObjectByEntry +// purpose : Called to get GeomObject +//================================================================================= +GEOM::GEOM_Object_var StdMeshersGUI_EdgeDirectionParamWdg::GetGeomObjectByEntry( const QString& theEntry ) +{ + GEOM::GEOM_Object_var aGeomObj; + SALOMEDS::Study_var aStudy = SMESHGUI::GetSMESHGen()->GetCurrentStudy(); + if (aStudy != 0) { + SALOMEDS::SObject_var aSObj = aStudy->FindObjectID( theEntry.toLatin1().data() ); + SALOMEDS::GenericAttribute_var anAttr; + + if (!aSObj->_is_nil() && aSObj->FindAttribute(anAttr, "AttributeIOR")) { + SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr); + CORBA::String_var aVal = anIOR->Value(); + CORBA::Object_var obj = aStudy->ConvertIORToObject(aVal); + aGeomObj = GEOM::GEOM_Object::_narrow(obj); + } + } + return aGeomObj; +} + +//================================================================================= +// function : setObjectByEntry +// purpose : Called to get GeomObject +//================================================================================= +TopoDS_Shape StdMeshersGUI_EdgeDirectionParamWdg::GetTopoDSByEntry( const QString& theEntry ) +{ + TopoDS_Shape shape; + GEOM::GEOM_Object_var aGeomObj = GetGeomObjectByEntry( theEntry ); + GEOMBase::GetShape(aGeomObj, shape); + return shape; +} + +//================================================================================= +// function : GetListOfIds +// purpose : Called to get the list of Edges IDs +//================================================================================= +SMESH::long_array_var StdMeshersGUI_EdgeDirectionParamWdg::GetListOfIDs() +{ + SMESH::long_array_var anArray = new SMESH::long_array; + int size = myListOfIDs.size(); + anArray->length( size ); + if ( size ) { + for (int i = 0; i < size; i++) { + anArray[i] = myListOfIDs.at(i); + } + } + return anArray; +} + +//================================================================================= +// function : SetListOfIds +// purpose : Called to set the list of Edges IDs +//================================================================================= +void StdMeshersGUI_EdgeDirectionParamWdg::SetListOfIDs( SMESH::long_array_var theIds) +{ + mySelectedIDs.clear(); + myListOfIDs.clear(); + int size = theIds->length(); + for ( int i = 0; i < size; i++ ) + mySelectedIDs.append( theIds[ i ] ); + onAdd(); +} diff --git a/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.h b/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.h new file mode 100644 index 000000000..e05df9881 --- /dev/null +++ b/src/StdMeshersGUI/StdMeshersGUI_EdgeDirectionParamWdg.h @@ -0,0 +1,107 @@ +// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// 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 : StdMeshersGUI_EdgeDirectionParamWdg.h +// Author : Open CASCADE S.A.S. (dmv) +// +#ifndef STDMESHERSGUI_EDGEDIRECTIONPARAMWGD_H +#define STDMESHERSGUI_EDGEDIRECTIONPARAMWGD_H + +// SMESH includes +#include +#include "SMESH_StdMeshersGUI.hxx" +#include "SMESH_SMESHGUI.hxx" + +// Qt includes +#include +#include +#include + +#include + +class SMESHGUI; +class LightApp_SelectionMgr; +class SVTK_Selector; +class QPushButton; +class QLineEdit; +class QCheckBox; +class QListWidget; +class SMESH_Actor; +class SMESH_PreviewActorsCollection; +class vtkRenderer; + +class STDMESHERSGUI_EXPORT StdMeshersGUI_EdgeDirectionParamWdg : public QWidget +{ + Q_OBJECT + +public: + StdMeshersGUI_EdgeDirectionParamWdg( QWidget* parent = 0 ); + ~StdMeshersGUI_EdgeDirectionParamWdg(); + + SMESH::long_array_var GetListOfIDs(); + void SetListOfIDs( SMESH::long_array_var ); + + void SetMainShapeEntry( const QString& theEntry ); + const char* GetMainShapeEntry() { return myEntry.toLatin1().data();} + + TopoDS_Shape GetMainShape() { return myMainShape; } + + static GEOM::GEOM_Object_var GetGeomObjectByEntry( const QString& ); + static TopoDS_Shape GetTopoDSByEntry( const QString& ); + + QString GetValue() const { return myParamValue; } + + void showPreview ( bool ); + +private: + void updateState(); + +private slots: + void onAdd(); + void onRemove(); + void SelectionIntoArgument(); + void onListSelectionChanged(); + +private: + void init(); + +private: + SMESHGUI* mySMESHGUI; + LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ + SVTK_Selector* mySelector; + SMESH::SMESH_Mesh_var myMesh; + TopoDS_Shape myMainShape; + QString myEntry; + vtkRenderer* myRenderer; + + QListWidget* myListWidget; + QPushButton* myAddButton; + QPushButton* myRemoveButton; + QList mySelectedIDs; + QList myListOfIDs; + + QString myParamValue; + bool myIsShown; + + SMESH_PreviewActorsCollection* myPreviewActor; +}; + +#endif // STDMESHERSGUI_EDGEDIRECTIONPARAMWGD_H diff --git a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx index 9e8e0bda8..d89746054 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx @@ -26,6 +26,7 @@ #include "StdMeshersGUI_NbSegmentsCreator.h" #include "StdMeshersGUI_DistrTable.h" #include "StdMeshersGUI_DistrPreview.h" +#include "StdMeshersGUI_EdgeDirectionParamWdg.h" #include #include @@ -99,7 +100,7 @@ QFrame* StdMeshersGUI_NbSegmentsCreator::buildFrame() QVBoxLayout* lay = new QVBoxLayout( fr ); lay->setMargin( 0 ); - lay->setSpacing( 0 ); + lay->setSpacing( SPACING ); QGroupBox* GroupC1 = new QGroupBox( tr( "SMESH_ARGUMENTS" ), fr ); lay->addWidget( GroupC1 ); @@ -195,11 +196,25 @@ QFrame* StdMeshersGUI_NbSegmentsCreator::buildFrame() myPreviewRow = row; row++; + // 8) reverce edge parameters + myReversedEdgesBox = new QGroupBox(tr( "SMESH_REVERCE_EDGES" ), fr); + QHBoxLayout* edgeLay = new QHBoxLayout( myReversedEdgesBox ); + + myDirectionWidget = new StdMeshersGUI_EdgeDirectionParamWdg(); + QString anEntry = getShapeEntry(); + if ( anEntry == "" ) + anEntry = h->GetObjectEntry(); + myDirectionWidget->SetMainShapeEntry( anEntry ); + myDirectionWidget->SetListOfIDs( h->GetReversedEdges() ); + edgeLay->addWidget( myDirectionWidget ); + + lay->addWidget( myReversedEdgesBox ); + connect( myNbSeg, SIGNAL( valueChanged( const QString& ) ), this, SLOT( onValueChanged() ) ); connect( myDistr, SIGNAL( activated( int ) ), this, SLOT( onValueChanged() ) ); connect( myTable, SIGNAL( valueChanged( int, int ) ), this, SLOT( onValueChanged() ) ); connect( myExpr, SIGNAL( textChanged( const QString& ) ), this, SLOT( onValueChanged() ) ); - connect( myConv, SIGNAL( cuttonClicked( int ) ), this, SLOT( onValueChanged() ) ); + connect( myConv, SIGNAL( buttonClicked( int ) ), this, SLOT( onValueChanged() ) ); return fr; } @@ -348,6 +363,11 @@ bool StdMeshersGUI_NbSegmentsCreator::storeParamsToHypo( const NbSegmentsHypothe if( distr==2 || distr==3 ) h->SetConversionMode( h_data.myConv ); + if( distr==1 || distr==2 || distr==3 ) { + h->SetReversedEdges( myDirectionWidget->GetListOfIDs() ); + h->SetObjectEntry( myDirectionWidget->GetMainShapeEntry() ); + } + if( distr==2 ) h->SetTableFunction( h_data.myTable ); @@ -400,6 +420,8 @@ void StdMeshersGUI_NbSegmentsCreator::onValueChanged() myScale->setShown( distr==1 ); myLScale->setShown( distr==1 ); + myReversedEdgesBox->setShown( !distr==0 ); + myDirectionWidget->showPreview( !distr==0 ); bool isFunc = distr==2 || distr==3; myPreview->setShown( isFunc ); @@ -434,8 +456,11 @@ void StdMeshersGUI_NbSegmentsCreator::onValueChanged() if ( (QtxComboBox*)sender() == myDistr && dlg() ) { QApplication::instance()->processEvents(); + myGroupLayout->invalidate(); + dlg()->layout()->invalidate(); dlg()->updateGeometry(); - dlg()->setMinimumSize( dlg()->minimumSizeHint().width(), dlg()->minimumSizeHint().height() ); + dlg()->setMinimumSize( dlg()->minimumSizeHint() ); dlg()->resize( dlg()->minimumSize() ); + QApplication::instance()->processEvents(); } } diff --git a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h index ba7c7bff8..188674497 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h +++ b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.h @@ -44,6 +44,7 @@ class QButtonGroup; class QGroupBox; class QGridLayout; class QRadioButton; +class StdMeshersGUI_EdgeDirectionParamWdg; typedef struct { @@ -91,6 +92,9 @@ private: QGridLayout* myGroupLayout; int myTableRow, myPreviewRow; QRadioButton* myCutNeg; + QGroupBox* myReversedEdgesBox; + + StdMeshersGUI_EdgeDirectionParamWdg* myDirectionWidget; }; #endif // STDMESHERSGUI_NBSEGMENTSCREATOR_H diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index cdcdcc8f1..df4370d6d 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -33,6 +33,7 @@ #include #include "StdMeshersGUI_ObjectReferenceParamWdg.h" #include "StdMeshersGUI_LayerDistributionParamWdg.h" +#include "StdMeshersGUI_EdgeDirectionParamWdg.h" #include // SALOME GUI includes @@ -444,10 +445,18 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_Arithmetic1D_var h = StdMeshers::StdMeshers_Arithmetic1D::_narrow( hypothesis() ); + StdMeshersGUI_EdgeDirectionParamWdg* w = + widget< StdMeshersGUI_EdgeDirectionParamWdg >( 2 ); + h->SetLength( params[0].myValue.toDouble(), true ); h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList)); h->SetLength( params[1].myValue.toDouble(), false ); h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList)); + if (w) { + h->SetReversedEdges( w->GetListOfIDs() ); + const char * entry = w->GetMainShapeEntry(); + h->SetObjectEntry( entry ); + } } else if( hypType()=="MaxElementArea" ) { @@ -469,10 +478,17 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_StartEndLength_var h = StdMeshers::StdMeshers_StartEndLength::_narrow( hypothesis() ); + StdMeshersGUI_EdgeDirectionParamWdg* w = + widget< StdMeshersGUI_EdgeDirectionParamWdg >( 2 ); + h->SetLength( params[0].myValue.toDouble(), true ); h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList)); h->SetLength( params[1].myValue.toDouble(), false ); h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList)); + if (w) { + h->SetReversedEdges( w->GetListOfIDs() ); + h->SetObjectEntry( w->GetMainShapeEntry() ); + } } else if( hypType()=="Deflection1D" ) { @@ -650,10 +666,26 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const item.myValue = h->GetLength( true ); p.append( item ); + customWidgets()->append (0); + item.myName = tr( "SMESH_END_LENGTH_PARAM" ); if(!initVariableName(aParameters,item,1)) item.myValue = h->GetLength( false ); p.append( item ); + + customWidgets()->append (0); + + item.myName = tr( "SMESH_REVERCE_EDGES" ); + p.append( item ); + + StdMeshersGUI_EdgeDirectionParamWdg* aDirectionWidget = new StdMeshersGUI_EdgeDirectionParamWdg(); + QString anEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry(); + if ( anEntry == "" ) + anEntry = h->GetObjectEntry(); + aDirectionWidget->SetMainShapeEntry( anEntry ); + aDirectionWidget->SetListOfIDs( h->GetReversedEdges() ); + aDirectionWidget->showPreview( true ); + customWidgets()->append ( aDirectionWidget ); } else if( hypType()=="MaxElementArea" ) { @@ -686,12 +718,26 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const if(!initVariableName(aParameters,item,0)) item.myValue = h->GetLength( true ); p.append( item ); + customWidgets()->append(0); item.myName = tr( "SMESH_END_LENGTH_PARAM" ); if(!initVariableName(aParameters,item,1)) item.myValue = h->GetLength( false ); p.append( item ); - + customWidgets()->append(0); + + item.myName = tr( "SMESH_REVERCE_EDGES" ); + p.append( item ); + + StdMeshersGUI_EdgeDirectionParamWdg* aDirectionWidget = new StdMeshersGUI_EdgeDirectionParamWdg(); + QString anEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry(); + if ( anEntry == "" ) + anEntry = h->GetObjectEntry(); + aDirectionWidget->SetMainShapeEntry( anEntry ); + aDirectionWidget->SetListOfIDs( h->GetReversedEdges() ); + aDirectionWidget->SetMainShapeEntry( h->GetObjectEntry() ); + aDirectionWidget->showPreview( true ); + customWidgets()->append ( aDirectionWidget ); } else if( hypType()=="Deflection1D" ) { @@ -1000,6 +1046,13 @@ bool StdMeshersGUI_StdHypothesisCreator::getParamFromCustomWidget( StdParam & pa param.myValue = w->GetValue(); return true; } + if ( widget->inherits( "StdMeshersGUI_EdgeDirectionParamWdg" )) + { + const StdMeshersGUI_EdgeDirectionParamWdg * w = + static_cast( widget ); + param.myValue = w->GetValue(); + return true; + } return false; } diff --git a/src/StdMeshersGUI/StdMeshers_msg_en.ts b/src/StdMeshersGUI/StdMeshers_msg_en.ts index f11a5d675..30651e813 100644 --- a/src/StdMeshersGUI/StdMeshers_msg_en.ts +++ b/src/StdMeshersGUI/StdMeshers_msg_en.ts @@ -245,6 +245,10 @@ SMESH_REMOVE_ROW Remove row + + SMESH_REVERCE_EDGES + Reverce Edges + SMESH_SEGMENT_LENGTH_AROUND_VERTEX_HYPOTHESIS Segment Length Around Vertex diff --git a/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx b/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx index 20a0b2909..3bf9e825b 100644 --- a/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx +++ b/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.cxx @@ -107,11 +107,109 @@ void StdMeshers_Arithmetic1D_i::SetLength(CORBA::Double theLength, CORBA::Double StdMeshers_Arithmetic1D_i::GetLength( CORBA::Boolean theIsStart) { - MESSAGE( "StdMeshers_StartEndLength_i::GetLength" ); + MESSAGE( "StdMeshers_Arithmetic1D_i::GetLength" ); ASSERT( myBaseImpl ); return this->GetImpl()->GetLength( theIsStart ); } +//============================================================================= +/*! + * StdMeshers_Arithmetic1D_i::SetReversedEdges + * + * Set edges to reverse + */ +//============================================================================= + +void StdMeshers_Arithmetic1D_i::SetReversedEdges( const SMESH::long_array& theIds ) +{ + MESSAGE( "StdMeshers_Arithmetic1D_i::SetReversedEdges" ); + ASSERT( myBaseImpl ); + try { + std::vector ids( theIds.length() ); + CORBA::Long iEnd = theIds.length(); + for ( CORBA::Long i = 0; i < iEnd; i++ ) + ids[ i ] = theIds[ i ]; + + this->GetImpl()->SetReversedEdges( ids ); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + + // Update Python script + /* SMESH::TPythonDump() << _this() << ".SetEdgesToReverse( " + << theList << " )";*/ +} + +//============================================================================= +/*! + * StdMeshers_Arithmetic1D_i::SetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +void StdMeshers_Arithmetic1D_i::SetObjectEntry( const char* entry ) +{ + MESSAGE( "StdMeshers_Arithmetic1D_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + + try { + this->GetImpl()->SetObjectEntry( entry ); + // Update Python script + // SMESH::TPythonDump() << _this() << ".SetObjectEntry( '" << entry << "' )"; + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } +} + +//============================================================================= +/*! + * StdMeshers_Arithmetic1D_i::GetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +char* StdMeshers_Arithmetic1D_i::GetObjectEntry() +{ + MESSAGE( "StdMeshers_Arithmetic1D_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + const char* entry; + try { + entry = this->GetImpl()->GetObjectEntry(); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + return CORBA::string_dup( entry ); +} + +//============================================================================= +/*! + * StdMeshers_Arithmetic1D_i::GetReversedEdges + * + * Get reversed edges + */ +//============================================================================= + +SMESH::long_array* StdMeshers_Arithmetic1D_i::GetReversedEdges() +{ + MESSAGE( "StdMeshers_StartEndLength_i::GetReversedEdges" ); + ASSERT( myBaseImpl ); + SMESH::long_array_var anArray = new SMESH::long_array; + std::vector ids = this->GetImpl()->GetReversedEdges(); + anArray->length( ids.size() ); + for ( CORBA::Long i = 0; i < ids.size(); i++) + anArray [ i ] = ids [ i ]; + + return anArray._retn(); +} + //============================================================================= /*! * StdMeshers_Arithmetic1D_i::GetImpl diff --git a/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx b/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx index 3d8ec8642..7abea29e1 100644 --- a/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx +++ b/src/StdMeshers_I/StdMeshers_Arithmetic1D_i.hxx @@ -54,9 +54,22 @@ public: // Set length void SetLength( CORBA::Double theLength, CORBA::Boolean theIsStart ) throw ( SALOME::SALOME_Exception ); + // Get length CORBA::Double GetLength(CORBA::Boolean theIsStart); + //Set Reversed Edges + void SetReversedEdges( const SMESH::long_array& theIDs); + + //Get Reversed Edges + SMESH::long_array* GetReversedEdges(); + + //Set the Entry of the Object + void SetObjectEntry( const char* theEntry); + + //Get Object Entry + char* GetObjectEntry(); + // Get implementation ::StdMeshers_Arithmetic1D* GetImpl(); diff --git a/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx b/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx index 7b2d215a5..8efa554d3 100644 --- a/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx +++ b/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.cxx @@ -162,6 +162,105 @@ CORBA::Long StdMeshers_NumberOfSegments_i::GetNumberOfSegments() return this->GetImpl()->GetNumberOfSegments(); } +//============================================================================= +/*! + * StdMeshers_NumberOfSegments_i::SetReversedEdges + * + * Set edges to reverse + */ +//============================================================================= + +void StdMeshers_NumberOfSegments_i::SetReversedEdges( const SMESH::long_array& theIds ) +{ + MESSAGE( "StdMeshers_NumberOfSegments_i::SetReversedEdges" ); + ASSERT( myBaseImpl ); + try { + std::vector ids( theIds.length() ); + CORBA::Long iEnd = theIds.length(); + for ( CORBA::Long i = 0; i < iEnd; i++ ) + ids[ i ] = theIds[ i ]; + + this->GetImpl()->SetReversedEdges( ids ); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + + // Update Python script + /* SMESH::TPythonDump() << _this() << ".SetEdgesToReverse( " + << theList << " )";*/ +} + +//============================================================================= +/*! + * StdMeshers_NumberOfSegments_i::SetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +void StdMeshers_NumberOfSegments_i::SetObjectEntry( const char* entry ) +{ + MESSAGE( "StdMeshers_NumberOfSegments_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + + try { + this->GetImpl()->SetObjectEntry( entry ); + // Update Python script + // SMESH::TPythonDump() << _this() << ".SetObjectEntry( '" << entry << "' )"; + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } +} + +//============================================================================= +/*! + * StdMeshers_NumberOfSegments_i::GetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +char* StdMeshers_NumberOfSegments_i::GetObjectEntry() +{ + MESSAGE( "StdMeshers_NumberOfSegments_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + + const char* entry; + try { + entry = this->GetImpl()->GetObjectEntry(); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + return CORBA::string_dup( entry ); +} + +//============================================================================= +/*! + * StdMeshers_NumberOfSegments_i::GetReversedEdges + * + * Get reversed edges + */ +//============================================================================= + +SMESH::long_array* StdMeshers_NumberOfSegments_i::GetReversedEdges() +{ + MESSAGE( "StdMeshers_NumberOfSegments_i::GetReversedEdges" ); + ASSERT( myBaseImpl ); + SMESH::long_array_var anArray = new SMESH::long_array; + std::vector ids = this->GetImpl()->GetReversedEdges(); + anArray->length( ids.size() ); + for ( CORBA::Long i = 0; i < ids.size(); i++) + anArray [ i ] = ids [ i ]; + + return anArray._retn(); +} + //============================================================================= /*! */ diff --git a/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx b/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx index 208a59b0b..30b9d08b7 100644 --- a/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx +++ b/src/StdMeshers_I/StdMeshers_NumberOfSegments_i.hxx @@ -104,6 +104,18 @@ public: // Verify whether hypothesis supports given entity type CORBA::Boolean IsDimSupported( SMESH::Dimension type ); + + //Set Reversed Edges + void SetReversedEdges( const SMESH::long_array& theIDs); + + //Get Reversed Edges + SMESH::long_array* GetReversedEdges(); + + //Set Object Entry + void SetObjectEntry( const char* entry); + + //Get Object Entry + char* GetObjectEntry(); }; #endif diff --git a/src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx b/src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx index 1154b63f2..c9a75a3d5 100644 --- a/src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx +++ b/src/StdMeshers_I/StdMeshers_StartEndLength_i.cxx @@ -113,6 +113,103 @@ CORBA::Double StdMeshers_StartEndLength_i::GetLength( CORBA::Boolean theIsStart) return this->GetImpl()->GetLength( theIsStart ); } +//============================================================================= +/*! + * StdMeshers_StartEndLength_i::SetReversedEdges + * + * Set edges to reverse + */ +//============================================================================= + +void StdMeshers_StartEndLength_i::SetReversedEdges( const SMESH::long_array& theIds ) +{ + MESSAGE( "StdMeshers_StartEndLength_i::SetReversedEdges" ); + ASSERT( myBaseImpl ); + try { + std::vector ids( theIds.length() ); + CORBA::Long iEnd = theIds.length(); + for ( CORBA::Long i = 0; i < iEnd; i++ ) + ids[ i ] = theIds[ i ]; + + this->GetImpl()->SetReversedEdges( ids ); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + + // Update Python script + /* SMESH::TPythonDump() << _this() << ".SetEdgesToReverse( " + << theList << " )";*/ +} + +//============================================================================= +/*! + * StdMeshers_StartEndLength_i::SetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +void StdMeshers_StartEndLength_i::SetObjectEntry( const char* entry ) +{ + MESSAGE( "StdMeshers_StartEndLength_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + try { + this->GetImpl()->SetObjectEntry( entry ); + // Update Python script + // SMESH::TPythonDump() << _this() << ".SetObjectEntry( '" << entry << "' )"; + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } +} + +//============================================================================= +/*! + * StdMeshers_StartEndLength_i::GetObjectEntry + * + * Set the Entry for the Main Object + */ +//============================================================================= + +char* StdMeshers_StartEndLength_i::GetObjectEntry() +{ + MESSAGE( "StdMeshers_StartEndLength_i::SetObjectEntry" ); + ASSERT( myBaseImpl ); + const char* entry; + try { + entry = this->GetImpl()->GetObjectEntry(); + } + catch ( SALOME_Exception& S_ex ) { + THROW_SALOME_CORBA_EXCEPTION( S_ex.what(), + SALOME::BAD_PARAM ); + } + return CORBA::string_dup( entry ); +} + +//============================================================================= +/*! + * StdMeshers_StartEndLength_i::GetReversedEdges + * + * Get reversed edges + */ +//============================================================================= + +SMESH::long_array* StdMeshers_StartEndLength_i::GetReversedEdges() +{ + MESSAGE( "StdMeshers_StartEndLength_i::GetReversedEdges" ); + ASSERT( myBaseImpl ); + SMESH::long_array_var anArray = new SMESH::long_array; + std::vector ids = this->GetImpl()->GetReversedEdges(); + anArray->length( ids.size() ); + for ( CORBA::Long i = 0; i < ids.size(); i++) + anArray [ i ] = ids [ i ]; + + return anArray._retn(); +} + //============================================================================= /*! * StdMeshers_StartEndLength_i::GetImpl diff --git a/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx b/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx index d7a4c4bcd..3ce0e9db3 100644 --- a/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx +++ b/src/StdMeshers_I/StdMeshers_StartEndLength_i.hxx @@ -65,6 +65,18 @@ public: // Verify whether hypothesis supports given entity type CORBA::Boolean IsDimSupported( SMESH::Dimension type ); + + //Set Reversed Edges + void SetReversedEdges( const SMESH::long_array& theIDs); + + //Get Reversed Edges + SMESH::long_array* GetReversedEdges(); + + //Set Object Entry + void SetObjectEntry( const char* entry); + + //Get Object Entry + char* GetObjectEntry(); }; #endif -- 2.39.2