Merge branch 'master' into FasterVMill5Axis_Bez3x1
This commit is contained in:
@@ -2406,6 +2406,7 @@ VolZmap::MillingGeneralMotionStep( const Point3d& ptPs, const Vector3d& vtDs, co
|
||||
n5AxisType = Move5Axis::NO_BASE_INTERS;
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
Point3d ptLs[N_MAPS] ;
|
||||
Point3d ptLe[N_MAPS] ;
|
||||
Vector3d vtLs[N_MAPS] ;
|
||||
@@ -2450,6 +2451,86 @@ VolZmap::MillingGeneralMotionStep( const Point3d& ptPs, const Vector3d& vtDs, co
|
||||
bOk = SelectGeneralMotion(j, ptLs[j], ptLe[j], vtLs[j], vtLe[j], n5AxisType) && bOk ;
|
||||
}
|
||||
}
|
||||
=======
|
||||
vector<Point3d[N_MAPS]> ptLs( nStepCnt) ;
|
||||
vector<Point3d[N_MAPS]> ptLe( nStepCnt) ;
|
||||
vector<Vector3d[N_MAPS]> vtLs( nStepCnt) ;
|
||||
vector<Vector3d[N_MAPS]> vtLe( nStepCnt) ;
|
||||
|
||||
// calcolo gli step (anticipo un poco gli inizi intermedi)
|
||||
for ( int i = 0 ; i < nStepCnt ; ++ i) {
|
||||
double dCoeffS = max( ( i - 0.05) / nStepCnt, 0.) ;
|
||||
double dCoeffE = min( ( i + 1.) / nStepCnt, 1.) ;
|
||||
Point3d ptSti = Media( ptPs, ptPe, dCoeffS) ;
|
||||
Vector3d vtDSi = Media( vtDs, vtDe, dCoeffS) ; vtDSi.Normalize() ;
|
||||
Point3d ptEni = Media( ptPs, ptPe, dCoeffE) ;
|
||||
Vector3d vtDEi = Media( vtDs, vtDe, dCoeffE) ; vtDEi.Normalize() ;
|
||||
|
||||
InitializePointsAndVectors( ptSti, ptEni, vtDSi, vtDEi, ptLs[i], ptLe[i], vtLs[i], vtLe[i]) ;
|
||||
}
|
||||
|
||||
// Standard è multithread
|
||||
constexpr bool MULTITHREAD = true ;
|
||||
if ( MULTITHREAD) {
|
||||
|
||||
// Ciclo sulle mappe
|
||||
vector< future<bool>> vRes( m_nMapNum) ;
|
||||
// Standard è multithread
|
||||
constexpr bool MULTITHREAD = true ;
|
||||
if ( MULTITHREAD) {
|
||||
// Ciclo sulle mappe
|
||||
vector<future<bool>> vRes( m_nMapNum) ;
|
||||
|
||||
vector<PNTVECTOR> ptLs_j( m_nMapNum) ;
|
||||
vector<PNTVECTOR> ptLe_j( m_nMapNum) ;
|
||||
vector<VCT3DVECTOR> vtLs_j( m_nMapNum) ;
|
||||
vector<VCT3DVECTOR> vtLe_j( m_nMapNum) ;
|
||||
for ( int j = 0 ; j < m_nMapNum ; ++j) {
|
||||
ptLs_j[j].resize( nStepCnt) ;
|
||||
ptLe_j[j].resize( nStepCnt) ;
|
||||
vtLs_j[j].resize( nStepCnt) ;
|
||||
vtLe_j[j].resize( nStepCnt) ;
|
||||
for ( int k = 0 ; k < nStepCnt ; ++k) {
|
||||
ptLs_j[j][k] = ptLs[k][j] ;
|
||||
ptLe_j[j][k] = ptLe[k][j] ;
|
||||
vtLs_j[j][k] = vtLs[k][j] ;
|
||||
vtLe_j[j][k] = vtLe[k][j] ;
|
||||
}
|
||||
}
|
||||
|
||||
for ( int j = 0 ; j < m_nMapNum ; ++ j) {
|
||||
vRes[j] = async( launch::async, &VolZmap::SelectGeneralMotion, this, j, cref( ptLs_j[j]), cref( ptLe_j[j]),
|
||||
cref( vtLs_j[j]), cref( vtLe_j[j]), n5AxisType) ;
|
||||
}
|
||||
|
||||
int nTerminated = 0 ;
|
||||
while ( nTerminated < m_nMapNum) {
|
||||
for ( int j = 0 ; j < m_nMapNum ; ++ j) {
|
||||
if ( vRes[j].valid() && vRes[j].wait_for( chrono::nanoseconds{ 1}) == future_status::ready) {
|
||||
bOk = vRes[j].get() && bOk ;
|
||||
++ nTerminated ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// !!!! NON MULTITHREAD : SOLO PER DEBUG !!!!
|
||||
else {
|
||||
// Ciclo sulle mappe
|
||||
for ( int j = 0 ; j < m_nMapNum ; ++j) {
|
||||
PNTVECTOR ptLs_j( nStepCnt) ;
|
||||
PNTVECTOR ptLe_j( nStepCnt) ;
|
||||
VCT3DVECTOR vtLs_j( nStepCnt) ;
|
||||
VCT3DVECTOR vtLe_j( nStepCnt) ;
|
||||
for ( int k = 0 ; k < nStepCnt ; ++k) {
|
||||
ptLs_j[k] = ptLs[k][j] ;
|
||||
ptLe_j[k] = ptLe[k][j] ;
|
||||
vtLs_j[k] = vtLs[k][j] ;
|
||||
vtLe_j[k] = vtLe[k][j] ;
|
||||
}
|
||||
bOk = SelectGeneralMotion( j, ptLs_j, ptLe_j, vtLs_j,vtLe_j, n5AxisType) && bOk ;
|
||||
}
|
||||
>>>>>>> master
|
||||
}
|
||||
|
||||
return bOk ;
|
||||
|
||||
Reference in New Issue
Block a user