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
23368: [CEA 1865] Possibility to define faces to mesh as a single one: transpatch...
[modules/smesh.git]
/
src
/
SMESHUtils
/
SMESH_MAT2d.cxx
diff --git
a/src/SMESHUtils/SMESH_MAT2d.cxx
b/src/SMESHUtils/SMESH_MAT2d.cxx
index c9fcd85013fb991b19f7235285c15c7b1c79b03b..2c20eb81515fdb3544440b957549b061b8b12f47 100644
(file)
--- a/
src/SMESHUtils/SMESH_MAT2d.cxx
+++ b/
src/SMESHUtils/SMESH_MAT2d.cxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-201
5
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-201
6
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
@@
-47,7
+47,7
@@
#include <TopoDS_Wire.hxx>
#ifdef _DEBUG_
#include <TopoDS_Wire.hxx>
#ifdef _DEBUG_
-#define _MYDEBUG_
+
//
#define _MYDEBUG_
#include "SMESH_File.hxx"
#include "SMESH_Comment.hxx"
#endif
#include "SMESH_File.hxx"
#include "SMESH_Comment.hxx"
#endif
@@
-93,8
+93,8
@@
namespace
list< const TVDEdge* > _edges; // MA edges in CCW order within _cell
InSegment( InPoint * p0, InPoint * p1, size_t iE)
list< const TVDEdge* > _edges; // MA edges in CCW order within _cell
InSegment( InPoint * p0, InPoint * p1, size_t iE)
- : _p0(p0), _p1(p1), _geomEdgeInd(iE) {}
- InSegment() : _p0(0), _p1(0), _geomEdgeInd(0) {}
+ : _p0(p0), _p1(p1), _geomEdgeInd(iE)
, _cell(0)
{}
+ InSegment() : _p0(0), _p1(0), _geomEdgeInd(0)
, _cell(0)
{}
const InPoint& point0() const { return *_p0; }
const InPoint& point1() const { return *_p1; }
const InPoint& point0() const { return *_p0; }
const InPoint& point1() const { return *_p1; }
@@
-162,6
+162,8
@@
namespace
if ( inSegments.size() > 1000 )
return;
const char* fileName = "/misc/dn25/salome/eap/salome/misc/Code/C++/MAdebug.txt";
if ( inSegments.size() > 1000 )
return;
const char* fileName = "/misc/dn25/salome/eap/salome/misc/Code/C++/MAdebug.txt";
+ const char* user = getenv("USER");
+ if ( !user || strcmp( user, "eap" )) return;
SMESH_File file(fileName, false );
file.remove();
file.openForWriting();
SMESH_File file(fileName, false );
file.remove();
file.openForWriting();
@@
-218,9
+220,9
@@
namespace
}
}
#else
}
}
#else
-
void inSegmentsToFile( vector< InSegment>& inSegments
) {}
- void dumpEdge( const TVDEdge* edge ) {}
- void dumpCell( const TVDCell* cell ) {}
+
#define inSegmentsToFile(arg
) {}
+
//
void dumpEdge( const TVDEdge* edge ) {}
+
//
void dumpCell( const TVDCell* cell ) {}
#endif
}
// -------------------------------------------------------------------------------------
#endif
}
// -------------------------------------------------------------------------------------
@@
-660,7
+662,7
@@
namespace
// get scale to have the same 2d proportions as in 3d
computeProportionScale( face, uvBox, scale );
// get scale to have the same 2d proportions as in 3d
computeProportionScale( face, uvBox, scale );
- // make
scale
to have coordinates precise enough when converted to int
+ // make
'scale' such that
to have coordinates precise enough when converted to int
gp_XY uvMin = uvBox.CornerMin(), uvMax = uvBox.CornerMax();
uvMin.ChangeCoord(1) = uvMin.X() * scale[0];
gp_XY uvMin = uvBox.CornerMin(), uvMax = uvBox.CornerMax();
uvMin.ChangeCoord(1) = uvMin.X() * scale[0];
@@
-670,7
+672,7
@@
namespace
double vMax[2] = { Max( Abs( uvMin.X() ), Abs( uvMax.X() )),
Max( Abs( uvMin.Y() ), Abs( uvMax.Y() )) };
int iMax = ( vMax[0] > vMax[1] ) ? 0 : 1;
double vMax[2] = { Max( Abs( uvMin.X() ), Abs( uvMax.X() )),
Max( Abs( uvMin.Y() ), Abs( uvMax.Y() )) };
int iMax = ( vMax[0] > vMax[1] ) ? 0 : 1;
- const double precision =
1e-5
;
+ const double precision =
Min( 1e-5, minSegLen * 1e-2 )
;
double preciScale = Min( vMax[iMax] / precision,
std::numeric_limits<int>::max() / vMax[iMax] );
preciScale /= scale[iMax];
double preciScale = Min( vMax[iMax] / precision,
std::numeric_limits<int>::max() / vMax[iMax] );
preciScale /= scale[iMax];
@@
-701,6
+703,8
@@
namespace
{
inPoints[ iP++ ] = points[i-1].getInPoint( scale );
inSegments.push_back( InSegment( & inPoints[ iP-2 ], & inPoints[ iP-1 ], iE ));
{
inPoints[ iP++ ] = points[i-1].getInPoint( scale );
inSegments.push_back( InSegment( & inPoints[ iP-2 ], & inPoints[ iP-1 ], iE ));
+ if ( inPoints[ iP-2 ] == inPoints[ iP-1 ])
+ return false; // too short segment
}
}
}
}
}
}
@@
-714,6
+718,8
@@
namespace
{
inPoints[ iP++ ] = points[i].getInPoint( scale );
inSegments.push_back( InSegment( & inPoints[ iP-2 ], & inPoints[ iP-1 ], iE ));
{
inPoints[ iP++ ] = points[i].getInPoint( scale );
inSegments.push_back( InSegment( & inPoints[ iP-2 ], & inPoints[ iP-1 ], iE ));
+ if ( inPoints[ iP-2 ] == inPoints[ iP-1 ])
+ return false; // too short segment
}
}
}
}
}
}
@@
-1518,9
+1524,9
@@
Adaptor3d_Curve* SMESH_MAT2d::MedialAxis::make3DCurve(const Branch& branch) cons
*/
//================================================================================
*/
//================================================================================
-void SMESH_MAT2d::Branch::init( vector<const TVDEdge*>& maEdges,
- const Boundary* boundary,
- map< const TVDVertex*, BranchEndType > endType )
+void SMESH_MAT2d::Branch::init( vector<const TVDEdge*>&
maEdges,
+ const Boundary*
boundary,
+ map< const TVDVertex*, BranchEndType >
&
endType )
{
if ( maEdges.empty() ) return;
{
if ( maEdges.empty() ) return;