EgtMachKernel :
- in Preview utensile piccole modifiche e migliorie.
This commit is contained in:
+82
-13
@@ -47,10 +47,12 @@ Machining::Machining( void)
|
||||
m_nLookFlag = MCH_LOOK_TAB_HEAD ;
|
||||
m_nPreviewHeadId = GDB_ID_NULL ;
|
||||
m_nPreviewHeadIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewExitId = GDB_ID_NULL ;
|
||||
m_nPreviewExitIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewToolTip = GDB_ID_NULL ;
|
||||
m_nPreviewToolTipDBL = GDB_ID_NULL ;
|
||||
m_vPreviewAxisIds = {} ;
|
||||
m_vPreviewAxisIdsBBL = {} ;
|
||||
m_vPreviewAxisIdsDBL = {} ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -59,10 +61,12 @@ Machining::~Machining( void)
|
||||
m_nLookFlag = MCH_LOOK_NONE ;
|
||||
m_nPreviewHeadId = GDB_ID_NULL ;
|
||||
m_nPreviewHeadIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewExitId = GDB_ID_NULL ;
|
||||
m_nPreviewExitIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewToolTip = GDB_ID_NULL ;
|
||||
m_nPreviewToolTipDBL = GDB_ID_NULL ;
|
||||
m_vPreviewAxisIds.clear() ;
|
||||
m_vPreviewAxisIdsBBL.clear() ;
|
||||
m_vPreviewAxisIdsDBL.clear() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -165,17 +169,20 @@ Machining::MyChangeToolPreviewShow( int nLookFlag, bool bDouble)
|
||||
// se non esiste il gruppo di Preview, errore
|
||||
int nCurrStdId = GDB_ID_NULL ;
|
||||
int nCurrHeadId = GDB_ID_NULL ;
|
||||
int nCurrExitId = GDB_ID_NULL ;
|
||||
if ( ! bDouble) {
|
||||
nCurrStdId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST) ;
|
||||
if ( nCurrStdId == GDB_ID_NULL || m_nPreviewHeadId == GDB_ID_NULL)
|
||||
return false ;
|
||||
nCurrHeadId = m_nPreviewHeadId ;
|
||||
nCurrExitId = m_nPreviewExitId ;
|
||||
}
|
||||
else {
|
||||
nCurrStdId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST_DBL) ;
|
||||
if ( nCurrStdId == GDB_ID_NULL || m_nPreviewHeadIdDBL == GDB_ID_NULL)
|
||||
return false ;
|
||||
nCurrHeadId = m_nPreviewHeadIdDBL ;
|
||||
nCurrExitId = m_nPreviewExitIdDBL ;
|
||||
}
|
||||
|
||||
// recupero la macchina corrente
|
||||
@@ -198,8 +205,14 @@ Machining::MyChangeToolPreviewShow( int nLookFlag, bool bDouble)
|
||||
int nIter = 0 ;
|
||||
// se devo visualizzare solamente il gruppo della testa corrente
|
||||
if ( nLookFlag == MCH_LOOK_TAB_TOOL) {
|
||||
// la testa diventa visibile
|
||||
// la testa diventa visibile ( solamente il gruppo dell'uscita corrente)
|
||||
m_pGeomDB->SetStatus( nCurrHeadId, GDB_ST_ON) ;
|
||||
int nHeadChildId = m_pGeomDB->GetFirstGroupInGroup( nCurrHeadId) ;
|
||||
while ( nHeadChildId != GDB_ID_NULL) {
|
||||
if ( nHeadChildId != nCurrExitId)
|
||||
m_pGeomDB->SetStatus( nHeadChildId, GDB_ST_OFF) ;
|
||||
nHeadChildId = m_pGeomDB->GetNext( nHeadChildId) ;
|
||||
}
|
||||
// tutti i gruppi che contengono la testa diventano visibili fino a "ST", l'unico loro
|
||||
// figlio visibile deve essere quello che contiene la testa corrente
|
||||
int nCurrId = nCurrHeadId ;
|
||||
@@ -249,10 +262,17 @@ Machining::MyChangeToolPreviewShow( int nLookFlag, bool bDouble)
|
||||
}
|
||||
}
|
||||
else {
|
||||
// visualizzo tutti i gruppi in coda
|
||||
for ( auto Iter = dqHierarchy.begin() ; Iter != dqHierarchy.end() ; ++ Iter) {
|
||||
if ( m_pGeomDB->GetGdbType( *Iter) == GDB_TY_GROUP)
|
||||
m_pGeomDB->SetStatus( *Iter, GDB_ST_ON) ;
|
||||
}
|
||||
// visualizzo tutti i sottogruppi della testa
|
||||
int nHeadChild = m_pGeomDB->GetFirstGroupInGroup( nCurrHeadId) ;
|
||||
while ( nHeadChild != GDB_ID_NULL) {
|
||||
m_pGeomDB->SetStatus( nHeadChild, GDB_ST_ON) ;
|
||||
nHeadChild = m_pGeomDB->GetNextGroup( nHeadChild) ;
|
||||
}
|
||||
}
|
||||
++ nIter ;
|
||||
}
|
||||
@@ -379,7 +399,7 @@ Machining::MyPrepareToolPreview( bool bDouble)
|
||||
if ( ! bDouble)
|
||||
m_vPreviewAxisIds.push_back( nNewTabRotAxisId) ;
|
||||
else
|
||||
m_vPreviewAxisIdsBBL.push_back( nNewTabRotAxisId) ;
|
||||
m_vPreviewAxisIdsDBL.push_back( nNewTabRotAxisId) ;
|
||||
// aggiungo il versore invertito
|
||||
int nChildId = m_pGeomDB->GetFirstInGroup( nParentId) ;
|
||||
while ( nChildId != GDB_ID_NULL) {
|
||||
@@ -478,7 +498,7 @@ Machining::MyPrepareToolPreview( bool bDouble)
|
||||
if ( ! bDouble)
|
||||
m_vPreviewAxisIds.push_back( nNewParentId) ;
|
||||
else
|
||||
m_vPreviewAxisIdsBBL.push_back( nNewParentId) ;
|
||||
m_vPreviewAxisIdsDBL.push_back( nNewParentId) ;
|
||||
// memorizzo la sua posizione iniziale
|
||||
double dAxisPos = 0. ;
|
||||
bOk = bOk && pMch->GetAxisPos( sParentName, dAxisPos) &&
|
||||
@@ -551,10 +571,14 @@ Machining::MyPrepareToolPreview( bool bDouble)
|
||||
bOk = bOk && m_pGeomDB->GetName( nExitGrpId, sExitGrpName) ;
|
||||
int nFrId = GDB_ID_NULL ;
|
||||
if ( bOk) {
|
||||
if ( ! bDouble)
|
||||
if ( ! bDouble) {
|
||||
nFrId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadId, "_" + sExitGrpName) ;
|
||||
else
|
||||
m_nPreviewExitId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadId, sExitGrpName) ;
|
||||
}
|
||||
else {
|
||||
nFrId = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadIdDBL, "_" + sExitGrpName) ;
|
||||
m_nPreviewExitIdDBL = m_pGeomDB->GetFirstNameInGroup( m_nPreviewHeadIdDBL, sExitGrpName) ;
|
||||
}
|
||||
}
|
||||
bOk = bOk && ( nFrId != GDB_ID_NULL) ;
|
||||
const IGeoFrame3d* frExit = ( bOk ? GetGeoFrame3d( m_pGeomDB->GetGeoObj( nFrId)) : nullptr) ;
|
||||
@@ -631,7 +655,7 @@ Machining::PrepareToolPreview( void)
|
||||
m_nPreviewToolTip = GDB_ID_NULL ;
|
||||
m_nPreviewToolTipDBL = GDB_ID_NULL ;
|
||||
m_vPreviewAxisIds.clear() ;
|
||||
m_vPreviewAxisIdsBBL.clear() ;
|
||||
m_vPreviewAxisIdsDBL.clear() ;
|
||||
|
||||
// preparo l'anteprima per il gruppo ST
|
||||
bool bOk = true ;
|
||||
@@ -680,10 +704,12 @@ Machining::RemoveToolPreview( void)
|
||||
// reset delle variabili membro
|
||||
m_nPreviewHeadId = GDB_ID_NULL ;
|
||||
m_nPreviewHeadIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewExitId = GDB_ID_NULL ;
|
||||
m_nPreviewExitIdDBL = GDB_ID_NULL ;
|
||||
m_nPreviewToolTip = GDB_ID_NULL ;
|
||||
m_nPreviewToolTipDBL = GDB_ID_NULL ;
|
||||
m_vPreviewAxisIds.clear() ;
|
||||
m_vPreviewAxisIdsBBL.clear() ;
|
||||
m_vPreviewAxisIdsDBL.clear() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -750,8 +776,10 @@ Machining::GetToolPreviewNext( int nEntId, int nParentId, int nStId) const
|
||||
// se prima entità, eventuale attivazione uscite di gruppo a forare
|
||||
if ( nEntId == GDB_ID_NULL && m_pGeomDB->ExistsInfo( nNewParentId, KEY_DRACEX)) {
|
||||
INTVECTOR vActExit ;
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit))
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit)) {
|
||||
ActivateDrillingUnit( m_nPreviewHeadId, vActExit) ;
|
||||
MyShowMultiDrillingTool( vActExit) ;
|
||||
}
|
||||
}
|
||||
return nNewId ;
|
||||
}
|
||||
@@ -760,8 +788,10 @@ Machining::GetToolPreviewNext( int nEntId, int nParentId, int nStId) const
|
||||
// eventuale attivazione uscite di gruppo a forare
|
||||
if ( m_pGeomDB->ExistsInfo( nNewParentId, KEY_DRACEX)) {
|
||||
INTVECTOR vActExit ;
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit))
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit)) {
|
||||
ActivateDrillingUnit( m_nPreviewHeadId, vActExit) ;
|
||||
MyShowMultiDrillingTool( vActExit) ;
|
||||
}
|
||||
}
|
||||
// recupero la prima entità del successivo gruppo
|
||||
nNewId = m_pGeomDB->GetFirstInGroup( nNewParentId) ;
|
||||
@@ -793,8 +823,10 @@ Machining::GetToolPreviewPrev( int nEntId, int nParentId, int nStId) const
|
||||
// eventuale attivazione uscite di gruppo a forare
|
||||
if ( m_pGeomDB->ExistsInfo( nNewParentId, KEY_DRACEX)) {
|
||||
INTVECTOR vActExit ;
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit))
|
||||
if ( m_pGeomDB->GetInfo( nNewParentId, KEY_DRACEX, vActExit)) {
|
||||
ActivateDrillingUnit( m_nPreviewHeadId, vActExit) ;
|
||||
MyShowMultiDrillingTool( vActExit) ;
|
||||
}
|
||||
}
|
||||
// recupero l'ultima entità del precedente gruppo
|
||||
nNewId = m_pGeomDB->GetLastInGroup( nNewParentId) ;
|
||||
@@ -852,7 +884,7 @@ Machining::MyToolPreview( int nEntId, bool bDouble) const
|
||||
}
|
||||
|
||||
// scorro gli assi dentro al gruppo "ST" ( considero solo quelli rotativi)
|
||||
const INTVECTOR& vCurrPreviewAxisIds = ( ! bDouble ? m_vPreviewAxisIds : m_vPreviewAxisIdsBBL) ;
|
||||
const INTVECTOR& vCurrPreviewAxisIds = ( ! bDouble ? m_vPreviewAxisIds : m_vPreviewAxisIdsDBL) ;
|
||||
for ( auto Iter = vCurrPreviewAxisIds.begin() ; Iter != vCurrPreviewAxisIds.end() ; ++ Iter) {
|
||||
// recupero l'Id dell'asse corrente
|
||||
int nAxisId = *Iter ;
|
||||
@@ -1169,6 +1201,43 @@ Machining::CalcMirrorByDouble( int nClId, const string& sUserNotes)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machining::MyShowMultiDrillingTool( const INTVECTOR& vActExit) const
|
||||
{
|
||||
// verifico validità del Flag
|
||||
if ( m_nLookFlag != MCH_LOOK_NONE && m_nLookFlag != MCH_LOOK_TAB_TOOL && m_nLookFlag != MCH_LOOK_TAB_HEAD)
|
||||
return false ;
|
||||
// se non ho visibilità solo utensile, non faccio nulla
|
||||
if ( m_nLookFlag != MCH_LOOK_TAB_TOOL)
|
||||
return false ;
|
||||
|
||||
// verifico che il gruppo di preview della testa sia valido
|
||||
if ( m_nPreviewHeadId == GDB_ID_NULL)
|
||||
return false ;
|
||||
|
||||
// recupero i nomi delle uscite da visualizzare nella preview
|
||||
STRVECTOR vsExit ; vsExit.resize( vActExit.size()) ;
|
||||
for ( int i = 0 ; i < ssize( vActExit) ; ++ i)
|
||||
vsExit[i] = MCH_EXIT + ToString( vActExit[i]) ;
|
||||
|
||||
// rendo visibili solo i gruppi nella preview inerenti
|
||||
int nChildHeadId = m_pGeomDB->GetFirstInGroup( m_nPreviewHeadId) ;
|
||||
while ( nChildHeadId != GDB_ID_NULL) {
|
||||
// recupero il nome del gruppo corrente
|
||||
string sName ;
|
||||
m_pGeomDB->GetName( nChildHeadId, sName) ;
|
||||
// verifico se attivare o meno il gruppo corrente
|
||||
bool bStatusOn = ( find_if( vsExit.begin(), vsExit.end(), [&]( const string& sExitName) {
|
||||
return EqualNoCase( sExitName, sName) ; }) != vsExit.end()) ;
|
||||
m_pGeomDB->SetStatus( nChildHeadId, bStatusOn ? GDB_ST_ON : GDB_ST_OFF) ;
|
||||
// passo al gruppo successivo
|
||||
nChildHeadId = m_pGeomDB->GetNextGroup( nChildHeadId) ;
|
||||
}
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machining::ActivateDrillingUnit( int nHeadId, const INTVECTOR& vActExit) const
|
||||
|
||||
Reference in New Issue
Block a user