From cc9d179c9ff1b1c8671482d26e38a3b8a8e84ed3 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 26 Nov 2014 15:16:24 +0300 Subject: [PATCH 1/4] Fix Extrusion doc --- .../gui/SMESH/images/extrusionalongaline1.png | Bin 25647 -> 39667 bytes .../gui/SMESH/images/extrusionalongaline2.png | Bin 28621 -> 36199 bytes doc/salome/gui/SMESH/input/extrusion.doc | 27 +++++++++++------- src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) mode change 100755 => 100644 doc/salome/gui/SMESH/images/extrusionalongaline1.png mode change 100755 => 100644 doc/salome/gui/SMESH/images/extrusionalongaline2.png diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline1.png b/doc/salome/gui/SMESH/images/extrusionalongaline1.png old mode 100755 new mode 100644 index 95a26ca9006e56be549e600d6452d929cc0dfa5c..0cc13d518ed9e653b7267f4434d7ea11ba41d1c7 GIT binary patch literal 39667 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 literal 25647 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 LY9R~Hm<9e1Dm*!~ diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline2.png b/doc/salome/gui/SMESH/images/extrusionalongaline2.png old mode 100755 new mode 100644 index 8c16623966f6e6251bfb19976d5fab41984b63d1..987a66c610799fa8bb688d5f2e7ab8c134c97460 GIT binary patch literal 36199 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 c#i|NUy%R#LUof%S?f?J) literal 28621 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 MDQjOXQZf(te=7dwj{pDw diff --git a/doc/salome/gui/SMESH/input/extrusion.doc b/doc/salome/gui/SMESH/input/extrusion.doc index 4813eee5c..a28af48d4 100644 --- a/doc/salome/gui/SMESH/input/extrusion.doc +++ b/doc/salome/gui/SMESH/input/extrusion.doc @@ -6,12 +6,12 @@ dimension than the input ones. Any node, segment or 2D element can be extruded. Each type of elements has a corresponding type of extruded elements: - - - - - - + + + + + +
    Extruded element Result elements
    Node Segments
    Segment Quadrilaterals
    Triangle Pentahedrons
    Quadrilateral Hexahedrons
    Polygon Polyhedrons
    Extruded element Result element
    Node Segment
    Segment Quadrilateral
    Triangle Pentahedron
    Quadrilateral Hexahedron
    Polygon Polyhedron
    Hexagonal polygon Hexagonal prism
    @@ -35,7 +35,8 @@ The following dialog common for line and planar elements will appear:
  • In this dialog:
      -
    • Select the type of elements which will be extruded (0D, 1D or 2D).
    • +
    • Select the type of elements which will be extruded (nodes, 1D or + 2D elements).
    • Specify the IDs of the elements which will be extruded by one following means:
        @@ -62,9 +63,15 @@ The following dialog common for line and planar elements will appear:
      • specify the distance of extrusion along the vector.
    • Specify the number of steps.
    • -
    • If you activate Generate Groups check-box, the created - elements contained in groups will be included into new groups named - by pattern "_extruded" and "_top".
    • +
    • If you activate Generate Groups check-box, the result elements + created from extruded elements contained in groups will be + included into new groups named by pattern "_extruded" and "_top". For example if an + extruded quadrangle is included in \a Group_1 group then result + hexahedra will be included in \a Group_1_extruded group and a + quadrangle created at the "top" of extruded mesh will + be included in \a Group_1_top group.
      This check-box is active + only if there are some groups in the mesh.
  • Click \b Apply or Apply and Close button to confirm the operation.
  • diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx index 5dba32360..798b6b9eb 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx @@ -860,7 +860,7 @@ void SMESHGUI_ExtrusionDlg::SelectionIntoArgument() else return; } else { - // get indices of selcted elements + // get indices of selected elements TColStd_IndexedMapOfInteger aMapIndex; mySelector->GetIndex(IO,aMapIndex); aNbElements = aMapIndex.Extent(); From 3cc259fbef721661f3f3f0e5731d61e2689212fe Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 3 Dec 2014 17:28:30 +0300 Subject: [PATCH 2/4] Bug: unable to create LocalLength hyp for a sub-mesh on a shape with a degenerated edge --- src/StdMeshers/StdMeshers_LocalLength.cxx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/StdMeshers/StdMeshers_LocalLength.cxx b/src/StdMeshers/StdMeshers_LocalLength.cxx index 6546c4492..a5712bdb0 100644 --- a/src/StdMeshers/StdMeshers_LocalLength.cxx +++ b/src/StdMeshers/StdMeshers_LocalLength.cxx @@ -216,6 +216,8 @@ bool StdMeshers_LocalLength::SetParametersByMesh(const SMESH_Mesh* theMesh, { const TopoDS_Edge& edge = TopoDS::Edge( edgeMap( iE )); Handle(Geom_Curve) C = BRep_Tool::Curve( edge, L, UMin, UMax ); + if ( C.IsNull() ) + continue; GeomAdaptor_Curve AdaptCurve(C, UMin, UMax); vector< double > params; From a00f90ebab08741cc788e1d9c50a87e847cff142 Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 8 Dec 2014 20:18:59 +0300 Subject: [PATCH 3/4] 22812: EDF 9218 SMESH: An empty group is created when using the duplicate nodes and/or elements --- doc/salome/gui/SMESH/input/extrusion.doc | 7 +++++-- src/SMESH/SMESH_MeshEditor.cxx | 8 ++++++++ src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx | 2 +- src/SMESH_SWIG/smeshBuilder.py | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/doc/salome/gui/SMESH/input/extrusion.doc b/doc/salome/gui/SMESH/input/extrusion.doc index a28af48d4..126e3b0e9 100644 --- a/doc/salome/gui/SMESH/input/extrusion.doc +++ b/doc/salome/gui/SMESH/input/extrusion.doc @@ -3,8 +3,11 @@ \page extrusion_page Extrusion \n Extrusion is used to build mesh elements of plus one -dimension than the input ones. Any node, segment or 2D element can be -extruded. Each type of elements has a corresponding type of extruded elements: +dimension than the input ones. Boundary elements around elements of +plus one dimension are additionally created. All created elements +can be automatically grouped. +

    Any node, segment or 2D element can be extruded. Each type of +elements is extruded into a corresponding type of result elements: diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 08cc1d9c2..75a8f216e 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -11247,6 +11247,14 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vector::iterator name_group = mapOfJunctionGroups.begin(); + for ( ; name_group != mapOfJunctionGroups.end(); ++name_group ) + { + if ( name_group->second && name_group->second->GetGroupDS()->IsEmpty() ) + myMesh->RemoveGroup( name_group->second->GetGroupDS()->GetID() ); + } + meshDS->CleanDownWardConnectivity(); // Mesh has been modified, downward connectivity is no more usable, free memory grid->BuildLinks(); diff --git a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx index 57428add2..8b3c6eac1 100644 --- a/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_DuplicateNodesDlg.cxx @@ -602,7 +602,7 @@ void SMESHGUI_DuplicateNodesDlg::onSelectionChanged() break; case 3: ok = ( aGroupType == SMESH::VOLUME || - aGroupType == SMESH::FACE ); + aGroupType == SMESH::FACE ); break; } } diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index fe63e726b..308472841 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -3391,7 +3391,7 @@ class Mesh: # @param theSubMesh a group or a sub-mesh to convert; WARNING: in this case the mesh can become not conformal # @param theToBiQuad If True, converts the mesh to bi-quadratic # @ingroup l2_modif_tofromqu - def ConvertToQuadratic(self, theForce3d, theSubMesh=None, theToBiQuad=False): + def ConvertToQuadratic(self, theForce3d=False, theSubMesh=None, theToBiQuad=False): if isinstance( theSubMesh, Mesh ): theSubMesh = theSubMesh.mesh if theToBiQuad: From 133cb381393ea728f6c6ff3a732738ecd1ad72d8 Mon Sep 17 00:00:00 2001 From: eap Date: Mon, 29 Dec 2014 18:22:30 +0300 Subject: [PATCH 4/4] 22830: EDF 9557 SMESH: Quadratic conversion of a mesh fails In SMESH_MeshEditor copy node positions in Duplicate*() In SMESH_MesherHelper - cache face tolerance - in GetNodeUV() prevent SIGSEGV if a node is on EDGE not belonging to a FACE - in GetNodeUV() check if a VERTEX is a seam in a given FACE, not in another - avoid returning myShape from GetMediumPos() when it can be wrong 52592: Invalid values of Length 2D control - avoid using not initialized values for showing control values of a group --- src/OBJECT/SMESH_DeviceActor.cxx | 48 ++++--- src/SMESH/SMESH_MeshEditor.cxx | 55 +++++++- src/SMESH/SMESH_MeshEditor.hxx | 3 + src/SMESH/SMESH_MesherHelper.cxx | 158 +++++++++++++--------- src/SMESH/SMESH_MesherHelper.hxx | 11 +- src/StdMeshers/StdMeshers_Import_1D2D.cxx | 2 +- 6 files changed, 185 insertions(+), 92 deletions(-) diff --git a/src/OBJECT/SMESH_DeviceActor.cxx b/src/OBJECT/SMESH_DeviceActor.cxx index dd7c3480b..b3046dd88 100644 --- a/src/OBJECT/SMESH_DeviceActor.cxx +++ b/src/OBJECT/SMESH_DeviceActor.cxx @@ -393,12 +393,13 @@ SMESH_DeviceActor vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); aCellTypesArray->SetNumberOfComponents( 1 ); aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); - + vtkIdList *anIdList = vtkIdList::New(); anIdList->SetNumberOfIds(2); - + Length2D::TValues::const_iterator anIter = aValues.begin(); - for(vtkIdType aVtkId = 0; anIter != aValues.end(); anIter++,aVtkId++){ + aNbCells = 0; + for(; anIter != aValues.end(); anIter++){ const Length2D::Value& aValue = *anIter; int aNode[2] = { myVisualObj->GetNodeVTKId(aValue.myPntId[0]), @@ -409,27 +410,30 @@ SMESH_DeviceActor anIdList->SetId( 1, aNode[1] ); aConnectivity->InsertNextCell( anIdList ); aCellTypesArray->InsertNextValue( VTK_LINE ); - aScalars->SetValue(aVtkId,aValue.myLength); + aScalars->SetValue(aNbCells,aValue.myLength); + aNbCells++; } } - + aCellTypesArray->SetNumberOfTuples( aNbCells ); + aScalars->SetNumberOfTuples( aNbCells ); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents( 1 ); aCellLocationsArray->SetNumberOfTuples( aNbCells ); - + aConnectivity->InitTraversal(); for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ) aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); - - aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); + + aDataSet->SetCells( aCellTypesArray, aCellLocationsArray, aConnectivity ); SetUnstructuredGrid(aDataSet); aDataSet->GetCellData()->SetScalars(aScalars); aScalars->Delete(); - + theLookupTable->SetRange(aScalars->GetRange()); theLookupTable->Build(); - + myMergeFilter->SetScalarsData(aDataSet); aDataSet->Delete(); } @@ -449,16 +453,17 @@ SMESH_DeviceActor vtkIdType aCellsSize = 3*aNbCells; vtkCellArray* aConnectivity = vtkCellArray::New(); aConnectivity->Allocate( aCellsSize, 0 ); - + vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New(); aCellTypesArray->SetNumberOfComponents( 1 ); aCellTypesArray->Allocate( aNbCells * aCellTypesArray->GetNumberOfComponents() ); - + vtkIdList *anIdList = vtkIdList::New(); anIdList->SetNumberOfIds(2); - + MultiConnection2D::MValues::const_iterator anIter = aValues.begin(); - for(vtkIdType aVtkId = 0; anIter != aValues.end(); anIter++,aVtkId++){ + aNbCells = 0; + for(; anIter != aValues.end(); anIter++){ const MultiConnection2D::Value& aValue = (*anIter).first; int aNode[2] = { myVisualObj->GetNodeVTKId(aValue.myPntId[0]), @@ -469,27 +474,30 @@ SMESH_DeviceActor anIdList->SetId( 1, aNode[1] ); aConnectivity->InsertNextCell( anIdList ); aCellTypesArray->InsertNextValue( VTK_LINE ); - aScalars->SetValue(aVtkId,(*anIter).second); + aScalars->SetValue( aNbCells,(*anIter).second); + aNbCells++; } } - + aCellTypesArray->SetNumberOfTuples( aNbCells ); + aScalars->SetNumberOfTuples( aNbCells ); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents( 1 ); aCellLocationsArray->SetNumberOfTuples( aNbCells ); - + aConnectivity->InitTraversal(); for( vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell( npts, pts ); idType++ ) aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); - + aDataSet->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); SetUnstructuredGrid(aDataSet); aDataSet->GetCellData()->SetScalars(aScalars); aScalars->Delete(); - + theLookupTable->SetRange(aScalars->GetRange()); theLookupTable->Build(); - + myMergeFilter->SetScalarsData(aDataSet); aDataSet->Delete(); } diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index 75a8f216e..d334c7d5c 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -10228,6 +10228,7 @@ bool SMESH_MeshEditor::doubleNodes( SMESHDS_Mesh* theMeshDS, { // duplicate node aNewNode = theMeshDS->AddNode( aCurrNode->X(), aCurrNode->Y(), aCurrNode->Z() ); + copyPosition( aCurrNode, aNewNode ); theNodeNodeMap[ aCurrNode ] = aNewNode; myLastCreatedNodes.Append( aNewNode ); } @@ -10240,10 +10241,8 @@ bool SMESH_MeshEditor::doubleNodes( SMESHDS_Mesh* theMeshDS, if ( theIsDoubleElem ) AddElement(newNodes, anElem->GetType(), anElem->IsPoly()); else - { - MESSAGE("ChangeElementNodes"); theMeshDS->ChangeElementNodes( anElem, &newNodes[ 0 ], anElem->NbNodes() ); - } + res = true; } return res; @@ -10254,8 +10253,8 @@ bool SMESH_MeshEditor::doubleNodes( SMESHDS_Mesh* theMeshDS, \brief Creates a hole in a mesh by doubling the nodes of some particular elements \param theNodes - identifiers of nodes to be doubled \param theModifiedElems - identifiers of elements to be updated by the new (doubled) - nodes. If list of element identifiers is empty then nodes are doubled but - they not assigned to elements + nodes. If list of element identifiers is empty then nodes are doubled but + they not assigned to elements \return TRUE if operation has been completed successfully, FALSE otherwise */ //================================================================================ @@ -10291,6 +10290,7 @@ bool SMESH_MeshEditor::DoubleNodes( const std::list< int >& theListOfNodes, const SMDS_MeshNode* aNewNode = aMeshDS->AddNode( aNode->X(), aNode->Y(), aNode->Z() ); if ( aNewNode ) { + copyPosition( aNode, aNewNode ); anOldNodeToNewNode[ aNode ] = aNewNode; myLastCreatedNodes.Append( aNewNode ); } @@ -10909,6 +10909,7 @@ bool SMESH_MeshEditor::DoubleNodesOnGroupBoundaries( const std::vectorGetPoint(oldId); SMDS_MeshNode *newNode = meshDS->AddNode(coords[0], coords[1], coords[2]); + copyPosition( meshDS->FindNodeVtk( oldId ), newNode ); int newId = newNode->getVtkId(); nodeDomains[oldId][idom] = newId; // cloned node for other domains //MESSAGE("-+-+-c oldNode " << oldId << " domain " << idomain << " newNode " << newId << " domain " << idom << " size=" <AddNode(node->X(), node->Y(), node->Z()); + copyPosition( node, clone ); clonedNodes[node] = clone; } else @@ -11338,6 +11340,7 @@ bool SMESH_MeshEditor::CreateFlatElementsOnFacesGroups(const std::vectorAddNode(node->X(), node->Y(), node->Z()); + copyPosition( node, inter ); intermediateNodes[node] = inter; } else @@ -12282,3 +12285,45 @@ int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements, } return nbAddedBnd; } + +//================================================================================ +/*! + * \brief Copy node position and set \a to node on the same geometry + */ +//================================================================================ + +void SMESH_MeshEditor::copyPosition( const SMDS_MeshNode* from, + const SMDS_MeshNode* to ) +{ + if ( !from || !to ) return; + + SMDS_PositionPtr pos = from->GetPosition(); + if ( !pos || from->getshapeId() < 1 ) return; + + switch ( pos->GetTypeOfPosition() ) + { + case SMDS_TOP_3DSPACE: break; + + case SMDS_TOP_FACE: + { + const SMDS_FacePosition* fPos = static_cast< const SMDS_FacePosition* >( pos ); + GetMeshDS()->SetNodeOnFace( to, from->getshapeId(), + fPos->GetUParameter(), fPos->GetVParameter() ); + break; + } + case SMDS_TOP_EDGE: + { + // WARNING: it is dangerous to set equal nodes on one EDGE!!!!!!!! + const SMDS_EdgePosition* ePos = static_cast< const SMDS_EdgePosition* >( pos ); + GetMeshDS()->SetNodeOnEdge( to, from->getshapeId(), ePos->GetUParameter() ); + break; + } + case SMDS_TOP_VERTEX: + { + GetMeshDS()->SetNodeOnVertex( to, from->getshapeId() ); + break; + } + case SMDS_TOP_UNSPEC: + default:; + } +} diff --git a/src/SMESH/SMESH_MeshEditor.hxx b/src/SMESH/SMESH_MeshEditor.hxx index 5adb43a41..014437c6d 100644 --- a/src/SMESH/SMESH_MeshEditor.hxx +++ b/src/SMESH/SMESH_MeshEditor.hxx @@ -686,6 +686,9 @@ public: std::map< const SMDS_MeshNode*, const SMDS_MeshNode* >& theNodeNodeMap, const bool theIsDoubleElem ); + void copyPosition( const SMDS_MeshNode* from, + const SMDS_MeshNode* to ); + private: SMESH_Mesh * myMesh; diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index c6c51ab37..48244b055 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -259,6 +259,7 @@ void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh) { // look for a "seam" edge, a real seam or an edge on period boundary TopoDS_Edge edge = TopoDS::Edge( exp.Current() ); + const int edgeID = meshDS->ShapeToIndex( edge ); if ( myParIndex ) { BRep_Tool::UVPoints( edge, face, uv1, uv2 ); @@ -305,7 +306,6 @@ void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh) if ( isSeam ) { // store seam shape indices, negative if shape encounters twice - int edgeID = meshDS->ShapeToIndex( edge ); mySeamShapeIds.insert( IsSeamShape( edgeID ) ? -edgeID : edgeID ); for ( TopExp_Explorer v( edge, TopAbs_VERTEX ); v.More(); v.Next() ) { int vertexID = meshDS->ShapeToIndex( v.Current() ); @@ -315,10 +315,15 @@ void SMESH_MesherHelper::SetSubShape(const TopoDS_Shape& aSh) } // look for a degenerated edge if ( SMESH_Algo::isDegenerated( edge )) { - myDegenShapeIds.insert( meshDS->ShapeToIndex( edge )); + myDegenShapeIds.insert( edgeID ); for ( TopExp_Explorer v( edge, TopAbs_VERTEX ); v.More(); v.Next() ) myDegenShapeIds.insert( meshDS->ShapeToIndex( v.Current() )); } + if ( !BRep_Tool::SameParameter( edge ) || + !BRep_Tool::SameRange( edge )) + { + setPosOnShapeValidity( edgeID, false ); + } } } } @@ -527,11 +532,11 @@ void SMESH_MesherHelper::ToFixNodeParameters(bool toFix) //======================================================================= -//function : GetUVOnSeam +//function : getUVOnSeam //purpose : Select UV on either of 2 pcurves of a seam edge, closest to the given UV //======================================================================= -gp_Pnt2d SMESH_MesherHelper::GetUVOnSeam( const gp_Pnt2d& uv1, const gp_Pnt2d& uv2 ) const +gp_Pnt2d SMESH_MesherHelper::getUVOnSeam( const gp_Pnt2d& uv1, const gp_Pnt2d& uv2 ) const { gp_Pnt2d result = uv1; for ( int i = U_periodic; i <= V_periodic ; ++i ) @@ -568,38 +573,34 @@ gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F, const SMDS_PositionPtr Pos = n->GetPosition(); bool uvOK = false; - if(Pos->GetTypeOfPosition()==SMDS_TOP_FACE) + if ( Pos->GetTypeOfPosition() == SMDS_TOP_FACE ) { // node has position on face - const SMDS_FacePosition* fpos = - static_cast( Pos ); - uv.SetCoord(fpos->GetUParameter(),fpos->GetVParameter()); + const SMDS_FacePosition* fpos = static_cast( Pos ); + uv.SetCoord( fpos->GetUParameter(), fpos->GetVParameter() ); if ( check ) - uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*MaxTolerance( F )); + uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*getFaceMaxTol( F )); } - else if(Pos->GetTypeOfPosition()==SMDS_TOP_EDGE) + else if ( Pos->GetTypeOfPosition() == SMDS_TOP_EDGE ) { - // node has position on edge => it is needed to find - // corresponding edge from face, get pcurve for this - // edge and retrieve value from this pcurve - const SMDS_EdgePosition* epos = - static_cast( Pos ); - int edgeID = n->getshapeId(); - TopoDS_Edge E = TopoDS::Edge(GetMeshDS()->IndexToShape(edgeID)); + // node has position on EDGE => it is needed to find + // corresponding EDGE from FACE, get pcurve for this + // EDGE and retrieve value from this pcurve + const SMDS_EdgePosition* epos = static_cast( Pos ); + const int edgeID = n->getshapeId(); + const TopoDS_Edge& E = TopoDS::Edge( GetMeshDS()->IndexToShape( edgeID )); double f, l, u = epos->GetUParameter(); - Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(E, F, f, l); - bool validU = ( f < u && u < l ); - if ( validU ) - uv = C2d->Value( u ); - else - uv.SetCoord( Precision::Infinite(),0.); + Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface( E, F, f, l ); + bool validU = ( !C2d.IsNull() && ( f < u ) && ( u < l )); + if ( validU ) uv = C2d->Value( u ); + else uv.SetCoord( Precision::Infinite(),0.); if ( check || !validU ) - uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*MaxTolerance( F ),/*force=*/ !validU ); + uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*getFaceMaxTol( F ),/*force=*/ !validU ); - // for a node on a seam edge select one of UVs on 2 pcurves - if ( n2 && IsSeamShape( edgeID ) ) + // for a node on a seam EDGE select one of UVs on 2 pcurves + if ( n2 && IsSeamShape( edgeID )) { - uv = GetUVOnSeam( uv, GetNodeUV( F, n2, 0, check )); + uv = getUVOnSeam( uv, GetNodeUV( F, n2, 0, check )); } else { // adjust uv to period @@ -611,23 +612,22 @@ gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F, if ( isUPeriodic || isVPeriodic ) { Standard_Real UF,UL,VF,VL; S->Bounds(UF,UL,VF,VL); - if ( isUPeriodic ) - newUV.SetX( uv.X() + ShapeAnalysis::AdjustToPeriod(uv.X(),UF,UL)); - if ( isVPeriodic ) - newUV.SetY( uv.Y() + ShapeAnalysis::AdjustToPeriod(uv.Y(),VF,VL)); - } - if ( n2 ) - { - gp_Pnt2d uv2 = GetNodeUV( F, n2, 0, check ); - if ( isUPeriodic && Abs( uv.X()-uv2.X() ) < Abs( newUV.X()-uv2.X() )) - newUV.SetX( uv.X() ); - if ( isVPeriodic && Abs( uv.Y()-uv2.Y() ) < Abs( newUV.Y()-uv2.Y() )) - newUV.SetY( uv.Y() ); + if ( isUPeriodic ) newUV.SetX( uv.X() + ShapeAnalysis::AdjustToPeriod(uv.X(),UF,UL)); + if ( isVPeriodic ) newUV.SetY( uv.Y() + ShapeAnalysis::AdjustToPeriod(uv.Y(),VF,VL)); + + if ( n2 ) + { + gp_Pnt2d uv2 = GetNodeUV( F, n2, 0, check ); + if ( isUPeriodic && Abs( uv.X()-uv2.X() ) < Abs( newUV.X()-uv2.X() )) + newUV.SetX( uv.X() ); + if ( isVPeriodic && Abs( uv.Y()-uv2.Y() ) < Abs( newUV.Y()-uv2.Y() )) + newUV.SetY( uv.Y() ); + } } uv = newUV; } } - else if(Pos->GetTypeOfPosition()==SMDS_TOP_VERTEX) + else if ( Pos->GetTypeOfPosition() == SMDS_TOP_VERTEX ) { if ( int vertexID = n->getshapeId() ) { const TopoDS_Vertex& V = TopoDS::Vertex(GetMeshDS()->IndexToShape(vertexID)); @@ -646,7 +646,7 @@ gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F, // get UV of a vertex closest to the node double dist = 1e100; gp_Pnt pn = XYZ( n ); - for ( TopExp_Explorer vert(F,TopAbs_VERTEX); !uvOK && vert.More(); vert.Next() ) { + for ( TopExp_Explorer vert( F,TopAbs_VERTEX ); !uvOK && vert.More(); vert.Next() ) { TopoDS_Vertex curV = TopoDS::Vertex( vert.Current() ); gp_Pnt p = BRep_Tool::Pnt( curV ); double curDist = p.SquareDistance( pn ); @@ -675,13 +675,23 @@ gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F, } } } - if ( n2 && IsSeamShape( vertexID ) ) - uv = GetUVOnSeam( uv, GetNodeUV( F, n2, 0 )); + if ( n2 && IsSeamShape( vertexID )) + { + bool isSeam = ( myShape.IsSame( F )); + if ( !isSeam ) { + SMESH_MesherHelper h( *myMesh ); + h.SetSubShape( F ); + isSeam = IsSeamShape( vertexID ); + } + + if ( isSeam ) + uv = getUVOnSeam( uv, GetNodeUV( F, n2, 0 )); + } } } else { - uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*MaxTolerance( F )); + uvOK = CheckNodeUV( F, n, uv.ChangeCoord(), 10*getFaceMaxTol( F )); } if ( check ) @@ -750,7 +760,7 @@ bool SMESH_MesherHelper::CheckNodeUV(const TopoDS_Face& F, const_cast(n)->SetPosition ( SMDS_PositionPtr( new SMDS_FacePosition( U, V ))); } - else if ( uv.Modulus() > numeric_limits::min() ) + else if ( myShape.IsSame(F) && uv.Modulus() > numeric_limits::min() ) { setPosOnShapeValidity( shapeID, true ); } @@ -1037,9 +1047,12 @@ bool SMESH_MesherHelper::CheckNodeU(const TopoDS_Edge& E, //======================================================================= //function : GetMediumPos //purpose : Return index and type of the shape (EDGE or FACE only) to -// set a medium node on +// set a medium node on //param : useCurSubShape - if true, returns the shape set via SetSubShape() // if any +// calling GetMediumPos() with useCurSubShape=true is OK only for the +// case where the lower dim mesh is already constructed and converted to quadratic, +// else, nodes on EDGEs are assigned to FACE, for example. //======================================================================= std::pair @@ -1442,11 +1455,9 @@ const SMDS_MeshNode* SMESH_MesherHelper::GetMediumNode(const SMDS_MeshNode* n1, TopoDS_Edge E; double u [2]; TopoDS_Face F; gp_XY uv[2]; bool uvOK[2] = { false, false }; + const bool useCurSubShape = ( !myShape.IsNull() && myShape.ShapeType() == TopAbs_EDGE ); - pair pos = GetMediumPos( n1, n2, mySetElemOnShape ); - // calling GetMediumPos() with useCurSubShape=mySetElemOnShape is OK only for the - // case where the lower dim mesh is already constructed, else, nodes on EDGEs are - // assigned to FACE, for example. + pair pos = GetMediumPos( n1, n2, useCurSubShape ); // get positions of the given nodes on shapes if ( pos.second == TopAbs_FACE ) @@ -2848,6 +2859,24 @@ double SMESH_MesherHelper::MaxTolerance( const TopoDS_Shape& shape ) return tol; } +//================================================================================ +/*! + * \brief Return MaxTolerance( face ), probably cached + */ +//================================================================================ + +double SMESH_MesherHelper::getFaceMaxTol( const TopoDS_Shape& face ) const +{ + int faceID = GetMeshDS()->ShapeToIndex( face ); + + SMESH_MesherHelper* me = const_cast< SMESH_MesherHelper* >( this ); + double & tol = me->myFaceMaxTol.insert( make_pair( faceID, -1. )).first->second; + if ( tol < 0 ) + tol = MaxTolerance( face ); + + return tol; +} + //================================================================================ /*! * \brief Return an angle between two EDGEs sharing a common VERTEX with reference @@ -4606,6 +4635,8 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError, // 3. Compute displacement of medium nodes // --------------------------------------- + SMESH_MesherHelper faceHlp(*myMesh); + // two loops on QFaces: the first is to treat boundary links, the second is for internal ones. TopLoc_Location loc; bool checkUV; @@ -4689,22 +4720,23 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError, TopoDS_Face face; if ( !isInside ) { - // compute node displacement of end links of chain in parametric space of face + // compute node displacement of end links of chain in parametric space of FACE TChainLink& linkOnFace = *(++chain.begin()); const SMDS_MeshNode* nodeOnFace = linkOnFace->_mediumNode; TopoDS_Shape f = GetSubShapeByNode( nodeOnFace, GetMeshDS() ); if ( !f.IsNull() && f.ShapeType() == TopAbs_FACE ) { face = TopoDS::Face( f ); + faceHlp.SetSubShape( face ); Handle(Geom_Surface) surf = BRep_Tool::Surface(face,loc); bool isStraight[2]; for ( int is1 = 0; is1 < 2; ++is1 ) // move0 or move1 { TChainLink& link = is1 ? chain.back() : chain.front(); - gp_XY uvm = GetNodeUV( face, link->_mediumNode, nodeOnFace, &checkUV); - gp_XY uv1 = GetNodeUV( face, link->node1(), nodeOnFace, &checkUV); - gp_XY uv2 = GetNodeUV( face, link->node2(), nodeOnFace, &checkUV); - gp_XY uv12 = GetMiddleUV( surf, uv1, uv2); + gp_XY uvm = faceHlp.GetNodeUV( face, link->_mediumNode, nodeOnFace, &checkUV ); + gp_XY uv1 = faceHlp.GetNodeUV( face, link->node1(), nodeOnFace, &checkUV ); + gp_XY uv2 = faceHlp.GetNodeUV( face, link->node2(), nodeOnFace, &checkUV ); + gp_XY uv12 = faceHlp.GetMiddleUV( surf, uv1, uv2 ); // uvMove = uvm - uv12 gp_XY uvMove = applyIn2D(surf, uvm, uv12, gp_XY_Subtracted, /*inPeriod=*/false); ( is1 ? move1 : move0 ).SetCoord( uvMove.X(), uvMove.Y(), 0 ); @@ -4719,10 +4751,10 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError, } // check if a chain is already fixed - gp_XY uvm = GetNodeUV( face, linkOnFace->_mediumNode, 0, &checkUV); - gp_XY uv1 = GetNodeUV( face, linkOnFace->node1(), nodeOnFace, &checkUV); - gp_XY uv2 = GetNodeUV( face, linkOnFace->node2(), nodeOnFace, &checkUV); - gp_XY uv12 = GetMiddleUV( surf, uv1, uv2); + gp_XY uvm = faceHlp.GetNodeUV( face, linkOnFace->_mediumNode, 0, &checkUV ); + gp_XY uv1 = faceHlp.GetNodeUV( face, linkOnFace->node1(), nodeOnFace, &checkUV ); + gp_XY uv2 = faceHlp.GetNodeUV( face, linkOnFace->node2(), nodeOnFace, &checkUV ); + gp_XY uv12 = faceHlp.GetMiddleUV( surf, uv1, uv2 ); if (( uvm - uv12 ).SquareModulus() > 1e-10 ) { MSG("Already fixed - ignore"); @@ -4767,8 +4799,8 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError, else { // compute 3D displacement by 2D one Handle(Geom_Surface) s = BRep_Tool::Surface(face,loc); - gp_XY oldUV = GetNodeUV( face, (*link1)->_mediumNode, 0, &checkUV); - gp_XY newUV = applyIn2D( s, oldUV, gp_XY( move.X(),move.Y()), gp_XY_Added); + gp_XY oldUV = faceHlp.GetNodeUV( face, (*link1)->_mediumNode, 0, &checkUV ); + gp_XY newUV = applyIn2D( s, oldUV, gp_XY( move.X(),move.Y()), gp_XY_Added ); gp_Pnt newPnt = s->Value( newUV.X(), newUV.Y()); move = gp_Vec( XYZ((*link1)->_mediumNode), newPnt.Transformed(loc) ); if ( SMDS_FacePosition* nPos = @@ -4778,8 +4810,8 @@ void SMESH_MesherHelper::FixQuadraticElements(SMESH_ComputeErrorPtr& compError, if ( (XYZ((*link1)->node1()) - XYZ((*link1)->node2())).SquareModulus() < move.SquareMagnitude()) { - gp_XY uv0 = GetNodeUV( face, (*link0)->_mediumNode, 0, &checkUV); - gp_XY uv2 = GetNodeUV( face, (*link2)->_mediumNode, 0, &checkUV); + gp_XY uv0 = faceHlp.GetNodeUV( face, (*link0)->_mediumNode, 0, &checkUV ); + gp_XY uv2 = faceHlp.GetNodeUV( face, (*link2)->_mediumNode, 0, &checkUV ); MSG( "TOO LONG MOVE \t" << "uv0: "< TID2ProjectorOnSurf; - TID2ProjectorOnSurf myFace2Projector; + std::map< int, double > myFaceMaxTol; + + typedef std::map< int, GeomAPI_ProjectPointOnSurf* > TID2ProjectorOnSurf; typedef std::map< int, GeomAPI_ProjectPointOnCurve* > TID2ProjectorOnCurve; + TID2ProjectorOnSurf myFace2Projector; TID2ProjectorOnCurve myEdge2Projector; TopoDS_Shape myShape; diff --git a/src/StdMeshers/StdMeshers_Import_1D2D.cxx b/src/StdMeshers/StdMeshers_Import_1D2D.cxx index 636cd73ec..c8b1a70c5 100644 --- a/src/StdMeshers/StdMeshers_Import_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_Import_1D2D.cxx @@ -213,7 +213,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & existingNodes.insert( n ); } - // get EDGESs and their ids and get existing nodes on EDGEs + // get EDGEs and their ids and get existing nodes on EDGEs vector< TopoDS_Edge > edges; for ( exp.Init( theShape, TopAbs_EDGE ); exp.More(); exp.Next() ) {
    Extruded element Result element
    Node Segment