Files
EgtMachKernel/MachMgrFixtures.cpp
T
Dario Sassi 2f016585bb EgtMachKernel :
- in calcolo angoli macchina aggiunta segnalazione di direzione utensile irraggiungibile
- in disposizione aggiunti controlli di sottopezzo e grezzo in tavola
- in simulazione la Move ora restituisce uno stato
- migliorato calcolo elevazione per lavorazioni con lama
- la tavola macchina conserva l'area utile.
2015-11-23 09:06:44 +00:00

114 lines
3.9 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : MachMgrFixtures.cpp Data : 13.05.15 Versione : 1.6e6
// Contenuto : Implementazione gestione ventose e morse della classe MachMgr.
//
//
//
// Modifiche : 13.05.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "DllMain.h"
#include "MachMgr.h"
#include "MachConst.h"
#include "Disposition.h"
#include "/EgtDev/Include/EGkGdbIterator.h"
#include "/EgtDev/Include/EGnFileUtils.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
using namespace std ;
//----------------------------------------------------------------------------
bool
MachMgr::SetTable( const string& sTable)
{
// imposto la tavola per la disposizione ( e il calcolo)
int nDispId = GetFirstOperation() ;
Disposition* pDisp = dynamic_cast<Disposition*>( m_pGeomDB->GetUserObj( nDispId)) ;
return ( pDisp != nullptr && pDisp->SetTable( sTable)) ;
}
//----------------------------------------------------------------------------
bool
MachMgr::GetTableRef( int nInd, Point3d& ptPos)
{
// attualmente previsto solo il riferimento 1
if ( nInd != 1)
return false ;
// recupero la prima operazione, deve essere la disposizione
int nDispId = GetFirstOperation() ;
// recupero il primo oggetto disposizione
Disposition* pDisp = dynamic_cast<Disposition*>( m_pGeomDB->GetUserObj( nDispId)) ;
if ( pDisp == nullptr)
return false ;
// recupero il punto
return pDisp->GetTableRef1( ptPos) ;
}
//----------------------------------------------------------------------------
bool
MachMgr::GetTableArea( int nInd, BBox3d& b3Area1)
{
// attualmente prevista solo l'area 1
if ( nInd != 1)
return false ;
// recupero la prima operazione, deve essere la disposizione
int nDispId = GetFirstOperation() ;
// recupero il primo oggetto disposizione
Disposition* pDisp = dynamic_cast<Disposition*>( m_pGeomDB->GetUserObj( nDispId)) ;
if ( pDisp == nullptr)
return false ;
// recupero il bounding box
return pDisp->GetTableArea1( b3Area1) ;
}
//----------------------------------------------------------------------------
int
MachMgr::AddFixture( const string& sName, const Point3d& ptPos, double dAngRotDeg)
{
// recupero la prima operazione, deve essere la disposizione
int nDispId = GetFirstOperation() ;
// recupero l'oggetto disposizione
Disposition* pDisp = dynamic_cast<Disposition*>( m_pGeomDB->GetUserObj( nDispId)) ;
if ( pDisp == nullptr)
return false ;
// eseguo l'operazione
return pDisp->AddFixture( sName, ptPos, dAngRotDeg) ;
}
//----------------------------------------------------------------------------
bool
MachMgr::ShowOnlyTable( bool bVal)
{
// verifico DB geometrico
if ( m_pGeomDB == nullptr)
return false ;
// recupero la macchina corrente
Machine* pMch = GetCurrMachine() ;
if ( pMch == nullptr)
return false ;
// recupero la tavola corrente
int nTabId = pMch->GetCurrTable() ;
if ( nTabId == GDB_ID_NULL)
return false ;
// nascondo o visualizzo i fratelli e tutti i fratelli degli ascendenti
int nCurrId = nTabId ;
int nParentId = m_pGeomDB->GetParentId( nCurrId) ;
while ( nParentId != GDB_ID_NULL && nParentId != GetMachAuxId()) {
int nId = m_pGeomDB->GetFirstInGroup( nParentId) ;
while ( nId != GDB_ID_NULL) {
if ( nId != nCurrId)
m_pGeomDB->SetStatus( nId, ( bVal ? GDB_ST_OFF : GDB_ST_ON)) ;
nId = m_pGeomDB->GetNext( nId) ;
}
nCurrId = nParentId ;
nParentId = m_pGeomDB->GetParentId( nParentId) ;
}
return true ;
}