EgtGeomKernel :
- deselezione ora riporta allo stato precedente a selezione - a CurveComposite aggiunte Set/GetCurveTempProp .
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user