EgtGeomKernel 1.6d2 :

- BBox3d aggiunta LocToLoc e migliorati i controlli per validità
- aggiunta gestione estrusione nell'ingombro delle curve
- a CurveComposite aggiunta funzione che la chiude
- in GdbIterator aggiunte GoTo con nome
- in GeomDB aggiunte Get con nome
- in GeomDB aggiunto swap tra gruppi con gestione di base, sorgente e lista referenti
- migliorata gestione materiale ereditato in Relocate
- aggiunte SetInfo e GetInfo con INTVECTOR e DBLVECTOR
- aggiunte FromString e ToString con BBox3d.
This commit is contained in:
Dario Sassi
2015-04-16 06:47:52 +00:00
parent 0f7b78fea7
commit 08831a6849
24 changed files with 1082 additions and 92 deletions
+416 -2
View File
@@ -202,7 +202,6 @@ GdbIterator::EraseAndGoToNext( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al successivo
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetNext() ;
@@ -217,7 +216,6 @@ GdbIterator::EraseAndGoToPrev( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al precedente
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetPrev() ;
@@ -226,6 +224,422 @@ GdbIterator::EraseAndGoToPrev( void)
return true ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToFirstNameInGroup( int nIdGroup, const string& sName)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetFirstObj() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToFirstNameInGroup( const IGdbIterator& iIter, const string& sName)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// converto in oggetto iteratore di base
const GdbIterator* pIter = dynamic_cast<const GdbIterator*> (&iIter) ;
if ( pIter == nullptr || pIter->m_pGDB != m_pGDB) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = GetGdbGroup( pIter->m_pCurrObj) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetFirstObj() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToNextName( const string& sName)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// ciclo fino al prossimo gruppo
m_pCurrObj = m_pCurrObj->GetNext() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToLastNameInGroup( int nIdGroup, const string& sName)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetLastObj() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToLastNameInGroup( const IGdbIterator& iIter, const string& sName)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// converto in oggetto iteratore di base
const GdbIterator* pIter = dynamic_cast<const GdbIterator*> (&iIter) ;
if ( pIter == nullptr || pIter->m_pGDB != m_pGDB) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = GetGdbGroup( pIter->m_pCurrObj) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetLastObj() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToPrevName( const string& sName)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// ciclo fino al precedente gruppo
m_pCurrObj = m_pCurrObj->GetPrev() ;
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::EraseAndGoToNextName( const string& sName)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al successivo
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetNext() ;
// eseguo cancellazione
m_pGDB->Erase( pObjToErase) ;
// se corrente non gruppo, passo al successivo gruppo
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::EraseAndGoToPrevName( const string& sName)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al precedente
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetPrev() ;
// eseguo cancellazione
m_pGDB->Erase( pObjToErase) ;
// se corrente non gruppo, passo al precedente gruppo
while ( m_pCurrObj != nullptr) {
// se ha il nome cercato
string sObjName ;
if ( m_pCurrObj->GetName( sObjName) && sObjName == sName)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToFirstGroupInGroup( int nIdGroup)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetFirstObj() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToFirstGroupInGroup( const IGdbIterator& iIter)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// converto in oggetto iteratore di base
const GdbIterator* pIter = dynamic_cast<const GdbIterator*> (&iIter) ;
if ( pIter == nullptr || pIter->m_pGDB != m_pGDB) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = GetGdbGroup( pIter->m_pCurrObj) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetFirstObj() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToNextGroup( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// ciclo fino al prossimo gruppo
m_pCurrObj = m_pCurrObj->GetNext() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToLastGroupInGroup( int nIdGroup)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = m_pGDB->GetGdbGroup( nIdGroup) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetLastObj() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToLastGroupInGroup( const IGdbIterator& iIter)
{
if ( m_pGDB == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// converto in oggetto iteratore di base
const GdbIterator* pIter = dynamic_cast<const GdbIterator*> (&iIter) ;
if ( pIter == nullptr || pIter->m_pGDB != m_pGDB) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero il gruppo
GdbGroup* pGdbGroup = GetGdbGroup( pIter->m_pCurrObj) ;
if ( pGdbGroup == nullptr) {
m_pCurrObj = nullptr ;
return false ;
}
// recupero l'oggetto
m_pCurrObj = pGdbGroup->GetLastObj() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::GoToPrevGroup( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// ciclo fino al precedente gruppo
m_pCurrObj = m_pCurrObj->GetPrev() ;
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::EraseAndGoToNextGroup( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al successivo
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetNext() ;
// eseguo cancellazione
m_pGDB->Erase( pObjToErase) ;
// se corrente non gruppo, passo al successivo gruppo
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al successivo
m_pCurrObj = m_pCurrObj->GetNext() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
bool
GdbIterator::EraseAndGoToPrevGroup( void)
{
if ( m_pGDB == nullptr || m_pCurrObj == nullptr)
return false ;
// passo al precedente
GdbObj* pObjToErase = m_pCurrObj ;
m_pCurrObj = m_pCurrObj->GetPrev() ;
// eseguo cancellazione
m_pGDB->Erase( pObjToErase) ;
// se corrente non gruppo, passo al precedente gruppo
while ( m_pCurrObj != nullptr) {
// se di tipo gruppo
if ( GetGdbGroup( m_pCurrObj) != nullptr)
return true ;
// passo al precedente
m_pCurrObj = m_pCurrObj->GetPrev() ;
}
// non trovato
return false ;
}
//----------------------------------------------------------------------------
int
GdbIterator::GetGdbType( void) const