From: vsr Date: Mon, 28 Jul 2008 06:29:05 +0000 (+0000) Subject: Merge from V4_1_0_maintainance branch (from tag mergeto_BR_QT4_Dev_08Jul08) X-Git-Tag: V5_1_0a1~8 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1bf863ac265bc174988556078f72c6188decc7bc;p=plugins%2Fnetgenplugin.git Merge from V4_1_0_maintainance branch (from tag mergeto_BR_QT4_Dev_08Jul08) --- diff --git a/build_configure b/build_configure index c97ecba..2fcfb1d 100755 --- a/build_configure +++ b/build_configure @@ -32,10 +32,10 @@ fi for option do case $option in - -with-ihm | --with-ihm) + -with-gui | --with-gui) NETGENPLUGIN_WITH_GUI="yes" break;; - -without-ihm | --without-ihm | -with-ihm=no | --with-ihm=no) + -without-gui | --without-gui | -with-gui=no | --with-gui=no) NETGENPLUGIN_WITH_GUI="no" break;; esac diff --git a/configure.ac b/configure.ac index 08c096c..3b5e9a8 100644 --- a/configure.ac +++ b/configure.ac @@ -223,19 +223,11 @@ AC_SUBST_FILE(CORBA) corba=make_$ORB CORBA=adm_local/unix/$corba -NETGENPLUGIN_WITH_GUI=no +NETGENPLUGIN_WITH_GUI=yes AM_CONDITIONAL(NETGENPLUGIN_ENABLE_GUI, [test "${NETGENPLUGIN_WITH_GUI}" = "yes"]) if test "${NETGENPLUGIN_WITH_GUI}" = "yes"; then - echo - echo --------------------------------------------- - echo testing MSG2QM - echo --------------------------------------------- - echo - - CHECK_MSG2QM - echo echo --------------------------------------------- echo testing openGL diff --git a/resources/NETGENPlugin.xml b/resources/NETGENPlugin.xml index 6135daa..4d6c0a2 100644 --- a/resources/NETGENPlugin.xml +++ b/resources/NETGENPlugin.xml @@ -25,7 +25,7 @@ icon-id="mesh_algo_tetra.png" hypos="MaxElementVolume" need-geom="false" - input="TRIA" + input="TRIA,QUAD" dim="3"/> & hyps = GetUsedHypothesis(aMesh, aShape, false); - if (hyps.empty()) return false; // can't work with no hypothesis + if (hyps.empty()) + { + aStatus = HYP_OK; //SMESH_Hypothesis::HYP_MISSING; + return true; // (PAL13464) can work with no hypothesis, LengthFromEdges is default one + } + + aStatus = HYP_MISSING; list::const_iterator ith; for (ith = hyps.begin(); ith != hyps.end(); ++ith ) @@ -328,7 +332,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh, // -------------------- double edgeLength = 0; - if (_hypLengthFromEdges) + if (_hypLengthFromEdges || !_hypLengthFromEdges && !_hypMaxElementArea) { int nbSegments = 0; for ( int iW = 0; iW < nbWires; ++iW ) diff --git a/src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx b/src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx index 66e3b95..e02b65f 100644 --- a/src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx +++ b/src/NETGENPlugin/NETGENPlugin_NETGEN_3D.cxx @@ -38,6 +38,7 @@ #include "SMESH_Gen.hxx" #include "SMESH_Mesh.hxx" #include "SMESH_MesherHelper.hxx" +#include "StdMeshers_QuadToTriaAdaptor.hxx" #include #include @@ -80,6 +81,8 @@ NETGENPlugin_NETGEN_3D::NETGENPlugin_NETGEN_3D(int hypId, int studyId, _maxElementVolume = 0.; _hypMaxElementVolume = NULL; + + _requireShape = false; // can work without shape } //============================================================================= @@ -179,6 +182,9 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh, map< int, int* >::iterator shId_ngId; list< int > degenNgIds; + StdMeshers_QuadToTriaAdaptor Adaptor; + Adaptor.Compute(aMesh,aShape); + for (TopExp_Explorer exp(aShape,TopAbs_FACE);exp.More();exp.Next()) { const TopoDS_Shape& aShapeFace = exp.Current(); @@ -195,20 +201,43 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh, 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 ")<GetID()); - // keep a triangle - triangles.push_back( elem ); - isReversed.push_back( isRev ); - // put elem nodes to nodeToNetgenID map - SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator(); - while ( triangleNodesIt->more() ) { - const SMDS_MeshNode * node = - static_cast(triangleNodesIt->next()); - if(myTool->IsMedium(node)) - continue; - nodeToNetgenID.insert( make_pair( node, invalid_ID )); + if ( !isTraingle ) { + //return error( COMPERR_BAD_INPUT_MESH, + // SMESH_Comment("Not triangle element ")<GetID()); + // using adaptor + std::list faces = Adaptor.GetTriangles(elem); + if(faces.size()==0) { + return error( COMPERR_BAD_INPUT_MESH, + SMESH_Comment("Not triangles in adaptor for element ")<GetID()); + } + std::list::iterator itf = faces.begin(); + for(; itf!=faces.end(); itf++ ) { + triangles.push_back( (*itf) ); + isReversed.push_back( isRev ); + // put triange's nodes to nodeToNetgenID map + SMDS_ElemIteratorPtr triangleNodesIt = (*itf)->nodesIterator(); + while ( triangleNodesIt->more() ) { + const SMDS_MeshNode * node = + static_cast(triangleNodesIt->next()); + if(myTool->IsMedium(node)) + continue; + nodeToNetgenID.insert( make_pair( node, invalid_ID )); + } + } + } + else { + // keep a triangle + triangles.push_back( elem ); + isReversed.push_back( isRev ); + // put elem nodes to nodeToNetgenID map + SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator(); + while ( triangleNodesIt->more() ) { + const SMDS_MeshNode * node = + static_cast(triangleNodesIt->next()); + if(myTool->IsMedium(node)) + continue; + nodeToNetgenID.insert( make_pair( node, invalid_ID )); + } } #ifdef _DEBUG_ // check if a trainge is degenerated @@ -413,30 +442,51 @@ bool NETGENPlugin_NETGEN_3D::Compute(SMESH_Mesh& aMesh, else if (MeshType == SMESH_MesherHelper::QUADRATIC) _quadraticMesh = true; - SMDS_FaceIteratorPtr iteratorFace = MeshDS->facesIterator(); + StdMeshers_QuadToTriaAdaptor Adaptor; + Adaptor.Compute(aMesh); - while(iteratorFace->more()) - { + SMDS_FaceIteratorPtr iteratorFace = MeshDS->facesIterator(); + while(iteratorFace->more()) { // check element const SMDS_MeshElement* elem = iteratorFace->next(); 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 ")<GetID()); - - // keep a triangle - triangles.push_back( elem ); - // put elem nodes to nodeToNetgenID map - SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator(); - while ( triangleNodesIt->more() ) { - const SMDS_MeshNode * node = - static_cast(triangleNodesIt->next()); - if(aHelper->IsMedium(node)) - continue; - - nodeToNetgenID.insert( make_pair( node, invalid_ID )); + if ( !isTraingle ) { + //return error( COMPERR_BAD_INPUT_MESH, + // SMESH_Comment("Not triangle element ")<GetID()); + // using adaptor + std::list faces = Adaptor.GetTriangles(elem); + if(faces.size()==0) { + return error( COMPERR_BAD_INPUT_MESH, + SMESH_Comment("Not triangles in adaptor for element ")<GetID()); + } + std::list::iterator itf = faces.begin(); + for(; itf!=faces.end(); itf++ ) { + triangles.push_back( (*itf) ); + // put triange's nodes to nodeToNetgenID map + SMDS_ElemIteratorPtr triangleNodesIt = (*itf)->nodesIterator(); + while ( triangleNodesIt->more() ) { + const SMDS_MeshNode * node = + static_cast(triangleNodesIt->next()); + if(aHelper->IsMedium(node)) + continue; + nodeToNetgenID.insert( make_pair( node, invalid_ID )); + } + } + } + else { + // keep a triangle + triangles.push_back( elem ); + // put elem nodes to nodeToNetgenID map + SMDS_ElemIteratorPtr triangleNodesIt = elem->nodesIterator(); + while ( triangleNodesIt->more() ) { + const SMDS_MeshNode * node = + static_cast(triangleNodesIt->next()); + if(aHelper->IsMedium(node)) + continue; + nodeToNetgenID.insert( make_pair( node, invalid_ID )); + } } } diff --git a/src/NETGENPlugin/NETGENPlugin_icons.po b/src/NETGENPlugin/NETGENPlugin_icons.po deleted file mode 100644 index a3f6297..0000000 --- a/src/NETGENPlugin/NETGENPlugin_icons.po +++ /dev/null @@ -1,20 +0,0 @@ -# This is a Qt message file in .po format. Each msgid starts with -# a scope. This scope should *NOT* be translated - eg. "Foo::Bar" -# would be translated to "Pub", not "Foo::Pub". -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n" -"PO-Revision-Date: YYYY-MM-DD\n" -"Last-Translator: FULLNAME \n" -"Content-Type: text/plain; charset=iso-8859-1\n" - - -#----------------------------------------------------------- -# ObjectBrowser -#----------------------------------------------------------- - -#mesh_tree_algo_netgen -msgid "ICON_SMESH_TREE_ALGO_NETGEN_3D" -msgstr "mesh_tree_algo_tetra.png" -#msgstr "mesh_tree_algo_netgen.png"