CPPFLAGS_old="$CPPFLAGS"
CXXFLAGS_old="$CXXFLAGS"
- CPPFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CPPFLAGS"
- CXXFLAGS="$NETGEN_INCLUDES $CAS_CPPFLAGS $CXXFLAGS"
+ CPPFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CPPFLAGS"
+ CXXFLAGS="$CAS_CPPFLAGS $NETGEN_INCLUDES $CXXFLAGS"
AC_MSG_CHECKING(for Netgen header file)
# Reorganization for usage of autotools
# Created from configure.in.base
#
-AC_INIT([Salome2 Project NETGENPLUGIN module], [6.1.0], [webmaster.salome@opencascade.com], [SalomeNETGENPLUGIN])
+AC_INIT([Salome2 Project NETGENPLUGIN module], [6.2.0], [webmaster.salome@opencascade.com], [SalomeNETGENPLUGIN])
AC_CONFIG_AUX_DIR(adm_local/unix/config_files)
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
# chmod +x ./bin/salome/*;
#])
+AC_CONFIG_COMMANDS([hack_libtool],[
+sed -i "s%^CC=\"\(.*\)\"%hack_libtool (){ \n\
+ if test \"\$(echo \$[@] | grep -E '\\\-L/usr/lib(/../lib)?(64)? ')\" == \"\" \n\
+ then\n\
+ cmd=\"\1 \$[@]\"\n\
+ else\n\
+ cmd=\"\1 \"\`echo \$[@] | sed -r -e 's|(.*)-L/usr/lib(/../lib)?(64)? (.*)|\\\1\\\4 -L/usr/lib\\\3|g'\`\n\
+ fi\n\
+ \$cmd\n\
+}\n\
+CC=\"hack_libtool\"%g" libtool
+],[])
+
# This list is initiated using autoscan and must be updated manually
# when adding a new file <filename>.in to manage. When you execute
# autoscan, the Makefile list is generated in the output file configure.scan.
# additionnal information to compil and link file
libNETGENPluginGUI_la_CPPFLAGS = \
+ $(CAS_CPPFLAGS) \
$(NETGEN_INCLUDES) \
$(QT_INCLUDES) \
- $(CAS_CPPFLAGS) \
$(PYTHON_INCLUDES) \
$(KERNEL_CXXFLAGS) \
$(GUI_CXXFLAGS) \
# resources files
nodist_salomeres_DATA= \
NETGENPlugin_images.qm \
- NETGENPlugin_msg_en.qm
+ NETGENPlugin_msg_en.qm \
+ NETGENPlugin_msg_fr.qm
#include <SMESHGUI_Utils.h>
#include <SMESHGUI_HypothesesUtils.h>
-#include <SMESHGUI.h>
#include <SMESHGUI_SpinBox.h>
#include <GeomSelectionTools.h>
aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 );
myGrowthRate = new SMESHGUI_SpinBox( GroupC1 );
- myGrowthRate->RangeStepAndValidator( .1, 10., .1, "parametric_precision" );
+ myGrowthRate->RangeStepAndValidator( .0001, 10., .1, "parametric_precision" );
aGroupLayout->addWidget( myGrowthRate, row, 1 );
row++;
#include <SMESHGUI_Utils.h>
#include <SMESHGUI_HypothesesUtils.h>
#include <SMESHGUI_SpinBox.h>
-#include <SMESHGUI.h>
// IDL includes
#include CORBA_SERVER_HEADER(NETGENPlugin_Algorithm)
+<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<!--
- Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
-
- Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
- CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-
--->
-<TS version="1.1" >
- <context>
- <name>@default</name>
- <message>
- <source>NETGEN_2D_HYPOTHESIS</source>
- <translation>Netgen 2D</translation>
- </message>
- <message>
- <source>NETGEN_2D_TITLE</source>
- <translation>Hypothesis Construction</translation>
- </message>
- <message>
- <source>NETGEN_3D_HYPOTHESIS</source>
- <translation>Netgen 3D</translation>
- </message>
- <message>
- <source>NETGEN_3D_TITLE</source>
- <translation>Hypothesis Construction</translation>
- </message>
- <message>
- <source>NETGEN_SimpleParameters_3D_HYPOTHESIS</source>
- <translation>Netgen 3D simple parameters</translation>
- </message>
- <message>
- <source>NETGEN_SimpleParameters_3D_TITLE</source>
- <translation>Hypothesis Construction</translation>
- </message>
- <message>
- <source>NETGEN_SimpleParameters_2D_HYPOTHESIS</source>
- <translation>Netgen 2D simple parameters</translation>
- </message>
- <message>
- <source>NETGEN_SimpleParameters_2D_TITLE</source>
- <translation>Hypothesis Construction</translation>
- </message>
- <message>
- <source>NETGEN_ALLOW_QUADRANGLES</source>
- <translation>Allow Quadrangles</translation>
- </message>
- <message>
- <source>NETGEN_COARSE</source>
- <translation>Coarse</translation>
- </message>
- <message>
- <source>NETGEN_CUSTOM</source>
- <translation>Custom</translation>
- </message>
- <message>
- <source>NETGEN_FINE</source>
- <translation>Fine</translation>
- </message>
- <message>
- <source>NETGEN_FINENESS</source>
- <translation>Fineness</translation>
- </message>
- <message>
- <source>NETGEN_GROWTH_RATE</source>
- <translation>Growth Rate</translation>
- </message>
- <message>
- <source>NETGEN_MAX_SIZE</source>
- <translation>Max. Size</translation>
- </message>
- <message>
- <source>NETGEN_MODERATE</source>
- <translation>Moderate</translation>
- </message>
- <message>
- <source>NETGEN_OPTIMIZE</source>
- <translation>Optimize</translation>
- </message>
- <message>
- <source>NETGEN_SECOND_ORDER</source>
- <translation>Second Order</translation>
- </message>
- <message>
- <source>NETGEN_SEG_PER_EDGE</source>
- <translation>Nb. Segs per Edge</translation>
- </message>
- <message>
- <source>NETGEN_SEG_PER_RADIUS</source>
- <translation>Nb. Segs per Radius</translation>
- </message>
- <message>
- <source>NETGEN_VERYCOARSE</source>
- <translation>Very Coarse</translation>
- </message>
- <message>
- <source>NETGEN_VERYFINE</source>
- <translation>Very Fine</translation>
- </message>
- <message>
- <source>NG_1D</source>
- <translation>1D</translation>
- </message>
- <message>
- <source>NG_2D</source>
- <translation>2D</translation>
- </message>
- <message>
- <source>NG_3D</source>
- <translation>3D</translation>
- </message>
- <message>
- <source>NG_LENGTH_FROM_EDGES</source>
- <translation>Length from edges</translation>
- </message>
- <message>
- <source>NG_LENGTH_FROM_FACES</source>
- <translation>Length from faces</translation>
- </message>
- <message>
- <source>NETGEN_LOCAL_SIZE</source>
- <translation>Local sizes</translation>
- </message>
- <message>
- <source>NETGEN_LSZ_VERTEX</source>
- <translation>On Vertex</translation>
- </message>
- <message>
- <source>NETGEN_LSZ_EDGE</source>
- <translation>On Edge</translation>
- </message>
- <message>
- <source>NETGEN_LSZ_FACE</source>
- <translation>On Sub-Face</translation>
- </message>
- <message>
- <source>NETGEN_LSZ_REMOVE</source>
- <translation>Remove</translation>
- </message>
- <message>
- <source>LSZ_ENTRY_COLUMN</source>
- <translation>Entry</translation>
- </message>
- <message>
- <source>LSZ_NAME_COLUMN</source>
- <translation>Name</translation>
- </message>
- <message>
- <source>LSZ_LOCALSIZE_COLUMN</source>
- <translation>Value</translation>
- </message>
- </context>
+<TS version="2.0" language="en_US">
+<context>
+ <name>@default</name>
+ <message>
+ <source>NETGEN_2D_HYPOTHESIS</source>
+ <translation>Netgen 2D</translation>
+ </message>
+ <message>
+ <source>NETGEN_2D_TITLE</source>
+ <translation>Hypothesis Construction</translation>
+ </message>
+ <message>
+ <source>NETGEN_3D_HYPOTHESIS</source>
+ <translation>Netgen 3D</translation>
+ </message>
+ <message>
+ <source>NETGEN_3D_TITLE</source>
+ <translation>Hypothesis Construction</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_3D_HYPOTHESIS</source>
+ <translation>Netgen 3D simple parameters</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_3D_TITLE</source>
+ <translation>Hypothesis Construction</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_2D_HYPOTHESIS</source>
+ <translation>Netgen 2D simple parameters</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_2D_TITLE</source>
+ <translation>Hypothesis Construction</translation>
+ </message>
+ <message>
+ <source>NETGEN_ALLOW_QUADRANGLES</source>
+ <translation>Allow Quadrangles</translation>
+ </message>
+ <message>
+ <source>NETGEN_COARSE</source>
+ <translation>Coarse</translation>
+ </message>
+ <message>
+ <source>NETGEN_CUSTOM</source>
+ <translation>Custom</translation>
+ </message>
+ <message>
+ <source>NETGEN_FINE</source>
+ <translation>Fine</translation>
+ </message>
+ <message>
+ <source>NETGEN_FINENESS</source>
+ <translation>Fineness</translation>
+ </message>
+ <message>
+ <source>NETGEN_GROWTH_RATE</source>
+ <translation>Growth Rate</translation>
+ </message>
+ <message>
+ <source>NETGEN_MAX_SIZE</source>
+ <translation>Max. Size</translation>
+ </message>
+ <message>
+ <source>NETGEN_MODERATE</source>
+ <translation>Moderate</translation>
+ </message>
+ <message>
+ <source>NETGEN_OPTIMIZE</source>
+ <translation>Optimize</translation>
+ </message>
+ <message>
+ <source>NETGEN_SECOND_ORDER</source>
+ <translation>Second Order</translation>
+ </message>
+ <message>
+ <source>NETGEN_SEG_PER_EDGE</source>
+ <translation>Nb. Segs per Edge</translation>
+ </message>
+ <message>
+ <source>NETGEN_SEG_PER_RADIUS</source>
+ <translation>Nb. Segs per Radius</translation>
+ </message>
+ <message>
+ <source>NETGEN_VERYCOARSE</source>
+ <translation>Very Coarse</translation>
+ </message>
+ <message>
+ <source>NETGEN_VERYFINE</source>
+ <translation>Very Fine</translation>
+ </message>
+ <message>
+ <source>NG_1D</source>
+ <translation>1D</translation>
+ </message>
+ <message>
+ <source>NG_2D</source>
+ <translation>2D</translation>
+ </message>
+ <message>
+ <source>NG_3D</source>
+ <translation>3D</translation>
+ </message>
+ <message>
+ <source>NG_LENGTH_FROM_EDGES</source>
+ <translation>Length from edges</translation>
+ </message>
+ <message>
+ <source>NG_LENGTH_FROM_FACES</source>
+ <translation>Length from faces</translation>
+ </message>
+ <message>
+ <source>NETGEN_LOCAL_SIZE</source>
+ <translation>Local sizes</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_VERTEX</source>
+ <translation>On Vertex</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_EDGE</source>
+ <translation>On Edge</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_FACE</source>
+ <translation>On Sub-Face</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_REMOVE</source>
+ <translation>Remove</translation>
+ </message>
+ <message>
+ <source>LSZ_ENTRY_COLUMN</source>
+ <translation>Entry</translation>
+ </message>
+ <message>
+ <source>LSZ_NAME_COLUMN</source>
+ <translation>Name</translation>
+ </message>
+ <message>
+ <source>LSZ_LOCALSIZE_COLUMN</source>
+ <translation>Value</translation>
+ </message>
+</context>
</TS>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+ <name>@default</name>
+ <message>
+ <source>NETGEN_2D_HYPOTHESIS</source>
+ <translation>Netgen 2D</translation>
+ </message>
+ <message>
+ <source>NETGEN_2D_TITLE</source>
+ <translation>Construction d'une hypothèse</translation>
+ </message>
+ <message>
+ <source>NETGEN_3D_HYPOTHESIS</source>
+ <translation>Netgen 3D</translation>
+ </message>
+ <message>
+ <source>NETGEN_3D_TITLE</source>
+ <translation>Construction d'une hypothèse</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_3D_HYPOTHESIS</source>
+ <translation>Netgen 3D paramètres simplifiés</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_3D_TITLE</source>
+ <translation>Construction d'une hypothèse</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_2D_HYPOTHESIS</source>
+ <translation>Netgen 2D paramètres simplifiés</translation>
+ </message>
+ <message>
+ <source>NETGEN_SimpleParameters_2D_TITLE</source>
+ <translation>Construction d'une hypothèse</translation>
+ </message>
+ <message>
+ <source>NETGEN_ALLOW_QUADRANGLES</source>
+ <translation>Autoriser les quadrangles</translation>
+ </message>
+ <message>
+ <source>NETGEN_COARSE</source>
+ <translation>Grossier</translation>
+ </message>
+ <message>
+ <source>NETGEN_CUSTOM</source>
+ <translation>Personnalisé</translation>
+ </message>
+ <message>
+ <source>NETGEN_FINE</source>
+ <translation>Fin</translation>
+ </message>
+ <message>
+ <source>NETGEN_FINENESS</source>
+ <translation>Finesse</translation>
+ </message>
+ <message>
+ <source>NETGEN_GROWTH_RATE</source>
+ <translation>Taux d'accroissement</translation>
+ </message>
+ <message>
+ <source>NETGEN_MAX_SIZE</source>
+ <translation>Taille maximale</translation>
+ </message>
+ <message>
+ <source>NETGEN_MODERATE</source>
+ <translation>Moyen</translation>
+ </message>
+ <message>
+ <source>NETGEN_OPTIMIZE</source>
+ <translation>Optimiser</translation>
+ </message>
+ <message>
+ <source>NETGEN_SECOND_ORDER</source>
+ <translation>Second ordre</translation>
+ </message>
+ <message>
+ <source>NETGEN_SEG_PER_EDGE</source>
+ <translation>Nb. segments par arête</translation>
+ </message>
+ <message>
+ <source>NETGEN_SEG_PER_RADIUS</source>
+ <translation>Nb. segments par rayon</translation>
+ </message>
+ <message>
+ <source>NETGEN_VERYCOARSE</source>
+ <translation>Très grossier</translation>
+ </message>
+ <message>
+ <source>NETGEN_VERYFINE</source>
+ <translation>Très fin</translation>
+ </message>
+ <message>
+ <source>NG_1D</source>
+ <translation>1D</translation>
+ </message>
+ <message>
+ <source>NG_2D</source>
+ <translation>2D</translation>
+ </message>
+ <message>
+ <source>NG_3D</source>
+ <translation>3D</translation>
+ </message>
+ <message>
+ <source>NG_LENGTH_FROM_EDGES</source>
+ <translation>Longueur à partir des arêtes</translation>
+ </message>
+ <message>
+ <source>NG_LENGTH_FROM_FACES</source>
+ <translation>Longueur à partir des faces</translation>
+ </message>
+ <message>
+ <source>NETGEN_LOCAL_SIZE</source>
+ <translation>Tailles locales</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_VERTEX</source>
+ <translation>Sur un point</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_EDGE</source>
+ <translation>Sur une arête</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_FACE</source>
+ <translation>Sur une sous-face</translation>
+ </message>
+ <message>
+ <source>NETGEN_LSZ_REMOVE</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <source>LSZ_ENTRY_COLUMN</source>
+ <translation>Entrée</translation>
+ </message>
+ <message>
+ <source>LSZ_NAME_COLUMN</source>
+ <translation>Nom</translation>
+ </message>
+ <message>
+ <source>LSZ_LOCALSIZE_COLUMN</source>
+ <translation>Valeur</translation>
+ </message>
+</context>
+</TS>
-diff -Naur netgen-4.5.old/libsrc/csg/meshsurf.cpp netgen-4.5.new/libsrc/csg/meshsurf.cpp
---- netgen-4.5.old/libsrc/csg/meshsurf.cpp 2006-02-14 08:54:35.000000000 +0000
-+++ netgen-4.5.new/libsrc/csg/meshsurf.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/algprim.cpp netgen-4.5_new/libsrc/csg/algprim.cpp
+--- netgen-4.5_orig/libsrc/csg/algprim.cpp 2006-01-25 16:30:28.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/algprim.cpp 2010-06-23 12:35:22.000000000 +0400
+@@ -108,7 +108,7 @@
+ void Plane :: GetPrimitiveData (char *& classname,
+ ARRAY<double> & coeffs) const
+ {
+- classname = "plane";
++ classname = (char*)"plane";
+ coeffs.SetSize (6);
+ coeffs.Elem(1) = p(0);
+ coeffs.Elem(2) = p(1);
+@@ -355,7 +355,7 @@
+
+ void Sphere :: GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const
+ {
+- classname = "sphere";
++ classname = (char*)"sphere";
+ coeffs.SetSize (4);
+ coeffs.Elem(1) = c(0);
+ coeffs.Elem(2) = c(1);
+@@ -760,7 +760,7 @@
+
+ void Cylinder :: GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const
+ {
+- classname = "cylinder";
++ classname = (char*)"cylinder";
+ coeffs.SetSize (7);
+ coeffs.Elem(1) = a(0);
+ coeffs.Elem(2) = a(1);
+@@ -1243,7 +1243,7 @@
+
+ void Cone :: GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const
+ {
+- classname = "cone";
++ classname = (char*)"cone";
+ coeffs.SetSize (8);
+ coeffs.Elem(1) = a(0);
+ coeffs.Elem(2) = a(1);
+@@ -1446,7 +1446,7 @@
+
+ void Torus :: GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const
+ {
+- classname = "torus";
++ classname = (char*)"torus";
+ coeffs.SetSize (8);
+ coeffs.Elem(1) = c(0);
+ coeffs.Elem(2) = c(1);
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/brick.cpp netgen-4.5_new/libsrc/csg/brick.cpp
+--- netgen-4.5_orig/libsrc/csg/brick.cpp 2006-02-08 15:23:15.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/brick.cpp 2010-06-23 12:35:35.000000000 +0400
+@@ -345,7 +345,7 @@
+ void Brick ::
+ GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const
+ {
+- classname = "brick";
++ classname = (char*)"brick";
+ coeffs.SetSize(12);
+ coeffs.Elem(1) = p1(0);
+ coeffs.Elem(2) = p1(1);
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/meshsurf.cpp netgen-4.5_new/libsrc/csg/meshsurf.cpp
+--- netgen-4.5_orig/libsrc/csg/meshsurf.cpp 2006-02-14 11:54:35.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/meshsurf.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -77,11 +77,12 @@
}
}
void MeshOptimize2dSurfaces :: ProjectPoint2 (INDEX surfind, INDEX surfind2,
-diff -Naur netgen-4.5.old/libsrc/csg/meshsurf.hpp netgen-4.5.new/libsrc/csg/meshsurf.hpp
---- netgen-4.5.old/libsrc/csg/meshsurf.hpp 2004-01-20 11:49:44.000000000 +0000
-+++ netgen-4.5.new/libsrc/csg/meshsurf.hpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/meshsurf.hpp netgen-4.5_new/libsrc/csg/meshsurf.hpp
+--- netgen-4.5_orig/libsrc/csg/meshsurf.hpp 2004-01-20 14:49:44.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/meshsurf.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -45,7 +45,7 @@
MeshOptimize2dSurfaces (const CSGeometry & ageometry);
///
virtual void ProjectPoint2 (INDEX surfind, INDEX surfind2, Point3d & p) const;
///
-diff -Naur netgen-4.5.old/libsrc/general/profiler.cpp netgen-4.5.new/libsrc/general/profiler.cpp
---- netgen-4.5.old/libsrc/general/profiler.cpp 2006-01-11 10:05:59.000000000 +0000
-+++ netgen-4.5.new/libsrc/general/profiler.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/polyhedra.cpp netgen-4.5_new/libsrc/csg/polyhedra.cpp
+--- netgen-4.5_orig/libsrc/csg/polyhedra.cpp 2006-02-09 13:33:11.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/polyhedra.cpp 2010-06-23 12:36:00.000000000 +0400
+@@ -287,7 +287,7 @@
+ void Polyhedra :: GetPrimitiveData (char *& classname,
+ ARRAY<double> & coeffs) const
+ {
+- classname = "Polyhedra";
++ classname = (char*)"Polyhedra";
+ coeffs.SetSize(0);
+ coeffs.Append (points.Size());
+ coeffs.Append (faces.Size());
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/csg/surface.cpp netgen-4.5_new/libsrc/csg/surface.cpp
+--- netgen-4.5_orig/libsrc/csg/surface.cpp 2006-02-08 15:23:16.000000000 +0300
++++ netgen-4.5_new/libsrc/csg/surface.cpp 2010-06-23 12:35:47.000000000 +0400
+@@ -215,7 +215,7 @@
+ void Primitive :: GetPrimitiveData (char *& classname,
+ ARRAY<double> & coeffs) const
+ {
+- classname = "undef";
++ classname = (char*)"undef";
+ coeffs.SetSize (0);
+ }
+
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/general/profiler.cpp netgen-4.5_new/libsrc/general/profiler.cpp
+--- netgen-4.5_orig/libsrc/general/profiler.cpp 2006-01-11 13:05:59.000000000 +0300
++++ netgen-4.5_new/libsrc/general/profiler.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -34,8 +34,14 @@
{
StopTimer (total_timer);
}
-diff -Naur netgen-4.5.old/libsrc/include/mystdlib.h netgen-4.5.new/libsrc/include/mystdlib.h
---- netgen-4.5.old/libsrc/include/mystdlib.h 2006-01-16 14:16:56.000000000 +0000
-+++ netgen-4.5.new/libsrc/include/mystdlib.h 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/geom2d/genmesh2d.cpp netgen-4.5_new/libsrc/geom2d/genmesh2d.cpp
+--- netgen-4.5_orig/libsrc/geom2d/genmesh2d.cpp 2006-02-16 19:17:47.000000000 +0300
++++ netgen-4.5_new/libsrc/geom2d/genmesh2d.cpp 2010-06-23 12:36:59.000000000 +0400
+@@ -121,11 +121,11 @@
+
+ int hsteps = mp.optsteps2d;
+
+- mp.optimize2d = "smcm";
++ mp.optimize2d = (char*)"smcm";
+ mp.optsteps2d = hsteps/2;
+ Optimize2d (*mesh, mp);
+
+- mp.optimize2d = "Smcm";
++ mp.optimize2d = (char*)"Smcm";
+ mp.optsteps2d = (hsteps+1)/2;
+ Optimize2d (*mesh, mp);
+
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/gprim/geom2d.hpp netgen-4.5_new/libsrc/gprim/geom2d.hpp
+--- netgen-4.5_orig/libsrc/gprim/geom2d.hpp 2004-01-20 14:49:44.000000000 +0300
++++ netgen-4.5_new/libsrc/gprim/geom2d.hpp 2010-06-23 13:19:48.000000000 +0400
+@@ -53,7 +53,7 @@
+ int IsOnLongLine (const Line2d & l, const Point2d & p);
+ int Hit (const Line2d & l1, const Line2d & l2, double heps = EPSGEOM);
+ ostream & operator<<(ostream & s, const Line2d & l);
+-Point2d CrossPoint (const PLine2d & l1, const PLine2d & l2);
++Point2d CrossPoint (const Line2d & l1, const Line2d & l2);
+ int Parallel (const PLine2d & l1, const PLine2d & l2, double peps = EPSGEOM);
+ int IsOnLine (const PLine2d & l, const Point2d & p, double heps = EPSGEOM);
+ int IsOnLongLine (const PLine2d & l, const Point2d & p);
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/gprim/geom3d.hpp netgen-4.5_new/libsrc/gprim/geom3d.hpp
+--- netgen-4.5_orig/libsrc/gprim/geom3d.hpp 2004-08-30 16:04:04.000000000 +0400
++++ netgen-4.5_new/libsrc/gprim/geom3d.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -25,6 +25,7 @@
- #include <cmath>\r
- #include <cctype>\r
- #include <ctime>\r
-+#include <cstring>\r
- #endif\r
- \r
- \r
-diff -Naur netgen-4.5.old/libsrc/interface/Makefile netgen-4.5.new/libsrc/interface/Makefile
---- netgen-4.5.old/libsrc/interface/Makefile 2005-08-09 14:14:59.000000000 +0000
-+++ netgen-4.5.new/libsrc/interface/Makefile 2009-08-07 08:41:22.000000000 +0000
+ inline Point3d Center (const Point3d & p1, const Point3d & p2, const Point3d & p3);
+ inline Point3d Center (const Point3d & p1, const Point3d & p2,
+ const Point3d & p3, const Point3d & p4);
++inline double Dist2 (const Point3d & p1, const Point3d & p2);
+ ostream & operator<<(ostream & s, const Point3d & p);
+ inline Vec3d operator- (const Vec3d & p1, const Vec3d & v);
+ inline Vec3d operator+ (const Vec3d & p1, const Vec3d & v);
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/interface/Makefile netgen-4.5_new/libsrc/interface/Makefile
+--- netgen-4.5_orig/libsrc/interface/Makefile 2005-08-09 18:14:59.000000000 +0400
++++ netgen-4.5_new/libsrc/interface/Makefile 2010-06-23 13:19:48.000000000 +0400
@@ -1,4 +1,5 @@
-src = nginterface.cpp writeuser.cpp writediffpack.cpp writeabaqus.cpp writefluent.cpp writepermas.cpp writetochnog.cpp writetecplot.cpp wuchemnitz.cpp writetochnog.cpp writefeap.cpp writeelmer.cpp writegmsh.cpp writejcm.cpp readuser.cpp importsolution.cpp
+#src = nginterface.cpp writeuser.cpp writediffpack.cpp writeabaqus.cpp writefluent.cpp writepermas.cpp writetochnog.cpp writetecplot.cpp wuchemnitz.cpp writetochnog.cpp writefeap.cpp writeelmer.cpp writegmsh.cpp writejcm.cpp readuser.cpp importsolution.cpp
#
lib = nginterface
libpath = libsrc/interface
-diff -Naur netgen-4.5.old/libsrc/interface/nglib.cpp netgen-4.5.new/libsrc/interface/nglib.cpp
---- netgen-4.5.old/libsrc/interface/nglib.cpp 2005-10-18 13:53:18.000000000 +0000
-+++ netgen-4.5.new/libsrc/interface/nglib.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/interface/nglib.cpp netgen-4.5_new/libsrc/interface/nglib.cpp
+--- netgen-4.5_orig/libsrc/interface/nglib.cpp 2005-10-18 17:53:18.000000000 +0400
++++ netgen-4.5_new/libsrc/interface/nglib.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -56,7 +56,8 @@
void Ng_Exit ()
}
-diff -Naur netgen-4.5.old/libsrc/makefile.inc netgen-4.5.new/libsrc/makefile.inc
---- netgen-4.5.old/libsrc/makefile.inc 2005-09-02 13:17:51.000000000 +0000
-+++ netgen-4.5.new/libsrc/makefile.inc 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/interface/writeuser.cpp netgen-4.5_new/libsrc/interface/writeuser.cpp
+--- netgen-4.5_orig/libsrc/interface/writeuser.cpp 2005-08-09 18:14:59.000000000 +0400
++++ netgen-4.5_new/libsrc/interface/writeuser.cpp 2010-06-23 12:37:42.000000000 +0400
+@@ -17,7 +17,7 @@
+
+ void RegisterUserFormats (ARRAY<const char*> & names)
+ {
+- char *types[] =
++ const char *types[] =
+ {
+ "Neutral Format",
+ "Surface Mesh Format" ,
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/linalg/densemat.hpp netgen-4.5_new/libsrc/linalg/densemat.hpp
+--- netgen-4.5_orig/libsrc/linalg/densemat.hpp 2005-12-09 15:26:19.000000000 +0300
++++ netgen-4.5_new/libsrc/linalg/densemat.hpp 2010-06-23 13:19:48.000000000 +0400
+@@ -14,6 +14,8 @@
+
+ #include <assert.h>
+
++class DenseMatrix;
++void CalcAtA (const DenseMatrix & a, DenseMatrix & m2);
+
+ class DenseMatrix
+ {
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/makefile.inc netgen-4.5_new/libsrc/makefile.inc
+--- netgen-4.5_orig/libsrc/makefile.inc 2005-09-02 17:17:51.000000000 +0400
++++ netgen-4.5_new/libsrc/makefile.inc 2010-06-23 13:19:48.000000000 +0400
@@ -8,17 +8,14 @@
LIBSRC_DIR=$(CPP_DIR)/libsrc
LIB_DIR=$(CPP_DIR)/lib/$(MACHINE)
#
ARFLAGS = r
#
-diff -Naur netgen-4.5.old/libsrc/makefile.mach.LINUX netgen-4.5.new/libsrc/makefile.mach.LINUX
---- netgen-4.5.old/libsrc/makefile.mach.LINUX 2004-10-11 19:49:26.000000000 +0000
-+++ netgen-4.5.new/libsrc/makefile.mach.LINUX 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/makefile.mach.LINUX netgen-4.5_new/libsrc/makefile.mach.LINUX
+--- netgen-4.5_orig/libsrc/makefile.mach.LINUX 2004-10-11 23:49:26.000000000 +0400
++++ netgen-4.5_new/libsrc/makefile.mach.LINUX 2010-06-23 13:19:48.000000000 +0400
@@ -16,7 +16,7 @@
#
CFLAGS2 =
-ftemplate-depth-99 -finline-limit=10000 \
-Wdisabled-optimization -funroll-loops -DnoNGSOLVE
-diff -Naur netgen-4.5.old/libsrc/meshing/improve2.cpp netgen-4.5.new/libsrc/meshing/improve2.cpp
---- netgen-4.5.old/libsrc/meshing/improve2.cpp 2006-01-11 16:08:19.000000000 +0000
-+++ netgen-4.5.new/libsrc/meshing/improve2.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/meshing/improve2.cpp netgen-4.5_new/libsrc/meshing/improve2.cpp
+--- netgen-4.5_orig/libsrc/meshing/improve2.cpp 2006-01-11 19:08:19.000000000 +0300
++++ netgen-4.5_new/libsrc/meshing/improve2.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -4,7 +4,7 @@
#include <opti.hpp>
#endif
namespace netgen
-diff -Naur netgen-4.5.old/libsrc/meshing/improve2.hpp netgen-4.5.new/libsrc/meshing/improve2.hpp
---- netgen-4.5.old/libsrc/meshing/improve2.hpp 2004-10-12 19:22:55.000000000 +0000
-+++ netgen-4.5.new/libsrc/meshing/improve2.hpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/meshing/improve2.hpp netgen-4.5_new/libsrc/meshing/improve2.hpp
+--- netgen-4.5_orig/libsrc/meshing/improve2.hpp 2004-10-12 23:22:55.000000000 +0400
++++ netgen-4.5_new/libsrc/meshing/improve2.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -32,17 +32,16 @@
///
virtual void SelectSurfaceOfPoint (const Point3d & p,
///
virtual void GetNormalVector(INDEX surfind, const Point3d & p, PointGeomInfo & gi, Vec3d & n) const;
-diff -Naur netgen-4.5.old/libsrc/meshing/meshtype.cpp netgen-4.5.new/libsrc/meshing/meshtype.cpp
---- netgen-4.5.old/libsrc/meshing/meshtype.cpp 2006-02-10 10:11:08.000000000 +0000
-+++ netgen-4.5.new/libsrc/meshing/meshtype.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/meshing/meshtype.cpp netgen-4.5_new/libsrc/meshing/meshtype.cpp
+--- netgen-4.5_orig/libsrc/meshing/meshtype.cpp 2006-02-10 13:11:08.000000000 +0300
++++ netgen-4.5_new/libsrc/meshing/meshtype.cpp 2010-06-23 12:39:02.000000000 +0400
@@ -1,4 +1,5 @@
#include <mystdlib.h>
+#include <float.h>
err += 1e12;
else
err += frob * frob / det;
-diff -Naur netgen-4.5.old/libsrc/meshing/meshtype.hpp netgen-4.5.new/libsrc/meshing/meshtype.hpp
---- netgen-4.5.old/libsrc/meshing/meshtype.hpp 2006-02-10 10:11:08.000000000 +0000
-+++ netgen-4.5.new/libsrc/meshing/meshtype.hpp 2009-08-07 08:41:22.000000000 +0000
+@@ -2222,9 +2223,9 @@
+
+ MeshingParameters :: MeshingParameters ()
+ {
+- optimize3d = "cmdmstm";
++ optimize3d = (char*)"cmdmstm";
+ optsteps3d = 3;
+- optimize2d = "smsmsmSmSmSm";
++ optimize2d = (char*)"smsmsmSmSmSm";
+ optsteps2d = 3;
+ opterrpow = 2;
+ blockfill = 1;
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/meshing/meshtype.hpp netgen-4.5_new/libsrc/meshing/meshtype.hpp
+--- netgen-4.5_orig/libsrc/meshing/meshtype.hpp 2006-02-10 13:11:08.000000000 +0300
++++ netgen-4.5_new/libsrc/meshing/meshtype.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -13,7 +13,7 @@
Classes for NETGEN
*/
enum ELEMENT_TYPE {
SEGMENT = 1, SEGMENT3 = 2,
TRIG = 10, QUAD=11, TRIG6 = 12, QUAD6 = 13, QUAD8 = 14,
-diff -Naur netgen-4.5.old/libsrc/meshing/smoothing2.cpp netgen-4.5.new/libsrc/meshing/smoothing2.cpp
---- netgen-4.5.old/libsrc/meshing/smoothing2.cpp 2006-01-11 16:08:20.000000000 +0000
-+++ netgen-4.5.new/libsrc/meshing/smoothing2.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/meshing/smoothing2.cpp netgen-4.5_new/libsrc/meshing/smoothing2.cpp
+--- netgen-4.5_orig/libsrc/meshing/smoothing2.cpp 2006-01-11 19:08:20.000000000 +0300
++++ netgen-4.5_new/libsrc/meshing/smoothing2.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -300,7 +300,7 @@
double Opti2SurfaceMinFunction ::
FuncGrad (const Vector & x, Vector & grad) const
if (moveisok)
{
for (j = 0; j < locelements.Size(); j++)
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Inter2d.cxx netgen-4.5.new/libsrc/occ/Partition_Inter2d.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Inter2d.cxx 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Inter2d.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Inter2d.cxx netgen-4.5_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Inter2d.cxx 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Inter2d.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -29,10 +29,10 @@
// $Header$
#include <BRepAdaptor_Curve.hxx>
#include <BRepAlgo_AsDes.hxx>
#include <BRepLib_MakeVertex.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Inter3d.cxx netgen-4.5.new/libsrc/occ/Partition_Inter3d.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Inter3d.cxx 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Inter3d.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.5_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Inter3d.cxx 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Inter3d.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -29,13 +29,17 @@
// $Header$
#include <BRepOffset_Tool.hxx>
#include <BRep_Builder.hxx>
#include <BRep_Tool.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Loop.cxx netgen-4.5.new/libsrc/occ/Partition_Loop.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Loop.cxx 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Loop.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Loop.cxx netgen-4.5_new/libsrc/occ/Partition_Loop.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Loop.cxx 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Loop.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -29,12 +29,14 @@
// $Header$
#include <BRep_Builder.hxx>
#include <BRepAlgo_FaceRestrictor.hxx>
#include <BRep_Tool.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Loop2d.cxx netgen-4.5.new/libsrc/occ/Partition_Loop2d.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Loop2d.cxx 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Loop2d.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.5_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Loop2d.cxx 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Loop2d.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -12,9 +12,11 @@
// $Header$
#include <stdio.h>
#include <BRepAdaptor_Curve2d.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Loop3d.cxx netgen-4.5.new/libsrc/occ/Partition_Loop3d.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Loop3d.cxx 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Loop3d.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Loop3d.cxx netgen-4.5_new/libsrc/occ/Partition_Loop3d.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Loop3d.cxx 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Loop3d.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -10,6 +10,11 @@
// Module : GEOM
#include "Partition_Loop3d.ixx"
#include <TopExp_Explorer.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/Partition_Spliter.cxx netgen-4.5.new/libsrc/occ/Partition_Spliter.cxx
---- netgen-4.5.old/libsrc/occ/Partition_Spliter.cxx 2005-07-11 06:33:27.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/Partition_Spliter.cxx 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.5_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-4.5_orig/libsrc/occ/Partition_Spliter.cxx 2005-07-11 10:33:27.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/Partition_Spliter.cxx 2010-06-23 13:19:48.000000000 +0400
@@ -29,14 +29,15 @@
// $Header$
#include <Precision.hxx>
#include <TopAbs_Orientation.hxx>
#include <TopExp.hxx>
-diff -Naur netgen-4.5.old/libsrc/occ/occconstruction.cpp netgen-4.5.new/libsrc/occ/occconstruction.cpp
---- netgen-4.5.old/libsrc/occ/occconstruction.cpp 2005-12-06 15:15:53.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occconstruction.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occconstruction.cpp netgen-4.5_new/libsrc/occ/occconstruction.cpp
+--- netgen-4.5_orig/libsrc/occ/occconstruction.cpp 2005-12-06 18:15:53.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/occconstruction.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -28,8 +28,8 @@
#include <BRepAlgoAPI_Common.hxx>
#include <BRepAlgoAPI_Fuse.hxx>
#include <BRepOffsetAPI_MakeOffsetShape.hxx>
#include <ShapeFix_Shape.hxx>
namespace netgen
-diff -Naur netgen-4.5.old/libsrc/occ/occgenmesh.cpp netgen-4.5.new/libsrc/occ/occgenmesh.cpp
---- netgen-4.5.old/libsrc/occ/occgenmesh.cpp 2006-02-07 10:12:48.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occgenmesh.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occgenmesh.cpp netgen-4.5_new/libsrc/occ/occgenmesh.cpp
+--- netgen-4.5_orig/libsrc/occ/occgenmesh.cpp 2006-02-07 13:12:48.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/occgenmesh.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -28,7 +28,7 @@
return Point<3> (p.X(), p.Y(), p.Z());
}
ARRAY<MeshPoint> & ps,
ARRAY<double> & params,
Mesh & mesh)
-@@ -49,23 +49,19 @@
+@@ -49,23 +49,18 @@
hvalue[0] = 0;
pnt = c->Value(s0);
{
oldpnt = pnt;
pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
-+ double dist = pnt.Distance(oldpnt);
- hvalue[i] = hvalue[i-1] +
- 1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+- hvalue[i] = hvalue[i-1] +
+- 1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
- pnt.Distance(oldpnt);
-+ dist;
++ double dist = pnt.Distance(oldpnt);
++ hvalue[i] = hvalue[i-1] + min( 1.0,
++ 1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*dist);
//(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
// << " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
}
// nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
-@@ -74,7 +70,7 @@
+@@ -74,13 +69,16 @@
ps.SetSize(nsubedges-1);
params.SetSize(nsubedges+1);
int i1 = 0;
do
{
-@@ -112,7 +108,7 @@
+ if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+ {
+- params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++ // EAP. For nsubedges comparable to DIVIDEEDGESECTIONS (issue 0021073)
++ double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++ params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++ //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+ pnt = c->Value(params[i]);
+ ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+ i++;
+@@ -112,7 +110,7 @@
static void FindEdges (OCCGeometry & geom, Mesh & mesh)
{
multithread.task = "Edge meshing";
(*testout) << "edge meshing" << endl;
-@@ -124,6 +120,7 @@
+@@ -124,6 +122,7 @@
(*testout) << "nedges = " << nedges << endl;
double eps = 1e-6 * geom.GetBoundingBox().Diam();
for (int i = 1; i <= nvertices; i++)
{
-@@ -133,7 +130,7 @@
+@@ -133,7 +132,7 @@
bool exists = 0;
if (merge_solids)
for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
{
exists = 1;
break;
-@@ -163,6 +160,7 @@
+@@ -163,6 +162,7 @@
{
TopoDS_Face face = TopoDS::Face(exp1.Current());
int facenr = geom.fmap.FindIndex(face);
if (face2solid[0][facenr-1] == 0)
face2solid[0][facenr-1] = solidnr;
-@@ -184,6 +182,9 @@
+@@ -184,6 +184,9 @@
int facenr = 0;
int edgenr = 0;
(*testout) << "faces = " << geom.fmap.Extent() << endl;
int curr = 0;
-@@ -232,6 +233,11 @@
+@@ -232,6 +235,11 @@
continue;
}
if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
geom.vmap.FindIndex(TopExp::LastVertex (edge)))
{
-@@ -276,8 +282,8 @@
+@@ -276,8 +284,8 @@
pnums.Last() = -1;
for (PointIndex pi = 1; pi < first_ep; pi++)
{
}
}
-@@ -287,7 +293,7 @@
+@@ -287,7 +295,7 @@
bool exists = 0;
int j;
for (j = first_ep; j <= mesh.GetNP(); j++)
{
exists = 1;
break;
-@@ -394,7 +400,7 @@
+@@ -394,7 +402,7 @@
int i, j, k;
int changed;
multithread.task = "Surface meshing";
geom.facemeshstatus = 0;
-@@ -751,7 +757,7 @@
+@@ -751,7 +759,7 @@
multithread.task = savetask;
}
{
double hret;
kappa *= mparam.curvaturesafety;
-@@ -779,7 +785,7 @@
+@@ -779,7 +787,7 @@
double nq = n*q;
Point<3> p = p0 + 0.5*n;
if (lambda >= 0 && lambda <= 1)
{
-@@ -799,55 +805,55 @@
+@@ -799,55 +807,55 @@
//(*testout) << "curvature " << curvature << endl;
-@@ -886,51 +892,47 @@
+@@ -886,51 +894,47 @@
pm1.SetX(0.5*(par0.X()+par2.X())); pm1.SetY(0.5*(par0.Y()+par2.Y()));
pm2.SetX(0.5*(par1.X()+par0.X())); pm2.SetY(0.5*(par1.Y()+par0.Y()));
(*testout) << pnt.X() << " " << pnt.Y() << " " << pnt.Z() << endl;
*/
}
-@@ -970,7 +972,7 @@
+@@ -970,7 +974,7 @@
if (mparam.uselocalh)
{
multithread.percent = 0;
mesh->SetLocalH (bb.PMin(), bb.PMax(), mparam.grading);
-@@ -1075,7 +1077,6 @@
+@@ -1075,7 +1079,6 @@
if (triangulation.IsNull()) continue;
BRepAdaptor_Surface sf(face, Standard_True);
int ntriangles = triangulation -> NbTriangles();
for (int j = 1; j <= ntriangles; j++)
-@@ -1096,7 +1097,7 @@
+@@ -1096,7 +1099,7 @@
maxside = max (maxside, p[1].Distance(p[2]));
//cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
//cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
}
}
-diff -Naur netgen-4.5.old/libsrc/occ/occgeom.cpp netgen-4.5.new/libsrc/occ/occgeom.cpp
---- netgen-4.5.old/libsrc/occ/occgeom.cpp 2006-01-25 13:35:50.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occgeom.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occgeom.cpp netgen-4.5_new/libsrc/occ/occgeom.cpp
+--- netgen-4.5_orig/libsrc/occ/occgeom.cpp 2006-01-25 16:35:50.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/occgeom.cpp 2010-06-23 12:38:22.000000000 +0400
@@ -7,6 +7,8 @@
#include "ShapeAnalysis_ShapeContents.hxx"
#include "ShapeAnalysis_CheckSmallFace.hxx"
return true;
}
-diff -Naur netgen-4.5.old/libsrc/occ/occgeom.hpp netgen-4.5.new/libsrc/occ/occgeom.hpp
---- netgen-4.5.old/libsrc/occ/occgeom.hpp 2006-01-25 13:35:50.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occgeom.hpp 2009-08-07 08:41:22.000000000 +0000
+@@ -1190,16 +1189,16 @@
+ return occgeo;
+ }
+
+- char * shapesname[] =
++ const char * shapesname[] =
+ {" ", "CompSolids", "Solids", "Shells",
+
+ "Faces", "Wires", "Edges", "Vertices"};
+
+- char * shapename[] =
++ const char * shapename[] =
+ {" ", "CompSolid", "Solid", "Shell",
+ "Face", "Wire", "Edge", "Vertex"};
+
+- char * orientationstring[] =
++ const char * orientationstring[] =
+ {"+", "-"};
+
+ void OCCGeometry :: RecursiveTopologyTree (const TopoDS_Shape & sh,
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occgeom.hpp netgen-4.5_new/libsrc/occ/occgeom.hpp
+--- netgen-4.5_orig/libsrc/occ/occgeom.hpp 2006-01-25 16:35:50.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/occgeom.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -15,8 +15,6 @@
#include "Geom_Curve.hxx"
#include "Geom2d_Curve.hxx"
OCCSurface GetSurface (int surfi)
{
cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
-diff -Naur netgen-4.5.old/libsrc/occ/occmeshsurf.cpp netgen-4.5.new/libsrc/occ/occmeshsurf.cpp
---- netgen-4.5.old/libsrc/occ/occmeshsurf.cpp 2006-01-25 13:36:26.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occmeshsurf.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occmeshsurf.cpp netgen-4.5_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-4.5_orig/libsrc/occ/occmeshsurf.cpp 2006-01-25 16:36:26.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/occmeshsurf.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -5,6 +5,8 @@
#include <occgeom.hpp>
#include <meshing.hpp>
-diff -Naur netgen-4.5.old/libsrc/occ/occmeshsurf.hpp netgen-4.5.new/libsrc/occ/occmeshsurf.hpp
---- netgen-4.5.old/libsrc/occ/occmeshsurf.hpp 2005-06-09 14:51:10.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/occmeshsurf.hpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/occmeshsurf.hpp netgen-4.5_new/libsrc/occ/occmeshsurf.hpp
+--- netgen-4.5_orig/libsrc/occ/occmeshsurf.hpp 2005-06-09 18:51:10.000000000 +0400
++++ netgen-4.5_new/libsrc/occ/occmeshsurf.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -151,7 +151,7 @@
MeshOptimize2dOCCSurfaces (const OCCGeometry & ageometry);
};
-diff -Naur netgen-4.5.old/libsrc/occ/utilities.h netgen-4.5.new/libsrc/occ/utilities.h
---- netgen-4.5.old/libsrc/occ/utilities.h 2005-02-11 11:35:43.000000000 +0000
-+++ netgen-4.5.new/libsrc/occ/utilities.h 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/occ/utilities.h netgen-4.5_new/libsrc/occ/utilities.h
+--- netgen-4.5_orig/libsrc/occ/utilities.h 2005-02-11 14:35:43.000000000 +0300
++++ netgen-4.5_new/libsrc/occ/utilities.h 2010-06-23 13:19:48.000000000 +0400
@@ -33,6 +33,7 @@
#include <string>
#include <cstdlib>
// #include "SALOME_Log.hxx"
-diff -Naur netgen-4.5.old/libsrc/stlgeom/meshstlsurface.cpp netgen-4.5.new/libsrc/stlgeom/meshstlsurface.cpp
---- netgen-4.5.old/libsrc/stlgeom/meshstlsurface.cpp 2006-01-11 16:08:20.000000000 +0000
-+++ netgen-4.5.new/libsrc/stlgeom/meshstlsurface.cpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/stlgeom/meshstlsurface.cpp netgen-4.5_new/libsrc/stlgeom/meshstlsurface.cpp
+--- netgen-4.5_orig/libsrc/stlgeom/meshstlsurface.cpp 2006-01-11 19:08:20.000000000 +0300
++++ netgen-4.5_new/libsrc/stlgeom/meshstlsurface.cpp 2010-06-23 13:19:48.000000000 +0400
@@ -946,20 +946,23 @@
}
void MeshOptimizeSTLSurface :: GetNormalVector(INDEX surfind, const Point3d & p, Vec3d & n) const
{
n = geom.GetChartNormalVector();
-diff -Naur netgen-4.5.old/libsrc/stlgeom/meshstlsurface.hpp netgen-4.5.new/libsrc/stlgeom/meshstlsurface.hpp
---- netgen-4.5.old/libsrc/stlgeom/meshstlsurface.hpp 2004-09-30 13:13:56.000000000 +0000
-+++ netgen-4.5.new/libsrc/stlgeom/meshstlsurface.hpp 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/stlgeom/meshstlsurface.hpp netgen-4.5_new/libsrc/stlgeom/meshstlsurface.hpp
+--- netgen-4.5_orig/libsrc/stlgeom/meshstlsurface.hpp 2004-09-30 17:13:56.000000000 +0400
++++ netgen-4.5_new/libsrc/stlgeom/meshstlsurface.hpp 2010-06-23 13:19:48.000000000 +0400
@@ -79,12 +79,10 @@
virtual void SelectSurfaceOfPoint (const Point3d & p,
const PointGeomInfo & gi);
virtual void GetNormalVector(INDEX surfind, const Point3d & p, Vec3d & n) const;
};
-diff -Naur netgen-4.5.old/makeForSalome.sh netgen-4.5.new/makeForSalome.sh
---- netgen-4.5.old/makeForSalome.sh 1970-01-01 00:00:00.000000000 +0000
-+++ netgen-4.5.new/makeForSalome.sh 2009-08-07 08:41:22.000000000 +0000
+diff -Naur --exclude=CVS netgen-4.5_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.5_new/libsrc/stlgeom/stlgeommesh.cpp
+--- netgen-4.5_orig/libsrc/stlgeom/stlgeommesh.cpp 2004-08-10 03:39:45.000000000 +0400
++++ netgen-4.5_new/libsrc/stlgeom/stlgeommesh.cpp 2010-06-23 12:39:38.000000000 +0400
+@@ -1437,7 +1437,7 @@
+
+ if (!optstring || strlen(optstring) == 0)
+ {
+- mparam.optimize2d = "smcm";
++ mparam.optimize2d = (char*)"smcm";
+ }
+ else
+ {
+@@ -1453,7 +1453,7 @@
+ mparam.grading);
+ mesh -> LoadLocalMeshSize (mparam.meshsizefilename);
+ mesh -> CalcLocalHFromSurfaceCurvature (stlparam.resthsurfmeshcurvfac);
+- mparam.optimize2d = "cmsmSm";
++ mparam.optimize2d = (char*)"cmsmSm";
+ STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
+ #ifdef STAT_STREAM
+ (*statout) << GetTime() << " & ";
+@@ -1559,7 +1559,7 @@
+
+ if (!optstring || strlen(optstring) == 0)
+ {
+- mparam.optimize3d = "cmdmstm";
++ mparam.optimize3d = (char*)"cmdmstm";
+ }
+ else
+ {
+diff -Naur --exclude=CVS netgen-4.5_orig/makeForSalome.sh netgen-4.5_new/makeForSalome.sh
+--- netgen-4.5_orig/makeForSalome.sh 1970-01-01 03:00:00.000000000 +0300
++++ netgen-4.5_new/makeForSalome.sh 2010-06-23 13:19:48.000000000 +0400
@@ -0,0 +1,35 @@
+#! /bin/sh
+cp ngtcltk/ngnewdelete.* libsrc/interface/
+fi
+
+cp libsrc/interface/nglib.h libsrc/general/*.hpp libsrc/csg/*.hpp libsrc/geom2d/*.hpp \
-+ libsrc/gprim/*.hpp libsrc/linalg/*.hpp libsrc/meshing/*.hpp \
-+ libsrc/occ/*.hpp libsrc/opti/*.hpp libsrc/include/mydefs.hpp \
-+ libsrc/stlgeom/*.hpp libsrc/include/mystdlib.h \
-+ install/include
++ libsrc/gprim/*.hpp libsrc/linalg/*.hpp libsrc/meshing/*.hpp \
++ libsrc/occ/*.hpp libsrc/opti/*.hpp libsrc/include/mydefs.hpp \
++ libsrc/stlgeom/*.hpp libsrc/include/mystdlib.h \
++ install/include
namespace netgen {
extern int OCCGenerateMesh (OCCGeometry&, Mesh*&, int, int, char*);
extern MeshingParameters mparam;
+ extern volatile multithreadt multithread;
}
using namespace nglib;
seg.si = faceID; // = geom.fmap.FindIndex (face);
seg.edgenr = ngMesh.GetNSeg() + 1; // segment id
ngMesh.AddSegment (seg);
+
+ netgen::Point3d ngP1(p1.node->X(), p1.node->Y(), p1.node->Z());
+ netgen::Point3d ngP2(p2.node->X(), p2.node->Y(), p2.node->Z());
+ ngMesh.RestrictLocalH( netgen::Center( ngP1,ngP2), Dist(ngP1,ngP2));
#ifdef DUMP_SEGMENTS
cout << "Segment: " << seg.edgenr << " on SMESH face " << helper.GetMeshDS()->ShapeToIndex( face ) << endl
<< "\tface index: " << seg.si << endl
return comment.empty() ? 0 : 1;
}
+namespace
+{
+ //================================================================================
+ /*!
+ * \brief Restrict size of elements on the given edge
+ */
+ //================================================================================
+
+ void setLocalSize(const TopoDS_Edge& edge,
+ double size,
+ netgen::Mesh& mesh)
+ {
+ const int nb = 1000;
+ Standard_Real u1, u2;
+ Handle(Geom_Curve) curve = BRep_Tool::Curve(edge, u1, u2);
+ Standard_Real delta = (u2-u1)/nb;
+ for(int i=0; i<nb; i++)
+ {
+ Standard_Real u = u1 + delta*i;
+ gp_Pnt p = curve->Value(u);
+ netgen::Point3d pi(p.X(), p.Y(), p.Z());
+ mesh.RestrictLocalH(pi, size);
+ double resultSize = mesh.GetH(pi);
+ if ( resultSize - size > 0.1*size )
+ // netgen does restriction iff oldH/newH > 1.2 (localh.cpp:136)
+ mesh.RestrictLocalH(pi, resultSize/1.201);
+ }
+ }
+
+ //================================================================================
+ /*!
+ * \brief Convert error into text
+ */
+ //================================================================================
+
+ std::string text(int err)
+ {
+ if ( !err )
+ return string("");
+ return
+ SMESH_Comment("Error in netgen::OCCGenerateMesh() at ") << netgen::multithread.task;
+ }
+
+ //================================================================================
+ /*!
+ * \brief Convert exception into text
+ */
+ //================================================================================
+
+ std::string text(Standard_Failure& ex)
+ {
+ SMESH_Comment str("Exception in netgen::OCCGenerateMesh()");
+ str << " at " << netgen::multithread.task
+ << ": " << ex.DynamicType()->Name();
+ if ( ex.GetMessageString() && strlen( ex.GetMessageString() ))
+ str << ": " << ex.GetMessageString();
+ return str;
+ }
+}
+
//=============================================================================
/*!
* Here we are going to use the NETGEN mesher
// vector of nodes in which node index == netgen ID
vector< const SMDS_MeshNode* > nodeVec;
- try
+
{
// ----------------
// compute 1D mesh
// ----------------
- // Pass 1D simple parameters to NETGEN
- if ( _simpleHyp ) {
- if ( int nbSeg = _simpleHyp->GetNumberOfSegments() ) {
+ if ( _simpleHyp )
+ {
+ // not to RestrictLocalH() according to curvature during MESHCONST_ANALYSE
+ mparams.uselocalh = false;
+ mparams.grading = 0.8; // not limitited size growth
+
+ if ( _simpleHyp->GetNumberOfSegments() )
// nb of segments
- mparams.segmentsperedge = nbSeg + 0.1;
mparams.maxh = occgeo.boundingbox.Diam();
- mparams.grading = 0.01;
- }
- else {
+ else
// segment length
- mparams.segmentsperedge = 1;
mparams.maxh = _simpleHyp->GetLocalLength();
- }
}
+
// Let netgen create ngMesh and calculate element size on not meshed shapes
char *optstr = 0;
int startWith = netgen::MESHCONST_ANALYSE;
int endWith = netgen::MESHCONST_ANALYSE;
- err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
- if (err) comment << "Error in netgen::OCCGenerateMesh() at MESHCONST_ANALYSE step";
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ comment << text(err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ if ( !ngMesh )
+ return false;
+ err = 1;
+ }
ngLib.setMesh(( Ng_Mesh*) ngMesh );
- // --------------------------------
- // Local size on vertices and edges
- // --------------------------------
-
- if ( ! _simpleHyp )
+ if ( _simpleHyp )
+ {
+ // Pass 1D simple parameters to NETGEN
+ // --------------------------------
+ int nbSeg = _simpleHyp->GetNumberOfSegments();
+ double segSize = _simpleHyp->GetLocalLength();
+ for ( int iE = 1; iE <= occgeo.emap.Extent(); ++iE )
{
- for(std::map<int,double>::const_iterator it=EdgeId2LocalSize.begin(); it!=EdgeId2LocalSize.end(); it++)
- {
- int key = (*it).first;
- double hi = (*it).second;
- const TopoDS_Shape& shape = ShapesWithLocalSize.FindKey(key);
- const TopoDS_Edge& e = TopoDS::Edge(shape);
- Standard_Real u1, u2;
- Handle(Geom_Curve) curve = BRep_Tool::Curve(e, u1, u2);
- GeomAdaptor_Curve AdaptCurve(curve);
- double length = GCPnts_AbscissaPoint::Length(AdaptCurve, u1, u2);
- int nb = length/hi;
- if(nb<2) nb=2;
- Standard_Real delta = (u2-u1)/nb;
- for(int i=0; i<nb; i++)
- {
- Standard_Real u = u1 + delta*i;
- gp_Pnt p = curve->Value(u);
- netgen::Point3d pi(p.X(), p.Y(), p.Z());
- ngMesh->RestrictLocalH(pi, hi);
- }
- }
- for(std::map<int,double>::const_iterator it=VertexId2LocalSize.begin(); it!=VertexId2LocalSize.end(); it++)
- {
- int key = (*it).first;
- double hi = (*it).second;
- const TopoDS_Shape& shape = ShapesWithLocalSize.FindKey(key);
- const TopoDS_Vertex& v = TopoDS::Vertex(shape);
- gp_Pnt p = BRep_Tool::Pnt(v);
- netgen::Point3d pi(p.X(), p.Y(), p.Z());
- ngMesh->RestrictLocalH(pi, hi);
- }
+ const TopoDS_Edge& e = TopoDS::Edge( occgeo.emap(iE));
+ if ( nbSeg )
+ segSize = SMESH_Algo::EdgeLength( e ) / ( nbSeg - 0.4 );
+ setLocalSize( e, segSize, *ngMesh );
+ }
+ }
+ else // if ( ! _simpleHyp )
+ {
+ // Local size on vertices and edges
+ // --------------------------------
+ for(std::map<int,double>::const_iterator it=EdgeId2LocalSize.begin(); it!=EdgeId2LocalSize.end(); it++)
+ {
+ int key = (*it).first;
+ double hi = (*it).second;
+ const TopoDS_Shape& shape = ShapesWithLocalSize.FindKey(key);
+ const TopoDS_Edge& e = TopoDS::Edge(shape);
+ setLocalSize( e, hi, *ngMesh );
+ }
+ for(std::map<int,double>::const_iterator it=VertexId2LocalSize.begin(); it!=VertexId2LocalSize.end(); it++)
+ {
+ int key = (*it).first;
+ double hi = (*it).second;
+ const TopoDS_Shape& shape = ShapesWithLocalSize.FindKey(key);
+ const TopoDS_Vertex& v = TopoDS::Vertex(shape);
+ gp_Pnt p = BRep_Tool::Pnt(v);
+ netgen::Point3d pi(p.X(), p.Y(), p.Z());
+ ngMesh->RestrictLocalH(pi, hi);
}
+ }
// Precompute internal edges (issue 0020676) in order to
// add mesh on them correctly (twice) to netgen mesh
// let netgen compute element size by the main geometry in temporary mesh
netgen::Mesh *tmpNgMesh = NULL;
- netgen::OCCGenerateMesh(occgeo, tmpNgMesh, startWith, endWith, optstr);
- // compute mesh on internal edges
- endWith = netgen::MESHCONST_MESHEDGES;
- err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, startWith, endWith, optstr);
- if (err) comment << "Error in netgen::OCCGenerateMesh() at meshing internal edges";
-
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ netgen::OCCGenerateMesh(occgeo, tmpNgMesh, startWith, endWith, optstr);
+ // compute mesh on internal edges
+ endWith = netgen::MESHCONST_MESHEDGES;
+ err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, startWith, endWith, optstr);
+ comment << text(err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ err = 1;
+ }
// fill SMESH by netgen mesh
vector< const SMDS_MeshNode* > tmpNodeVec;
FillSMesh( intOccgeo, *tmpNgMesh, initState, *_mesh, tmpNodeVec, comment );
- err = ( !comment.empty() );
+ err = ( err || !comment.empty() );
nglib::Ng_DeleteMesh((nglib::Ng_Mesh*)tmpNgMesh);
}
if (!err)
{
startWith = endWith = netgen::MESHCONST_MESHEDGES;
- err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
- if (err) comment << "Error in netgen::OCCGenerateMesh() at 1D mesh generation";
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ comment << text(err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ err = 1;
+ }
}
+ mparams.uselocalh = true; // restore as it is used at surface optimization
+
// ---------------------
// compute surface mesh
// ---------------------
initState = NETGENPlugin_ngMeshInfo(ngMesh);
}
- // Precompute internal faces (issue 0020676) in order to
- // add mesh on them correctly (twice to emulate the crack) to netgen mesh
- //if ( internals.hasInternalFaces() )
- // {
-// // fill SMESH with generated segments
-// FillSMesh( occgeo, *ngMesh, initState, *_mesh, nodeVec, comment );
-
-// // load internal shapes into a separate OCCGeometry
-// netgen::OCCGeometry intOccgeo;
-// list< SMESH_subMesh* > boundarySM;
-// internals.getInternalFaces( intOccgeo.fmap, intOccgeo.emap, meshedSM, boundarySM);
-// intOccgeo.boundingbox = occgeo.boundingbox;
-// intOccgeo.shape = occgeo.shape;
-// intOccgeo.facemeshstatus.SetSize (intOccgeo.fmap.Extent());
-// intOccgeo.facemeshstatus = 0;
-
-// // let netgen compute element size by the main geometry in temporary mesh
-// int start = netgen::MESHCONST_ANALYSE, end = netgen::MESHCONST_ANALYSE;
-// netgen::Mesh *tmpNgMesh = NULL;
-// netgen::OCCGenerateMesh(occgeo, tmpNgMesh, start, end, optstr);
-
-// // add already computed elements from submeshes of internal faces to tmpNgMesh
-// vector< const SMDS_MeshNode* > tmpNodeVec;
-// fillNgMesh(intOccgeo, *tmpNgMesh, tmpNodeVec, boundarySM);
-// addIntVerticesInFaces( intOccgeo, *tmpNgMesh, tmpNodeVec, internals );
-
-// // compute mesh on internal faces
-// NETGENPlugin_ngMeshInfo prevState(tmpNgMesh);
-// start = netgen::MESHCONST_MESHEDGES;
-// end = netgen::MESHCONST_MESHSURFACE;
-// err = netgen::OCCGenerateMesh(intOccgeo, tmpNgMesh, start, end, optstr);
-// if (err) comment << "Error in netgen::OCCGenerateMesh() at meshing internal faces";
-
-// // fill SMESH with computed elements
-// FillSMesh( intOccgeo, *tmpNgMesh, prevState, *_mesh, tmpNodeVec, comment );
-// err = ( !comment.empty() );
-
-// // finally, correctly add elements on internal faces to netgen mesh
-// err = ! fillNgMesh(occgeo, *ngMesh, nodeVec, meshedSM);
-// initState = NETGENPlugin_ngMeshInfo(ngMesh);
-
-// nglib::Ng_DeleteMesh((nglib::Ng_Mesh*)tmpNgMesh);
-// }
-
// Let netgen compute 2D mesh
startWith = netgen::MESHCONST_MESHSURFACE;
endWith = _optimize ? netgen::MESHCONST_OPTSURFACE : netgen::MESHCONST_MESHSURFACE;
- err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
- if (err) comment << "Error in netgen::OCCGenerateMesh() at surface mesh generation";
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ comment << text (err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ err = 1;
+ }
+ catch (netgen::NgException exc)
+ {
+ error->myName = err = COMPERR_ALGO_FAILED;
+ comment << exc.What();
+ }
}
// ---------------------
// generate volume mesh
// length from faces
mparams.maxh = ngMesh->AverageH();
}
-// netgen::ARRAY<double> maxhdom;
-// maxhdom.SetSize (occgeo.NrSolids());
-// maxhdom = mparams.maxh;
-// ngMesh->SetMaxHDomain (maxhdom);
ngMesh->SetGlobalH (mparams.maxh);
mparams.grading = 0.4;
ngMesh->CalcLocalH();
initState = NETGENPlugin_ngMeshInfo(ngMesh);
}
// Let netgen compute 3D mesh
- startWith = netgen::MESHCONST_MESHVOLUME;
- endWith = _optimize ? netgen::MESHCONST_OPTVOLUME : netgen::MESHCONST_MESHVOLUME;
- err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
- if (err) comment << "Error in netgen::OCCGenerateMesh()";
+ startWith = endWith = netgen::MESHCONST_MESHVOLUME;
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ comment << text(err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ err = 1;
+ }
+ catch (netgen::NgException exc)
+ {
+ error->myName = err = COMPERR_ALGO_FAILED;
+ comment << exc.What();
+ }
+ // Let netgen optimize 3D mesh
+ if ( !err && _optimize )
+ {
+ startWith = endWith = netgen::MESHCONST_OPTVOLUME;
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ comment << text(err);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << text(ex);
+ err = 1;
+ }
+ catch (netgen::NgException exc)
+ {
+ error->myName = err = COMPERR_ALGO_FAILED;
+ comment << exc.What();
+ }
+ }
}
if (!err && mparams.secondorder > 0)
{
- netgen::OCCRefinementSurfaces ref (occgeo);
- ref.MakeSecondOrder (*ngMesh);
+ try
+ {
+ OCC_CATCH_SIGNALS;
+ netgen::OCCRefinementSurfaces ref (occgeo);
+ ref.MakeSecondOrder (*ngMesh);
+ }
+ catch (Standard_Failure& ex)
+ {
+ comment << "Exception in netgen at passing to 2nd order ";
+ err = 1;
+ }
+ catch (netgen::NgException exc)
+ {
+ error->myName = err = COMPERR_ALGO_FAILED;
+ comment << exc.What();
+ }
}
}
- catch (netgen::NgException exc)
- {
- error->myName = err = COMPERR_ALGO_FAILED;
- comment << exc.What();
- }
-
int nbNod = ngMesh->GetNP();
int nbSeg = ngMesh->GetNSeg();
int nbFac = ngMesh->GetNSE();
bool isOK = ( !err && (_isVolume ? (nbVol > 0) : (nbFac > 0)) );
MESSAGE((err ? "Mesh Generation failure" : "End of Mesh Generation") <<
- ", nb nodes: " << nbNod <<
+ ", nb nodes: " << nbNod <<
", nb segments: " << nbSeg <<
- ", nb faces: " << nbFac <<
- ", nb volumes: " << nbVol);
+ ", nb faces: " << nbFac <<
+ ", nb volumes: " << nbVol);
// ------------------------------------------------------------
// Feed back the SMESHDS with the generated Nodes and Elements
aVec[SMDSEntity_Quad_Triangle] = nbFaces;
}
else {
- aVec[SMDSEntity_Node] = nbNodes;
+ aVec[SMDSEntity_Node] = Max ( nbNodes, 0 );
aVec[SMDSEntity_Triangle] = nbFaces;
}
aResMap[sm].swap(aVec);
{
StdMeshers_FaceSidePtr wire = wires[ iW ];
if ( wire->MissVertexNode() )
- return TError
- (new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH, "Missing nodes on vertices"));
-
+ {
+ // Commented for issue 0020960. It worked for the case, let's wait for case where it doesn't.
+ // It seems that there is no reason for this limitation
+// return TError
+// (new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH, "Missing nodes on vertices"));
+ if (getenv("USER") && string("eap")==getenv("USER"))
+ cout << "Warning: NETGENPlugin_NETGEN_2D_ONLY : try to work with missing nodes on vertices"<<endl;
+ }
const vector<UVPtStruct>& uvPtVec = wire->GetUVPtStruct();
if ( uvPtVec.size() != wire->NbPoints() )
return TError
if ( !isTraingle )
{
// use adaptor to convert quadrangle face into triangles
- const list<const SMDS_FaceOfNodes*>* faces = Adaptor.GetTriangles(elem);
+ const list<const SMDS_MeshFace*>* faces = Adaptor.GetTriangles(elem);
if(faces==0)
return error( COMPERR_BAD_INPUT_MESH,
SMESH_Comment("No triangles in adaptor for element ")<<elem->GetID());
_quadraticMesh = true;
StdMeshers_QuadToTriaAdaptor Adaptor;
- Adaptor.Compute(aMesh);
+ if ( aMesh.NbQuadrangles() > 0 )
+ Adaptor.Compute(aMesh);
- SMDS_FaceIteratorPtr fIt = MeshDS->facesIterator();
- TIDSortedElemSet sortedFaces; // 0020279: control the "random" use when using mesh algorithms
- while( fIt->more()) sortedFaces.insert( fIt->next() );
-
- TIDSortedElemSet::iterator itFace = sortedFaces.begin(), fEnd = sortedFaces.end();
- for ( ; itFace != fEnd; ++itFace )
+ SMDS_FaceIteratorPtr fIt = MeshDS->facesIterator(/*idInceasingOrder=*/true);
+ while( fIt->more())
{
// check element
- const SMDS_MeshElement* elem = *itFace;
+ const SMDS_MeshElement* elem = fIt->next();
if ( !elem )
return error( COMPERR_BAD_INPUT_MESH, "Null element encounters");
vector< const SMDS_MeshElement* > trias;
- bool isTraingle = ( elem->NbNodes() == ( elem->IsQuadratic() ? 6 : 3 ));
+ bool isTraingle = ( elem->NbCornerNodes() == 3 );
if ( !isTraingle ) {
// using adaptor
- const list<const SMDS_FaceOfNodes*>* faces = Adaptor.GetTriangles(elem);
+ const list<const SMDS_MeshFace*>* faces = Adaptor.GetTriangles(elem);
if(faces==0)
continue; // Issue 0020682. There already can be 3d mesh
trias.assign( faces->begin(), faces->end() );
Ng_AddSurfaceElement(Netgen_mesh, NG_TRIG, Netgen_triangle);
}
+ // vector of nodes in which node index == netgen ID
+ vector< const SMDS_MeshNode* > nodeVec ( nodeToNetgenID.size() + 1 );
+ // insert old nodes into nodeVec
+ for ( n_id = nodeToNetgenID.begin(); n_id != nodeToNetgenID.end(); ++n_id )
+ nodeVec.at( n_id->second ) = n_id->first;
+ nodeToNetgenID.clear();
+
// -------------------------
// Generate the volume mesh
// -------------------------
status = NG_VOLUME_FAILURE;
}
catch (...) {
- error("Bad mesh input!!!");
+ error("Exception in Ng_GenerateVolumeMesh()");
status = NG_VOLUME_FAILURE;
}
if ( GetComputeError()->IsOK() ) {
- error( status, "Bad mesh input!!!");
+ switch ( status ) {
+ case NG_SURFACE_INPUT_ERROR:error( status, "NG_SURFACE_INPUT_ERROR");
+ case NG_VOLUME_FAILURE: error( status, "NG_VOLUME_FAILURE");
+ case NG_STL_INPUT_ERROR: error( status, "NG_STL_INPUT_ERROR");
+ case NG_SURFACE_FAILURE: error( status, "NG_SURFACE_FAILURE");
+ case NG_FILE_NOT_FOUND: error( status, "NG_FILE_NOT_FOUND");
+ };
}
int Netgen_NbOfNodesNew = Ng_GetNP(Netgen_mesh);
// Feed back the SMESHDS with the generated Nodes and Volume Elements
// -------------------------------------------------------------------
+ if ( status == NG_VOLUME_FAILURE )
+ {
+ SMESH_ComputeErrorPtr err = NETGENPlugin_Mesher::readErrors(nodeVec);
+ if ( err && !err->myBadElements.empty() )
+ error( err );
+ }
+
bool isOK = ( Netgen_NbOfTetra > 0 );// get whatever built
if ( isOK )
{
- // vector of nodes in which node index == netgen ID
- vector< const SMDS_MeshNode* > nodeVec ( Netgen_NbOfNodesNew + 1 );
- // insert old nodes into nodeVec
- for ( n_id = nodeToNetgenID.begin(); n_id != nodeToNetgenID.end(); ++n_id ) {
- nodeVec.at( n_id->second ) = n_id->first;
- }
// create and insert new nodes into nodeVec
+ nodeVec.resize( Netgen_NbOfNodesNew + 1 );
int nodeIndex = Netgen_NbOfNodes + 1;
for ( ; nodeIndex <= Netgen_NbOfNodesNew; ++nodeIndex )
{
Ng_GetPoint( Netgen_mesh, nodeIndex, Netgen_point );
- SMDS_MeshNode * node = aHelper->AddNode(Netgen_point[0],
- Netgen_point[1],
- Netgen_point[2]);
- nodeVec.at(nodeIndex) = node;
+ nodeVec.at(nodeIndex) = aHelper->AddNode(Netgen_point[0],Netgen_point[1],Netgen_point[2]);
}
// create tetrahedrons