Salome HOME
projects
/
plugins
/
blsurfplugin.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e8903df
)
IPAL54025: MG-CADSurf regression: no edges generated on seam
SHAPER_2.7.0
V8_3_0a2
V8_3_0b1
author
eap
<eap@opencascade.com>
Tue, 7 Mar 2017 18:37:35 +0000
(21:37 +0300)
committer
eap
<eap@opencascade.com>
Tue, 7 Mar 2017 18:37:35 +0000
(21:37 +0300)
src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx
patch
|
blob
|
history
diff --git
a/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx
b/src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx
index 19e1c59a531ef7209e131e1f181503333d25cb8f..28b17917ca8329afdce9389f7f00f7a7c27c786e 100644
(file)
--- a/
src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx
+++ b/
src/BLSURFPlugin/BLSURFPlugin_BLSURF.cxx
@@
-1579,19
+1579,20
@@
namespace
const TopoDS_Face& makeProxyFace( SMESH_ProxyMesh::Ptr& viscousMesh,
const TopoDS_Face& origFace)
{
const TopoDS_Face& makeProxyFace( SMESH_ProxyMesh::Ptr& viscousMesh,
const TopoDS_Face& origFace)
{
- // get data of nodes on inner boundary of viscous layers
SMESH_Mesh* origMesh = viscousMesh->GetMesh();
SMESH_Mesh* origMesh = viscousMesh->GetMesh();
+
+ SMESH_MesherHelper helper( *origMesh );
+ helper.SetSubShape( origFace );
+ const bool hasSeam = helper.HasRealSeam();
+
+ // get data of nodes on inner boundary of viscous layers
TError err;
TSideVector wireVec = StdMeshers_FaceSide::GetFaceWires(origFace, *origMesh,
/*skipMediumNodes = */true,
TError err;
TSideVector wireVec = StdMeshers_FaceSide::GetFaceWires(origFace, *origMesh,
/*skipMediumNodes = */true,
- err, viscousMesh );
+ err,
&helper,
viscousMesh );
if ( err && err->IsKO() )
throw *err.get(); // it should be caught at SMESH_subMesh
if ( err && err->IsKO() )
throw *err.get(); // it should be caught at SMESH_subMesh
- SMESH_MesherHelper helper( *origMesh );
- helper.SetSubShape( origFace );
- const bool hasSeam = helper.HasRealSeam();
-
// proxy nodes and corresponding tmp VERTEXes
std::vector<const SMDS_MeshNode*> origNodes;
std::vector<TopoDS_Vertex> tmpVertex;
// proxy nodes and corresponding tmp VERTEXes
std::vector<const SMDS_MeshNode*> origNodes;
std::vector<TopoDS_Vertex> tmpVertex;
@@
-2210,11
+2211,13
@@
bool BLSURFPlugin_BLSURF::compute(SMESH_Mesh& aMesh,
// IMP23368. Do not set tag to an EDGE shared by FACEs of a hyper-patch
bool isInHyperPatch = false;
{
// IMP23368. Do not set tag to an EDGE shared by FACEs of a hyper-patch
bool isInHyperPatch = false;
{
- std::set< int > faceTags;
+ std::set< int > faceTags
, faceIDs
;
TopTools_ListIteratorOfListOfShape fIt( e2ffmap.FindFromKey( e ));
for ( ; fIt.More(); fIt.Next() )
{
int faceTag = meshDS->ShapeToIndex( fIt.Value() );
TopTools_ListIteratorOfListOfShape fIt( e2ffmap.FindFromKey( e ));
for ( ; fIt.More(); fIt.Next() )
{
int faceTag = meshDS->ShapeToIndex( fIt.Value() );
+ if ( !faceIDs.insert( faceTag ).second )
+ continue; // a face encounters twice for a seam edge
int hpTag = BLSURFPlugin_Hypothesis::GetHyperPatchTag( faceTag, _hypothesis );
if ( !faceTags.insert( hpTag ).second )
{
int hpTag = BLSURFPlugin_Hypothesis::GetHyperPatchTag( faceTag, _hypothesis );
if ( !faceTags.insert( hpTag ).second )
{