Salome HOME
Implementation on the issue 16186: EDF PAL 459: Mapping: when refining, to separate...
authorrnv <rnv@opencascade.com>
Mon, 8 Sep 2008 13:24:39 +0000 (13:24 +0000)
committerrnv <rnv@opencascade.com>
Mon, 8 Sep 2008 13:24:39 +0000 (13:24 +0000)
17 files changed:
doc/salome/gui/SMESH/input/2d_meshing_hypo.doc
doc/salome/gui/SMESH/input/about_hypo.doc
doc/salome/gui/SMESH/input/introduction_to_mesh.doc
idl/SMESH_BasicHypothesis.idl
resources/StdMeshers.xml
src/SMESH_I/SMESH_2smeshpy.cxx
src/SMESH_SWIG/smeshDC.py
src/StdMeshers/Makefile.am
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx
src/StdMeshers/StdMeshers_Quadrangle_2D.hxx
src/StdMeshers/StdMeshers_TrianglePreference.cxx [new file with mode: 0644]
src/StdMeshers/StdMeshers_TrianglePreference.hxx [new file with mode: 0644]
src/StdMeshersGUI/StdMeshers_images.po
src/StdMeshers_I/Makefile.am
src/StdMeshers_I/StdMeshers_TrianglePreference_i.cxx [new file with mode: 0644]
src/StdMeshers_I/StdMeshers_TrianglePreference_i.hxx [new file with mode: 0644]
src/StdMeshers_I/StdMeshers_i.cxx

index 05ab6dd362b8301c7068ee1429325fe0a82086f5..292a5034aee681dddb33cc98609b84ab6372ebb6 100644 (file)
@@ -7,6 +7,7 @@
 <li>\ref max_element_area_anchor "Max Element Area"</li>
 <li>\ref length_from_edges_anchor "Length from Edges"</li>
 <li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+<li>\ref triangle_preference_anchor "Triangle Preference"</li>
 </ul>
 
 <br>
@@ -48,4 +49,14 @@ otherwise this mesh will contain some triangular elements.
 <br>
 This hypothesis has one restriction on its work: the total quantity of
 segments on all four sides of the face must be even (divisible by 2).
+
+<br>
+\anchor triangle_preference_anchor
+<h2>Triangle Preference</h2>
+
+This algorithm can be used only together with Quadrangle (Mapping)
+algorithm. It allows to build triangular mesh faces in the refinement
+area if the number of nodes at the opposite edges of a meshed face is not equal,
+otherwise refinement area will contain some quadrangular elements.
+<br>
 */
index 40b8ff590b95b8ccfe3bf084f9238154c1659802..2220ba0cb92a4c41a62aae7351d204ce168f7298 100644 (file)
@@ -28,6 +28,7 @@ them, you operate numerical values):
 <li>\ref max_element_area_anchor "Max Element Area"</li>
 <li>\ref length_from_edges_anchor "Length from Edges"</li>
 <li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+<li>\ref triangle_preference_anchor "Triangle Preference"</li>
 </ul>
 <li>3D Hypothesis (for meshing of <b>volumes</b>):</li>
 <ul>
@@ -49,4 +50,4 @@ The choice of a hypothesis depends on:
 <li>the algorithm, which will be selected for meshing of this geometrical object (shape)</li>
 </ul>
  
-*/
\ No newline at end of file
+*/
index 5b80bb158c4920d371b61e44a10353ed137c6868..f50800894a44c3f1bf83c21e1073dabd16d9ec35 100644 (file)
@@ -18,6 +18,7 @@ allows to apply 1D, 2D, 3D meshing algorithms and a set of hypotheses:
 <li>\ref max_element_area_anchor "Max Element Area"</li>
 <li>\ref length_from_edges_anchor "Length from Edges"</li>
 <li>\ref quadrangle_preference_anchor "Quadrangle Preference"</li>
+<li>\ref triangle_preference_anchor "Triangle Preference"</li>
 <li>\ref max_element_volume_hypo_page "Max Element Volume"</li>
 </ul>
 </li>
@@ -61,4 +62,4 @@ allows to apply 1D, 2D, 3D meshing algorithms and a set of hypotheses:
 
 \image html image7.jpg
 
-*/
\ No newline at end of file
+*/
index 5978aa052120b4b9fd93a26b847912f0a1c5ff1d..1fd3f02d78f0dec99d35885d0453e946326f6a77 100644 (file)
@@ -306,6 +306,16 @@ module StdMeshers
   {
   };
 
+  /*!
+   * StdMeshers_TrianglePreference: interface of "TrianglePreference" hypothesis.
+   * This hypothesis is used by StdMeshers_Quadrangle_2D algorithm.
+   * Presence of this hypothesis forces construction of triangles in the refinement 
+   * area if the number of nodes on opposite edges is not the same.
+   */
+  interface StdMeshers_TrianglePreference : SMESH::SMESH_Hypothesis
+  {
+  };
+
   /*!
    * StdMeshers_QuadraticMesh: interface of "QuadraticMesh" hypothesis.
    * This is an auxiliary 1D hypothesis whose presence forces construction 
index 25cbd18bcfb63e3f8157c610ffd6b717148dc325..892779e3c3dc7f93c5e7f18091a3c567e84233b5 100644 (file)
                 auxiliary="true"
                 dim="2"/>
 
+    <hypothesis        type="TrianglePreference"
+               label-id="Triangle Preference"
+                icon-id="mesh_algo_mefisto.png"
+               auxiliary="true"
+               dim="2"/>
+               
     <hypothesis type="QuadraticMesh"
                 label-id="Quadratic Mesh"
                 icon-id="mesh_algo_quad.png"
     <algorithm type="Quadrangle_2D"
                label-id="Quadrangle (Mapping)"
                icon-id="mesh_algo_quad.png"
-               opt-hypos="QuadranglePreference"
+               opt-hypos="QuadranglePreference,TrianglePreference"
                input="EDGE"
                output="QUAD"
                dim="2"/>
index a24d8dcbe6ecda9fa69888a9d9c1e5732c0eafc2..96724a917b5d5d8b070906f614fefe60cf3399b8 100644 (file)
@@ -1034,6 +1034,9 @@ Handle(_pyHypothesis) _pyHypothesis::NewHypothesis( const Handle(_pyCommand)& th
     hyp->SetConvMethodAndType( "QuadranglePreference", "Quadrangle_2D");
     hyp->SetConvMethodAndType( "QuadranglePreference", "NETGEN_2D_ONLY");
   }
+  else if ( hypType == "TrianglePreference" ) {
+    hyp->SetConvMethodAndType( "TrianglePreference", "Quadrangle_2D");
+  }    
   // NETGEN ----------
 //   else if ( hypType == "NETGEN_2D") { // 1D-2D
 //     algo->SetConvMethodAndType( "Triangle" , hypType.ToCString());
index 9b77ceaa5b8a03569f31b557db2887536a27e975..218415f05030525808a8365bf4850d7758918ff3 100644 (file)
@@ -3428,6 +3428,16 @@ class Mesh_Quadrangle(Mesh_Algorithm):
                               CompareMethod=self.CompareEqualHyp)
         return hyp
 
+    ## Defines "TrianglePreference" hypothesis, forcing construction
+    #  of triangles in the refinement area if the number of nodes
+    #  on the opposite edges is not the same
+    #
+    #  @ingroup l3_hypos_additi
+    def TrianglePreference(self):
+        hyp = self.Hypothesis("TrianglePreference", UseExisting=1,
+                              CompareMethod=self.CompareEqualHyp)
+        return hyp
+
 # Public class: Mesh_Tetrahedron
 # ------------------------------
 
index bc886b5df2f01b2d7e13d19eda56db9fe735e640..892b0e094992118ece9aef7d46e177307d407873 100644 (file)
@@ -64,7 +64,8 @@ salomeinclude_HEADERS = \
        StdMeshers_CompositeSegment_1D.hxx \
        StdMeshers_UseExisting_1D2D.hxx \
        StdMeshers_QuadToTriaAdaptor.hxx \
-       SMESH_StdMeshers.hxx
+       SMESH_StdMeshers.hxx \
+       StdMeshers_TrianglePreference.hxx
 
 # Libraries targets
 
@@ -106,7 +107,8 @@ dist_libStdMeshers_la_SOURCES = \
        StdMeshers_FaceSide.cxx \
        StdMeshers_CompositeSegment_1D.cxx \
        StdMeshers_UseExisting_1D2D.cxx \
-       StdMeshers_QuadToTriaAdaptor.cxx
+       StdMeshers_QuadToTriaAdaptor.cxx \
+       StdMeshers_TrianglePreference.cxx
 
 
 # additionnal information to compil and link file
index 9fd2d010536a7f4e788626de74353888bab8376d..aa6b281654842906c46aeae75e3f4e7c07319dd7 100644 (file)
@@ -1,4 +1,4 @@
-//  SMESH SMESH : implementaion of SMESH idl descriptions
+ //  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 
@@ -83,6 +83,7 @@ StdMeshers_Quadrangle_2D::StdMeshers_Quadrangle_2D (int hypId, int studyId, SMES
   _name = "Quadrangle_2D";
   _shapeType = (1 << TopAbs_FACE);
   _compatibleHypothesis.push_back("QuadranglePreference");
+  _compatibleHypothesis.push_back("TrianglePreference");
   myTool = 0;
 }
 
@@ -111,10 +112,25 @@ bool StdMeshers_Quadrangle_2D::CheckHypothesis
   bool isOk = true;
   aStatus = SMESH_Hypothesis::HYP_OK;
 
-  // there is only one compatible Hypothesis so far
-  const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape, false);
-  myQuadranglePreference = hyps.size() > 0;
 
+  const list <const SMESHDS_Hypothesis * >&hyps = GetUsedHypothesis(aMesh, aShape, false);
+  const SMESHDS_Hypothesis *theHyp = 0;
+  
+  if(hyps.size() > 0){
+    theHyp = *hyps.begin();
+    if(strcmp("QuadranglePreference", theHyp->GetName()) == 0) {
+      myQuadranglePreference= true;
+      myTrianglePreference= false; 
+    }
+    else if(strcmp("TrianglePreference", theHyp->GetName()) == 0){
+      myQuadranglePreference= false;
+      myTrianglePreference= true; 
+    }
+  }
+  else {
+    myQuadranglePreference = false;
+    myTrianglePreference = false;
+  }
   return isOk;
 }
 
@@ -307,8 +323,17 @@ bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
         else
           d = quad->uv_grid[nbhoriz + near - 1].node;
         //SMDS_MeshFace* face = meshDS->AddFace(a, b, c, d);
-        SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
-        meshDS->SetMeshElementOnShape(face, geomFaceID);
+        
+        if(!myTrianglePreference){
+          SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+        }
+        else {
+          SMDS_MeshFace* face = myTool->AddFace(a, b, c);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+          face = myTool->AddFace(a, c, d);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+        }
 
         // if node d is not at position g - make additional triangles
         if (near - 1 > g) {
@@ -391,8 +416,16 @@ bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
           else
             d = quad->uv_grid[nbhoriz*(nbvertic - 2) + near + 1].node;
           //SMDS_MeshFace* face = meshDS->AddFace(a, b, c, d);
-          SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
-          meshDS->SetMeshElementOnShape(face, geomFaceID);
+          if(!myTrianglePreference){
+            SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+          }
+          else {
+            SMDS_MeshFace* face = myTool->AddFace(a, b, c);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+            face = myTool->AddFace(a, c, d);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+          }
 
           if (near + 1 < g) { // if d not is at g - make additional triangles
             for (int k = near + 1; k < g; k++) {
@@ -460,8 +493,17 @@ bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
         else
           d = quad->uv_grid[nbhoriz*near - 2].node;
         //SMDS_MeshFace* face = meshDS->AddFace(a, b, c, d);
-        SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
-        meshDS->SetMeshElementOnShape(face, geomFaceID);
+
+        if(!myTrianglePreference){
+          SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+        }
+        else {
+          SMDS_MeshFace* face = myTool->AddFace(a, b, c);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+          face = myTool->AddFace(a, c, d);
+          meshDS->SetMeshElementOnShape(face, geomFaceID);
+        }
 
         if (near - 1 > g) { // if d not is at g - make additional triangles
           for (int k = near - 1; k > g; k--) {
@@ -526,8 +568,16 @@ bool StdMeshers_Quadrangle_2D::Compute (SMESH_Mesh& aMesh,
           else
             d = quad->uv_grid[nbhoriz*(near + 1) + 1].node;
           //SMDS_MeshFace* face = meshDS->AddFace(a, b, c, d);
-          SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
-          meshDS->SetMeshElementOnShape(face, geomFaceID);
+          if(!myTrianglePreference){
+            SMDS_MeshFace* face = myTool->AddFace(a, b, c, d);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+          }
+          else {
+            SMDS_MeshFace* face = myTool->AddFace(a, b, c);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+            face = myTool->AddFace(a, c, d);
+            meshDS->SetMeshElementOnShape(face, geomFaceID);
+          }
 
           if (near + 1 < g) { // if d not is at g - make additional triangles
             for (int k = near + 1; k < g; k++) {
index 72b317be290a185a86f41ec699365858fbe68629..cf9d78461b70939f53b1c8a12c0c8fdf340f0e06 100644 (file)
@@ -103,6 +103,9 @@ protected:
   // is not the same in the case where the global number of nodes on edges is even
   bool myQuadranglePreference;
 
+  bool myTrianglePreference;
+
+  
   SMESH_MesherHelper* myTool; // tool for working with quadratic elements
 };
 
diff --git a/src/StdMeshers/StdMeshers_TrianglePreference.cxx b/src/StdMeshers/StdMeshers_TrianglePreference.cxx
new file mode 100644 (file)
index 0000000..af14e2e
--- /dev/null
@@ -0,0 +1,116 @@
+//  SMESH StdMeshers_TrianglePreference 
+//
+//  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_TrianglePreference.cxx
+//  Module : SMESH
+//  $Header$
+
+#include "StdMeshers_TrianglePreference.hxx"
+#include "utilities.h"
+
+using namespace std;
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+StdMeshers_TrianglePreference::StdMeshers_TrianglePreference(int         hypId,
+                                                                 int         studyId,
+                                                                 SMESH_Gen * gen)
+     :SMESH_Hypothesis(hypId, studyId, gen)
+{
+  _name = "TrianglePreference";
+  _param_algo_dim = -2; // auxiliary used by StdMeshers_Quadrangle_2D
+}
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+StdMeshers_TrianglePreference::~StdMeshers_TrianglePreference()
+{
+}
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+ostream & StdMeshers_TrianglePreference::SaveTo(ostream & save)
+{
+  return save;
+}
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+istream & StdMeshers_TrianglePreference::LoadFrom(istream & load)
+{
+  return load;
+}
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+ostream & operator <<(ostream & save, StdMeshers_TrianglePreference & hyp)
+{
+  return hyp.SaveTo( save );
+}
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+istream & operator >>(istream & load, StdMeshers_TrianglePreference & hyp)
+{
+  return hyp.LoadFrom( load );
+}
+//================================================================================
+/*!
+ * \brief Initialize my parameter values by the mesh built on the geometry
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - true if parameter values have been successfully defined
+ *
+ * Just return false as this hypothesis does not have parameters values
+ */
+//================================================================================
+
+bool StdMeshers_TrianglePreference::SetParametersByMesh(const SMESH_Mesh* /*theMesh*/,
+                                                          const TopoDS_Shape& /*theShape*/)
+{
+  return false;
+}
diff --git a/src/StdMeshers/StdMeshers_TrianglePreference.hxx b/src/StdMeshers/StdMeshers_TrianglePreference.hxx
new file mode 100644 (file)
index 0000000..247bf1d
--- /dev/null
@@ -0,0 +1,64 @@
+//  SMESH StdMeshers : 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_TrianglePreference.hxx
+//  Module : SMESH
+//  $Header$
+
+#ifndef _StdMeshers_TrianglePreference_HXX_
+#define _StdMeshers_TrianglePreference_HXX_
+
+#include "SMESH_StdMeshers.hxx"
+
+#include "SMESH_Hypothesis.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+/*!
+ * \brief Hypothesis for StdMeshers_Quadrangle_2D, forcing construction
+ *        of triangles in the in a refinement area if the number of nodes 
+ *        on opposite edges is not the same. See Issue 16186.
+ */
+class STDMESHERS_EXPORT StdMeshers_TrianglePreference:public SMESH_Hypothesis
+{
+ public:
+  StdMeshers_TrianglePreference(int hypId, int studyId, SMESH_Gen * gen);
+  virtual ~ StdMeshers_TrianglePreference();
+  
+  virtual std::ostream & SaveTo(std::ostream & save);
+  virtual std::istream & LoadFrom(std::istream & load);
+  friend std::ostream & operator <<(std::ostream & save, StdMeshers_TrianglePreference & hyp);
+  friend std::istream & operator >>(std::istream & load, StdMeshers_TrianglePreference & hyp);
+
+  /*!
+   * \brief Initialize my parameter values by the mesh built on the geometry
+    * \param theMesh - the built mesh
+    * \param theShape - the geometry of interest
+    * \retval bool - true if parameter values have been successfully defined
+    *
+    * Just return false as this hypothesis does not have parameters values
+   */
+  virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
+
+};
+
+#endif
index e087d1d1ee50e406506bf32f7e8e87b3a56c5e24..88cc6f005c59d50a998e09c2557d069949572b2d 100644 (file)
@@ -110,6 +110,10 @@ msgstr "mesh_tree_hypo_area.png"
 msgid "ICON_SMESH_TREE_HYPO_QuadranglePreference"
 msgstr "mesh_tree_algo_quad.png"
 
+#mesh_tree_hypo_trianglepreference
+msgid "ICON_SMESH_TREE_HYPO_TrianglePreference"
+msgstr "mesh_tree_algo_mefisto.png"
+
 #mesh_tree_hypo_quadraticmesh
 msgid "ICON_SMESH_TREE_HYPO_QuadraticMesh"
 msgstr "mesh_tree_hypo_length.png"
index 9f908c722e2370bee2c03646251659b105942a0d..01e005599b7d43fe6e4a7d8b22256369641ff2e9 100644 (file)
@@ -58,6 +58,7 @@ salomeinclude_HEADERS = \
        StdMeshers_CompositeSegment_1D_i.hxx \
        StdMeshers_SegmentAroundVertex_0D_i.hxx \
        StdMeshers_SegmentLengthAroundVertex_i.hxx \
+       StdMeshers_TrianglePreference_i.hxx \
        SMESH_StdMeshers_I.hxx
 
 # Libraries targets
@@ -93,6 +94,7 @@ dist_libStdMeshersEngine_la_SOURCES = \
        StdMeshers_CompositeSegment_1D_i.cxx \
        StdMeshers_SegmentAroundVertex_0D_i.cxx \
        StdMeshers_SegmentLengthAroundVertex_i.cxx \
+       StdMeshers_TrianglePreference_i.cxx \
        StdMeshers_UseExisting_1D2D_i.cxx
 
 # additionnal information to compil and link file
diff --git a/src/StdMeshers_I/StdMeshers_TrianglePreference_i.cxx b/src/StdMeshers_I/StdMeshers_TrianglePreference_i.cxx
new file mode 100644 (file)
index 0000000..18bddd7
--- /dev/null
@@ -0,0 +1,95 @@
+//  Copyright (C) 2008  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_TrianglePreference_i.cxx
+//  Author : 
+//  Module : SMESH
+
+#include "StdMeshers_TrianglePreference_i.hxx"
+#include "SMESH_Gen_i.hxx"
+#include "SMESH_Gen.hxx"
+
+#include "Utils_CorbaException.hxx"
+#include "utilities.h"
+
+#include <TCollection_AsciiString.hxx>
+
+using namespace std;
+
+//=============================================================================
+/*!
+ *  StdMeshers_TrianglePreference_i::StdMeshers_TrianglePreference_i
+ *
+ *  Constructor
+ */
+//=============================================================================
+
+StdMeshers_TrianglePreference_i::StdMeshers_TrianglePreference_i
+( PortableServer::POA_ptr thePOA,
+  int                     theStudyId,
+  ::SMESH_Gen*            theGenImpl ): SALOME::GenericObj_i( thePOA ), 
+                                        SMESH_Hypothesis_i( thePOA )
+{
+  myBaseImpl = new ::StdMeshers_TrianglePreference( theGenImpl->GetANewId(),
+                                                    theStudyId,
+                                                    theGenImpl );
+}
+
+//=============================================================================
+/*!
+ *  StdMeshers_TrianglePreference_i::~StdMeshers_TrianglePreference_i
+ *
+ *  Destructor
+ */
+//=============================================================================
+
+StdMeshers_TrianglePreference_i::~StdMeshers_TrianglePreference_i()
+{
+}
+
+//=============================================================================
+/*!
+ *  StdMeshers_TrianglePreference_i::GetImpl
+ *
+ *  Get implementation
+ */
+//=============================================================================
+
+::StdMeshers_TrianglePreference* StdMeshers_TrianglePreference_i::GetImpl()
+{
+  return ( ::StdMeshers_TrianglePreference* )myBaseImpl;
+}
+
+//================================================================================
+/*!
+ * \brief Verify whether hypothesis supports given entity type 
+  * \param type - dimension (see SMESH::Dimension enumeration)
+  * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise
+ * 
+ * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration)
+ */
+//================================================================================  
+
+CORBA::Boolean StdMeshers_TrianglePreference_i::IsDimSupported( SMESH::Dimension type )
+{
+  return type == SMESH::DIM_2D;
+}
+
diff --git a/src/StdMeshers_I/StdMeshers_TrianglePreference_i.hxx b/src/StdMeshers_I/StdMeshers_TrianglePreference_i.hxx
new file mode 100644 (file)
index 0000000..f57ad71
--- /dev/null
@@ -0,0 +1,59 @@
+//  Copyright (C) 2008  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_TrianglePreference_i.hxx
+//  Author : 
+//  Module : SMESH
+
+
+#ifndef _SMESH_TrianglePreference_I_HXX_
+#define _SMESH_TrianglePreference_I_HXX_
+
+#include "SMESH_StdMeshers_I.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
+
+#include "SMESH_Hypothesis_i.hxx"
+#include "StdMeshers_TrianglePreference.hxx"
+
+class SMESH_Gen;
+
+class STDMESHERS_I_EXPORT StdMeshers_TrianglePreference_i:
+  public virtual POA_StdMeshers::StdMeshers_TrianglePreference,
+  public virtual SMESH_Hypothesis_i
+{
+public:
+  // Constructor
+  StdMeshers_TrianglePreference_i( PortableServer::POA_ptr thePOA,
+                                     int                     theStudyId,
+                                     ::SMESH_Gen*            theGenImpl );
+  // Destructor
+  virtual ~StdMeshers_TrianglePreference_i();
+
+  // Get implementation
+  ::StdMeshers_TrianglePreference* GetImpl();
+  
+  // Verify whether hypothesis supports given entity type 
+  CORBA::Boolean IsDimSupported( SMESH::Dimension type );
+};
+
+#endif //_SMESH_TrianglePreference_I_HXX_
index ee8fe66ea8b389b1413fabab6d5a2cacf4693028..38fae173315013d2300d70045cc8ad2d3750e21a 100644 (file)
@@ -40,6 +40,7 @@
 #include "StdMeshers_Propagation_i.hxx"
 #include "StdMeshers_LengthFromEdges_i.hxx"
 #include "StdMeshers_QuadranglePreference_i.hxx"
+#include "StdMeshers_TrianglePreference_i.hxx"
 #include "StdMeshers_QuadraticMesh_i.hxx"
 #include "StdMeshers_MaxElementArea_i.hxx"
 #include "StdMeshers_MaxElementVolume_i.hxx"
@@ -108,6 +109,8 @@ STDMESHERS_I_EXPORT
       aCreator = new StdHypothesisCreator_i<StdMeshers_AutomaticLength_i>;
     else if (strcmp(aHypName, "QuadranglePreference") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_QuadranglePreference_i>;
+    else if (strcmp(aHypName, "TrianglePreference") == 0)
+      aCreator = new StdHypothesisCreator_i<StdMeshers_TrianglePreference_i>;
     else if (strcmp(aHypName, "QuadraticMesh") == 0)
       aCreator = new StdHypothesisCreator_i<StdMeshers_QuadraticMesh_i>;
     else if (strcmp(aHypName, "ProjectionSource3D") == 0)