+++ /dev/null
-#
-# PLEASE DO NOT MODIFY configure.in FILE
-#
-# ALL CHANGES WILL BE DISCARDED BY THE NEXT
-# build_configure COMMAND
-#
-# CHANGES MUST BE MADE IN configure.in.base FILE
-#
-#
-# Author : Marc Tajchman (CEA)
-# Date : 28/06/2001
-# Modified by : Patrick GOLDBRONN (CEA)
-# Modified by : Marc Tajchman (CEA)
-#
-# Created from configure.in.base
-#
-
-AC_INIT(src)
-AC_CONFIG_AUX_DIR(${KERNEL_ROOT_DIR}/salome_adm/unix/config_files)
-AC_CANONICAL_HOST
-
-PACKAGE=salome
-AC_SUBST(PACKAGE)
-
-VERSION=4.0.0
-XVERSION=0x040000
-AC_SUBST(VERSION)
-AC_SUBST(XVERSION)
-
-# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
-MODULE_NAME=netgenplugin
-AC_SUBST(MODULE_NAME)
-
-dnl
-dnl Initialize source and build root directories
-dnl
-
-ROOT_BUILDDIR=`pwd`
-ROOT_SRCDIR=`echo $0 | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
-cd $ROOT_SRCDIR
-ROOT_SRCDIR=`pwd`
-cd $ROOT_BUILDDIR
-
-AC_SUBST(ROOT_SRCDIR)
-AC_SUBST(ROOT_BUILDDIR)
-
-echo
-echo Source root directory : $ROOT_SRCDIR
-echo Build root directory : $ROOT_BUILDDIR
-echo
-echo
-
-if test -z "$AR"; then
- AC_CHECK_PROGS(AR,ar xar,:,$PATH)
-fi
-AC_SUBST(AR)
-
-dnl Export the AR macro so that it will be placed in the libtool file
-dnl correctly.
-export AR
-
-echo
-echo ---------------------------------------------
-echo testing make
-echo ---------------------------------------------
-echo
-
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-dnl
-dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
-
-AC_ENABLE_DEBUG(yes)
-AC_DISABLE_PRODUCTION
-
-echo ---------------------------------------------
-echo testing libtool
-echo ---------------------------------------------
-
-dnl first, we set static to no!
-dnl if we want it, use --enable-static
-AC_ENABLE_STATIC(no)
-
-AC_LIBTOOL_DLOPEN
-AC_PROG_LIBTOOL
-
-dnl Fix up the INSTALL macro if it s a relative path. We want the
-dnl full-path to the binary instead.
-case "$INSTALL" in
- *install-sh*)
- INSTALL='\${KERNEL_ROOT_DIR}'/salome_adm/unix/config_files/install-sh
- ;;
-esac
-
-echo
-echo ---------------------------------------------
-echo testing C/C++
-echo ---------------------------------------------
-echo
-
-cc_ok=no
-dnl inutil car libtool
-dnl AC_PROG_CC
-AC_PROG_CXX
-AC_DEPEND_FLAG
-# AC_CC_WARNINGS([ansi])
-cc_ok=yes
-
-dnl Library libdl :
-AC_CHECK_LIB(dl,dlopen)
-
-dnl add library libm :
-AC_CHECK_LIB(m,ceil)
-
-dnl
-dnl Well we use sstream which is not in gcc pre-2.95.3
-dnl We must test if it exists. If not, add it in include !
-dnl
-
-AC_CXX_HAVE_SSTREAM
-
-echo
-echo ---------------------------------------------
-echo BOOST Library
-echo ---------------------------------------------
-echo
-
-CHECK_BOOST
-
-dnl
-dnl ---------------------------------------------
-dnl testing MPICH
-dnl ---------------------------------------------
-dnl
-
-CHECK_MPICH
-
-echo
-echo ---------------------------------------------
-echo testing LEX \& YACC
-echo ---------------------------------------------
-echo
-
-lex_yacc_ok=no
-AC_PROG_YACC
-AC_PROG_LEX
-lex_yacc_ok=yes
-
-echo
-echo ---------------------------------------------
-echo testing python
-echo ---------------------------------------------
-echo
-
-CHECK_PYTHON
-
-dnl echo
-dnl echo ---------------------------------------------
-dnl echo testing java
-dnl echo ---------------------------------------------
-dnl echo
-
-dnl CHECK_JAVA
-
-echo
-echo ---------------------------------------------
-echo testing swig
-echo ---------------------------------------------
-echo
-
-CHECK_SWIG
-
-echo
-echo ---------------------------------------------
-echo testing threads
-echo ---------------------------------------------
-echo
-
-ENABLE_PTHREADS
-
-echo
-echo ---------------------------------------------
-echo testing omniORB
-echo ---------------------------------------------
-echo
-
-CHECK_OMNIORB
-
-dnl echo
-dnl echo ---------------------------------------------
-dnl echo testing mico
-dnl echo ---------------------------------------------
-dnl echo
-
-dnl CHECK_MICO
-
-echo
-echo ---------------------------------------------
-echo default ORB : omniORB
-echo ---------------------------------------------
-echo
-
-DEFAULT_ORB=omniORB
-CHECK_CORBA
-
-AC_SUBST_FILE(CORBA)
-corba=make_$ORB
-CORBA=adm_local/unix/$corba
-
-echo
-echo ---------------------------------------------
-echo testing openGL
-echo ---------------------------------------------
-echo
-
-CHECK_OPENGL
-
-echo
-echo ---------------------------------------------
-echo testing QT
-echo ---------------------------------------------
-echo
-
-CHECK_QT
-
-echo
-echo ---------------------------------------------
-echo testing MSG2QM
-echo ---------------------------------------------
-echo
-
-CHECK_MSG2QM
-
-echo
-echo ---------------------------------------------
-echo testing VTK
-echo ---------------------------------------------
-echo
-
-CHECK_VTK
-
-echo
-echo ---------------------------------------------
-echo testing HDF5
-echo ---------------------------------------------
-echo
-
-CHECK_HDF5
-
-echo
-echo ---------------------------------------------
-echo Testing OpenCascade
-echo ---------------------------------------------
-echo
-
-CHECK_CAS
-
-echo
-echo ---------------------------------------------
-echo Testing html generators
-echo ---------------------------------------------
-echo
-
-CHECK_HTML_GENERATORS
-
-echo
-echo ---------------------------------------------
-echo Testing GUI
-echo ---------------------------------------------
-echo
-
-CHECK_SALOME_GUI
-
-echo
-echo ---------------------------------------------
-echo Testing full GUI
-echo ---------------------------------------------
-echo
-
-CHECK_CORBA_IN_GUI
-if test "x${CORBA_IN_GUI}" != "xyes"; then
- echo "failed : For configure NETGENPLUGIN module necessary full GUI !"
- exit
-fi
-
-echo
-echo ---------------------------------------------
-echo Testing Kernel
-echo ---------------------------------------------
-echo
-
-CHECK_KERNEL
-
-echo
-echo ---------------------------------------------
-echo Testing Geom
-echo ---------------------------------------------
-echo
-
-CHECK_GEOM
-
-# echo
-# echo ---------------------------------------------
-# echo Testing Med
-# echo ---------------------------------------------
-# echo
-#
-# CHECK_MED
-
-echo
-echo ---------------------------------------------
-echo Testing Netgen
-echo ---------------------------------------------
-echo
-
-CHECK_NETGEN
-
-echo
-echo ---------------------------------------------
-echo Testing SMesh
-echo ---------------------------------------------
-echo
-
-CHECK_SMESH
-
-echo
-echo ---------------------------------------------
-echo Summary
-echo ---------------------------------------------
-echo
-
-echo Configure
-variables="cc_ok boost_ok lex_yacc_ok python_ok swig_ok threads_ok OpenGL_ok qt_ok vtk_ok hdf5_ok omniORB_ok occ_ok doxygen_ok graphviz_ok Kernel_ok Geom_ok SMesh_ok Netgen_ok"
-
-for var in $variables
-do
- printf " %10s : " `echo \$var | sed -e "s,_ok,,"`
- eval echo \$$var
-done
-
-echo
-echo "Default ORB : $DEFAULT_ORB"
-echo
-
-dnl generals files which could be included in every makefile
-
-AC_SUBST_FILE(COMMENCE) COMMENCE=adm_local/unix/make_commence
-AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
-AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
-
-dnl les dependences
-AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
-
-dnl We don t need to say when we re entering directories if we re using
-dnl GNU make becuase make does it for us.
-if test "X$GMAKE" = "Xyes"; then
- AC_SUBST(SETX) SETX=":"
-else
- AC_SUBST(SETX) SETX="set -x"
-fi
-
-# make other build directories
-for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources/${MODULE_NAME} idl
-do
-# if test ! -d $rep ; then
-# eval mkdir $rep
-# fi
- $INSTALL -d $rep
-done
-
-echo
-echo ---------------------------------------------
-echo copying resource files, shell scripts, and
-echo xml files
-echo ---------------------------------------------
-echo
-
-
-dnl copy resources directories
-
-#for i in `find $ROOT_SRCDIR -name 'resources' -print`
-#do
-# local_res=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-# local_res_dir=`echo $local_res | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
-# mkdir -p $local_res_dir
-# cd $local_res_dir
-# ln -fs $i
-# echo $local_res
-# cd $ROOT_BUILDDIR
-#done
-
-dnl copy shells and utilities contained in the bin directory
-dnl excluding .in files (treated in AC-OUTPUT below) and CVS
-dnl directory
-
-#mkdir -p bin/salome
-#cd bin/salome
-#for i in $ROOT_SRCDIR/bin/*
-#do
-# local_bin=`echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-# case "$local_bin" in
-# *.in | *~) ;;
-# ./bin/CVS | ./bin/salome) ;;
-# *) /usr/bin/install -C $i .; echo $local_bin ;;
-# esac
-#done
-#cd $ROOT_BUILDDIR
-
-AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
-
-dnl copy xml files to the build tree (lib directory)
-dnl pourquoi ????
-
-#cd lib
-#for i in `find $ROOT_SRCDIR -name "*.xml" -print`
-#do
-# ln -fs $i
-# echo `echo $i | sed -e "s,$ROOT_SRCDIR,.,"`
-#done
-#cd $ROOT_BUILDDIR
-
-
-echo
-echo ---------------------------------------------
-echo generating Makefiles and configure files
-echo ---------------------------------------------
-echo
-
-#AC_OUTPUT_COMMANDS([ \
-# chmod +x ./bin/* \
-#])
-
-## do not delete this line
#include "NETGENPlugin_Mesher.hxx"
#include "NETGENPlugin_Hypothesis_2D.hxx"
+#include <SMESH_Mesh.hxx>
+#include <SMESH_Comment.hxx>
+#include <SMESH_subMesh.hxx>
#include <SMESHDS_Mesh.hxx>
#include <SMDS_MeshElement.hxx>
#include <SMDS_MeshNode.hxx>
*/
//=============================================================================
-NETGENPlugin_Mesher::NETGENPlugin_Mesher (SMESHDS_Mesh* meshDS,
+NETGENPlugin_Mesher::NETGENPlugin_Mesher (SMESH_Mesh* mesh,
const TopoDS_Shape& aShape,
const bool isVolume)
- : _meshDS (meshDS),
+ : _mesh (mesh),
_shape (aShape),
_isVolume(isVolume),
_optimize(true)
" second order = " << mparams.secondorder << "\n"
" quad allowed = " << mparams.quad);
+ SMESH_ComputeErrorPtr error = SMESH_ComputeError::New();
nglib::Ng_Init();
// -------------------------
char *optstr = 0;
int err = 0;
+ SMESH_Comment comment;
try
{
err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ if (err) comment << "Error in netgen::OCCGenerateMesh()";
if (!err && !_optimize)
{
// we have got surface mesh only, so generate volume mesh
startWith = endWith = netgen::MESHCONST_MESHVOLUME;
err = netgen::OCCGenerateMesh(occgeo, ngMesh, startWith, endWith, optstr);
+ if (err) comment << "Error in netgen::OCCGenerateMesh()";
}
if (!err && mparams.secondorder > 0)
{
}
catch (netgen::NgException exc)
{
- MESSAGE ("Exception in NETGEN: " << exc.What());
- err = 1;
+ error->myName = err = COMPERR_ALGO_FAILED;
+ comment << exc.What();
}
int nbNod = ngMesh->GetNP();
// Feed back the SMESHDS with the generated Nodes and Elements
// -----------------------------------------------------------
+ SMESHDS_Mesh* meshDS = _mesh->GetMeshDS();
bool isOK = ( !err && (_isVolume ? (nbVol > 0) : (nbFac > 0)) );
- if ( isOK )
+ if ( true /*isOK*/ ) // get whatever built
{
// vector of nodes in which node index == netgen ID
vector< SMDS_MeshNode* > nodeVec ( nbNod + 1 );
NCollection_Map<int> pindMap;
// create and insert nodes into nodeVec
int i;
- for (i = 1; i <= nbNod && isOK; ++i )
+ for (i = 1; i <= nbNod /*&& isOK*/; ++i )
{
const netgen::MeshPoint& ngPoint = ngMesh->Point(i);
SMDS_MeshNode* node = NULL;
{
// point on vertex
aVert = TopoDS::Vertex(occgeo.vmap(i));
- SMESHDS_SubMesh * submesh = _meshDS->MeshElements(aVert);
+ SMESHDS_SubMesh * submesh = meshDS->MeshElements(aVert);
if (submesh)
{
SMDS_NodeIteratorPtr it = submesh->GetNodes();
newNodeOnVertex = true;
}
if (!node)
- node = _meshDS->AddNode(ngPoint.X(), ngPoint.Y(), ngPoint.Z());
+ node = meshDS->AddNode(ngPoint.X(), ngPoint.Y(), ngPoint.Z());
if (!node)
{
MESSAGE("Cannot create a mesh node");
- isOK = false;
+ if ( !comment.size() ) comment << "Cannot create a mesh node";
+ nbSeg = nbFac = nbVol = isOK = 0;
break;
}
nodeVec.at(i) = node;
if (newNodeOnVertex)
{
// point on vertex
- _meshDS->SetNodeOnVertex(node, aVert);
+ meshDS->SetNodeOnVertex(node, aVert);
pindMap.Add(i);
}
}
// create mesh segments along geometric edges
NCollection_Map<Link> linkMap;
- for (i = 1; i <= nbSeg && isOK; ++i )
+ for (i = 1; i <= nbSeg/* && isOK*/; ++i )
{
const netgen::Segment& seg = ngMesh->LineSegment(i);
Link link(seg.p1, seg.p2);
continue;
if (!aEdge.IsNull())
{
- _meshDS->SetNodeOnEdge(nodeVec.at(pind), aEdge, param);
+ meshDS->SetNodeOnEdge(nodeVec.at(pind), aEdge, param);
pindMap.Add(pind);
}
}
SMDS_MeshEdge* edge;
if (nbp < 3) // second order ?
- edge = _meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]));
+ edge = meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]));
else
- edge = _meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]),
+ edge = meshDS->AddEdge(nodeVec.at(pinds[0]), nodeVec.at(pinds[1]),
nodeVec.at(pinds[2]));
if (!edge)
{
+ if ( !comment.size() ) comment << "Cannot create a mesh edge";
MESSAGE("Cannot create a mesh edge");
- isOK = false;
+ nbSeg = nbFac = nbVol = isOK = 0;
break;
}
if (!aEdge.IsNull())
- _meshDS->SetMeshElementOnShape(edge, aEdge);
+ meshDS->SetMeshElementOnShape(edge, aEdge);
}
// create mesh faces along geometric faces
- for (i = 1; i <= nbFac && isOK; ++i )
+ for (i = 1; i <= nbFac/* && isOK*/; ++i )
{
const netgen::Element2d& elem = ngMesh->SurfaceElement(i);
int aGeomFaceInd = elem.GetIndex();
if (!aFace.IsNull())
{
const netgen::PointGeomInfo& pgi = elem.GeomInfoPi(j);
- _meshDS->SetNodeOnFace(node, aFace, pgi.u, pgi.v);
+ meshDS->SetNodeOnFace(node, aFace, pgi.u, pgi.v);
pindMap.Add(pind);
}
}
switch (elem.GetType())
{
case netgen::TRIG:
- face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2]);
+ face = meshDS->AddFace(nodes[0],nodes[1],nodes[2]);
break;
case netgen::QUAD:
- face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3]);
+ face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3]);
break;
case netgen::TRIG6:
- face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[5],nodes[3],nodes[4]);
+ face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[5],nodes[3],nodes[4]);
break;
case netgen::QUAD8:
- face = _meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3],
+ face = meshDS->AddFace(nodes[0],nodes[1],nodes[2],nodes[3],
nodes[4],nodes[7],nodes[5],nodes[6]);
break;
default:
}
if (!face)
{
+ if ( !comment.size() ) comment << "Cannot create a mesh face";
MESSAGE("Cannot create a mesh face");
- isOK = false;
+ nbSeg = nbFac = nbVol = isOK = 0;
break;
}
if (!aFace.IsNull())
- _meshDS->SetMeshElementOnShape(face, aFace);
+ meshDS->SetMeshElementOnShape(face, aFace);
}
// create tetrahedra
- for (i = 1; i <= nbVol && isOK; ++i)
+ for (i = 1; i <= nbVol/* && isOK*/; ++i)
{
const netgen::Element& elem = ngMesh->VolumeElement(i);
int aSolidInd = elem.GetIndex();
if (!aSolid.IsNull())
{
// point in solid
- _meshDS->SetNodeInVolume(node, aSolid);
+ meshDS->SetNodeInVolume(node, aSolid);
pindMap.Add(pind);
}
}
switch (elem.GetType())
{
case netgen::TET:
- vol = _meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3]);
+ vol = meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3]);
break;
case netgen::TET10:
- vol = _meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3],
- nodes[4],nodes[7],nodes[5],nodes[6],nodes[8],nodes[9]);
+ vol = meshDS->AddVolume(nodes[0],nodes[1],nodes[2],nodes[3],
+ nodes[4],nodes[7],nodes[5],nodes[6],nodes[8],nodes[9]);
break;
default:
MESSAGE("NETGEN created a volume of unexpected type, ignoring");
}
if (!vol)
{
+ if ( !comment.size() ) comment << "Cannot create a mesh volume";
MESSAGE("Cannot create a mesh volume");
- isOK = false;
+ nbSeg = nbFac = nbVol = isOK = 0;
break;
}
if (!aSolid.IsNull())
- _meshDS->SetMeshElementOnShape(vol, aSolid);
+ meshDS->SetMeshElementOnShape(vol, aSolid);
+ }
+ }
+
+ if ( error->IsOK() && ( !isOK || comment.size() > 0 ))
+ error->myName = COMPERR_ALGO_FAILED;
+ if ( !comment.empty() )
+ error->myComment = comment;
+
+ // set bad compute error to subshapes of all failed subshapes shapes
+ if ( !error->IsOK() && err )
+ {
+ for (int i = 1; i <= occgeo.fmap.Extent(); i++) {
+ int status = occgeo.facemeshstatus[i-1];
+ if (status == 1 ) continue;
+ if ( SMESH_subMesh* sm = _mesh->GetSubMeshContaining( occgeo.fmap( i ))) {
+ SMESH_ComputeErrorPtr& smError = sm->GetComputeError();
+ if ( !smError || smError->IsOK() ) {
+ if ( status == -1 )
+ smError.reset( new SMESH_ComputeError( error->myName, error->myComment ));
+ else
+ smError.reset( new SMESH_ComputeError( COMPERR_ALGO_FAILED, "Ignored" ));
+ }
+ }
}
}
nglib::Ng_DeleteMesh((nglib::Ng_Mesh*)ngMesh);
nglib::Ng_Exit();
- return isOK;
+ return error->IsOK();
}
#include "NETGENPlugin_Defs.hxx"
+#include "SMESH_ComputeError.hxx"
+
+class SMESH_Mesh;
class SMESHDS_Mesh;
class TopoDS_Shape;
class NETGENPlugin_Hypothesis;
public:
// ---------- PUBLIC METHODS ----------
- NETGENPlugin_Mesher (SMESHDS_Mesh* meshDS, const TopoDS_Shape& aShape,
+ NETGENPlugin_Mesher (SMESH_Mesh* mesh, const TopoDS_Shape& aShape,
const bool isVolume);
void SetParameters(const NETGENPlugin_Hypothesis* hyp);
bool Compute();
private:
- SMESHDS_Mesh* _meshDS;
+ SMESH_Mesh* _mesh;
const TopoDS_Shape& _shape;
bool _isVolume;
bool _optimize;
bool NETGENPlugin_NETGEN_2D::Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape)
{
- SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
+ //SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
- NETGENPlugin_Mesher mesher(meshDS, aShape, false);
+ NETGENPlugin_Mesher mesher(&aMesh, aShape, false);
+// NETGENPlugin_Mesher mesher(meshDS, aShape, false);
mesher.SetParameters(_hypothesis);
return mesher.Compute();
}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & NETGENPlugin_NETGEN_2D::SaveTo(ostream & save)
-{
- return save;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & NETGENPlugin_NETGEN_2D::LoadFrom(istream & load)
-{
- return load;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D & hyp)
-{
- return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D & hyp)
-{
- return hyp.LoadFrom( load );
-}
virtual bool Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape);
- ostream & SaveTo(ostream & save);
- istream & LoadFrom(istream & load);
- friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D & hyp);
- friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D & hyp);
-
protected:
const NETGENPlugin_Hypothesis_2D* _hypothesis;
};
bool NETGENPlugin_NETGEN_2D3D::Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape)
{
- SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
+// SMESHDS_Mesh* meshDS = aMesh.GetMeshDS();
- NETGENPlugin_Mesher mesher(meshDS, aShape, true);
+ NETGENPlugin_Mesher mesher(&aMesh, aShape, true);
+// NETGENPlugin_Mesher mesher(meshDS, aShape, true);
mesher.SetParameters(_hypothesis);
return mesher.Compute();
}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & NETGENPlugin_NETGEN_2D3D::SaveTo(ostream & save)
-{
- return save;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & NETGENPlugin_NETGEN_2D3D::LoadFrom(istream & load)
-{
- return load;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D3D & hyp)
-{
- return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D3D & hyp)
-{
- return hyp.LoadFrom( load );
-}
virtual bool Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape);
- ostream & SaveTo(ostream & save);
- istream & LoadFrom(istream & load);
- friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_2D3D & hyp);
- friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_2D3D & hyp);
-
protected:
const NETGENPlugin_Hypothesis* _hypothesis;
};
//=============================================================================
#include "NETGENPlugin_NETGEN_3D.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_ControlsDef.hxx"
-#include "SMESHDS_Mesh.hxx"
#include "SMDS_MeshElement.hxx"
#include "SMDS_MeshNode.hxx"
+#include "SMESHDS_Mesh.hxx"
+#include "SMESH_Comment.hxx"
+#include "SMESH_ControlsDef.hxx"
+#include "SMESH_Gen.hxx"
+#include "SMESH_Mesh.hxx"
#include "SMESH_MesherHelper.hxx"
#include <BRep_Tool.hxx>
// get triangles on aShell and make a map of nodes to Netgen node IDs
// -------------------------------------------------------------------
- SMESH_MesherHelper* myTool = new SMESH_MesherHelper(aMesh);
+ SMESH_MesherHelper helper(aMesh);
+ SMESH_MesherHelper* myTool = &helper;
bool _quadraticMesh = myTool->IsQuadraticSubMesh(aShape);
typedef map< const SMDS_MeshNode*, int> TNodeToIDMap;
{
// check element
const SMDS_MeshElement* elem = iteratorElem->next();
- if ( !elem ||
- !( elem->NbNodes()==3 || ( _quadraticMesh && elem->NbNodes()==6) ) ) {
- INFOS( "NETGENPlugin_NETGEN_3D::Compute(), bad mesh");
- delete myTool; myTool = 0;
- return false;
- }
+ if ( !elem )
+ return error( COMPERR_BAD_INPUT_MESH, "Null element encounters");
+ bool isTraingle = ( elem->NbNodes()==3 || (_quadraticMesh && elem->NbNodes()==6 ));
+ if ( !isTraingle )
+ return error( COMPERR_BAD_INPUT_MESH,
+ SMESH_Comment("Not triangle element ")<<elem->GetID());
// keep a triangle
triangles.push_back( elem );
isReversed.push_back( isRev );
}
catch (...) {
MESSAGE("An exception has been caught during the Volume Mesh Generation ...");
+ error(dfltErr(), "Exception in Ng_GenerateVolumeMesh()");
status = NG_VOLUME_FAILURE;
}
+ if ( GetComputeError()->IsOK() ) {
+ 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
// -------------------------------------------------------------------
- bool isOK = ( status == NG_OK && Netgen_NbOfTetra > 0 );
+ bool isOK = ( /*status == NG_OK &&*/ Netgen_NbOfTetra > 0 );// get whatever built
if ( isOK )
{
// vector of nodes in which node index == netgen ID
Ng_DeleteMesh(Netgen_mesh);
Ng_Exit();
- delete myTool; myTool = 0;
-
- return isOK;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & NETGENPlugin_NETGEN_3D::SaveTo(ostream & save)
-{
- return save;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & NETGENPlugin_NETGEN_3D::LoadFrom(istream & load)
-{
- return load;
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-ostream & operator << (ostream & save, NETGENPlugin_NETGEN_3D & hyp)
-{
- return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-
-istream & operator >> (istream & load, NETGENPlugin_NETGEN_3D & hyp)
-{
- return hyp.LoadFrom( load );
+ return (status == NG_OK);
}
virtual bool Compute(SMESH_Mesh& aMesh,
const TopoDS_Shape& aShape);
- ostream & SaveTo(ostream & save);
- istream & LoadFrom(istream & load);
- friend ostream & operator << (ostream & save, NETGENPlugin_NETGEN_3D & hyp);
- friend istream & operator >> (istream & load, NETGENPlugin_NETGEN_3D & hyp);
-
protected:
double _maxElementVolume;