EgtMachKernel :

- aggiunta gestione dei layer da visualizzare solo con un particolare gruppo di lavoro
- aggiunta gestione dei pezzi nascosti (GDB_MD.HIDDEN).
This commit is contained in:
Dario Sassi
2018-11-22 14:31:25 +00:00
parent a7ee986835
commit 7bd3465ec3
2 changed files with 48 additions and 0 deletions
+1
View File
@@ -430,6 +430,7 @@ class MachMgr : public IMachMgr
bool SwapParts( bool bToRawPart) ;
bool SwapRawPartParts( int nRawId, bool bToRawPart) ;
int SwapRawPartPart( int nId, bool bToRawPart) ;
bool UpdateStatusMgoLayers( int nPartId, bool bToRawPart) ;
bool ShowRootParts( bool bShow) ;
// Operations : dispositions
int AddDisposition( const std::string& sName) ;
+47
View File
@@ -106,6 +106,8 @@ MachMgr::AddPartToRawPart( int nPartId, const Point3d& ptPos, int nRawId)
// mi assicuro sia visibile il pezzo e nascosto il gruppo
m_pGeomDB->SetStatus( nPartId, GDB_ST_ON) ;
m_pGeomDB->SetStatus( nGroup, GDB_ST_OFF) ;
// gestisco la visualizzazione dei layer legati ai gruppi di lavoro
UpdateStatusMgoLayers( nPartId, true) ;
return true ;
}
@@ -143,6 +145,8 @@ MachMgr::RemovePartFromRawPart( int nPartId)
m_pGeomDB->GroupSwap( nPartId, nBase, true, true) ;
// mi assicuro sia nascosto
m_pGeomDB->SetStatus( nPartId, GDB_ST_OFF) ;
// nascondo tutti i layer del pezzo legati ai gruppi di lavoro
UpdateStatusMgoLayers( nPartId, false) ;
// cancello il gruppo di riferimento
m_pGeomDB->Erase( nBase) ;
return true ;
@@ -241,7 +245,14 @@ MachMgr::SwapRawPartPart( int nId, bool bToRawPart)
if ( m_pGeomDB->GetInfo( nId, GDB_SI_SOURCE, nSou)) {
m_pGeomDB->GroupSwap( nSou, nId, true, true) ;
// mi assicuro sia visibile
int nMode = GDB_MD_STD ; m_pGeomDB->GetMode( nSou, nMode) ;
if ( nMode != GDB_MD_STD) {
m_pGeomDB->SetMode( nSou, GDB_MD_STD) ;
m_pGeomDB->SetInfo( nSou, GDB_SI_DRAWMODE, nMode) ;
}
m_pGeomDB->SetStatus( nSou, GDB_ST_ON) ;
// gestisco la visualizzazione dei layer legati ai gruppi di lavoro
UpdateStatusMgoLayers( nSou, bToRawPart) ;
return nSou ;
}
}
@@ -251,15 +262,51 @@ MachMgr::SwapRawPartPart( int nId, bool bToRawPart)
int nBase ;
if ( m_pGeomDB->GetInfo( nId, GDB_SI_BASE, nBase)) {
m_pGeomDB->GroupSwap( nId, nBase, true, true) ;
// se necessario, ripristino il modo precedente
int nMode ;
if ( m_pGeomDB->GetInfo( nId, GDB_SI_DRAWMODE, nMode)) {
m_pGeomDB->RemoveInfo( nId, GDB_SI_DRAWMODE) ;
m_pGeomDB->SetMode( nId, nMode) ;
}
// mi assicuro sia nascosto e di livello utente
m_pGeomDB->SetStatus( nId, GDB_ST_OFF) ;
m_pGeomDB->SetLevel( nId, GDB_LV_USER) ;
// nascondo tutti i layer del pezzo legati ai gruppi di lavoro
UpdateStatusMgoLayers( nId, bToRawPart) ;
return nBase ;
}
}
return GDB_ID_NULL ;
}
//----------------------------------------------------------------------------
bool
MachMgr::UpdateStatusMgoLayers( int nPartId, bool bToRawPart)
{
// se dalla radice al grezzo
if ( bToRawPart) {
// gestisco la visualizzazione dei layer legati ai gruppi di lavoro
int nLayId = m_pGeomDB->GetFirstGroupInGroup( nPartId) ;
while ( nLayId != GDB_ID_NULL) {
int nMgoId ;
if ( m_pGeomDB->GetInfo( nLayId, GDB_SI_MGRPONLY, nMgoId))
m_pGeomDB->SetStatus( nLayId, ( nMgoId == m_nCurrMGrpId ? GDB_ST_ON : GDB_ST_OFF)) ;
nLayId = m_pGeomDB->GetNextGroup( nLayId) ;
}
}
// altrimenti dal grezzo alla radice
else {
// nascondo tutti i layer del pezzo legati ai gruppi di lavoro
int nLayId = m_pGeomDB->GetFirstGroupInGroup( nPartId) ;
while ( nLayId != GDB_ID_NULL) {
if ( m_pGeomDB->ExistsInfo( nLayId, GDB_SI_MGRPONLY))
m_pGeomDB->SetStatus( nLayId, GDB_ST_OFF) ;
nLayId = m_pGeomDB->GetNextGroup( nLayId) ;
}
}
return true ;
}
//----------------------------------------------------------------------------
bool
MachMgr::ShowRootParts( bool bShow)