Salome HOME
projects
/
modules
/
smesh.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2569940
)
Fix regressions caused by improvements
author
eap
<eap@opencascade.com>
Wed, 15 Jul 2015 14:05:14 +0000
(17:05 +0300)
committer
eap
<eap@opencascade.com>
Wed, 15 Jul 2015 14:05:14 +0000
(17:05 +0300)
idl/SMESH_Mesh.idl
patch
|
blob
|
history
src/SMESH/SMESH_MeshEditor.cxx
patch
|
blob
|
history
src/SMESH_I/SMESH_MeshEditor_i.cxx
patch
|
blob
|
history
src/SMESH_I/SMESH_Mesh_i.cxx
patch
|
blob
|
history
src/SMESH_I/SMESH_Mesh_i.hxx
patch
|
blob
|
history
src/SMESH_SWIG/smeshBuilder.py
patch
|
blob
|
history
src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
patch
|
blob
|
history
diff --git
a/idl/SMESH_Mesh.idl
b/idl/SMESH_Mesh.idl
index 0805ce2359ca7ecc20624b5ee4b63818459745a4..fc8a2c6a55014409537926837968aea5a37e86eb 100644
(file)
--- a/
idl/SMESH_Mesh.idl
+++ b/
idl/SMESH_Mesh.idl
@@
-776,7
+776,10
@@
module SMESH
long NbBiQuadQuadrangles()
raises (SALOME::SALOME_Exception);
long NbBiQuadQuadrangles()
raises (SALOME::SALOME_Exception);
- long NbPolygons(in ElementOrder order)
+ long NbPolygons()
+ raises (SALOME::SALOME_Exception);
+
+ long NbPolygonsOfOrder(in ElementOrder order)
raises (SALOME::SALOME_Exception);
long NbVolumes()
raises (SALOME::SALOME_Exception);
long NbVolumes()
diff --git
a/src/SMESH/SMESH_MeshEditor.cxx
b/src/SMESH/SMESH_MeshEditor.cxx
index 8ca7653e074993ef57d109244060b7abaae480ca..3094dd2f3ae37af22107b89228561f2002e5f99a 100644
(file)
--- a/
src/SMESH/SMESH_MeshEditor.cxx
+++ b/
src/SMESH/SMESH_MeshEditor.cxx
@@
-5356,8
+5356,7
@@
void SMESH_MeshEditor::makeWalls (TNodeOfNodeListMap & mapNewNodes,
SMDS_MeshCell::interlacedSmdsOrder( elem->GetEntityType(), nbn );
SMDS_MeshCell::applyInterlaceRev( interlace, nodeVec );
SMDS_MeshCell::interlacedSmdsOrder( elem->GetEntityType(), nbn );
SMDS_MeshCell::applyInterlaceRev( interlace, nodeVec );
- if ( const SMDS_MeshElement* face = AddElement( nodeVec, anyFace.Init( elem )))
- myLastCreatedElems.Append( face );
+ AddElement( nodeVec, anyFace.Init( elem ));
while ( srcElements.Length() < myLastCreatedElems.Length() )
srcElements.Append( elem );
while ( srcElements.Length() < myLastCreatedElems.Length() )
srcElements.Append( elem );
@@
-12531,7
+12530,7
@@
int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
typedef vector<const SMDS_MeshNode*> TConnectivity;
TConnectivity tgtNodes;
typedef vector<const SMDS_MeshNode*> TConnectivity;
TConnectivity tgtNodes;
- ElemFeatures elemKind( missType );
+ ElemFeatures elemKind( missType )
, elemToCopy
;
SMDS_ElemIteratorPtr eIt;
if (elements.empty()) eIt = aMesh->elementsIterator(elemType);
SMDS_ElemIteratorPtr eIt;
if (elements.empty()) eIt = aMesh->elementsIterator(elemType);
@@
-12566,9
+12565,9
@@
int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
for ( int i = 0; i < nbFaceNodes; i += 1+iQuad)
{
for ( int j = 0; j < nodes.size(); ++j )
for ( int i = 0; i < nbFaceNodes; i += 1+iQuad)
{
for ( int j = 0; j < nodes.size(); ++j )
- nodes[j] =
nn[i+j
];
+ nodes[j] =
nn[ i+j
];
if ( const SMDS_MeshElement* edge =
if ( const SMDS_MeshElement* edge =
- aMesh->FindElement(
nodes,SMDSAbs_Edge,/*noMedium=*/false
))
+ aMesh->FindElement(
nodes, SMDSAbs_Edge, /*noMedium=*/false
))
presentBndElems.push_back( edge );
else
missingBndElems.push_back( nodes );
presentBndElems.push_back( edge );
else
missingBndElems.push_back( nodes );
@@
-12703,7
+12702,7
@@
int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
tgtNodes.resize( e->NbNodes() );
for ( inode = 0; inode < nodes.size(); ++inode )
tgtNodes[inode] = getNodeWithSameID( tgtMeshDS, e->GetNode(inode) );
tgtNodes.resize( e->NbNodes() );
for ( inode = 0; inode < nodes.size(); ++inode )
tgtNodes[inode] = getNodeWithSameID( tgtMeshDS, e->GetNode(inode) );
- presentEditor->AddElement( tgtNodes, elem
Kind
.Init( e ));
+ presentEditor->AddElement( tgtNodes, elem
ToCopy
.Init( e ));
}
else // store present elements to add them to a group
for ( int i = 0 ; i < presentBndElems.size(); ++i )
}
else // store present elements to add them to a group
for ( int i = 0 ; i < presentBndElems.size(); ++i )
@@
-12738,7
+12737,7
@@
int SMESH_MeshEditor::MakeBoundaryMesh(const TIDSortedElemSet& elements,
tgtNodes.resize( elem->NbNodes() );
for ( inode = 0; inode < tgtNodes.size(); ++inode )
tgtNodes[inode] = getNodeWithSameID( tgtMeshDS, elem->GetNode(inode) );
tgtNodes.resize( elem->NbNodes() );
for ( inode = 0; inode < tgtNodes.size(); ++inode )
tgtNodes[inode] = getNodeWithSameID( tgtMeshDS, elem->GetNode(inode) );
- tgtEditor.AddElement( tgtNodes, elem
Kind
.Init( elem ));
+ tgtEditor.AddElement( tgtNodes, elem
ToCopy
.Init( elem ));
tgtEditor.myLastCreatedElems.Clear();
}
tgtEditor.myLastCreatedElems.Clear();
}
diff --git
a/src/SMESH_I/SMESH_MeshEditor_i.cxx
b/src/SMESH_I/SMESH_MeshEditor_i.cxx
index 1c6f60200661b3dbf22012cd7ea917bd1f2bc510..a3fe510c7bcb36daeb31a80341f991a0b7ade58b 100644
(file)
--- a/
src/SMESH_I/SMESH_MeshEditor_i.cxx
+++ b/
src/SMESH_I/SMESH_MeshEditor_i.cxx
@@
-6441,9
+6441,9
@@
CORBA::Long SMESH_MeshEditor_i::MakeBoundaryElements(SMESH::Bnd_Dimension dim,
THROW_SALOME_CORBA_EXCEPTION("Invalid boundary dimension", SALOME::BAD_PARAM);
// separate groups belonging to this and other mesh
THROW_SALOME_CORBA_EXCEPTION("Invalid boundary dimension", SALOME::BAD_PARAM);
// separate groups belonging to this and other mesh
- SMESH::ListOfIDSources_var groupsOfThisMesh = new SMESH::ListOfIDSources;
+ SMESH::ListOfIDSources_var groupsOfThisMesh
= new SMESH::ListOfIDSources;
SMESH::ListOfIDSources_var groupsOfOtherMesh = new SMESH::ListOfIDSources;
SMESH::ListOfIDSources_var groupsOfOtherMesh = new SMESH::ListOfIDSources;
- groupsOfThisMesh->length( groups.length() );
+ groupsOfThisMesh
->length( groups.length() );
groupsOfOtherMesh->length( groups.length() );
int nbGroups = 0, nbGroupsOfOtherMesh = 0;
for ( int i = 0; i < groups.length(); ++i )
groupsOfOtherMesh->length( groups.length() );
int nbGroups = 0, nbGroupsOfOtherMesh = 0;
for ( int i = 0; i < groups.length(); ++i )
diff --git
a/src/SMESH_I/SMESH_Mesh_i.cxx
b/src/SMESH_I/SMESH_Mesh_i.cxx
index 060329f4c9c80e2753980654bb25a11481970d43..fed66cd85c7e8e477dc20064c3b66ffeee8e33f6 100644
(file)
--- a/
src/SMESH_I/SMESH_Mesh_i.cxx
+++ b/
src/SMESH_I/SMESH_Mesh_i.cxx
@@
-3765,7
+3765,16
@@
CORBA::Long SMESH_Mesh_i::NbBiQuadQuadrangles()throw(SALOME::SALOME_Exception)
return _impl->NbBiQuadQuadrangles();
}
return _impl->NbBiQuadQuadrangles();
}
-CORBA::Long SMESH_Mesh_i::NbPolygons(SMESH::ElementOrder order) throw(SALOME::SALOME_Exception)
+CORBA::Long SMESH_Mesh_i::NbPolygons() throw(SALOME::SALOME_Exception)
+{
+ Unexpect aCatch(SALOME_SalomeException);
+ if ( _preMeshInfo )
+ return _preMeshInfo->NbPolygons();
+
+ return _impl->NbPolygons();
+}
+
+CORBA::Long SMESH_Mesh_i::NbPolygonsOfOrder(SMESH::ElementOrder order) throw(SALOME::SALOME_Exception)
{
Unexpect aCatch(SALOME_SalomeException);
if ( _preMeshInfo )
{
Unexpect aCatch(SALOME_SalomeException);
if ( _preMeshInfo )
diff --git
a/src/SMESH_I/SMESH_Mesh_i.hxx
b/src/SMESH_I/SMESH_Mesh_i.hxx
index 24874a03a50b76ea55b2d2a54c5ce30d5a1afd12..2a67fd8a78815d20cf2a99bc68f6e15fb824267e 100644
(file)
--- a/
src/SMESH_I/SMESH_Mesh_i.hxx
+++ b/
src/SMESH_I/SMESH_Mesh_i.hxx
@@
-315,7
+315,10
@@
public:
CORBA::Long NbBiQuadQuadrangles()
throw (SALOME::SALOME_Exception);
CORBA::Long NbBiQuadQuadrangles()
throw (SALOME::SALOME_Exception);
- CORBA::Long NbPolygons(SMESH::ElementOrder order=SMESH::ORDER_ANY)
+ CORBA::Long NbPolygons()
+ throw (SALOME::SALOME_Exception);
+
+ CORBA::Long NbPolygonsOfOrder(SMESH::ElementOrder order=SMESH::ORDER_ANY)
throw (SALOME::SALOME_Exception);
CORBA::Long NbVolumes()
throw (SALOME::SALOME_Exception);
CORBA::Long NbVolumes()
diff --git
a/src/SMESH_SWIG/smeshBuilder.py
b/src/SMESH_SWIG/smeshBuilder.py
index 63fb499c720183b6e2c69cd897aa6783c6188ab9..78495e6cc7a6ff7ee8edd6816b5042b21768cb89 100644
(file)
--- a/
src/SMESH_SWIG/smeshBuilder.py
+++ b/
src/SMESH_SWIG/smeshBuilder.py
@@
-2359,7
+2359,7
@@
class Mesh:
# @return an integer value
# @ingroup l1_meshinfo
def NbPolygons(self, elementOrder = SMESH.ORDER_ANY):
# @return an integer value
# @ingroup l1_meshinfo
def NbPolygons(self, elementOrder = SMESH.ORDER_ANY):
- return self.mesh.NbPolygons(elementOrder)
+ return self.mesh.NbPolygons
OfOrder
(elementOrder)
## Returns the number of volumes in the mesh
# @return an integer value
## Returns the number of volumes in the mesh
# @return an integer value
@@
-4940,6
+4940,10
@@
class meshEditor(SMESH._objref_SMESH_MeshEditor):
if len( args ) == 1:
return SMESH._objref_SMESH_MeshEditor.FindCoincidentNodes( self, args[0], False )
return SMESH._objref_SMESH_MeshEditor.FindCoincidentNodes( self, *args )
if len( args ) == 1:
return SMESH._objref_SMESH_MeshEditor.FindCoincidentNodes( self, args[0], False )
return SMESH._objref_SMESH_MeshEditor.FindCoincidentNodes( self, *args )
+ def FindCoincidentNodesOnPart(self,*args): # a 3d arg added (SeparateCornerAndMediumNodes)
+ if len( args ) == 2:
+ args += False,
+ return SMESH._objref_SMESH_MeshEditor.FindCoincidentNodesOnPart( self, *args )
def MergeNodes(self,*args): # a 2nd arg added (NodesToKeep)
if len( args ) == 1:
return SMESH._objref_SMESH_MeshEditor.MergeNodes( self, args[0], [] )
def MergeNodes(self,*args): # a 2nd arg added (NodesToKeep)
if len( args ) == 1:
return SMESH._objref_SMESH_MeshEditor.MergeNodes( self, args[0], [] )
diff --git
a/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
b/src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
index 4c5269eb6b5e2985572654c677a32e811c7c76ea..f3b76232c4bf961d46ea3e5bba3aa0d2aeb836c2 100644
(file)
--- a/
src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
+++ b/
src/StdMeshers/StdMeshers_CompositeHexa_3D.cxx
@@
-369,7
+369,7
@@
namespace
*/
//================================================================================
*/
//================================================================================
-
void
getInternalEdges( SMESH_Mesh& mesh,
+
bool
getInternalEdges( SMESH_Mesh& mesh,
const TopoDS_Shape& shape,
const TopTools_MapOfShape& cornerVV,
TopTools_MapOfShape& internEE)
const TopoDS_Shape& shape,
const TopTools_MapOfShape& cornerVV,
TopTools_MapOfShape& internEE)
@@
-436,11
+436,13
@@
namespace
ridgeE = TopoDS::Edge( nextRidgeE );
V0 = V1;
ridgeE = TopoDS::Edge( nextRidgeE );
V0 = V1;
+ if ( ridgeE.IsNull() )
+ return false;
} // check EDGEs around the last VERTEX of ridgeE
} // loop on ridge EDGEs around a corner VERTEX
} // loop on on corner VERTEXes
} // check EDGEs around the last VERTEX of ridgeE
} // loop on ridge EDGEs around a corner VERTEX
} // loop on on corner VERTEXes
- return;
+ return
true
;
} // getInternalEdges()
} // namespace
} // getInternalEdges()
} // namespace
@@
-463,9
+465,10
@@
bool StdMeshers_CompositeHexa_3D::findBoxFaces( const TopoDS_Shape& shape,
TopTools_MapOfShape cornerVertices;
getBlockCorners( mesh, shape, cornerVertices );
if ( cornerVertices.Extent() != 8 )
TopTools_MapOfShape cornerVertices;
getBlockCorners( mesh, shape, cornerVertices );
if ( cornerVertices.Extent() != 8 )
- return
false
;
+ return
error( COMPERR_BAD_INPUT_MESH, "Can't find 8 corners of a block" )
;
TopTools_MapOfShape internalEdges;
TopTools_MapOfShape internalEdges;
- getInternalEdges( mesh, shape, cornerVertices, internalEdges );
+ if ( !getInternalEdges( mesh, shape, cornerVertices, internalEdges ))
+ return error( COMPERR_BAD_INPUT_MESH, "2D mesh is not suitable for i,j,k hexa meshing" );
list< _QuadFaceGrid >::iterator boxFace;
TopExp_Explorer exp;
list< _QuadFaceGrid >::iterator boxFace;
TopExp_Explorer exp;