mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-13 02:00:34 +05:00
Changes for bug 0020681.
This commit is contained in:
parent
ae8e36cc4a
commit
e096680dda
@ -804,20 +804,31 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
|
|||||||
}
|
}
|
||||||
if(!IsExist) Params.InsertBefore(j,aPnts[i]);
|
if(!IsExist) Params.InsertBefore(j,aPnts[i]);
|
||||||
}
|
}
|
||||||
double par2, par1;
|
double par2, par1, lp;
|
||||||
par1 = f;
|
par1 = f;
|
||||||
|
lp = l;
|
||||||
|
double sign = 1.0;
|
||||||
|
if(theReverse) {
|
||||||
|
par1 = l;
|
||||||
|
lp = f;
|
||||||
|
sign = -1.0;
|
||||||
|
}
|
||||||
double eltSize, segmentSize = 0.;
|
double eltSize, segmentSize = 0.;
|
||||||
double currAbscissa = 0;
|
double currAbscissa = 0;
|
||||||
for(i=0; i<Params.Length(); i++) {
|
for(i=0; i<Params.Length(); i++) {
|
||||||
int nbseg = ( i > nbsegs.size()-1 ) ? nbsegs[0] : nbsegs[i];
|
int nbseg = ( i > nbsegs.size()-1 ) ? nbsegs[0] : nbsegs[i];
|
||||||
segmentSize = Params.Value(i+1)*theLength - currAbscissa;
|
segmentSize = Params.Value(i+1)*theLength - currAbscissa;
|
||||||
currAbscissa += segmentSize;
|
currAbscissa += segmentSize;
|
||||||
GCPnts_AbscissaPoint APnt(theC3d, segmentSize, par1);
|
GCPnts_AbscissaPoint APnt(theC3d, sign*segmentSize, par1);
|
||||||
if( !APnt.IsDone() )
|
if( !APnt.IsDone() )
|
||||||
return error( "GCPnts_AbscissaPoint failed");
|
return error( "GCPnts_AbscissaPoint failed");
|
||||||
par2 = APnt.Parameter();
|
par2 = APnt.Parameter();
|
||||||
eltSize = segmentSize/nbseg;
|
eltSize = segmentSize/nbseg;
|
||||||
GCPnts_UniformAbscissa Discret(theC3d, eltSize, par1, par2);
|
GCPnts_UniformAbscissa Discret(theC3d, eltSize, par1, par2);
|
||||||
|
if(theReverse)
|
||||||
|
Discret.Initialize(theC3d, eltSize, par2, par1);
|
||||||
|
else
|
||||||
|
Discret.Initialize(theC3d, eltSize, par1, par2);
|
||||||
if ( !Discret.IsDone() )
|
if ( !Discret.IsDone() )
|
||||||
return error( "GCPnts_UniformAbscissa failed");
|
return error( "GCPnts_UniformAbscissa failed");
|
||||||
int NbPoints = Discret.NbPoints();
|
int NbPoints = Discret.NbPoints();
|
||||||
@ -826,7 +837,13 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
|
|||||||
double param = Discret.Parameter(i);
|
double param = Discret.Parameter(i);
|
||||||
tmpParams.push_back( param );
|
tmpParams.push_back( param );
|
||||||
}
|
}
|
||||||
compensateError( eltSize, eltSize, par1, par2, theLength, theC3d, tmpParams );
|
if (theReverse) {
|
||||||
|
compensateError( eltSize, eltSize, par2, par1, segmentSize, theC3d, tmpParams );
|
||||||
|
tmpParams.reverse();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
compensateError( eltSize, eltSize, par1, par2, segmentSize, theC3d, tmpParams );
|
||||||
|
}
|
||||||
list<double>::iterator itP = tmpParams.begin();
|
list<double>::iterator itP = tmpParams.begin();
|
||||||
for(; itP != tmpParams.end(); itP++) {
|
for(; itP != tmpParams.end(); itP++) {
|
||||||
theParams.push_back( *(itP) );
|
theParams.push_back( *(itP) );
|
||||||
@ -837,9 +854,13 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
|
|||||||
}
|
}
|
||||||
// add for last
|
// add for last
|
||||||
int nbseg = ( nbsegs.size() > Params.Length() ) ? nbsegs[Params.Length()] : nbsegs[0];
|
int nbseg = ( nbsegs.size() > Params.Length() ) ? nbsegs[Params.Length()] : nbsegs[0];
|
||||||
segmentSize = theLength - segmentSize;
|
segmentSize = theLength - currAbscissa;
|
||||||
eltSize = segmentSize/nbseg;
|
eltSize = segmentSize/nbseg;
|
||||||
GCPnts_UniformAbscissa Discret(theC3d, eltSize, par1, l);
|
GCPnts_UniformAbscissa Discret;
|
||||||
|
if(theReverse)
|
||||||
|
Discret.Initialize(theC3d, eltSize, par1, lp);
|
||||||
|
else
|
||||||
|
Discret.Initialize(theC3d, eltSize, lp, par1);
|
||||||
if ( !Discret.IsDone() )
|
if ( !Discret.IsDone() )
|
||||||
return error( "GCPnts_UniformAbscissa failed");
|
return error( "GCPnts_UniformAbscissa failed");
|
||||||
int NbPoints = Discret.NbPoints();
|
int NbPoints = Discret.NbPoints();
|
||||||
@ -848,7 +869,13 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh & theMesh,
|
|||||||
double param = Discret.Parameter(i);
|
double param = Discret.Parameter(i);
|
||||||
tmpParams.push_back( param );
|
tmpParams.push_back( param );
|
||||||
}
|
}
|
||||||
compensateError(eltSize, eltSize, par1, l, segmentSize, theC3d, tmpParams);
|
if (theReverse) {
|
||||||
|
compensateError( eltSize, eltSize, lp, par1, segmentSize, theC3d, tmpParams );
|
||||||
|
tmpParams.reverse();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
compensateError( eltSize, eltSize, par1, lp, segmentSize, theC3d, tmpParams );
|
||||||
|
}
|
||||||
list<double>::iterator itP = tmpParams.begin();
|
list<double>::iterator itP = tmpParams.begin();
|
||||||
for(; itP != tmpParams.end(); itP++) {
|
for(; itP != tmpParams.end(); itP++) {
|
||||||
theParams.push_back( *(itP) );
|
theParams.push_back( *(itP) );
|
||||||
|
Loading…
Reference in New Issue
Block a user