EgtMachKernel :

- in MachiningToolPreview migliorata la visualizzazione delle teste.
This commit is contained in:
Riccardo Elitropi
2026-03-05 09:52:54 +01:00
parent 616026d74e
commit aace2ff81d
+26 -3
View File
@@ -25,6 +25,8 @@
using namespace std ;
#define DEBUG 0
const string KEY_AXIS_GROUP = "PreviewAxisGroup" ;
const string KEY_ROT_AXIS_VAL = "PreviewRotAxisVal" ; // salvata per ogni gruppo di Preview
@@ -323,6 +325,19 @@ Machining::MyPrepareToolPreview( bool bDouble)
for ( const string& sSetHead : vSetHead)
vSetHeadIds.push_back( pMch->GetHeadId( sSetHead)) ;
// se presenti altre teste che non compaiono nell'headset le memorizzo
int nHeadParentId = m_pGeomDB->GetParentId( nHeadId) ;
INTVECTOR vOtherHeadIds ;
if ( nHeadParentId != GDB_ID_NULL) {
int nChildId = m_pGeomDB->GetFirstGroupInGroup( nHeadParentId) ;
while ( nChildId != GDB_ID_NULL) {
if ( nChildId != nHeadId && pMch->IsHeadGroup( nChildId) &&
find( vSetHeadIds.begin(), vSetHeadIds.end(), nChildId) == vSetHeadIds.end())
vOtherHeadIds.push_back( nChildId) ;
nChildId = m_pGeomDB->GetNextGroup( nChildId) ;
}
}
// recupero la tavola corrente
int nCurrTab = pMch->GetCurrTable() ;
@@ -471,7 +486,7 @@ Machining::MyPrepareToolPreview( bool bDouble)
}
// scorro i suoi figli
int nChildId = m_pGeomDB->GetFirstInGroup( nParentId) ;
while ( bOk && nChildId != GDB_ID_NULL) {
while ( bOk && nChildId != GDB_ID_NULL) {
// se vettore ausiliario lo inserisco solo se asse padre rotativo
if ( m_pGeomDB->GetGdbType( nChildId) == GDB_TY_GEO) {
if ( bRotary) {
@@ -488,13 +503,18 @@ Machining::MyPrepareToolPreview( bool bDouble)
if ( nChildId == nHeadId) {
if ( ! bDouble) {
m_nPreviewHeadId = m_pGeomDB->CopyGlob( nHeadId, GDB_ID_NULL, nNewParentId) ;
bOk = ( m_nPreviewHeadId == GDB_ID_NULL) ;
bOk = ( m_nPreviewHeadId != GDB_ID_NULL) ;
}
else {
m_nPreviewHeadIdDBL = m_pGeomDB->CopyGlob( nHeadId, GDB_ID_NULL, nNewParentId) ;
bOk = ( m_nPreviewHeadIdDBL == GDB_ID_NULL) ;
bOk = ( m_nPreviewHeadIdDBL != GDB_ID_NULL) ;
}
}
// se altra testa non presente nell'HeadSet la inserisco
else if ( find( vOtherHeadIds.begin(), vOtherHeadIds.end(), nChildId) != vOtherHeadIds.end()) {
int nOtherHeadId = m_pGeomDB->CopyGlob( nChildId, GDB_ID_NULL, nNewParentId) ;
bOk = ( nOtherHeadId != GDB_ID_NULL) ;
}
else {
// se asse successivo nella catena cinematica, sarà il nuovo gruppo padre
auto NextIter = Iter ; ++ NextIter ;
@@ -648,6 +668,9 @@ Machining::RemoveToolPreview( void)
// verifico validità gestore DB geometrico
if ( m_pGeomDB == nullptr)
return false ;
#if DEBUG
return true ;
#endif
// recupero i gruppi per l'anteprima utensile
int nStId = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST) ;
int nStIdDBL = m_pGeomDB->GetFirstNameInGroup( GetOwner(), MCH_ST_DBL) ;