From 7fbea70d54c9e1b4f89d63ffa742aab8ede51855 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 9 Jun 2008 07:09:37 +0000 Subject: [PATCH] This commit was generated by cvs2git to create tag 'V4_1_0rc1'. Sprout from BR_Dev_For_4_0 2007-11-07 14:19:00 UTC ouv 'CORBA includes' Cherrypick from V4_1_0_maintainance 2008-06-09 07:09:36 UTC vsr 'Issue 0016760: improve dialog box': doc/salome/gui/SMESH/images/blsurf_parameters.png doc/salome/gui/SMESH/images/blsurf_parameters_advanced.png doc/salome/gui/SMESH/images/extrusion2.png doc/salome/gui/SMESH/images/ghs3d_parameters_advanced.png doc/salome/gui/SMESH/images/ghs3d_parameters_basic.png doc/salome/gui/SMESH/images/mesh_clear.png doc/salome/gui/SMESH/images/revolutionsn1.png doc/salome/gui/SMESH/images/revolutionsn2.png doc/salome/gui/SMESH/input/blsurf_hypo.doc doc/salome/gui/SMESH/input/ghs3d_hypo.doc resources/mesh_clear.png src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx src/SMESHGUI/SMESHGUI_FileInfoDlg.h src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx Cherrypick from master 2008-03-07 07:47:05 UTC jfa 'Join modifications from BR_Dev_For_4_0 tag V4_1_1.': doc/salome/gui/SMESH/images/eleminfo1.png doc/salome/gui/SMESH/images/eleminfo2.png doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png resources/mesh_whatis.png src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx src/SMESHGUI/SMESHGUI_WhatIsDlg.h src/SMESH_SWIG/ex24_cylinder.py src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.cxx src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx --- .../gui/SMESH/images/blsurf_parameters.png | Bin 0 -> 38953 bytes .../images/blsurf_parameters_advanced.png | Bin 0 -> 25172 bytes doc/salome/gui/SMESH/images/eleminfo1.png | Bin 0 -> 13974 bytes doc/salome/gui/SMESH/images/eleminfo2.png | Bin 0 -> 15912 bytes doc/salome/gui/SMESH/images/extrusion2.png | Bin 0 -> 14032 bytes .../images/ghs3d_parameters_advanced.png | Bin 0 -> 30204 bytes .../SMESH/images/ghs3d_parameters_basic.png | Bin 0 -> 19585 bytes doc/salome/gui/SMESH/images/mesh_clear.png | Bin 0 -> 610 bytes .../gui/SMESH/images/mesh_cylinder_hexa.png | Bin 0 -> 17404 bytes doc/salome/gui/SMESH/images/revolutionsn1.png | Bin 0 -> 2805 bytes doc/salome/gui/SMESH/images/revolutionsn2.png | Bin 0 -> 2613 bytes doc/salome/gui/SMESH/input/blsurf_hypo.doc | 221 ++++ doc/salome/gui/SMESH/input/ghs3d_hypo.doc | 68 + resources/mesh_clear.png | Bin 0 -> 610 bytes resources/mesh_whatis.png | Bin 0 -> 414 bytes src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx | 77 ++ src/SMESHGUI/SMESHGUI_FileInfoDlg.h | 44 + src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx | 626 +++++++++ src/SMESHGUI/SMESHGUI_WhatIsDlg.h | 130 ++ src/SMESH_SWIG/ex24_cylinder.py | 104 ++ .../StdMeshers_QuadToTriaAdaptor.cxx | 1164 +++++++++++++++++ .../StdMeshers_QuadToTriaAdaptor.hxx | 77 ++ .../StdMeshers_UseExisting_1D2D.cxx | 102 ++ .../StdMeshers_UseExisting_1D2D.hxx | 65 + .../StdMeshers_UseExisting_1D2D_i.cxx | 103 ++ .../StdMeshers_UseExisting_1D2D_i.hxx | 80 ++ 26 files changed, 2861 insertions(+) create mode 100644 doc/salome/gui/SMESH/images/blsurf_parameters.png create mode 100644 doc/salome/gui/SMESH/images/blsurf_parameters_advanced.png create mode 100755 doc/salome/gui/SMESH/images/eleminfo1.png create mode 100755 doc/salome/gui/SMESH/images/eleminfo2.png create mode 100755 doc/salome/gui/SMESH/images/extrusion2.png create mode 100644 doc/salome/gui/SMESH/images/ghs3d_parameters_advanced.png create mode 100644 doc/salome/gui/SMESH/images/ghs3d_parameters_basic.png create mode 100644 doc/salome/gui/SMESH/images/mesh_clear.png create mode 100644 doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png create mode 100644 doc/salome/gui/SMESH/images/revolutionsn1.png create mode 100644 doc/salome/gui/SMESH/images/revolutionsn2.png create mode 100644 doc/salome/gui/SMESH/input/blsurf_hypo.doc create mode 100644 doc/salome/gui/SMESH/input/ghs3d_hypo.doc create mode 100644 resources/mesh_clear.png create mode 100755 resources/mesh_whatis.png create mode 100644 src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx create mode 100644 src/SMESHGUI/SMESHGUI_FileInfoDlg.h create mode 100755 src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx create mode 100755 src/SMESHGUI/SMESHGUI_WhatIsDlg.h create mode 100644 src/SMESH_SWIG/ex24_cylinder.py create mode 100644 src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx create mode 100644 src/StdMeshers/StdMeshers_QuadToTriaAdaptor.hxx create mode 100644 src/StdMeshers/StdMeshers_UseExisting_1D2D.cxx create mode 100644 src/StdMeshers/StdMeshers_UseExisting_1D2D.hxx create mode 100644 src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.cxx create mode 100644 src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx diff --git a/doc/salome/gui/SMESH/images/blsurf_parameters.png b/doc/salome/gui/SMESH/images/blsurf_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..22d038ac596f9a4721aacd1067a367ddb1c593bf GIT binary patch literal 38953 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 Ye5jsQF+1Iz1pi5$y(pe2cJ1E(10xWG-v9sr literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/blsurf_parameters_advanced.png b/doc/salome/gui/SMESH/images/blsurf_parameters_advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2c07dc361f94c92a3c2419285ffb6ef8e1f8ac GIT binary patch literal 25172 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 B5jX$< literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/extrusion2.png b/doc/salome/gui/SMESH/images/extrusion2.png new file mode 100755 index 0000000000000000000000000000000000000000..958a8f2e994d5b5fcb166be0cf875630208dc616 GIT binary patch literal 14032 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/ghs3d_parameters_basic.png b/doc/salome/gui/SMESH/images/ghs3d_parameters_basic.png new file mode 100644 index 0000000000000000000000000000000000000000..0cce50bb8bf7c93fcbbf19f1eb71c30e1ed7a573 GIT binary patch literal 19585 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_clear.png b/doc/salome/gui/SMESH/images/mesh_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..0d44a126d195c7c026e3848602e3557d105f98b1 GIT binary patch literal 610 zcmV-o0-gPdP)q+SKfUo-R9 z-{8X$B7#y15dozL)_c!6FH~6oTu$8Ke9Xa|DWwqL(~Fn%ZYBV1D2#_ORk3t7D8PVB zY3_t7$+6t3QNX` z#Ajb|1?#lKN|@L53e#unTh?0BjZXeGc?ssXd=6R%1aAYCA7wk|;q~`xF-wD8T2^)i wKtngs%|~cyChiA1sI@j5S-P&P25e@30k$wHlmp3VMF0Q*07*qoM6N<$f>V$Sc>n+a literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png b/doc/salome/gui/SMESH/images/mesh_cylinder_hexa.png new file mode 100644 index 0000000000000000000000000000000000000000..f95dc67f7910f3e391158c94c238a7085f5ab9d5 GIT binary patch literal 17404 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 literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/revolutionsn1.png b/doc/salome/gui/SMESH/images/revolutionsn1.png new file mode 100644 index 0000000000000000000000000000000000000000..6564c7fc615da0cfda3999f4393d0d55278945d2 GIT binary patch literal 2805 zcmV zL7L+x5JpS+vdb~jH=C_H$u3t&@46@6`ewPttd#}b3`PhQPz6;`Z{?Y>5hFeQE&-Ca z-~aglYX1BCkL}ytz1|-;|C)-Z&6Z6dKU=qn%TIAMTfH~VK1gx|!$!_t*YQhZ&xWvl zyYG*iw5GZ>uB%yYcn#(VV29t`e4CJrI@^*RCOLMD25WI^U<|ixnxor2cLkLmDys;` z;))h1&*261TT`%&)W2w6nJ%Va(wBeY@QNU(Y|&ssw3GXu5L4O5&6O6+e+JEG5F=}0|5T|?a%uiZnw>a@&4!$#*X7Djz1EL zzL&YlT-CK_XJ(^C8)D4h_a7flVgMh;T|EY(>Vg(UF&t7CvF%)jG^4>G&mM34;}z&U z#vHt&>Oyrbarw52As|s-O8qhzzGB$_@yp}SD?Gm9_zZk?p+(}Pj(JB*H!6HEyHf^- z1Xp;yiwci~>LMSRNN>)*WaUIAHv0xjt zhCLFBq-WIvJjpLe~eoJOIZz=&lBr#;~WQI7Skc z4M`%2b={am*yg|(KAu$4GdKiU9GC82jJwILupY?aU)FhsbT9dx(A(hZ7i>L798;AIaDL-6$~?&BZfU+VGQBg z`JOP9#bPBM$ZQ$x>9DNg^6=yR;CN?Gn0ke&#YY;<8pDnb)6se4C$Y>^0?)J=9KyF& z6La`E%3^^Mb1crrT)hl7xI+v(2Cmfv{zVk+2=88oB{JB<;qj;vmi4NxZZMdzOZX0q zH@I62dj=NA!X<8pq)SET&v=7JL0B9Y9X8ssc=}V~5)lUXk738C;y76rSKA{^;`ZBQ ziV7GJ29Jegt!Bkx)4R}76lU-znYEgHFiBj|tSfAGqNfW~|Gz4(Af-I<1oK><4zxTv zXsdd>NOjH{Wr#Ie4Bhr`o#cI#|*5ToT$x z2a#8?-OA!{i^Bw*l&)cKFLv7%Kd$zS zR(`g$ZyDSVlIduU)Z|OzOF`Qwr4?i_OccY8qP3byik2fbzO#B51Wu&PZ0PJG87zYb z&|Vz#B{4MDrqzwq<*^Qf)y-~Tc=mYPAFso&@EXUhNlt)Lk42BBtw8mogZRe6qLz{C z?CR!(Gkrj=uh5afFlh`ss*4J~D=>V^taoZ)^4Kz13UzBWF9WhVsxLoCp1YZzWb#-| z2E)`b?0KG!Mis}MlQ>-1K)%I%XOdgjWbitaK01h7V)wf9t(|B6i8^Bj3q{U!wEqSl z>u!XPWMy@*_O(8x;EQ9vp^46`e@ani@R}f>t9d4Ii`@QNt^Y!{OI+Xd8N6BydoT~{ zCiF~T<&Z?5!7GD#=sbzU$zd{4G3?JSl?E>x!w%M8vdKrU5Q)Pcsx;Vu>~wUsXMJWU zXwho$;xX*V6crT`BdgxwF&y<%tHFln%;V&Z!AVLl+6GE|?5ARbErvsq#W8YOnYzj$ zM6tofk)pMlE#qZFVmR4b-3D6>ABl znSRM-BmU7r9>VCYI2mX^Vi`O?!J~r!AbdRoX7Cd5{RVo6S|Xp>GZ<{wb4W;j1N{iA z#Fr(<3?HwY>G2^KWwis@KZ^Vt2sSGySX&iAQyvGUo=GhFk7$%`*#H~@{(mChZ z3^oW+QB+K5u*EPTb;WVxje7Vu?~j{}2OHNMAJz>Fk8&&3_vP(7Oqsz36GEn=UGzGA zVUG2|No>(DANXIgNyaMvFOTm50Pn8DstBW){?pM(cOBDK5q3St4Q4tTc}aKqlZ-EK z-;?^n#0DFExSWp0{F=d;zER1WWacVjg~ zUPV|n+?liDI9W?1_05#LNi2g6dMbVcy)=3~(~bv+ST#I~Xyh1R_Z5W?;A(drX0XAI zpN1RV28|uA(r9A zZU)O>BZpXVJ?k25)o=#+;(FFK*hr$tU56QLe4@@>$D&tq4yDJ89LX1Imskd`i(YF( zmd;?9o}gV$mjaXqVNFwA&RlgyO6A(p|DGo`g5mcam%9_Cp?H^MS_Hde4U z#0>sK^(6CZ)`pnDT3OlJ5Ht8E@?+SnJz@q+$E?j`20tMohE3Tb%wQ3iwbhux!!T<} zFoR=Q3kkE995a|5vz8SzI6-3!o3cGIgK02pM_~r1!NjmxD*-dO46{}mX7DLKhRs^Z zn87*BUHRAwcSAR3u%R0>*wBp`Z0N=eHgsbK8@e%r4c+_?GRz4>Nm5(300000NkvXX Hu0mjf);Cdg literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/revolutionsn2.png b/doc/salome/gui/SMESH/images/revolutionsn2.png new file mode 100644 index 0000000000000000000000000000000000000000..67a673144f6f9e4471b54d0afc1dc10cac90c115 GIT binary patch literal 2613 zcmV-53d;3~P) zO?u=e5Qa5b@1Lf== zmA0lTH_lF-AH}7*e+b>dV8r|i@%`W-p&%e!|*OhL!WskM(UL)3a zj=wD9yGuu9m^6XukU&_KUzDI(Dvz;NRW@QOCVA;7&}{O;DjR4P!j3YVV+~1svc>eU zq++t`((&?T856wq;~kpi^CjEo)QH@G?Tq+hvKQ05&V)ruy=aq%e$eccvnX@0=OHWC zkOmFKWH@{xJNMZXf`;08I%e>txZ<5GRtO{=UfG!sF?fX&7!Ch1%!waY2H zHVvA2$fy{Pw0*+n#gU7xT^nfjN#!WBIo6OFvIT}=NtE~9 zn!Uf5(h-_z;Y+sdIAFV6{GL%I1{#+eswp3&$pOuXnnsyJY7JQ;SOB@9nr74FjD=?E zh#atSRf%-oy*e`OlD4a~pqWyf0UOa`x@KXOm_#q8DGxMgrl?{(avZS9Rf*vVJ++k{ zdxH|DL9-6{iZ!w~jMhYGsHWC5c4pU1bClUsSQ2^JN8>xO#4BsUepj<=))y64X@$|B zX*#`~TC-lF%t3BjO-vt^7^*2WjrW$O)~sI|ZmS{r1(4-vyS;fe>om%2BxGwftP-6L z$$MzVcuVtYHVh31Y|2e5hvk;G`)yLq28c2T#sOPW-{Kvrjq2^Bnhi;-0h@QImfgj* znO44meR)}D)NH&cvtij*lhL<&*^|Um{&bqnM*YK&?G9buRM@nzTH$+3Ju4;k zmyZ4V<>|+J{5uC=sx)&j-&RA>rj=~d;))KZom92VyPOwi{L{Q|iTTU9(rjkOsL@x{ zbB)&Qp&CnrjP>m$b7=-rYskD28gYMNpO6o!HDu&Z_v}F9x)eQI`Sc#_XUG5wnCJ#V6W05+RC3h7e4aNZjj4x94$*Ceh&K<>+x8S@`PXkIeuVyoVpNkF4r%2DQBk8$NQHp<-mG{1*^4JWTiITCc=1A(s&GG?QxrfJ%InE}XWBbFV861;_Wm}Cz{>Ww8 z7m7B6XoiZhM`8{?W--k>kyta(2GI=ki|AL>heNEIX(MQcC>wylDy?i8q@RYxGlFJd z3<5P|hG|J#W^!&fh3+*&lnut2Y~Ev}yrj-{R4}c3&A^a&2W*jx>y;FWHhpV`C>xuk zZ8arR_R@id#a2Ky&MGaUWxIQhh-~;wEQXHL3{f@@k2U0SJiM*kG0{Lnnt^UO9DXeF zrSI5p_8Uamv{;896OsLAz4WRXm>IdRs23_7p&96vlCKvHAYodUnxSF@hKzF%>eHoW z066g0knDlh-%KN-40zFV4#E+n85jz#Z8f}s)|qCAG7v-d;m09gNkr=ws41jX-R%sO;Mnb)4hA0D! zWDM8}4l7HsXB zA<95aE>~&Ae7WxNn1c?AMgVFeQA4WM3{eJJ5s)o#GSBhv_vq7JGy>3&vjN-Lx5XbF zdw%W-amu&m_ke_F>8pj;Lc93QOq~RQXyyFcqgGS8|Wk5gcYJY*osbD)AH3Og@mgl$Y zVV6415M@9)KmYsm>gOB%`X1F?)oBKRPK;ePF;Pa)41h3RyHe4m87fAg1Qxptx-&BLSURF 2d +algorithm. This algorithm is a commercial software. + +\image html blsurf_parameters.png + +
    +
  • Name - allows to define the name of the hypothesis (BLSURF +Parameters by default).
  • + +
  • Physical Mesh - if is set to "Custom", allows to set size +of mesh elements to generate in User size field. +
  • + +
  • User size - size of mesh elements to generate.
  • + +
  • Max Physical Size - is an upper limit of mesh element size.
  • + +
  • Min Physical Size - is a lower limit of mesh element size.
  • + +
  • Geometrical mesh - if is set to "Custom", allows to set +mesh element deflection from curves and surfaces and element +size change rate in Angle Mesh S, Angle Mesh C and +Gradation fields correspondingly. These fields control +computation of element size, so called geometrical size, conform to +the surface geometry considering local curvatures. \n +The eventual element size at each point will be minimum of User +size, if given, and the geometrical size.
  • + +
  • Angle Mesh S - maximal allowed angle in degrees at a mesh +node between the mesh face and the tangent to the geometrical surface.
  • + +
  • Angle Mesh C - maximal allowed angle in degrees at a mesh +node between the mesh edge and the tangent to the geometrical curve.
  • + +
  • Max Geometrical Size - is an upper limit of geometrical size.
  • + +
  • Min Geometrical Size - is a lower limit of geometrical size.
  • + +
  • Gradation - maximal allowed ratio between the lengths of +two adjacent edges.
  • + +
  • Allow Quadrangles - to create quadrilateral elements.
  • + +
  • Patch independent - if this box is checked on, geometrical +edges are not respected and all geometrical faces are meshed as one +hyper-face.
  • + +\image html blsurf_parameters_advanced.png + +
  • Topology - allows creation of a conform mesh on a shell of +not sewed faces. +
      +
    • "From CAD" means that mesh conformity is assured by conformity + of a shape.
    • +
    • "Pre-process" and "Pre-process++" let BLSURF software + pre-process the geometrical model to eventually produce a conform + mesh.
    • +
    + +
  • Verbosity level - Defines the percentage of "verbosity" of +BLSURF [0-100].
  • + +
  • Add option - provides a choice of multiple advanced +options, each of which, if selected, appear in a table where you can +enter a value of the option and edit it later.
  • + +
  • Clear option - removes option selected in the table. + +
+ +\n +Commonly usable options are following. The name diag stands there for +the diagonal of the bounding box of the geometrical object to mesh. + +
    +
  • topo_eps1 (real) - is the tolerance level inside a CAD +patch. By default is equal to diag × 10-4. This tolerance is used to +identify nodes to merge within one geometrical face when \b Topology +option is to pre-process. Default is diag/10.0.
  • + +
  • topo_eps2 (real) - is the tolerance level between two CAD +patches. By default is equal to diag × 10-4. This tolerance is used to +identify nodes to merge over different geometrical faces when +\b Topology option is to pre-process. Default is diag/10.0.
  • + +
  • \b LSS (real) - is an abbreviation for "length of sub-segment". It is +a maximal allowed length of a mesh edge. Default is 0.5.
  • + +
  • \b frontal (integer) +
      +
    • 1 - the mesh generator inserts points with an advancing front method.
    • +
    • 0 - it inserts them with an algebraic method (on internal edges). This method is +slightly faster but generates less regular meshes.
    • +
    +Default is 0.
  • + +
  • \b hinterpol_flag (integer) - determines the computation of an +interpolated value v between two points P1 and P2 on a +curve. Let h1 be the value at point P1, h2 be the value at point +P2, and t be a parameter varying from 0 to 1 when moving from P1 +to P2 . +
      +
    • 0 - the interpolation is linear: v = h1 + t (h2 - h1 )
    • +
    • 1 - the interpolation is geometric: v = h1 * pow( h2/h1, t)
    • +
    • 2 - the interpolation is sinusoidal: v = (h1+h2)/2 + +(h1-h2)/2*cos(PI*t)
    • +
    +Default is 0.
  • + +
  • \b hmean_flag (integer) - determines the computation of the mean of several +values:
      +
    • -1 - the minimum is computed.
    • +
    • 0 or 2 - the arithmetic mean computed. +
    • 1 - the geometric mean is computed.
    • +
    +Default is 0.
  • + +
  • \b CheckAdjacentEdges, \b CheckCloseEdges and \b CheckWellDefined +(integers) - give number of calls of equally named subroutines the +purpose of which is to improve the mesh of domains having narrow +parts. At each iteration,\b CheckCloseEdges decreases the sizes of the +edges when two boundary curves are neighboring,\b CheckAdjacentEdges +balances the sizes of adjacent edges, and \b CheckWellDefined checks if +the parametric domain is well defined. Default values are 0.
  • + + +
  • \b CoefRectangle (real)- defines the relative thickness of the rectangles +used by subroutine \b CheckCloseEdges (see above). Default is 0.25.
  • + +
  • \b eps_collapse (real) - if is more than 0.0, BLSURF removes +curves whose lengths are less than \b eps_collapse. Here, to obtain an +approximate value of the length of a curve, the latter is arbitrarily +split into 20 edges. Default is 0.0.
  • + +
  • \b eps_ends (real) - is used to detect curves whose lengths are very +small, which sometimes constitutes an error. A message is printed +if fabs(P2-P1) < eps_ends, where P1 and P2 are the +extremities of a curve. Default is diag/500.0.
  • + +
  • \b prefix (char) - is a prefix of the files generated by +BLSURF. Default is "x".
  • + +
  • \b refs (integer) - reference of a surface, used when exporting +files. Default is 1.
  • +
+ +\n +The following advanced options are not documented and you can use them +at your own risk. +\n\n Interger variables: +
    +
  • addsurf_ivertex
  • +
  • background
  • +
  • coiter
  • +
  • communication
  • +
  • decim
  • +
  • export_flag
  • +
  • file_h
  • +
  • gridnu
  • +
  • gridnv
  • +
  • intermedfile
  • +
  • memory
  • +
  • normals
  • +
  • optim
  • +
  • pardom_flag
  • +
  • pinch
  • +
  • rigid
  • +
  • surforient
  • +
  • tconf
  • +
  • topo_collapse
  • +
+Real variables: +
    +
  • addsurf_angle
  • +
  • addsurf_R
  • +
  • addsurf_H
  • +
  • addsurf_FG
  • +
  • addsurf_r
  • +
  • addsurf_PA
  • +
  • angle_compcurv
  • +
  • angle_ridge
  • +
  • eps_pardom
  • +
+String variables: +
    +
  • export_format
  • +
  • export_option
  • +
  • import_option
  • +
+ + +\n +Currently BLSURF plugin has the following limitations. +
    +
  • Mesh contains inverted elements, if it is based on shape, + consisting of more than one face (box, cone, torus...) and if + the option "Allow Quadrangles (Test)" was checked before + computation.
  • + +
  • SIGFPE exception is raised at trying to compute mesh, based on + box, with checked option "Patch independent".
  • + +
  • It has been found out that BLSURF algorithm can't be used as a + local algorithm (on sub-meshes) and as a provider of low-level + mesh for some 3D algorithms because BLSURF mesher (and + consequently plugin) does not provide information on node + parameters on edges (U) and faces (U,V). For example the + following combinations of algorithms are impossible: +
      +
    • global MEFISTO or Quadrangle(mapping) + local BLSURF;
    • +
    • BLSUFR + Projection 2D from faces meshed by BLSURF;
    • +
    • local BLSURF + Extrusion 3D;
    • +
    +
  • +
+ +*/ diff --git a/doc/salome/gui/SMESH/input/ghs3d_hypo.doc b/doc/salome/gui/SMESH/input/ghs3d_hypo.doc new file mode 100644 index 000000000..15622b971 --- /dev/null +++ b/doc/salome/gui/SMESH/input/ghs3d_hypo.doc @@ -0,0 +1,68 @@ +/*! + +\page ghs3d_hypo_page GHS3D Parameters hypothesis + +\n GHS3D Parameters hypothesis works only with Tetrahedron (GHS3D) +algorithm. This algorithm is a commercial software. + +\image html ghs3d_parameters_basic.png + +
    +
  • Name - allows to define the name of the hypothesis (GHS3D +Parameters by default).
  • + +
  • To mesh holes - if this box is checked, the algorithm will +create mesh also in holes inside a solid shape, else only the outermost +shape will be meshed. Volumic elements created within holes are bound +to the solid.
  • + +
  • Optimization level - sets the desired optimization level. +Optimization levels are: none, light, medium, strong, in increasing +order of "quality vs speed" ratio. +
  • + +\image html ghs3d_parameters_advanced.png + +
  • Maximum memory size - launches ghs3d software with +work space limited to specified Megabytes of memory. If this option is +checked off, the software will be launched with 0.7 * total RAM space.
  • + +
  • Initial memory size - starts ghs3d software with +specified Megabytes of work space. If this option is checked off, the +software will be started with 100 Megabytes of working space.
  • + +
  • Working directory - defines folder for input and output +files of ghs3d software, which are files starting with "GHS3D_" prefix.
  • + +
  • Keep working files - allows to check input and output files +of ghs3d software, while usually these files are removed after mesher launch.
  • + +
  • Verbose level - to choose verbosity level in the range 0 to 10. +
    • 0, no standard output, +
    • 2, prints the data, quality statistics of the skin and final +meshes and indicates when the final mesh is being saved. In addition +the software gives indication regarding the CPU time. +
    • 10, same as 2 plus the main steps in the computation, quality +statistics histogram of the skin mesh, quality statistics histogram +together with the characteristics of the final mesh. +
  • + +
  • To create new nodes - if this option is checked off, ghs3d +tries to create tetrahedrons using only nodes of 2D mesh.
  • + +
  • To use boundary recovery version - enables using a +boundary recovery module which tries to +create volume meshes starting from very poor quality surface meshes +(almost flat triangles on the surface, high density propagation, +extreme aspect ratios, etc.) which fails with the standard version. The +resulting volume mesh will however most likely have a very poor +quality (poor aspect ratio of elements, tetrahedra with a very small +positive volume).
  • + +
  • Option as text - allows entering any text that will be +used as command line option of ghs3d. This is for giving +advanced options in a free from.
  • + +
+ +*/ \ No newline at end of file diff --git a/resources/mesh_clear.png b/resources/mesh_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..0d44a126d195c7c026e3848602e3557d105f98b1 GIT binary patch literal 610 zcmV-o0-gPdP)q+SKfUo-R9 z-{8X$B7#y15dozL)_c!6FH~6oTu$8Ke9Xa|DWwqL(~Fn%ZYBV1D2#_ORk3t7D8PVB zY3_t7$+6t3QNX` z#Ajb|1?#lKN|@L53e#unTh?0BjZXeGc?ssXd=6R%1aAYCA7wk|;q~`xF-wD8T2^)i wKtngs%|~cyChiA1sI@j5S-P&P25e@30k$wHlmp3VMF0Q*07*qoM6N<$f>V$Sc>n+a literal 0 HcmV?d00001 diff --git a/resources/mesh_whatis.png b/resources/mesh_whatis.png new file mode 100755 index 0000000000000000000000000000000000000000..1b39f3544c0fc3c9c78be530a9531b9e5e767c32 GIT binary patch literal 414 zcmV;P0b%}$P)-FE+k8vD%S%l@c6q;wtN;K207*qo IM6N<$f;I-X^8f$< literal 0 HcmV?d00001 diff --git a/src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx b/src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx new file mode 100644 index 000000000..f744561d3 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_FileInfoDlg.cxx @@ -0,0 +1,77 @@ +// SMESH SMESHGUI : GUI for SMESH component +// +// Copyright (C) 2003 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 : SMESHGUI_FileInfoDlg.cxx +// Author : Alexandre SOLOVYOV +// Module : SMESH +// $Header$ + +#include + +#include + +#include +#include +#include + +SMESHGUI_FileInfoDlg::SMESHGUI_FileInfoDlg( QWidget* parent, SALOME_MED::MedFileInfo* inf ) + : QtxDialog( parent, 0, true, true, QtxDialog::OK ) +{ + setCaption( tr( "CAPTION" ) ); + setSizeGripEnabled( true ); + + QLineEdit* fname = new QLineEdit( mainFrame() ); + fname->setReadOnly( true ); + QLineEdit* fsize = new QLineEdit( mainFrame() ); + fsize->setReadOnly( true ); + QLineEdit* medversion = new QLineEdit( mainFrame() ); + medversion->setReadOnly( true ); + fname->setMinimumWidth( 300 ); + + QGridLayout* lay = new QGridLayout( mainFrame(), 4, 2, 5, 5 ); + lay->addWidget( new QLabel( tr( "FILE_NAME" ), mainFrame() ), 0, 0 ); + lay->addWidget( fname, 0, 1 ); + lay->addWidget( new QLabel( tr( "FILE_SIZE" ), mainFrame() ), 1, 0 ); + lay->addWidget( fsize, 1, 1 ); + lay->addWidget( new QLabel( tr( "MED_VERSION" ), mainFrame() ), 2, 0 ); + lay->addWidget( medversion, 2, 1 ); + + fname->setText( (char*)inf->fileName ); + fname->home( false ); + fsize->setText( QString::number( inf->fileSize ) ); + + QString version; + if( inf->major>=0 ) + { + version = QString::number( inf->major ); + if( inf->minor>=0 ) + { + version += "." + QString::number( inf->minor ); + if( inf->release>=0 ) + version += "." + QString::number( inf->release ); + } + } + medversion->setText( version ); +} + +SMESHGUI_FileInfoDlg::~SMESHGUI_FileInfoDlg() +{ +} diff --git a/src/SMESHGUI/SMESHGUI_FileInfoDlg.h b/src/SMESHGUI/SMESHGUI_FileInfoDlg.h new file mode 100644 index 000000000..7cf917d65 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_FileInfoDlg.h @@ -0,0 +1,44 @@ +// SMESH SMESHGUI : GUI for SMESH component +// +// Copyright (C) 2003 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 : SMESHGUI_FileInfoDlg.h +// Author : Alexandre SOLOVYOV +// Module : SMESH +// $Header$ + +#ifndef SMESHGUI_FILE_INFO_DIALOG +#define SMESHGUI_FILE_INFO_DIALOG + +#include +#include + +class SMESHGUI_FileInfoDlg : public QtxDialog +{ + Q_OBJECT + +public: + SMESHGUI_FileInfoDlg( QWidget*, SALOME_MED::MedFileInfo* ); + virtual ~SMESHGUI_FileInfoDlg(); +}; + +#endif diff --git a/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx b/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx new file mode 100755 index 000000000..d7dd9579d --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_WhatIsDlg.cxx @@ -0,0 +1,626 @@ +// SMESH SMESHGUI : GUI for SMESH component +// +// Copyright (C) 2003 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 : SMESHGUI_WhatIsDlg.cxx +// Author : Vladimir TURIN +// Module : SMESH +// $Header: + +#include "SMESHGUI_WhatIsDlg.h" + +#include "SMESHGUI.h" +#include "SMESHGUI_SpinBox.h" +#include "SMESHGUI_Utils.h" +#include "SMESHGUI_VTKUtils.h" +#include "SMESHGUI_MeshUtils.h" +#include "SMESHGUI_IdValidator.h" + +#include "SMESH_Actor.h" +#include "SMESH_TypeFilter.hxx" +#include "SMESH_LogicalFilter.hxx" +#include "SMDS_Mesh.hxx" +#include "SMDS_VolumeTool.hxx" + +#include "SUIT_Desktop.h" +#include "SUIT_ResourceMgr.h" +#include "SUIT_Session.h" +#include "SUIT_MessageBox.h" + +#include "LightApp_Application.h" + +#include "SVTK_ViewModel.h" +#include "SVTK_Selection.h" +#include "SVTK_ViewWindow.h" +#include "SVTK_Selector.h" +#include "SALOME_ListIO.hxx" + +#include "utilities.h" + +// OCCT Includes +#include +#include +#include + +// QT Includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// IDL Headers +#include "SALOMEconfig.h" +#include CORBA_SERVER_HEADER(SMESH_Group) +#include CORBA_SERVER_HEADER(SMESH_MeshEditor) + +using namespace std; + +//================================================================================= +// class : SMESHGUI_WhatIsDlg() +// purpose : +//================================================================================= +SMESHGUI_WhatIsDlg::SMESHGUI_WhatIsDlg( SMESHGUI* theModule, const char* name, + bool modal, WFlags fl) + : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | + WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) +{ + if (!name) + setName("SMESHGUI_WhatIsDlg"); + resize(300, 500); + setCaption(tr("SMESH_WHAT_IS_TITLE")); + setSizeGripEnabled(TRUE); + SMESHGUI_WhatIsDlgLayout = new QGridLayout(this); + SMESHGUI_WhatIsDlgLayout->setSpacing(6); + SMESHGUI_WhatIsDlgLayout->setMargin(11); + + /***************************************************************/ + GroupMesh = new QButtonGroup(this, "GroupSelections"); + GroupMesh->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupMesh->sizePolicy().hasHeightForWidth())); + GroupMesh->setTitle(tr("")); + GroupMesh->setColumnLayout(0, Qt::Vertical); + GroupMesh->layout()->setSpacing(0); + GroupMesh->layout()->setMargin(0); + GroupMeshLayout = new QGridLayout(GroupMesh->layout()); + GroupMeshLayout->setAlignment(Qt::AlignTop); + GroupMeshLayout->setSpacing(6); + GroupMeshLayout->setMargin(11); + MeshLabel = new QLabel(GroupMesh, "MeshLabel"); + MeshLabel->setText(tr("SMESH_NAME")); + GroupMeshLayout->addWidget(MeshLabel, 0, 0); + MeshName = new QLabel(GroupMesh, "MeshName"); + MeshName->setText(tr("")); + GroupMeshLayout->addWidget(MeshName, 0, 1); + SMESHGUI_WhatIsDlgLayout->addWidget(GroupMesh, 0, 0); + + /***************************************************************/ + GroupSelections = new QButtonGroup(this, "GroupSelections"); + GroupSelections->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5, (QSizePolicy::SizeType)0, 0, 0, GroupSelections->sizePolicy().hasHeightForWidth())); + GroupSelections->setTitle(tr("ENTITY_TYPE" )); + GroupSelections->setExclusive(TRUE); + GroupSelections->setColumnLayout(0, Qt::Vertical); + GroupSelections->layout()->setSpacing(0); + GroupSelections->layout()->setMargin(0); + GroupSelectionsLayout = new QGridLayout(GroupSelections->layout()); + GroupSelectionsLayout->setAlignment(Qt::AlignTop); + GroupSelectionsLayout->setSpacing(6); + GroupSelectionsLayout->setMargin(11); + RadioButtonNodes = new QRadioButton(GroupSelections, "RadioButtonNodes"); + RadioButtonNodes->setText(tr("SMESH_NODES")); + GroupSelectionsLayout->addWidget(RadioButtonNodes, 0, 0); + RadioButtonElements = new QRadioButton(GroupSelections, "RadioButtonElements"); + RadioButtonElements->setText(tr("SMESH_ELEMENTS")); + GroupSelectionsLayout->addWidget(RadioButtonElements, 0, 1 ); + SMESHGUI_WhatIsDlgLayout->addWidget(GroupSelections, 1, 0); + + /***************************************************************/ + GroupArguments = new QGroupBox(this, "GroupArguments"); + GroupArguments->setTitle(tr("SMESH_INFORMATION")); + GroupArguments->setColumnLayout(0, Qt::Vertical); + GroupArguments->layout()->setSpacing(0); + GroupArguments->layout()->setMargin(0); + GroupArgumentsLayout = new QGridLayout(GroupArguments->layout()); + GroupArgumentsLayout->setAlignment(Qt::AlignTop); + GroupArgumentsLayout->setSpacing(6); + GroupArgumentsLayout->setMargin(11); + + // Controls for elements selection + TextLabelElements = new QLabel(GroupArguments, "TextLabelElements"); + TextLabelElements->setText(tr("SMESH_ID_ELEMENTS" )); + TextLabelElements->setFixedWidth(74); + GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0); + + LineEditElements = new QLineEdit(GroupArguments, "LineEditElements"); + LineEditElements->setValidator(new SMESHGUI_IdValidator(this, "validator")); + GroupArgumentsLayout->addMultiCellWidget(LineEditElements, 0, 0, 2, 7); + + // information text browser + Info = new QTextBrowser(GroupArguments, "Info"); + Info->setHScrollBarMode(QScrollView::AlwaysOff); + Info->setVScrollBarMode(QScrollView::AlwaysOff); + GroupArgumentsLayout->addMultiCellWidget(Info, 1, 1, 0, 7); + + SMESHGUI_WhatIsDlgLayout->addWidget(GroupArguments, 2, 0); + + /***************************************************************/ + GroupButtons = new QGroupBox(this, "GroupButtons"); + GroupButtons->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, GroupButtons->sizePolicy().hasHeightForWidth())); + GroupButtons->setTitle(tr("" )); + GroupButtons->setColumnLayout(0, Qt::Vertical); + GroupButtons->layout()->setSpacing(0); + GroupButtons->layout()->setMargin(0); + GroupButtonsLayout = new QGridLayout(GroupButtons->layout()); + GroupButtonsLayout->setAlignment(Qt::AlignTop); + GroupButtonsLayout->setSpacing(6); + GroupButtonsLayout->setMargin(11); + buttonHelp = new QPushButton(GroupButtons, "buttonHelp"); + buttonHelp->setText(tr("SMESH_BUT_HELP" )); + buttonHelp->setAutoDefault(TRUE); + GroupButtonsLayout->addWidget(buttonHelp, 0, 3); + QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); + GroupButtonsLayout->addItem(spacer_9, 0, 1); + buttonOk = new QPushButton(GroupButtons, "buttonOk"); + buttonOk->setText(tr("SMESH_BUT_OK" )); + buttonOk->setAutoDefault(TRUE); + buttonOk->setDefault(TRUE); + GroupButtonsLayout->addWidget(buttonOk, 0, 0); + SMESHGUI_WhatIsDlgLayout->addWidget(GroupButtons, 3, 0); + + GroupArguments->show(); + RadioButtonNodes->setChecked(TRUE); + + mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector(); + + mySMESHGUI->SetActiveDialogBox((QDialog*)this); + + // Costruction of the logical filter + SMESH_TypeFilter* aMeshOrSubMeshFilter = new SMESH_TypeFilter (MESHorSUBMESH); + SMESH_TypeFilter* aSmeshGroupFilter = new SMESH_TypeFilter (GROUP); + + QPtrList aListOfFilters; + if (aMeshOrSubMeshFilter) aListOfFilters.append(aMeshOrSubMeshFilter); + if (aSmeshGroupFilter) aListOfFilters.append(aSmeshGroupFilter); + + myMeshOrSubMeshOrGroupFilter = + new SMESH_LogicalFilter(aListOfFilters, SMESH_LogicalFilter::LO_OR); + + myHelpFileName = "/files/viewing_mesh_info.htm#element_infos"; + + Init(); + + /* signals and slots connections */ + connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); + connect(buttonHelp, SIGNAL(clicked()), this, SLOT(ClickOnHelp())); + connect(GroupSelections, SIGNAL(clicked(int)), SLOT(SelectionsClicked(int))); + + connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + /* to close dialog if study change */ + connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel())); + connect(LineEditElements, SIGNAL(textChanged(const QString&)), SLOT(onTextChange(const QString&))); + this->show(); /* displays Dialog */ + + SelectionsClicked(0); + SelectionIntoArgument(); +} + +//================================================================================= +// function : ~SMESHGUI_WhatIsDlg() +// purpose : Destroys the object and frees any allocated resources +//================================================================================= +SMESHGUI_WhatIsDlg::~SMESHGUI_WhatIsDlg() +{ + // no need to delete child widgets, Qt does it all for us +} + +//================================================================================= +// function : Init() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::Init (bool ResetControls) +{ + myBusy = false; + + LineEditElements->clear(); + + myActor = 0; + myMesh = SMESH::SMESH_Mesh::_nil(); + + if (ResetControls) { + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( CellSelection ); + onTextChange(LineEditElements->text()); + + SelectionIntoArgument(); + } +} + +//================================================================================= +// function : SelectionsClicked() +// purpose : Radio button management +//================================================================================= +void SMESHGUI_WhatIsDlg::SelectionsClicked (int selectionId) +{ + disconnect(mySelectionMgr, 0, this, 0); + + mySelectionMgr->clearFilters(); + + switch (selectionId) { + case 0: + { + SMESH::SetPointRepresentation(true); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( NodeSelection ); + break; + } + case 1: + { + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( CellSelection ); + break; + } + } + + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + SelectionIntoArgument(); +} + +//================================================================================= +// function : ClickOnOk() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::ClickOnOk() +{ + if (mySMESHGUI->isActiveStudyLocked()) + return; + + SMESH::UpdateView(); + Init(false); + SelectionIntoArgument(); + ClickOnCancel(); +} + +//================================================================================= +// function : ClickOnCancel() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::ClickOnCancel() +{ + disconnect(mySelectionMgr, 0, this, 0); + mySelectionMgr->clearFilters(); + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode( ActorSelection ); + mySMESHGUI->ResetState(); + reject(); +} + +//================================================================================= +// function : ClickOnHelp() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::ClickOnHelp() +{ + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName); + else { + SUIT_MessageBox::warn1(0, QObject::tr("WRN_WARNING"), + QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", "application")).arg(myHelpFileName), + QObject::tr("BUT_OK")); + } +} + +//======================================================================= +// function : onTextChange() +// purpose : +//======================================================================= +void SMESHGUI_WhatIsDlg::onTextChange (const QString& theNewText) +{ + if (myBusy) return; + myBusy = true; + + // hilight entered elements + SMDS_Mesh* aMesh = 0; + if (myActor) + aMesh = myActor->GetObject()->GetMesh(); + + if (aMesh) { + Handle(SALOME_InteractiveObject) anIO = myActor->getIO(); + + TColStd_MapOfInteger newIndices; + + QStringList aListId = QStringList::split(" ", theNewText, false); + + for (int i = 0; i < aListId.count(); i++) { + const SMDS_MeshElement * e = RadioButtonNodes->isChecked()? + aMesh->FindNode(aListId[ i ].toInt()): + aMesh->FindElement(aListId[ i ].toInt()); + if (e) + newIndices.Add(e->GetID()); + } + + mySelector->AddOrRemoveIndex( anIO, newIndices, false ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->highlight( anIO, true, true ); + } + + SelectionIntoArgument(); + + myBusy = false; +} + +//================================================================================= +// function : SelectionIntoArgument() +// purpose : Called when selection as changed or other case +//================================================================================= +void SMESHGUI_WhatIsDlg::SelectionIntoArgument() +{ + int curBusy = myBusy; + + // clear + myActor = 0; + QString aString = ""; + + myBusy = true; + if(!curBusy) + LineEditElements->setText(aString); + MeshName->setText(aString); + GroupMesh->setTitle(tr("")); + Info->clear(); + myBusy = curBusy; + + if (!GroupButtons->isEnabled()) // inactive + return; + + // get selected mesh + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type()); + + int nbSel = aList.Extent(); + + if (nbSel != 1) + return; + + Handle(SALOME_InteractiveObject) IO = aList.First(); + myMesh = SMESH::GetMeshByIO(IO); + if (myMesh->_is_nil()) + return; + + myActor = SMESH::FindActorByObject(myMesh); + if (!myActor) + myActor = SMESH::FindActorByEntry(IO->getEntry()); + if (!myActor) + return; + + QString aName; + SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName); + MeshName->setText(aName); + if(!SMESH::IObjectToInterface(IO)->_is_nil()) { + GroupMesh->setTitle(tr("SMESH_MESH")); + } else if(!SMESH::IObjectToInterface(IO)->_is_nil()) { + GroupMesh->setTitle(tr("SMESH_SUBMESH")); + } else if(!SMESH::IObjectToInterface(IO)->_is_nil()) { + GroupMesh->setTitle(tr("SMESH_GROUP")); + } + + int aNbUnits = 0; + + aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, IO, aString); + + if (aNbUnits < 1) + return; + + const SMDS_MeshElement * e = RadioButtonNodes->isChecked()? + myActor->GetObject()->GetMesh()->FindNode(aString.toInt()): + myActor->GetObject()->GetMesh()->FindElement(aString.toInt()); + if (e) { + QString anInfo; + anInfo=tr("ENTITY_TYPE") + ": "; + if(e->GetType() == SMDSAbs_Node) { + anInfo+=tr("MESH_NODE")+"\n"; + const SMDS_MeshNode *en = (SMDS_MeshNode*) e; + } else if(e->GetType() == SMDSAbs_Edge) { + anInfo+=tr("SMESH_EDGE")+"\n"; + anInfo+=tr("SMESH_MESHINFO_TYPE")+": "; + const SMDS_MeshEdge *ee = (SMDS_MeshEdge*) e; + anInfo+=(ee->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+"\n"; + } else if(e->GetType() == SMDSAbs_Face) { + const SMDS_MeshFace *ef = (SMDS_MeshFace*) e; + anInfo+=tr("SMESH_FACE")+"\n"; + anInfo+=tr("SMESH_MESHINFO_TYPE")+": "; + if(!ef->IsPoly()) + anInfo+=(ef->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" "; + switch(ef->NbNodes()) { + case 3: + case 6: + { + anInfo+=tr("SMESH_TRIANGLE"); + break; + } + case 4: + case 8: + { + anInfo+=tr("SMESH_QUADRANGLE"); + break; + } + default: + break; + } + anInfo+="\n"; + } else if(e->GetType() == SMDSAbs_Volume) { + anInfo+=tr("SMESH_VOLUME")+"\n"; + anInfo+=tr("SMESH_MESHINFO_TYPE")+": "; + const SMDS_MeshVolume *ev = (SMDS_MeshVolume*) e; + SMDS_VolumeTool vt(ev); + if(vt.GetVolumeType() != SMDS_VolumeTool::POLYHEDA) + anInfo+=(ev->IsQuadratic()?tr("SMESH_MESHINFO_ORDER2"):tr("SMESH_MESHINFO_ORDER1"))+" "; + switch(vt.GetVolumeType()) { + case SMDS_VolumeTool::TETRA: + case SMDS_VolumeTool::QUAD_TETRA: + { + anInfo+=tr("SMESH_TETRAS"); + break; + } + case SMDS_VolumeTool::PYRAM: + case SMDS_VolumeTool::QUAD_PYRAM: + { + anInfo+=tr("SMESH_PYRAMID"); + break; + } + case SMDS_VolumeTool::PENTA: + case SMDS_VolumeTool::QUAD_PENTA: + { + anInfo+=tr("SMESH_PRISM"); + break; + } + case SMDS_VolumeTool::HEXA: + case SMDS_VolumeTool::QUAD_HEXA: + { + anInfo+=tr("SMESH_HEXAS"); + break; + } + case SMDS_VolumeTool::POLYHEDA: + { + anInfo+=tr("SMESH_POLYEDRON"); + break; + } + default: + break; + } + anInfo+="\n"; + } + if(e->GetType() != SMDSAbs_Node) + anInfo+=tr("GRAVITY_CENTER") + ":\n"; + gp_XYZ anXYZ(0.,0.,0.); + SMDS_ElemIteratorPtr nodeIt = e->nodesIterator(); + int nbNodes = 0; + for(; nodeIt->more(); nbNodes++) { + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + anXYZ.Add( gp_XYZ( node->X(), node->Y(), node->Z() ) ); + } + anXYZ.Divide(e->NbNodes()) ; + anInfo+=QString("X=%1\nY=%2\nZ=%3\n").arg(anXYZ.X()).arg(anXYZ.Y()).arg(anXYZ.Z()); + Info->setText(anInfo); + } + + if(!curBusy) { + myBusy = true; + LineEditElements->setText(aString); + myBusy = false; + } +} + +//================================================================================= +// function : DeactivateActiveDialog() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::DeactivateActiveDialog() +{ + if (GroupArguments->isEnabled()) { + GroupSelections->setEnabled(false); + GroupMesh->setEnabled(false); + GroupArguments->setEnabled(false); + GroupButtons->setEnabled(false); + mySMESHGUI->ResetState(); + mySMESHGUI->SetActiveDialogBox(0); + } +} + +//================================================================================= +// function : ActivateThisDialog() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::ActivateThisDialog() +{ + /* Emit a signal to deactivate the active dialog */ + mySMESHGUI->EmitSignalDeactivateDialog(); + GroupArguments->setEnabled(true); + GroupButtons->setEnabled(true); + GroupSelections->setEnabled(true); + GroupMesh->setEnabled(true); + + mySMESHGUI->SetActiveDialogBox((QDialog*)this); + + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + SelectionsClicked(RadioButtonNodes->isChecked()?0:1); + + SelectionIntoArgument(); +} + +//================================================================================= +// function : enterEvent() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::enterEvent (QEvent*) +{ + if (!GroupArguments->isEnabled()) + ActivateThisDialog(); +} + +//================================================================================= +// function : closeEvent() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::closeEvent (QCloseEvent*) +{ + /* same than click on cancel button */ + this->ClickOnCancel(); +} + +//======================================================================= +//function : hideEvent +//purpose : caused by ESC key +//======================================================================= +void SMESHGUI_WhatIsDlg::hideEvent (QHideEvent*) +{ + if (!isMinimized()) + ClickOnCancel(); +} + +//================================================================================= +// function : keyPressEvent() +// purpose : +//================================================================================= +void SMESHGUI_WhatIsDlg::keyPressEvent( QKeyEvent* e ) +{ + QDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + + if ( e->key() == Key_F1 ) + { + e->accept(); + ClickOnHelp(); + } +} diff --git a/src/SMESHGUI/SMESHGUI_WhatIsDlg.h b/src/SMESHGUI/SMESHGUI_WhatIsDlg.h new file mode 100755 index 000000000..af1c4ef3d --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_WhatIsDlg.h @@ -0,0 +1,130 @@ +// SMESH SMESHGUI : GUI for SMESH component +// +// Copyright (C) 2003 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 : SMESHGUI_WhatIsDlg.h +// Author : Vladimir TURIN +// Module : SMESH +// $Header: + +#ifndef SMESHGUI_WHATISDLG_H +#define SMESHGUI_WHATISDLG_H + +#include "LightApp_SelectionMgr.h" + +#include "SMESH_LogicalFilter.hxx" + +// QT Includes +#include + +class QGridLayout; +class QButtonGroup; +class QGroupBox; +class QLabel; +class QLineEdit; +class QPushButton; +class QRadioButton; +class QCheckBox; +class QTextBrowser; +class SMESHGUI; +class SMESHGUI_SpinBox; +class SMESH_Actor; +class SVTK_ViewWindow; +class SVTK_Selector; + +// IDL Headers +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) + + +//================================================================================= +// class : SMESHGUI_WhatIsDlg +// purpose : +//================================================================================= +class SMESHGUI_WhatIsDlg : public QDialog +{ + Q_OBJECT + +public: + + SMESHGUI_WhatIsDlg( SMESHGUI*, + const char* name = 0, + bool modal = FALSE, + WFlags fl = 0); + ~SMESHGUI_WhatIsDlg(); + +private: + + void Init (bool ResetControls = true); + void closeEvent (QCloseEvent*); + void enterEvent (QEvent*); /* mouse enter the QWidget */ + void hideEvent (QHideEvent*); /* ESC key */ + void keyPressEvent(QKeyEvent*); + + SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */ + LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ + + SVTK_Selector* mySelector; + + bool myBusy; + SMESH::SMESH_Mesh_var myMesh; + SMESH_Actor* myActor; + SMESH_LogicalFilter* myMeshOrSubMeshOrGroupFilter; + + QButtonGroup* GroupSelections; + QRadioButton* RadioButtonNodes; + QRadioButton* RadioButtonElements; + QGroupBox* GroupButtons; + QPushButton* buttonOk; + QPushButton* buttonHelp; + QGroupBox* GroupArguments; + QGroupBox* GroupMesh; + QLabel* TextLabelElements; + QLineEdit* LineEditElements; + QLabel* MeshLabel; + QLabel* MeshName; + + QTextBrowser* Info; + + QString myHelpFileName; + +private slots: + + void SelectionsClicked(int selectionId); + void ClickOnOk(); + void ClickOnCancel(); + void ClickOnHelp(); + void SelectionIntoArgument() ; + void DeactivateActiveDialog() ; + void ActivateThisDialog() ; + void onTextChange(const QString&); + +protected: + + QGridLayout* SMESHGUI_WhatIsDlgLayout; + QGridLayout* GroupSelectionsLayout; + QGridLayout* GroupMeshLayout; + QGridLayout* GroupButtonsLayout; + QGridLayout* GroupArgumentsLayout; +}; + +#endif // SMESHGUI_WHATISDLG_H diff --git a/src/SMESH_SWIG/ex24_cylinder.py b/src/SMESH_SWIG/ex24_cylinder.py new file mode 100644 index 000000000..25a1e96d6 --- /dev/null +++ b/src/SMESH_SWIG/ex24_cylinder.py @@ -0,0 +1,104 @@ +# CEA/LGLS 2007, Francis KLOSS (OCC) +# ================================== + +import math + +import geompy +import smesh + +geo = geompy + +# Parameters +# ---------- + +radius = 50 +height = 200 + +# Build a cylinder +# ---------------- + +base = geo.MakeVertex(0, 0, 0) +direction = geo.MakeVectorDXDYDZ(0, 0, 1) + +cylinder = geo.MakeCylinder(base, direction, radius, height) + +geo.addToStudy(cylinder, "cylinder") + +# Build blocks +# ------------ + +size = radius/2.0 + +box_rot = geo.MakeBox(-size, -size, 0, +size, +size, height) +box_axis = geo.MakeLine(base, direction) +box = geo.MakeRotation(box_rot, box_axis, math.pi/4) + +hole = geo.MakeCut(cylinder, box) + +plane_trim = 2000 + +plane_a = geo.MakePlane(base, geo.MakeVectorDXDYDZ(1, 0, 0), plane_trim) +plane_b = geo.MakePlane(base, geo.MakeVectorDXDYDZ(0, 1, 0), plane_trim) + +blocks_part = geo.MakePartition([hole], [plane_a, plane_b], [], [], geo.ShapeType["SOLID"]) +blocks_list = [box] + geo.SubShapeAll(blocks_part, geo.ShapeType["SOLID"]) +blocks_all = geo.MakeCompound(blocks_list) +blocks = geo.MakeGlueFaces(blocks_all, 0.0001) + +geo.addToStudy(blocks, "cylinder:blocks") + +# Build geometric groups +# ---------------------- + +def group(name, shape, type, base=None, direction=None): + t = geo.ShapeType[type] + g = geo.CreateGroup(shape, t) + + geo.addToStudy(g, name) + g.SetName(name) + + if base!=None: + l = geo.GetShapesOnPlaneWithLocationIDs(shape, t, direction, base, geo.GEOM.ST_ON) + geo.UnionIDs(g, l) + + return g + +group_a = group("baseA", blocks, "FACE", base, direction) + +base_b = geo.MakeVertex(0, 0, height) +group_b = group("baseB", blocks, "FACE", base_b, direction) + +group_1 = group("limit", blocks, "SOLID") +group_1_all = geo.SubShapeAllIDs(blocks, geo.ShapeType["SOLID"]) +geo.UnionIDs(group_1, group_1_all) +group_1_box = geo.GetBlockNearPoint(blocks, base) +geo.DifferenceList(group_1, [group_1_box]) + +# Mesh the blocks with hexahedral +# ------------------------------- + +def discretize(x, y, z, n, s=blocks): + p = geo.MakeVertex(x, y, z) + e = geo.GetEdgeNearPoint(s, p) + a = hexa.Segment(e) + a.NumberOfSegments(n) + a.Propagation() + +hexa = smesh.Mesh(blocks) + +hexa_1d = hexa.Segment() +hexa_1d.NumberOfSegments(1) + +discretize(+radius , +radius, 0, 5) +discretize(-radius , +radius, 0, 8) +discretize((radius+size)/2, 0, 0, 10) +discretize( +radius, 0, height/2, 20) + +hexa.Quadrangle() +hexa.Hexahedron() + +hexa.Compute() + +hexa.Group(group_a) +hexa.Group(group_b) +hexa.Group(group_1) diff --git a/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx new file mode 100644 index 000000000..3892ddc9b --- /dev/null +++ b/src/StdMeshers/StdMeshers_QuadToTriaAdaptor.cxx @@ -0,0 +1,1164 @@ +// SMESH SMESH : implementaion of SMESH idl descriptions +// +// Copyright (C) 2003 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 : StdMeshers_QuadToTriaAdaptor.cxx +// Module : SMESH +// Created : Wen May 07 16:37:07 2008 +// Author : Sergey KUUL (skl) + + +#include "StdMeshers_QuadToTriaAdaptor.hxx" + +//#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +typedef NCollection_Array1 StdMeshers_Array1OfSequenceOfInteger; + + +//======================================================================= +//function : StdMeshers_QuadToTriaAdaptor +//purpose : +//======================================================================= + +StdMeshers_QuadToTriaAdaptor::StdMeshers_QuadToTriaAdaptor() +{ +} + + +//================================================================================ +/*! + * \brief Destructor + */ +//================================================================================ + +StdMeshers_QuadToTriaAdaptor::~StdMeshers_QuadToTriaAdaptor() +{} + + +//======================================================================= +//function : FindBestPoint +//purpose : Auxilare for Compute() +// V - normal to (P1,P2,PC) +//======================================================================= +static gp_Pnt FindBestPoint(const gp_Pnt& P1, const gp_Pnt& P2, + const gp_Pnt& PC, const gp_Vec& V) +{ + double a = P1.Distance(P2); + double b = P1.Distance(PC); + double c = P2.Distance(PC); + if( a < (b+c)/2 ) + return PC; + else { + // find shift along V in order to a became equal to (b+c)/2 + double shift = sqrt( a*a + (b*b-c*c)*(b*b-c*c)/16/a/a - (b*b+c*c)/2 ); + gp_Dir aDir(V); + gp_Pnt Pbest( PC.X() + aDir.X()*shift, PC.Y() + aDir.Y()*shift, + PC.Z() + aDir.Z()*shift ); + return Pbest; + } +} + + +//======================================================================= +//function : HasIntersection3 +//purpose : Auxilare for HasIntersection() +// find intersection point between triangle (P1,P2,P3) +// and segment [PC,P] +//======================================================================= +static bool HasIntersection3(const gp_Pnt& P, const gp_Pnt& PC, gp_Pnt& Pint, + const gp_Pnt& P1, const gp_Pnt& P2, const gp_Pnt& P3) +{ + //cout<<"HasIntersection3"< preci ) || + ( (PC.Y()-PIn.Y())*(P.Y()-PIn.Y()) > preci ) || + ( (PC.Z()-PIn.Z())*(P.Z()-PIn.Z()) > preci ); + if(IsExternal) { + return false; + } + // check if this point is internal for triangle (P1,P2,P3) + gp_Vec V1(PIn,P1); + gp_Vec V2(PIn,P2); + gp_Vec V3(PIn,P3); + if( V1.Magnitude()Length()==3) { + return HasIntersection3( P, PC, Pint, aContour->Value(1), + aContour->Value(2), aContour->Value(3) ); + } + else { + bool check = false; + if( (aContour->Value(1).Distance(aContour->Value(2)) > 1.e-6) && + (aContour->Value(1).Distance(aContour->Value(3)) > 1.e-6) && + (aContour->Value(2).Distance(aContour->Value(3)) > 1.e-6) ) { + check = HasIntersection3( P, PC, Pint, aContour->Value(1), + aContour->Value(2), aContour->Value(3) ); + } + if(check) return true; + if( (aContour->Value(1).Distance(aContour->Value(4)) > 1.e-6) && + (aContour->Value(1).Distance(aContour->Value(3)) > 1.e-6) && + (aContour->Value(4).Distance(aContour->Value(3)) > 1.e-6) ) { + check = HasIntersection3( P, PC, Pint, aContour->Value(1), + aContour->Value(3), aContour->Value(4) ); + } + if(check) return true; + } + + return false; +} + + +//======================================================================= +//function : CheckIntersection +//purpose : Auxilare for Compute() +// NotCheckedFace - for optimization +//======================================================================= +bool StdMeshers_QuadToTriaAdaptor::CheckIntersection + (const gp_Pnt& P, const gp_Pnt& PC, + gp_Pnt& Pint, SMESH_Mesh& aMesh, + const TopoDS_Shape& aShape, + const TopoDS_Shape& NotCheckedFace) +{ + SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); + //cout<<" CheckIntersection: meshDS->NbFaces() = "<NbFaces()<MeshElements(aShapeFace); + if ( aSubMeshDSFace ) { + SMDS_ElemIteratorPtr iteratorElem = aSubMeshDSFace->GetElements(); + while ( iteratorElem->more() ) { // loop on elements on a face + const SMDS_MeshElement* face = iteratorElem->next(); + Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; + SMDS_ElemIteratorPtr nodeIt = face->nodesIterator(); + if( !face->IsQuadratic() ) { + while ( nodeIt->more() ) { + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + } + } + else { + int nn = 0; + while ( nodeIt->more() ) { + nn++; + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + if(nn==face->NbNodes()/2) break; + } + } + if( HasIntersection(P, PC, Pres, aContour) ) { + res = true; + double tmp = PC.Distance(Pres); + if(tmpnodesIterator(); + const SMDS_MeshNode* Ns1[3]; + int k = 0; + while( nIt->more() ) { + Ns1[k] = static_cast( nIt->next() ); + k++; + } + nIt = F2->nodesIterator(); + const SMDS_MeshNode* Ns2[3]; + k = 0; + while( nIt->more() ) { + Ns2[k] = static_cast( nIt->next() ); + k++; + } + if( ( Ns1[1]==Ns2[1] && Ns1[2]==Ns2[2] ) || + ( Ns1[1]==Ns2[2] && Ns1[2]==Ns2[1] ) ) + return true; + return false; +} + + +//======================================================================= +//function : IsDegenarate +//purpose : Auxilare for Preparation() +//======================================================================= +static int IsDegenarate(const Handle(TColgp_HArray1OfPnt)& PN) +{ + int i = 1; + for(; i<4; i++) { + int j = i+1; + for(; j<=4; j++) { + if( PN->Value(i).Distance(PN->Value(j)) < 1.e-6 ) + return j; + } + } + return 0; +} + + +//======================================================================= +//function : Preparation +//purpose : Auxilare for Compute() +// : Return 0 if given face is not quad, +// 1 if given face is quad, +// 2 if given face is degenerate quad (two nodes are coincided) +//======================================================================= +int StdMeshers_QuadToTriaAdaptor::Preparation(const SMDS_MeshElement* face, + Handle(TColgp_HArray1OfPnt) PN, + Handle(TColgp_HArray1OfVec) VN, + std::vector& FNodes, + gp_Pnt& PC, gp_Vec& VNorm) +{ + int i = 0; + double xc=0., yc=0., zc=0.; + SMDS_ElemIteratorPtr nodeIt = face->nodesIterator(); + if( !face->IsQuadratic() ) { + if( face->NbNodes() != 4 ) + return 0; + while ( nodeIt->more() ) { + i++; + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + FNodes[i-1] = node; + PN->SetValue( i, gp_Pnt(node->X(), node->Y(), node->Z()) ); + xc += node->X(); + yc += node->Y(); + zc += node->Z(); + } + } + else { + if( face->NbNodes() != 8) + return 0; + while ( nodeIt->more() ) { + i++; + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + FNodes[i-1] = node; + PN->SetValue( i, gp_Pnt(node->X(), node->Y(), node->Z()) ); + xc += node->X(); + yc += node->Y(); + zc += node->Z(); + if(i==4) break; + } + } + + int nbp = 4; + + int j = 0; + for(i=1; i<4; i++) { + j = i+1; + for(; j<=4; j++) { + if( PN->Value(i).Distance(PN->Value(j)) < 1.e-6 ) + break; + } + if(j<=4) break; + } + //int deg_num = IsDegenarate(PN); + //if(deg_num>0) { + bool hasdeg = false; + if(i<4) { + //cout<<"find degeneration"<Value(i); + + std::list< const SMDS_MeshNode* >::iterator itdg = myDegNodes.begin(); + const SMDS_MeshNode* DegNode = 0; + for(; itdg!=myDegNodes.end(); itdg++) { + const SMDS_MeshNode* N = (*itdg); + gp_Pnt Ptmp(N->X(),N->Y(),N->Z()); + if(Pdeg.Distance(Ptmp)<1.e-6) { + DegNode = N; + //DegNode = const_cast(N); + break; + } + } + if(!DegNode) { + DegNode = FNodes[i-1]; + myDegNodes.push_back(DegNode); + } + else { + FNodes[i-1] = DegNode; + } + for(i=j; i<4; i++) { + PN->SetValue(i,PN->Value(i+1)); + FNodes[i-1] = FNodes[i]; + } + nbp = 3; + //PC = gp_Pnt( PN->Value(1).X() + PN.Value + } + + PC = gp_Pnt(xc/4., yc/4., zc/4.); + //cout<<" PC("<SetValue(5,PN->Value(1)); + PN->SetValue(nbp+1,PN->Value(1)); + //FNodes[4] = FNodes[0]; + FNodes[nbp] = FNodes[0]; + // find normal direction + //gp_Vec V1(PC,PN->Value(4)); + gp_Vec V1(PC,PN->Value(nbp)); + gp_Vec V2(PC,PN->Value(1)); + VNorm = V1.Crossed(V2); + //VN->SetValue(4,VNorm); + VN->SetValue(nbp,VNorm); + //for(i=1; i<4; i++) { + for(i=1; iValue(i)); + V2 = gp_Vec(PC,PN->Value(i+1)); + gp_Vec Vtmp = V1.Crossed(V2); + VN->SetValue(i,Vtmp); + VNorm += Vtmp; + } + //cout<<" VNorm("<MeshElements( aShapeFace ); + if ( aSubMeshDSFace ) { + bool isRev = SMESH_Algo::IsReversedSubMesh( TopoDS::Face(aShapeFace), meshDS ); + + SMDS_ElemIteratorPtr iteratorElem = aSubMeshDSFace->GetElements(); + while ( iteratorElem->more() ) { // loop on elements on a face + const SMDS_MeshElement* face = iteratorElem->next(); + //cout<GetID() = "<GetID()< FNodes(5); + gp_Pnt PC; + gp_Vec VNorm; + int stat = Preparation(face, PN, VN, FNodes, PC, VNorm); + if(stat==0) + continue; + + if(stat==2) { + // degenerate face + // add triangles to result map + std::list aList; + SMDS_FaceOfNodes* NewFace; + if(!isRev) + NewFace = new SMDS_FaceOfNodes( FNodes[0], FNodes[1], FNodes[2] ); + else + NewFace = new SMDS_FaceOfNodes( FNodes[0], FNodes[2], FNodes[1] ); + aList.push_back(NewFace); + myResMap.insert(make_pair(face,aList)); + continue; + } + + if(!isRev) VNorm.Reverse(); + double xc = 0., yc = 0., zc = 0.; + int i = 1; + for(; i<=4; i++) { + gp_Pnt Pbest; + if(!isRev) + Pbest = FindBestPoint(PN->Value(i), PN->Value(i+1), PC, VN->Value(i).Reversed()); + else + Pbest = FindBestPoint(PN->Value(i), PN->Value(i+1), PC, VN->Value(i)); + xc += Pbest.X(); + yc += Pbest.Y(); + zc += Pbest.Z(); + } + gp_Pnt PCbest(xc/4., yc/4., zc/4.); + + // check PCbest + double height = PCbest.Distance(PC); + if(height<1.e-6) { + // create new PCbest using a bit shift along VNorm + PCbest = gp_Pnt( PC.X() + VNorm.X()*0.001, + PC.Y() + VNorm.Y()*0.001, + PC.Z() + VNorm.Z()*0.001); + } + else { + // check possible intersection with other faces + gp_Pnt Pint; + bool check = CheckIntersection(PCbest, PC, Pint, aMesh, aShape, aShapeFace); + if(check) { + //cout<<"--PC("<AddNode( PCbest.X(), PCbest.Y(), PCbest.Z() ); + // add triangles to result map + std::list aList; + for(i=0; i<4; i++) { + SMDS_FaceOfNodes* NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] ); + aList.push_back(NewFace); + } + myResMap.insert(make_pair(face,aList)); + // create pyramid + SMDS_MeshVolume* aPyram = + meshDS->AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode ); + myMapFPyram.insert(make_pair(face,aPyram)); + } // end loop on elements on a face + } + } // end for(TopExp_Explorer exp(aShape,TopAbs_FACE);exp.More();exp.Next()) { + + return Compute2ndPart(aMesh); +} + + +//======================================================================= +//function : Compute +//purpose : +//======================================================================= + +bool StdMeshers_QuadToTriaAdaptor::Compute(SMESH_Mesh& aMesh) +{ + myResMap.clear(); + myMapFPyram.clear(); + + SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); + + SMDS_FaceIteratorPtr itFace = meshDS->facesIterator(); + + while(itFace->more()) { + const SMDS_MeshElement* face = itFace->next(); + if ( !face ) continue; + //cout<GetID() = "<GetID()< FNodes(5); + gp_Pnt PC; + gp_Vec VNorm; + + int stat = Preparation(face, PN, VN, FNodes, PC, VNorm); + if(stat==0) + continue; + + if(stat==2) { + // degenerate face + // add triangles to result map + std::list aList; + SMDS_FaceOfNodes* NewFace; + // check orientation + + double tmp = PN->Value(1).Distance(PN->Value(2)) + + PN->Value(2).Distance(PN->Value(3)); + gp_Dir tmpDir(VNorm); + gp_Pnt Ptmp1( PC.X() + tmpDir.X()*tmp*1.e6, + PC.Y() + tmpDir.Y()*tmp*1.e6, + PC.Z() + tmpDir.Z()*tmp*1.e6 ); + gp_Pnt Ptmp2( PC.X() + tmpDir.Reversed().X()*tmp*1.e6, + PC.Y() + tmpDir.Reversed().Y()*tmp*1.e6, + PC.Z() + tmpDir.Reversed().Z()*tmp*1.e6 ); + // check intersection for Ptmp1 and Ptmp2 + bool IsRev = false; + bool IsOK1 = false; + bool IsOK2 = false; + double dist1 = RealLast(); + double dist2 = RealLast(); + gp_Pnt Pres1,Pres2; + SMDS_FaceIteratorPtr itf = meshDS->facesIterator(); + while(itf->more()) { + const SMDS_MeshElement* F = itf->next(); + if(F==face) continue; + Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; + SMDS_ElemIteratorPtr nodeIt = F->nodesIterator(); + if( !F->IsQuadratic() ) { + while ( nodeIt->more() ) { + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + } + } + else { + int nn = 0; + while ( nodeIt->more() ) { + nn++; + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + if(nn==face->NbNodes()/2) break; + } + } + gp_Pnt PPP; + if( HasIntersection(Ptmp1, PC, PPP, aContour) ) { + IsOK1 = true; + double tmp = PC.Distance(PPP); + if(tmpValue(i), PN->Value(i+1), PC, VN->Value(i)); + xc += Pbest.X(); + yc += Pbest.Y(); + zc += Pbest.Z(); + } + gp_Pnt PCbest(xc/4., yc/4., zc/4.); + double height = PCbest.Distance(PC); + if(height<1.e-6) { + // create new PCbest using a bit shift along VNorm + PCbest = gp_Pnt( PC.X() + VNorm.X()*0.001, + PC.Y() + VNorm.Y()*0.001, + PC.Z() + VNorm.Z()*0.001); + height = PCbest.Distance(PC); + } + //cout<<" PCbest("<Value(1).Distance(PN->Value(3)) + + PN->Value(2).Distance(PN->Value(4)); + gp_Dir tmpDir(V1); + gp_Pnt Ptmp1( PC.X() + tmpDir.X()*tmp*1.e6, + PC.Y() + tmpDir.Y()*tmp*1.e6, + PC.Z() + tmpDir.Z()*tmp*1.e6 ); + gp_Pnt Ptmp2( PC.X() + tmpDir.Reversed().X()*tmp*1.e6, + PC.Y() + tmpDir.Reversed().Y()*tmp*1.e6, + PC.Z() + tmpDir.Reversed().Z()*tmp*1.e6 ); + // check intersection for Ptmp1 and Ptmp2 + bool IsRev = false; + bool IsOK1 = false; + bool IsOK2 = false; + double dist1 = RealLast(); + double dist2 = RealLast(); + gp_Pnt Pres1,Pres2; + SMDS_FaceIteratorPtr itf = meshDS->facesIterator(); + while(itf->more()) { + const SMDS_MeshElement* F = itf->next(); + if(F==face) continue; + Handle(TColgp_HSequenceOfPnt) aContour = new TColgp_HSequenceOfPnt; + SMDS_ElemIteratorPtr nodeIt = F->nodesIterator(); + if( !F->IsQuadratic() ) { + while ( nodeIt->more() ) { + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + } + } + else { + int nn = 0; + while ( nodeIt->more() ) { + nn++; + const SMDS_MeshNode* node = static_cast( nodeIt->next() ); + aContour->Append(gp_Pnt(node->X(), node->Y(), node->Z())); + if(nn==face->NbNodes()/2) break; + } + } + gp_Pnt PPP; + if( HasIntersection(Ptmp1, PC, PPP, aContour) ) { + IsOK1 = true; + double tmp = PC.Distance(PPP); + if(tmp tmp ) { + height = tmp; + PCbest = gp_Pnt( PC.X() + tmpDir.X()*height, + PC.Y() + tmpDir.Y()*height, + PC.Z() + tmpDir.Z()*height ); + } + } + else if( !IsOK1 && IsOK2 ) { + // using opposite direction + IsRev = true; + double tmp = PC.Distance(Pres2)/3.; + if( height > tmp ) height = tmp; + PCbest = gp_Pnt( PC.X() + tmpDir.Reversed().X()*height, + PC.Y() + tmpDir.Reversed().Y()*height, + PC.Z() + tmpDir.Reversed().Z()*height ); + } + else { // IsOK1 && IsOK2 + double tmp1 = PC.Distance(Pres1)/3.; + double tmp2 = PC.Distance(Pres2)/3.; + if(tmp1 tmp1 ) { + height = tmp1; + PCbest = gp_Pnt( PC.X() + tmpDir.X()*height, + PC.Y() + tmpDir.Y()*height, + PC.Z() + tmpDir.Z()*height ); + } + } + else { + // using opposite direction + IsRev = true; + if( height > tmp2 ) height = tmp2; + PCbest = gp_Pnt( PC.X() + tmpDir.Reversed().X()*height, + PC.Y() + tmpDir.Reversed().Y()*height, + PC.Z() + tmpDir.Reversed().Z()*height ); + } + } + + // create node for PCbest + SMDS_MeshNode* NewNode = meshDS->AddNode( PCbest.X(), PCbest.Y(), PCbest.Z() ); + // add triangles to result map + std::list aList; + for(i=0; i<4; i++) { + SMDS_FaceOfNodes* NewFace; + if(IsRev) + NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i], FNodes[i+1] ); + else + NewFace = new SMDS_FaceOfNodes( NewNode, FNodes[i+1], FNodes[i] ); + aList.push_back(NewFace); + } + myResMap.insert(make_pair(face,aList)); + // create pyramid + SMDS_MeshVolume* aPyram; + if(IsRev) + aPyram = meshDS->AddVolume( FNodes[0], FNodes[1], FNodes[2], FNodes[3], NewNode ); + else + aPyram = meshDS->AddVolume( FNodes[0], FNodes[3], FNodes[2], FNodes[1], NewNode ); + myMapFPyram.insert(make_pair(face,aPyram)); + } // end loop on elements on a face + + return Compute2ndPart(aMesh); +} + + +//======================================================================= +//function : Compute2ndPart +//purpose : +//======================================================================= + +bool StdMeshers_QuadToTriaAdaptor::Compute2ndPart(SMESH_Mesh& aMesh) +{ + SMESHDS_Mesh * meshDS = aMesh.GetMeshDS(); + + // check intersections between created pyramids + int NbPyram = myMapFPyram.size(); + //cout<<"NbPyram = "< Pyrams(NbPyram); + std::vector< const SMDS_MeshElement* > Faces(NbPyram); + std::map< const SMDS_MeshElement*, + const SMDS_MeshElement* >::iterator itp = myMapFPyram.begin(); + int i = 0; + for(; itp!=myMapFPyram.end(); itp++, i++) { + Faces[i] = (*itp).first; + Pyrams[i] = (*itp).second; + } + StdMeshers_Array1OfSequenceOfInteger MergesInfo(0,NbPyram-1); + for(i=0; inodesIterator(); + std::vector Ps1(5); + const SMDS_MeshNode* Ns1[5]; + int k = 0; + while( nIt->more() ) { + const SMDS_MeshNode* node = static_cast( nIt->next() ); + Ns1[k] = node; + Ps1[k] = gp_Pnt(node->X(), node->Y(), node->Z()); + k++; + } + bool NeedMove = false; + for(int j=i+1; jChangeElementNodes(Prm2, Ns2, 5); + // update pyramids for J + for(k=2; k<=nbJ; k++) { + const SMDS_MeshElement* tmpPrm = Pyrams[aMergesJ.Value(k)]; + SMDS_ElemIteratorPtr tmpIt = tmpPrm->nodesIterator(); + const SMDS_MeshNode* Ns[5]; + int m = 0; + while( tmpIt->more() ) { + Ns[m] = static_cast( tmpIt->next() ); + m++; + } + Ns[4] = CommonNode; + meshDS->ChangeElementNodes(tmpPrm, Ns, 5); + } + + // update MergesInfo + for(k=1; k<=nbI; k++) { + int num = aMergesI.Value(k); + const TColStd_SequenceOfInteger& aSeq = MergesInfo.Value(num); + TColStd_SequenceOfInteger tmpSeq; + int m = 1; + for(; m<=aSeq.Length(); m++) { + tmpSeq.Append(aSeq.Value(m)); + } + for(m=1; m<=nbJ; m++) { + tmpSeq.Append(aMergesJ.Value(m)); + } + MergesInfo.SetValue(num,tmpSeq); + } + for(k=1; k<=nbJ; k++) { + int num = aMergesJ.Value(k); + const TColStd_SequenceOfInteger& aSeq = MergesInfo.Value(num); + TColStd_SequenceOfInteger tmpSeq; + int m = 1; + for(; m<=aSeq.Length(); m++) { + tmpSeq.Append(aSeq.Value(m)); + } + for(m=1; m<=nbI; m++) { + tmpSeq.Append(aMergesI.Value(m)); + } + MergesInfo.SetValue(num,tmpSeq); + } + + // update triangles for aMergesJ + for(k=1; k<=nbJ; k++) { + std::list< std::list< const SMDS_MeshNode* > > aFNodes; + std::list< const SMDS_MeshElement* > aFFaces; + int num = aMergesJ.Value(k); + std::map< const SMDS_MeshElement*, + std::list >::iterator itrm = myResMap.find(Faces[num]); + std::list trias = (*itrm).second; + std::list::iterator itt = trias.begin(); + for(; itt!=trias.end(); itt++) { + int nn = -1; + SMDS_ElemIteratorPtr nodeIt = (*itt)->nodesIterator(); + const SMDS_MeshNode* NF[3]; + while ( nodeIt->more() ) { + nn++; + NF[nn] = static_cast( nodeIt->next() ); + } + NF[0] = CommonNode; + SMDS_FaceOfNodes* Ftria = const_cast< SMDS_FaceOfNodes*>( (*itt) ); + Ftria->ChangeNodes(NF, 3); + } + } + + // check and remove coincided faces + TColStd_SequenceOfInteger IdRemovedTrias; + int i1 = 1; + for(; i1<=nbI; i1++) { + int numI = aMergesI.Value(i1); + std::map< const SMDS_MeshElement*, + std::list >::iterator itrmI = myResMap.find(Faces[numI]); + std::list triasI = (*itrmI).second; + std::list::iterator ittI = triasI.begin(); + int nbfI = triasI.size(); + const SMDS_FaceOfNodes* FsI[nbfI]; + k = 0; + for(; ittI!=triasI.end(); ittI++) { + FsI[k] = (*ittI); + k++; + } + int i2 = 0; + for(; i2 >::iterator itrmJ = myResMap.find(Faces[numJ]); + std::list triasJ = (*itrmJ).second; + std::list::iterator ittJ = triasJ.begin(); + int nbfJ = triasJ.size(); + const SMDS_FaceOfNodes* FsJ[nbfJ]; + k = 0; + for(; ittJ!=triasJ.end(); ittJ++) { + FsJ[k] = (*ittJ); + k++; + } + int j2 = 0; + for(; j2GetID() ); + IdRemovedTrias.Append( FJ->GetID() ); + FsI[i2] = 0; + FsJ[j2] = 0; + std::list new_triasI; + for(k=0; k new_triasJ; + for(k=0; kRemoveNode(Nrem); + } + else { // nbc==0 + //cout<<"decrease height of pyramids"<PI/3.) + h1 = VI1.Magnitude()/2; + else + h1 = VI1.Magnitude()*cos(ang1); + if(ang2>PI/3.) + h2 = VI2.Magnitude()/2; + else + h2 = VI2.Magnitude()*cos(ang2); + double coef1 = 0.5; + if(ang1(Ns1[4]); + VN1.Scale(coef1); + aNode1->setXYZ( PC1.X()+VN1.X(), PC1.Y()+VN1.Y(), PC1.Z()+VN1.Z() ); + SMDS_MeshNode* aNode2 = const_cast(Ns2[4]); + VN2.Scale(coef2); + aNode2->setXYZ( PC2.X()+VN2.X(), PC2.Y()+VN2.Y(), PC2.Z()+VN2.Z() ); + NeedMove = true; + } + } // end if(hasInt) + else { + //cout<<" no intersec for i="<GetANewId(), + theStudyId, + theGenImpl ); +} +//----------------------------------------------------------------------------- + +StdMeshers_UseExisting_1D_i::~StdMeshers_UseExisting_1D_i() +{ + MESSAGE( "StdMeshers_UseExisting_1D_i::~StdMeshers_UseExisting_1D_i" ); +} +//----------------------------------------------------------------------------- + +::StdMeshers_UseExisting_1D* StdMeshers_UseExisting_1D_i::GetImpl() +{ + MESSAGE( "StdMeshers_UseExisting_1D_i::GetImpl" ); + return ( ::StdMeshers_UseExisting_1D* )myBaseImpl; +} + + +//============================================================================= +/*! + * StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i + */ +//============================================================================= + +StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i + ( PortableServer::POA_ptr thePOA, + int theStudyId, + ::SMESH_Gen* theGenImpl ) + : SALOME::GenericObj_i( thePOA ), + SMESH_Hypothesis_i( thePOA ), + SMESH_Algo_i( thePOA ), + SMESH_2D_Algo_i( thePOA ) +{ + MESSAGE( "StdMeshers_UseExisting_2D_i::StdMeshers_UseExisting_2D_i" ); + myBaseImpl = new ::StdMeshers_UseExisting_2D( theGenImpl->GetANewId(), + theStudyId, + theGenImpl ); +} +//----------------------------------------------------------------------------- + +StdMeshers_UseExisting_2D_i::~StdMeshers_UseExisting_2D_i() +{ + MESSAGE( "StdMeshers_UseExisting_2D_i::~StdMeshers_UseExisting_2D_i" ); +} +//----------------------------------------------------------------------------- + +::StdMeshers_UseExisting_2D* StdMeshers_UseExisting_2D_i::GetImpl() +{ + MESSAGE( "StdMeshers_UseExisting_2D_i::GetImpl" ); + return ( ::StdMeshers_UseExisting_2D* )myBaseImpl; +} diff --git a/src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx b/src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx new file mode 100644 index 000000000..6eaf23fb6 --- /dev/null +++ b/src/StdMeshers_I/StdMeshers_UseExisting_1D2D_i.hxx @@ -0,0 +1,80 @@ +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// +// Copyright (C) 2003 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 : StdMeshers_UseExisting_1D2D.hxx +// Module : SMESH +// $Header$ + +#ifndef _SMESH_UseExisting_1D2D_I_HXX_ +#define _SMESH_UseExisting_1D2D_I_HXX_ + +#include +#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis) + +#include "SMESH_1D_Algo_i.hxx" +#include "SMESH_2D_Algo_i.hxx" +#include "StdMeshers_UseExisting_1D2D.hxx" + +class SMESH_Gen; + +/*! + * \brief 1D and 2D algorithms doing nothing to allow mesh generation + * by mesh edition functions in TUI mode + */ + +class StdMeshers_UseExisting_1D_i: + public virtual POA_StdMeshers::StdMeshers_UseExisting_1D, + public virtual SMESH_1D_Algo_i +{ +public: + // Constructor + StdMeshers_UseExisting_1D_i( PortableServer::POA_ptr thePOA, + int theStudyId, + ::SMESH_Gen* theGenImpl ); + + // Destructor + virtual ~StdMeshers_UseExisting_1D_i(); + + // Get implementation + ::StdMeshers_UseExisting_1D* GetImpl(); +}; + +class StdMeshers_UseExisting_2D_i: + public virtual POA_StdMeshers::StdMeshers_UseExisting_2D, + public virtual SMESH_2D_Algo_i +{ +public: + // Constructor + StdMeshers_UseExisting_2D_i( PortableServer::POA_ptr thePOA, + int theStudyId, + ::SMESH_Gen* theGenImpl ); + + // Destructor + virtual ~StdMeshers_UseExisting_2D_i(); + + // Get implementation + ::StdMeshers_UseExisting_2D* GetImpl(); +}; + + +#endif -- 2.39.2