]> SALOME platform Git repositories - plugins/netgenplugin.git/commitdiff
Salome HOME
22357: EDF NETGENPLUGIN: NETGEN options
authoreap <eap@opencascade.com>
Fri, 6 Dec 2013 10:45:56 +0000 (10:45 +0000)
committereap <eap@opencascade.com>
Fri, 6 Dec 2013 10:45:56 +0000 (10:45 +0000)
13 files changed:
doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png
doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png
doc/salome/gui/NETGENPLUGIN/input/netgen_2d_3d_hypo.doc
idl/NETGENPlugin_Algorithm.idl
src/GUI/NETGENPluginGUI_HypothesisCreator.cxx
src/GUI/NETGENPlugin_msg_en.ts
src/GUI/NETGENPlugin_msg_fr.ts
src/GUI/NETGENPlugin_msg_ja.ts
src/NETGENPlugin/NETGENPluginBuilder.py
src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx
src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx
src/NETGENPlugin/NETGENPlugin_Mesher.cxx
src/NETGENPlugin/NETGENPlugin_NETGEN_2D_ONLY.cxx

index 97b95486e44943aa4a47e11848bdebfd6fe95c7e..dbf97953f7e9b4726feae01078fa7d685564e411 100644 (file)
Binary files a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png and b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d.png differ
index ece6fd1e8e08adfd67c563e038e2c8a52c852fdd..4b574320fa7e1e134add952bec5014b656199511 100644 (file)
Binary files a/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png and b/doc/salome/gui/NETGENPLUGIN/images/netgen2d3d_only.png differ
index c983ce8347f549398c3602cbfde68a9f2d930961..d80dff0996c29e5b1fff649ce96c7268c836d8e9 100644 (file)
@@ -10,8 +10,8 @@ hypotheses and algorithms (2D and 1D for meshing 3D objects and 1D for
 meshing 2D objects).
 
 \image html netgen2d3d.png
-<center><em>Dialog boxes of <b>Netgen 1D-2D</b> and <b>Netgen
-1D-2D-3D</b> algorithms </em></center>
+<center><em>Hypothesis dialog boxes of <b>Netgen 1D-2D</b> and <b>Netgen
+1D-2D-3D</b> algorithms are same</em></center>
 <br>
 
 \image html netgen2d3d_only.png
@@ -24,26 +24,35 @@ algorithms </em></center>
 - <b>Min Size</b> - minimum linear dimensions for mesh cells. It is
 ignored if it is more than <b>Max Size</b>.
 - <b>Second Order</b> - if this box is checked in, the algorithm will
-create second order nodes on the mesh, which will then become quadratic.
-- <b>Fineness</b> - ranging from Very Coarse to Very Fine allows to set the
-level of meshing detalization using the three parameters below. You
-can select Custom to define them manually.
+create second order mesh.
+- <b>Fineness</b> - ranging from <em>Very Coarse</em> to <em>Very Fine</em> 
+allows to set the level of meshing detalization using the three
+parameters below. You can select \a Custom to define them manually.
 - <b>Growth rate</b> - allows to define how much the linear dimensions of
 two adjacent cells can differ (i.e. 0.3 means 30%).
-- <b>Nb. Segs per Edge</b> and <b>Nb Segs per Radius</b> - allows to define the
-minimum number of mesh segments in which edges and radiuses will be
-split.
-- <b>Allow Quadrangles</b> - allows to use quadrangle elements in a
-triangle 2D mesh. This checkbox is not present in Netgen 3D parameters
-because currently building a tetrahedral mesh with quadrangle faces is
-not possible.
-- <b>Set size by Surface Curvature</b> - if this box is checked in, then  
-prevents creation of meshes of desired coarseness else mesher defines 
-density of 1D and 2D mesh depending on curvature of faces and edges. 
-- <b>Fuse consignment Edges and Vertices</b> - prevents to merging of 
-nodes of edges which are coincident geometrically but are different topologically.
-- <b>Optimize</b> - if this box is checked in, the algorithm will try to
-create regular (possessing even sides) elements.
+- <b>Nb. Segs per Edge</b> - allows to define the minimum number of
+mesh segments in which edges will be split. This parameter is used
+only if <b>Limit Size by Surface Curvature</b> is checked.
+- <b>Nb Segs per Radius</b> - allows to define the size of
+mesh segments and mesh faces in which curved edges and surfaces will
+be split. This parameter is used only if <b>Limit Size by Surface 
+Curvature</b> is checked.
+- <b>Limit Size by Surface Curvature</b> - if this box is checked in, 
+then size of mesh segments and mesh faces on curved edges and surfaces
+is defined using value of <b>Nb Segs per Radius</b> parameter, and
+number of segments on straight edges is defined by values of
+<b>Nb. Segs per Edge</b> parameter. If this box is not checked in,
+then size of elements is defined by three parameters only:
+<b>Max Size</b>, <b>Min Size</b> and <b>Growth rate</b>.
+- <b>Allow Quadrangles</b> - if this box is checked in, the mesher
+tries to generate quadrangle 2D mesh. Triangle elements are created
+where quadrangles are not possible.
+- <b>Optimize</b> - if this box is checked in, the algorithm will modify
+initially created mesh in order to improve quality of elements. Optimization
+process is rather time consuming comparing to creation of initial mesh.
+- <b>Fuse Coincident Nodes on Edges and Vertices</b> - allows merging
+mesh nodes on vertices and edges which are geometrically coincident
+but are topologically different.
 
 \image html netgen3d_local_size.png
 
@@ -71,14 +80,12 @@ consists of setting required \b length of segments.
 
 \b 2D group allows defining the size of 2D elements 
 - <b>Length from edges</b> if checked in, hypothesis forces building of
-2D mesh segments having a length calculated as an average edge length
+2D mesh elements having a length calculated as an average edge length
 for a given wire, else
 - <b>Max. Element Area</b> specifies expected maximum element area for
 each 2d element.
-- <b>Allow Quadrangles</b> - allows to use quadrangle elements in a
-triangle 2D mesh. This checkbox is not present in Netgen 3D simple parameters
-because currently building a tetrahedral mesh with quadrangle faces is
-not possible.
+- <b>Allow Quadrangles</b> - allows to generate quadrangle elements
+wherever possible.
 
 \b 3D groups allows defining the size of 3D elements.
 - <b>Length from faces</b> if checked in, the area of sides of
@@ -94,13 +101,9 @@ edge. This parameter is used  only to define the local element size
 (size at the given point), so local sizes of adjacent edges influence
 each other.
 - NETGEN additionally restricts the element size according to edge curvature.
-- The local size of edges influences the size of close triangles.
+- The local size of segments influences the size of close triangles.
 - The order of elements and their size in the 1D mesh generated by
 NETGEN differ from those in the 1D mesh generated by Regular_1D
 algorithm, resulting in different 2D and 3D meshes.
 
-\note In the case where two points are geometrically confounded, a single node is generated.
-
 */
-
-
index 088588579c1d4aa61a604d75c6f028e5d0436e66..19ca826460fe5d3d2694af0ab1c9edee9e4d9d38 100644 (file)
@@ -98,8 +98,8 @@ module NETGENPlugin
     void SetQuadAllowed(in boolean value);
     boolean GetQuadAllowed();
     
-    void SetSurfaceCurvature(in boolean value);
-    boolean GetSurfaceCurvature();
+    void SetUseSurfaceCurvature(in boolean value);
+    boolean GetUseSurfaceCurvature();
     
     void SetFuseEdges(in boolean value);
     boolean GetFuseEdges();
index e8de863d1de0525864abf01bfd2a0521ffcb6bb8..c8415e26b658cd7dc5ee2aea1002e3d07c2fac89 100644 (file)
@@ -89,7 +89,7 @@ NETGENPluginGUI_HypothesisCreator::NETGENPluginGUI_HypothesisCreator( const QStr
 {
   myGeomSelectionTools = NULL;
   myLocalSizeMap.clear();
-  myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D"));
+  myIs2D   = ( theHypType.startsWith("NETGEN_Parameters_2D"));
   myIsONLY = ( theHypType == "NETGEN_Parameters_2D_ONLY" ||
                theHypType == "NETGEN_Parameters_3D");
 }
@@ -166,7 +166,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
   if ( !myIsONLY )
   {
     mySecondOrder = new QCheckBox( tr( "NETGEN_SECOND_ORDER" ), GroupC1 );
-    aGroupLayout->addWidget( mySecondOrder, row, 0 );
+    aGroupLayout->addWidget( mySecondOrder, row, 0, 1, 2 );
     row++;
   }
 
@@ -177,6 +177,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
            tr( "NETGEN_FINE" )       << tr( "NETGEN_VERYFINE" ) << tr( "NETGEN_CUSTOM" );
   myFineness->addItems( types );
   aGroupLayout->addWidget( myFineness, row, 1 );
+  connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) );
   row++;
 
   aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 );
@@ -204,33 +205,34 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
     row++;
   }
 
-  myAllowQuadrangles = 0;
   mySurfaceCurvature = 0;
-  myFuseEdges = 0;
-  if ( myIs2D || !myIsONLY ) // issue 0021676
+  if ( myIs2D || !myIsONLY )
   {
-    myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 );
-    aGroupLayout->addWidget( myAllowQuadrangles, row, 0 );
-    row++;
-
     mySurfaceCurvature = new QCheckBox( tr( "NETGEN_SURFACE_CURVATURE" ), GroupC1 );
-    aGroupLayout->addWidget( mySurfaceCurvature, row, 0 );
+    aGroupLayout->addWidget( mySurfaceCurvature, row, 0, 1, 2 );
+    connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) );
     row++;
   }
-  if (!myIsONLY)
+
+  myAllowQuadrangles = 0;
+  if ( myIs2D || !myIsONLY ) // disable only for NETGEN 3D
   {
-    myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 );
-    aGroupLayout->addWidget( myFuseEdges, row, 0 );
+    myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 );
+    aGroupLayout->addWidget( myAllowQuadrangles, row, 0, 1, 2 );
     row++;
   }
 
-  connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) );
-
   myOptimize = new QCheckBox( tr( "NETGEN_OPTIMIZE" ), GroupC1 );
-  aGroupLayout->addWidget( myOptimize, row, 0 );
+  aGroupLayout->addWidget( myOptimize, row, 0, 1, 2 );
   row++;
 
-  connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) );
+  myFuseEdges = 0;
+  if (!myIsONLY)
+  {
+    myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 );
+    aGroupLayout->addWidget( myFuseEdges, row, 0, 1, 2 );
+    row++;
+  }
 
   myLocalSizeTable = 0;
   if ( !myIsONLY )
@@ -411,7 +413,7 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromHypo( NetgenHypothesisData
   h_data.myNbSegPerRadiusVar = getVariableName("SetNbSegPerRadius");
   h_data.myMinSize = h->GetMinSize();
   h_data.myMinSizeVar = getVariableName("SetMinSize");
-  h_data.mySurfaceCurvature = h->GetSurfaceCurvature();
+  h_data.mySurfaceCurvature = h->GetUseSurfaceCurvature();
   h_data.myFuseEdges = h->GetFuseEdges();
 
   //if ( myIs2D )
@@ -456,33 +458,34 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi
     if( isCreation() )
       SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() );
     h->SetVarParameter( h_data.myMaxSizeVar.toLatin1().constData(), "SetMaxSize");
-    h->SetMaxSize( h_data.myMaxSize );
-    h->SetSecondOrder( h_data.mySecondOrder );
-    h->SetOptimize( h_data.myOptimize );
+    h->SetMaxSize     ( h_data.myMaxSize );
+    h->SetSecondOrder ( h_data.mySecondOrder );
+    h->SetOptimize    ( h_data.myOptimize );
     int fineness = h_data.myFineness;
-    h->SetFineness( fineness );
+    h->SetFineness    ( fineness );
 
     if( fineness==UserDefined )
       {
-        h->SetVarParameter( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate");
-        h->SetGrowthRate( h_data.myGrowthRate );
-        h->SetVarParameter( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge");
-        h->SetNbSegPerEdge( h_data.myNbSegPerEdge );
-        h->SetVarParameter( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius");
+        h->SetVarParameter  ( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate");
+        h->SetGrowthRate    ( h_data.myGrowthRate );
+        h->SetVarParameter  ( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge");
+        h->SetNbSegPerEdge  ( h_data.myNbSegPerEdge );
+        h->SetVarParameter  ( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius");
         h->SetNbSegPerRadius( h_data.myNbSegPerRadius );
       }
-    h->SetVarParameter( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize");
-    h->SetMinSize( h_data.myMinSize );
-    h->SetSurfaceCurvature( h_data.mySurfaceCurvature );
-    h->SetFuseEdges( h_data.myFuseEdges );
+    h->SetVarParameter       ( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize");
+    h->SetMinSize            ( h_data.myMinSize );
+    h->SetUseSurfaceCurvature( h_data.mySurfaceCurvature );
+    h->SetFuseEdges          ( h_data.myFuseEdges );
     
-    if ( myIs2D )
+    //if ( myIs2D )
       {
-        NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d =
-          NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h );
+        // NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d =
+        //   NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h );
         
-        if ( !h_2d->_is_nil() )
-          h_2d->SetQuadAllowed( h_data.myAllowQuadrangles );
+        // if ( !h_2d->_is_nil() )
+        //   h_2d->SetQuadAllowed( h_data.myAllowQuadrangles );
+        h->SetQuadAllowed( h_data.myAllowQuadrangles );
       }
 
     QMapIterator<QString,QString> i(myLocalSizeMap);
@@ -561,10 +564,9 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD
 
 void NETGENPluginGUI_HypothesisCreator::onSurfaceCurvatureChanged()
 {
-  bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->checkState() == Qt::Checked : true);
-  bool isCustom = (myFineness->currentIndex() == UserDefined);
-  myFineness->setEnabled(isSurfaceCurvature);
-  myGrowthRate->setEnabled(isCustom && isSurfaceCurvature);
+  bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->isChecked() : true);
+  bool isCustom           = (myFineness->currentIndex() == UserDefined);
+  myGrowthRate->setEnabled(isCustom);
   if ( myNbSegPerEdge )
     myNbSegPerEdge->setEnabled(isCustom && isSurfaceCurvature);
   if ( myNbSegPerRadius )
index 32e72db8e65eab94bf20b790b6a4793ddfe866bd..0f0d22137344b1531f6eccab45a76381e60bfa43 100644 (file)
@@ -57,7 +57,7 @@
     </message>
     <message>
         <source>NETGEN_FUSE_EDGES</source>
-        <translation>Fuse consignment Edges and Vertices</translation>
+        <translation>Fuse Coincident Nodes on Edges and Vertices</translation>
     </message>
     <message>
         <source>NETGEN_GROWTH_RATE</source>
@@ -93,7 +93,7 @@
     </message>
     <message>
         <source>NETGEN_SURFACE_CURVATURE</source>
-        <translation>Set size by Surface Curvature</translation>
+        <translation>Limit Size by Surface Curvature</translation>
     </message>
     <message>
         <source>NETGEN_VERYCOARSE</source>
index 3beb2a9e3063e53b4d4f21f365f1bbed847eae45..e9043f8fdb1dff9ef08ce461061e3eb13529551d 100755 (executable)
@@ -57,7 +57,7 @@
     </message>
     <message>
         <source>NETGEN_FUSE_EDGES</source>
-        <translation type="unfinished">Fuse consignment Edges and Vertices</translation>
+        <translation type="unfinished">Fuse Coincident Nodes on Edges and Vertices</translation>
     </message>
     <message>
         <source>NETGEN_GROWTH_RATE</source>
@@ -93,7 +93,7 @@
     </message>
     <message>
         <source>NETGEN_SURFACE_CURVATURE</source>
-        <translation type="unfinished">Set size by Surface Curvature</translation>
+        <translation type="unfinished">Limit Size by Surface Curvature</translation>
     </message>
     <message>
         <source>NETGEN_VERYCOARSE</source>
index 8f5276d40bfd041791632f8817e9d4852be44b4a..ed5083e69a10656ee9cd80196f74cb3ca68483cb 100644 (file)
       <source>NETGEN_FINENESS</source>
       <translation>細かさ</translation>
     </message>
+    <message>
+        <source>NETGEN_FUSE_EDGES</source>
+        <translation type="unfinished">Fuse Coincident Nodes on Edges and Vertices</translation>
+    </message>
     <message>
       <source>NETGEN_GROWTH_RATE</source>
       <translation>増加率</translation>
       <source>NETGEN_SEG_PER_RADIUS</source>
       <translation>半径毎の分割数</translation>
     </message>
+    <message>
+        <source>NETGEN_SURFACE_CURVATURE</source>
+        <translation type="unfinished">Limit Size by Surface Curvature</translation>
+    </message>
     <message>
       <source>NETGEN_VERYCOARSE</source>
       <translation>非常に粗く</translation>
index f6a6f23c91853647f85a8251fd3b2ba6195feaff..87c4fd45f8e821abfc8250813c226091efd7942e 100644 (file)
@@ -218,15 +218,15 @@ class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm):
     def SetQuadAllowed(self, toAllow=True):
         if self.Parameters(): self.params.SetQuadAllowed(toAllow)
         pass
-    ## Sets @c SurfaceCurvature flag
-    #  @param toAllow new value of the @c SurfaceCurvature parameter (@c True by default)
-    def SetSurfaceCurvature(self, toAllow=True):
-        if self.Parameters(): self.params.SetSurfaceCurvature(toAllow)
+    ## Sets @c UseSurfaceCurvature flag
+    #  @param toUse new value of the @c UseSurfaceCurvature parameter (@c True by default)
+    def SetUseSurfaceCurvature(self, toUse=True):
+        if self.Parameters(): self.params.SetUseSurfaceCurvature(toUse)
         pass
     ## Sets @c FuseEdges flag
-    #  @param toAllow new value of the @c FuseEdges parameter (@c False by default)
-    def SetFuseEdges(self, toAllow=False):
-        if self.Parameters(): self.params.SetFuseEdges(toAllow)
+    #  @param toFuse new value of the @c FuseEdges parameter (@c False by default)
+    def SetFuseEdges(self, toFuse=False):
+        if self.Parameters(): self.params.SetFuseEdges(toFuse)
         pass
 
     ## Sets number of segments overriding the value set by SetLocalLength()
index 60edf280980024977f7e90e19a7f3185576ff159..dce341f6d8ccc95dd069b21b30c357fc6e024ce3 100644 (file)
@@ -384,9 +384,9 @@ CORBA::Boolean NETGENPlugin_Hypothesis_i::GetQuadAllowed()
 
 //=============================================================================
 
-void NETGENPlugin_Hypothesis_i::SetSurfaceCurvature (CORBA::Boolean theValue)
+void NETGENPlugin_Hypothesis_i::SetUseSurfaceCurvature (CORBA::Boolean theValue)
 {
-  if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetSurfaceCurvature(),
+  if ( NETGENPlugin_Hypothesis_i::isToSetParameter( GetUseSurfaceCurvature(),
                                                     theValue,
                                                     METH_SetSurfaceCurvature ))
   {
@@ -397,7 +397,7 @@ void NETGENPlugin_Hypothesis_i::SetSurfaceCurvature (CORBA::Boolean theValue)
 
 //=============================================================================
 
-CORBA::Boolean NETGENPlugin_Hypothesis_i::GetSurfaceCurvature()
+CORBA::Boolean NETGENPlugin_Hypothesis_i::GetUseSurfaceCurvature()
 {
   return this->GetImpl()->GetSurfaceCurvature();
 }
index 5ac10681a356f615d8745887f2e71d46d9c9d9d3..2a3c8f3aa3ea2b7dea68be6b8b18c3281494994f 100644 (file)
@@ -88,8 +88,8 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i:
   void SetQuadAllowed(CORBA::Boolean theVal);
   CORBA::Boolean GetQuadAllowed();
 
-  void SetSurfaceCurvature(CORBA::Boolean theVal);
-  CORBA::Boolean GetSurfaceCurvature();
+  void SetUseSurfaceCurvature(CORBA::Boolean theVal);
+  CORBA::Boolean GetUseSurfaceCurvature();
 
   void SetFuseEdges(CORBA::Boolean theVal);
   CORBA::Boolean GetFuseEdges();
index 9b51fe4cffde22d6547a1133d3947ec0328837ba..36f13249524f1bf4f1fa223b05c9deed45185e8a 100644 (file)
@@ -185,24 +185,24 @@ void NETGENPlugin_Mesher::SetDefaultParameters()
 {
   netgen::MeshingParameters& mparams = netgen::mparam;
   // maximal mesh edge size
-  mparams.maxh = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize();
-  mparams.minh = 0;
+  mparams.maxh            = 0;//NETGENPlugin_Hypothesis::GetDefaultMaxSize();
+  mparams.minh            = 0;
   // minimal number of segments per edge
   mparams.segmentsperedge = NETGENPlugin_Hypothesis::GetDefaultNbSegPerEdge();
   // rate of growth of size between elements
-  mparams.grading = NETGENPlugin_Hypothesis::GetDefaultGrowthRate();
+  mparams.grading         = NETGENPlugin_Hypothesis::GetDefaultGrowthRate();
   // safety factor for curvatures (elements per radius)
   mparams.curvaturesafety = NETGENPlugin_Hypothesis::GetDefaultNbSegPerRadius();
   // create elements of second order
-  mparams.secondorder = NETGENPlugin_Hypothesis::GetDefaultSecondOrder() ? 1 : 0;
+  mparams.secondorder     = NETGENPlugin_Hypothesis::GetDefaultSecondOrder();
   // quad-dominated surface meshing
   if (_isVolume)
-    mparams.quad = 0;
+    mparams.quad          = 0;
   else
-    mparams.quad = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed() ? 1 : 0;
-  _fineness = NETGENPlugin_Hypothesis::GetDefaultFineness();
-  mparams.uselocalh = NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature();
-  netgen::merge_solids = NETGENPlugin_Hypothesis::GetDefaultFuseEdges();
+    mparams.quad          = NETGENPlugin_Hypothesis_2D::GetDefaultQuadAllowed();
+  _fineness               = NETGENPlugin_Hypothesis::GetDefaultFineness();
+  mparams.uselocalh       = NETGENPlugin_Hypothesis::GetDefaultSurfaceCurvature();
+  netgen::merge_solids    = NETGENPlugin_Hypothesis::GetDefaultFuseEdges();
 }
 
 //=============================================================================
@@ -245,25 +245,25 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp)
     netgen::MeshingParameters& mparams = netgen::mparam;
     // Initialize global NETGEN parameters:
     // maximal mesh segment size
-    mparams.maxh = hyp->GetMaxSize();
+    mparams.maxh            = hyp->GetMaxSize();
     // maximal mesh element linear size
-    mparams.minh = hyp->GetMinSize();
+    mparams.minh            = hyp->GetMinSize();
     // minimal number of segments per edge
     mparams.segmentsperedge = hyp->GetNbSegPerEdge();
     // rate of growth of size between elements
-    mparams.grading = hyp->GetGrowthRate();
+    mparams.grading         = hyp->GetGrowthRate();
     // safety factor for curvatures (elements per radius)
     mparams.curvaturesafety = hyp->GetNbSegPerRadius();
     // create elements of second order
-    mparams.secondorder = hyp->GetSecondOrder() ? 1 : 0;
+    mparams.secondorder     = hyp->GetSecondOrder() ? 1 : 0;
     // quad-dominated surface meshing
     // only triangles are allowed for volumic mesh (before realizing IMP 0021676)
     //if (!_isVolume)
-      mparams.quad = hyp->GetQuadAllowed() ? 1 : 0;
-    _optimize = hyp->GetOptimize();
-    _fineness = hyp->GetFineness();
-    mparams.uselocalh = hyp->GetSurfaceCurvature();
-    netgen::merge_solids = hyp->GetFuseEdges();
+      mparams.quad          = hyp->GetQuadAllowed() ? 1 : 0;
+    _optimize               = hyp->GetOptimize();
+    _fineness               = hyp->GetFineness();
+    mparams.uselocalh       = hyp->GetSurfaceCurvature();
+    netgen::merge_solids    = hyp->GetFuseEdges();
     _simpleHyp = NULL;
 
     SMESH_Gen_i* smeshGen_i = SMESH_Gen_i::GetSMESHGen();
index 81a2280b0b1534ae9b8f02f9469030ff8794b5fb..3899ef9492ced3f3c79f08959021d52f65a939cc 100644 (file)
@@ -266,7 +266,8 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh&         aMesh,
   // MESHCONST_ANALYSE step may lead to a failure, so we make an attempt
   // w/o MESHCONST_ANALYSE at the second loop
   int err = 1;
-  for ( int iLoop = 0; iLoop < 2; iLoop++ )
+  int iLoop = netgen::mparam.uselocalh ? 0 : 1; // uselocalh depends on 
+  for ( ; iLoop < 2; iLoop++ )
   {
     bool isMESHCONST_ANALYSE = false;
     InitComputeError();