Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
#19926 [CEA 19782] renumbering meshes \\ fix excess nodes
[modules/smesh.git]
/
src
/
SMESH
/
SMESH_Pattern.hxx
diff --git
a/src/SMESH/SMESH_Pattern.hxx
b/src/SMESH/SMESH_Pattern.hxx
index 2ba7666aa93790ec1e1ede12ab847505970bba24..bc964a28093071f0e474a2c67a62fbc3ec33befc 100644
(file)
--- a/
src/SMESH/SMESH_Pattern.hxx
+++ b/
src/SMESH/SMESH_Pattern.hxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-20
12
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-20
20
CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-6,7
+6,7
@@
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License
, or (at your option) any later version
.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-35,7
+35,7
@@
#include <set>
#include <iostream>
#include <set>
#include <iostream>
-#include <TopoDS_
Shape
.hxx>
+#include <TopoDS_
Vertex
.hxx>
#include <TopTools_IndexedMapOfOrientedShape.hxx>
#include <gp_XYZ.hxx>
#include <gp_XY.hxx>
#include <TopTools_IndexedMapOfOrientedShape.hxx>
#include <gp_XYZ.hxx>
#include <gp_XY.hxx>
@@
-48,7
+48,6
@@
class SMDS_MeshNode;
class SMESH_Mesh;
class SMESHDS_SubMesh;
class TopoDS_Shell;
class SMESH_Mesh;
class SMESHDS_SubMesh;
class TopoDS_Shell;
-class TopoDS_Vertex;
class TopoDS_Face;
class TopoDS_Edge;
class TopoDS_Face;
class TopoDS_Edge;
@@
-71,13
+70,16
@@
class SMESH_EXPORT SMESH_Pattern {
bool Load (SMESH_Mesh* theMesh,
const TopoDS_Face& theFace,
bool Load (SMESH_Mesh* theMesh,
const TopoDS_Face& theFace,
- bool theProject = false);
+ bool theProject = false,
+ TopoDS_Vertex the1stVertex=TopoDS_Vertex(),
+ bool theKeepNodes = false );
// Create a pattern from the mesh built on <theFace>.
// <theProject>==true makes override nodes positions
// on <theFace> computed by mesher
bool Load (SMESH_Mesh* theMesh,
// Create a pattern from the mesh built on <theFace>.
// <theProject>==true makes override nodes positions
// on <theFace> computed by mesher
bool Load (SMESH_Mesh* theMesh,
- const TopoDS_Shell& theBlock);
+ const TopoDS_Shell& theBlock,
+ bool theKeepNodes = false);
// Create a pattern from the mesh built on <theBlock>
bool Save (std::ostream& theFile);
// Create a pattern from the mesh built on <theBlock>
bool Save (std::ostream& theFile);
@@
-176,11
+178,11
@@
class SMESH_EXPORT SMESH_Pattern {
ERR_LOADF_CANT_PROJECT, // impossible to project nodes
// Load(volume)
ERR_LOADV_BAD_SHAPE, // volume is not a brick of 6 faces
ERR_LOADF_CANT_PROJECT, // impossible to project nodes
// Load(volume)
ERR_LOADV_BAD_SHAPE, // volume is not a brick of 6 faces
- ERR_LOADV_COMPUTE_PARAMS, // cant compute point parameters
+ ERR_LOADV_COMPUTE_PARAMS, // can
'
t compute point parameters
// Apply(shape)
ERR_APPL_NOT_COMPUTED, // mapping failed
ERR_APPL_NOT_LOADED, // pattern was not loaded
// Apply(shape)
ERR_APPL_NOT_COMPUTED, // mapping failed
ERR_APPL_NOT_LOADED, // pattern was not loaded
- ERR_APPL_BAD_DIMENTION, // wrong shape dimen
t
ion
+ ERR_APPL_BAD_DIMENTION, // wrong shape dimen
s
ion
ERR_APPL_BAD_NB_VERTICES, // keypoints - vertices mismatch
// Apply(face)
ERR_APPLF_BAD_TOPOLOGY, // bad pattern topology
ERR_APPL_BAD_NB_VERTICES, // keypoints - vertices mismatch
// Apply(face)
ERR_APPLF_BAD_TOPOLOGY, // bad pattern topology
@@
-193,7
+195,7
@@
class SMESH_EXPORT SMESH_Pattern {
// MakeMesh
ERR_MAKEM_NOT_COMPUTED, // mapping failed
//Unexpected error
// MakeMesh
ERR_MAKEM_NOT_COMPUTED, // mapping failed
//Unexpected error
- ERR_UNEXPECTED // Unexpected of the pattern mapping alorithm
+ ERR_UNEXPECTED // Unexpected of the pattern mapping al
g
orithm
};
ErrorCode GetErrorCode() const { return myErrorCode; }
};
ErrorCode GetErrorCode() const { return myErrorCode; }
@@
-216,6
+218,11
@@
class SMESH_EXPORT SMESH_Pattern {
{ return myElemXYZIDs.empty() || !applied ? myElemPointIDs : myElemXYZIDs; }
// Return nodal connectivity of the elements of the pattern
{ return myElemXYZIDs.empty() || !applied ? myElemPointIDs : myElemXYZIDs; }
// Return nodal connectivity of the elements of the pattern
+ void GetInOutNodes( std::vector< const SMDS_MeshNode* > *& inNodes,
+ std::vector< const SMDS_MeshNode* > *& outNodes )
+ { inNodes = & myInNodes; outNodes = & myOutNodes; }
+ // Return loaded and just created nodes
+
void DumpPoints() const;
// Debug
void DumpPoints() const;
// Debug
@@
-234,7
+241,7
@@
private:
// private methods
struct TPoint {
// private methods
struct TPoint {
- gp_XYZ myInitXYZ; // loaded postion
+ gp_XYZ myInitXYZ; // loaded pos
i
tion
gp_XY myInitUV;
double myInitU; // [0,1]
gp_Pnt myXYZ; // position to compute
gp_XY myInitUV;
double myInitU; // [0,1]
gp_Pnt myXYZ; // position to compute
@@
-253,8
+260,8
@@
private:
std::list< TPoint* > & getShapePoints(const TopoDS_Shape& theShape);
// Return list of points located on theShape.
// A list of edge-points include vertex-points (for 2D pattern only).
std::list< TPoint* > & getShapePoints(const TopoDS_Shape& theShape);
// Return list of points located on theShape.
// A list of edge-points include vertex-points (for 2D pattern only).
- // A list of face-points doesnt include edge-points.
- // A list of volume-points doesnt include face-points.
+ // A list of face-points doesn
'
t include edge-points.
+ // A list of volume-points doesn
'
t include face-points.
std::list< TPoint* > & getShapePoints(const int theShapeID);
// Return list of points located on the shape
std::list< TPoint* > & getShapePoints(const int theShapeID);
// Return list of points located on the shape
@@
-334,6
+341,12
@@
private:
void clearMesh(SMESH_Mesh* theMesh) const;
// clear mesh elements existing on myShape in theMesh
void clearMesh(SMESH_Mesh* theMesh) const;
// clear mesh elements existing on myShape in theMesh
+ bool findExistingNodes( SMESH_Mesh* mesh,
+ const TopoDS_Shape& S,
+ const std::list< TPoint* > & points,
+ std::vector< const SMDS_MeshNode* > & nodes);
+ // fills nodes vector with nodes existing on a given shape
+
static SMESHDS_SubMesh * getSubmeshWithElements(SMESH_Mesh* theMesh,
const TopoDS_Shape& theShape);
// return submesh containing elements bound to theShape in theMesh
static SMESHDS_SubMesh * getSubmeshWithElements(SMESH_Mesh* theMesh,
const TopoDS_Shape& theShape);
// return submesh containing elements bound to theShape in theMesh
@@
-356,13
+369,17
@@
private:
// all functions assure that shapes are indexed so that first go
// ordered vertices, then ordered edge, then faces and maybe a shell
TopTools_IndexedMapOfOrientedShape myShapeIDMap;
// all functions assure that shapes are indexed so that first go
// ordered vertices, then ordered edge, then faces and maybe a shell
TopTools_IndexedMapOfOrientedShape myShapeIDMap;
- std::map< int, std::list< TPoint*
> >
myShapeIDToPointsMap;
+ std::map< int, std::list< TPoint*
> >
myShapeIDToPointsMap;
// for the 2d case:
// nb of key-points in each of pattern boundaries
std::list< int > myNbKeyPntInBoundary;
// for the 2d case:
// nb of key-points in each of pattern boundaries
std::list< int > myNbKeyPntInBoundary;
-
+ // nodes corresponding to myPoints
+ bool myToKeepNodes; // to keep these data
+ std::vector< const SMDS_MeshNode* > myInNodes; // loaded nodes
+ std::vector< const SMDS_MeshNode* > myOutNodes; // created nodes
+
// to compute while applying to mesh elements, not to shapes
std::vector<gp_XYZ> myXYZ; // XYZ of nodes to create
// to compute while applying to mesh elements, not to shapes
std::vector<gp_XYZ> myXYZ; // XYZ of nodes to create
@@
-371,7
+388,7
@@
private:
std::vector<const SMDS_MeshElement*> myElements; // refined elements
std::vector<const SMDS_MeshNode*> myOrderedNodes;
std::vector<const SMDS_MeshElement*> myElements; // refined elements
std::vector<const SMDS_MeshNode*> myOrderedNodes;
-
// elements to replace with polygon or polyhedron
+ // elements to replace with polygon or polyhedron
std::vector<const SMDS_MeshElement*> myPolyElems;
// definitions of new poly elements
std::list< TElemDef > myPolyElemXYZIDs;
std::vector<const SMDS_MeshElement*> myPolyElems;
// definitions of new poly elements
std::list< TElemDef > myPolyElemXYZIDs;