Merge branch 'master' into FasterVMill5Axis_Bez3x1

This commit is contained in:
Daniele Bariletti
2025-09-26 10:49:25 +02:00
3 changed files with 85 additions and 4 deletions
+81
View File
@@ -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 ;