EgtGeomKernel :

- deselezione ora riporta allo stato precedente a selezione
- a CurveComposite aggiunte Set/GetCurveTempProp .
This commit is contained in:
Dario Sassi
2018-10-29 07:35:46 +00:00
parent bdd889c74a
commit a19a8be2cc
5 changed files with 44 additions and 7 deletions
+3 -2
View File
@@ -59,10 +59,11 @@ class Attribs
int GetMode( void) const
{ return m_Data[MODE] ; }
void SetStatus( int nStat)
{ m_OldData[STATUS] = m_Data[STATUS] ;
{ if ( m_Data[STATUS] != GDB_ST_SEL)
m_OldData[STATUS] = m_Data[STATUS] ;
m_Data[STATUS] = CLIP( nStat, GDB_ST_OFF, GDB_ST_SEL) ; }
void RevertStatus( void)
{ std::swap( m_Data[STATUS], m_OldData[STATUS]) ; }
{ SetStatus( m_OldData[STATUS]) ; }
int GetStatus( void) const
{ return m_Data[STATUS] ; }
void SetMark( void)
+30
View File
@@ -2879,3 +2879,33 @@ CurveComposite::IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double
return false ;
return CrvTemp.IsOneCircle( ptCen, vtN, dRad, bCCW) ;
}
//----------------------------------------------------------------------------
bool
CurveComposite::SetCurveTempProp( int nCrv, int nProp)
{
// la curva deve essere validata
if ( m_nStatus != OK)
return false ;
// verifico che l'indice sia nei limiti
if ( nCrv < 0 || nCrv >= int( m_CrvSmplS.size()))
return false ;
// eseguo assegnazione
m_CrvSmplS[nCrv]->SetTempProp( nProp) ;
return true ;
}
//----------------------------------------------------------------------------
bool
CurveComposite::GetCurveTempProp( int nCrv, int& nProp) const
{
// la curva deve essere validata
if ( m_nStatus != OK)
return false ;
// verifico che l'indice sia nei limiti
if ( nCrv < 0 || nCrv >= int( m_CrvSmplS.size()))
return false ;
// eseguo recupero
nProp = m_CrvSmplS[nCrv]->GetTempProp() ;
return true ;
}
+2
View File
@@ -153,6 +153,8 @@ class CurveComposite : public ICurveComposite, public IGeoObjRW
bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true) override ;
bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) override ;
bool IsACircle( double dLinTol, Point3d& ptCen, Vector3d& vtN, double& dRad, bool& bCCW) const override ;
bool SetCurveTempProp( int nCrv, int nProp) override ;
bool GetCurveTempProp( int nCrv, int& nProp) const override ;
public : // IGeoObjRW
int GetNgeId( void) const override ;
+8 -4
View File
@@ -1709,7 +1709,7 @@ GeomDB::DeselectObj( int nId)
// se selezionato, lo deseleziono
if ( pGdbObj->IsSelected())
return SetStatus( pGdbObj, GDB_ST_ON) ;
return RevertStatus( pGdbObj, false) ;
// altrimenti, va già bene
else
return true ;
@@ -1768,7 +1768,7 @@ GeomDB::DeselectGroupObjs( int nId)
while ( pGdbObj != nullptr) {
// se selezionato, lo deseleziono
if ( pGdbObj->IsSelected()) {
if ( ! SetStatus( pGdbObj, GDB_ST_ON))
if ( ! RevertStatus( pGdbObj, false))
return false ;
}
pGdbObj = pGdbObj->GetNext() ;
@@ -1839,7 +1839,7 @@ GeomDB::ClearSelection( void)
GdbObj* pGObj = m_SelManager.GetFirstObj() ;
while ( pGObj != nullptr) {
m_SelManager.RemoveObj( pGObj) ;
pGObj->SetStatus( GDB_ST_ON) ;
RevertStatus( pGObj, false) ;
pGObj = m_SelManager.GetFirstObj() ;
}
@@ -2041,7 +2041,7 @@ GeomDB::RevertStatus( int nId)
//----------------------------------------------------------------------------
bool
GeomDB::RevertStatus( GdbObj* pGdbObj)
GeomDB::RevertStatus( GdbObj* pGdbObj, bool bOkSel)
{
// verifico validità oggetto
if ( pGdbObj == nullptr)
@@ -2059,6 +2059,10 @@ GeomDB::RevertStatus( GdbObj* pGdbObj)
int nStat = GDB_ST_ON ;
pGdbObj->GetStatus( nStat) ;
// se inibito ritorno a selezionato e selezionato, imposto visibile
if ( ! bOkSel && nStat == GDB_ST_SEL)
pGdbObj->SetStatus( GDB_ST_ON) ;
// se lo stato è cambiato
if ( nStat != nOldStat) {
// se il nuovo stato è di selezionato, inserisco oggetto in lista selezionati
+1 -1
View File
@@ -239,7 +239,7 @@ class GeomDB : public IGeomDB
bool SaveHeader( NgeWriter& ngeOut) const ;
bool SaveFooter( NgeWriter& ngeOut) const ;
bool SetStatus( GdbObj* pGdbObj, int nStat) ;
bool RevertStatus( GdbObj* pGdbObj) ;
bool RevertStatus( GdbObj* pGdbObj, bool bOkSel = true) ;
bool SetMaterial( GdbObj* pGdbObj, int nMat) ;
bool SetMaterial( GdbObj* pGdbObj, const std::string& sMatName) ;
bool GetMaterial( const GdbObj* pGdbObj, Material& mMat) const ;