EgtMachKernel 2.6i2 :
- per aggregato da sotto aggiunta gestione approcci/retrazione di tipo 3 (prima parallelo al grezzo poi ruota a perpendicolare stando sotto e viceversa) - ai punti aggiunti per garantire la precisione lineare con assi rotanti in movimento tolto flag 401 e impostato flag2 a -1 - nelle forature aggiustati i fori a step con i foratori multipli rotanti.
This commit is contained in:
+56
-10
@@ -1690,7 +1690,7 @@ Drilling::GenerateHoleCl( int nInd, const SelData& nCircId, const string& sPName
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ( DoPeckDrilling( hole, nCircId, nPathId)) {
|
||||
if ( DoPeckDrilling( hole, nCircId, nPathId, dMHOff, vtA)) {
|
||||
// aggiorno numero forature
|
||||
++ m_nDrillings ;
|
||||
}
|
||||
@@ -2097,7 +2097,7 @@ Drilling::VerifyHoleFromBottom( const Hole& hole, SelData Id)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double dMHOff, Vector3d vtA)
|
||||
Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double dMHOff, const Vector3d& vtA)
|
||||
{
|
||||
// aggiusto alcuni parametri del ciclo di foratura
|
||||
double dStartSlowLen = abs( m_Params.m_dStartSlowLen) ;
|
||||
@@ -2132,19 +2132,33 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double
|
||||
Point3d ptP1 = hole.ptIni + hole.vtDir * ( dAppr + dElev + dTExtrLen + dMHOff) ;
|
||||
if ( m_bAggrBottom) {
|
||||
Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ;
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
// se rinvio da sotto che richiede speciale rotazione
|
||||
if ( m_AggrBottom.nType == 1) {
|
||||
// punto ruotato
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// vado al punto standard
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
SetFlag( 0) ;
|
||||
if ( AddRapidMove( ptP0, bSplitArcs, MCH_CL_AGB_IN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
}
|
||||
// se altrimenti con rotazione per minimizzare la sporgenza
|
||||
else if ( m_AggrBottom.nType == 3) {
|
||||
// punto standard ruotato
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// la rotazione viene eseguita nel movimento successivo al punto sopra l'inizio lavorazione
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
SetFlag( 0) ;
|
||||
}
|
||||
// altrimenti rinvio normale
|
||||
else {
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
@@ -2156,7 +2170,7 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double
|
||||
return false ;
|
||||
}
|
||||
else {
|
||||
if( ! vtA.IsSmall())
|
||||
if ( ! vtA.IsSmall())
|
||||
SetAuxDir( vtA) ;
|
||||
if ( AddRapidStart( ptP1) == GDB_ID_NULL)
|
||||
return false ;
|
||||
@@ -2205,13 +2219,21 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double
|
||||
return false ;
|
||||
// 7 -> punto fuori (se uso aggregato da sotto)
|
||||
if ( m_bAggrBottom) {
|
||||
// se con rotazione per minimizzare la sporgenza
|
||||
if ( m_AggrBottom.nType == 3) {
|
||||
// imposto rotazione su punto standard
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
}
|
||||
SetFlag( 0) ;
|
||||
// vado al punto
|
||||
Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ;
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
if ( AddRapidMove( ptP0, bSplitArcs, MCH_CL_AGB_OUT) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// se rinvio da sotto che richiede speciale rotazione
|
||||
// se rinvio da sotto che richiede speciale rotazione
|
||||
if ( m_AggrBottom.nType == 1) {
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
@@ -2228,7 +2250,7 @@ Drilling::DoStandardDrilling( const Hole& hole, SelData Id, int nPathId, double
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId)
|
||||
Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId, double dMHOff, const Vector3d& vtA)
|
||||
{
|
||||
// aggiusto alcuni parametri del ciclo di foratura
|
||||
double dStartSlowLen = abs( m_Params.m_dStartSlowLen) ;
|
||||
@@ -2262,22 +2284,36 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId)
|
||||
double dSafeZ = GetSafeZ() ;
|
||||
double dSafeAggrBottZ = GetSafeAggrBottZ() ;
|
||||
double dAppr = ( m_bAggrBottom ? dSafeAggrBottZ : dSafeZ) ;
|
||||
Point3d ptP1 = hole.ptIni + hole.vtDir * ( dAppr + dElev + dTExtrLen) ;
|
||||
Point3d ptP1 = hole.ptIni + hole.vtDir * ( dAppr + dElev + dTExtrLen + dMHOff) ;
|
||||
if ( m_bAggrBottom) {
|
||||
Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ;
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
// se rinvio da sotto che richiede speciale rotazione
|
||||
if ( m_AggrBottom.nType == 1) {
|
||||
// punto ruotato
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
if ( AddRapidStart( ptP00, MCH_CL_AGB_DWN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// vado al punto standard
|
||||
SetFlag( 0) ;
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
if ( AddRapidMove( ptP0, bSplitArcs, MCH_CL_AGB_IN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
}
|
||||
// se altrimenti con rotazione per minimizzare la sporgenza
|
||||
else if ( m_AggrBottom.nType == 3) {
|
||||
// punto standard ruotato
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
if ( AddRapidStart( ptP0, MCH_CL_AGB_IN) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// la rotazione viene eseguita nel movimento successivo al punto sopra l'inizio lavorazione
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
SetFlag( 0) ;
|
||||
}
|
||||
// altrimenti rinvio normale
|
||||
else {
|
||||
SetAuxDir( m_vtAggrBottom) ;
|
||||
@@ -2289,6 +2325,8 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId)
|
||||
return false ;
|
||||
}
|
||||
else {
|
||||
if ( ! vtA.IsSmall())
|
||||
SetAuxDir( vtA) ;
|
||||
if ( AddRapidStart( ptP1) == GDB_ID_NULL)
|
||||
return false ;
|
||||
}
|
||||
@@ -2409,13 +2447,21 @@ Drilling::DoPeckDrilling( const Hole& hole, SelData Id, int nPathId)
|
||||
|
||||
// 7 -> punto fuori (se uso aggregato da sotto)
|
||||
if ( m_bAggrBottom) {
|
||||
// se con rotazione per minimizzare la sporgenza
|
||||
if ( m_AggrBottom.nType == 3) {
|
||||
// imposto rotazione su punto standard
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
}
|
||||
// vado al punto
|
||||
SetFlag( 0) ;
|
||||
Point3d ptP0 = ptP1 + m_vtAggrBottom * ( m_dDistBottom + m_AggrBottom.dEncH + dSafeZ) ;
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
if ( AddRapidMove( ptP0, bSplitArcs, MCH_CL_AGB_OUT) == GDB_ID_NULL)
|
||||
return false ;
|
||||
// se rinvio da sotto che richiede speciale rotazione
|
||||
if ( m_AggrBottom.nType == 1) {
|
||||
Point3d ptP00 = ptP0 + Z_AX * ( m_AggrBottom.dEncV + m_TParams.m_dLen + dAppr + dTExtrLen) ;
|
||||
Vector3d vtAux = m_vtAggrBottom ;
|
||||
vtAux.Rotate( Z_AX, 0, 1) ;
|
||||
SetAuxDir( vtAux) ;
|
||||
|
||||
Reference in New Issue
Block a user