diff --git a/CurveArc.h b/CurveArc.h index 4120921..beb4920 100644 --- a/CurveArc.h +++ b/CurveArc.h @@ -44,6 +44,8 @@ class CurveArc : public ICurveArc { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } diff --git a/CurveBezier.h b/CurveBezier.h index 71dca2e..af1478b 100644 --- a/CurveBezier.h +++ b/CurveBezier.h @@ -46,6 +46,8 @@ class CurveBezier : public ICurveBezier { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } diff --git a/CurveComposite.h b/CurveComposite.h index af974a2..c281179 100644 --- a/CurveComposite.h +++ b/CurveComposite.h @@ -48,6 +48,8 @@ class CurveComposite : public ICurveComposite { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return false ; } diff --git a/CurveLine.h b/CurveLine.h index 668659d..a34f7a8 100644 --- a/CurveLine.h +++ b/CurveLine.h @@ -44,6 +44,8 @@ class CurveLine : public ICurveLine { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : // ICurve virtual bool IsSimple( void) const { return true ; } diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index 3737933..dd27193 100644 Binary files a/EgtGeomKernel.rc and b/EgtGeomKernel.rc differ diff --git a/GdbIterator.cpp b/GdbIterator.cpp index 75bfb89..e838e99 100644 --- a/GdbIterator.cpp +++ b/GdbIterator.cpp @@ -168,8 +168,8 @@ GdbIterator::GetGeoObj( void) } //---------------------------------------------------------------------------- -Frame3d* -GdbIterator::GetGroupFrame( void) +IGeoFrame3d* +GdbIterator::GetGeoFrame( void) { GdbGroup* pGdbGroup ; @@ -180,7 +180,25 @@ GdbIterator::GetGroupFrame( void) if ( ( pGdbGroup = GetGdbGroup( m_pCurrNode)) == nullptr) return nullptr ; - return &( pGdbGroup->m_gfrFrame.m_frF) ; + return &( pGdbGroup->m_gfrFrame) ; +} + +//---------------------------------------------------------------------------- +bool +GdbIterator::GetGroupFrame( Frame3d& frGlob) +{ + GdbGroup* pGdbGroup ; + + + if ( m_pGDB == nullptr || m_pCurrNode == nullptr) + return false ; + + if ( ( pGdbGroup = GetGdbGroup( m_pCurrNode)) == nullptr) + return false ; + + // copio il riferimento + frGlob = pGdbGroup->m_gfrFrame.m_frF ; + return true ; } //---------------------------------------------------------------------------- diff --git a/GdbIterator.h b/GdbIterator.h index e9ae60f..731c8a3 100644 --- a/GdbIterator.h +++ b/GdbIterator.h @@ -31,7 +31,8 @@ class GdbIterator : public IGdbIterator virtual GdbType GetGdbType( void) const ; virtual IGeoObj* GetGeoObj( void) ; - virtual Frame3d* GetGroupFrame( void) ; + virtual IGeoFrame3d* GetGeoFrame( void) ; + virtual bool GetGroupFrame( Frame3d& frGlob) ; virtual bool GetGroupGlobFrame( Frame3d& frGlob) ; virtual int GetId( void) ; virtual int GetParentId( void) ; diff --git a/GeoFrame3d.h b/GeoFrame3d.h index 7e0d2be..51a7da3 100644 --- a/GeoFrame3d.h +++ b/GeoFrame3d.h @@ -50,6 +50,8 @@ class GeoFrame3d : public IGeoFrame3d { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : // IGeoFrame3d virtual bool Set( const Point3d& ptOrig, const Vector3d& vtDirX, diff --git a/GeoPoint3d.h b/GeoPoint3d.h index dd5d696..f5caed6 100644 --- a/GeoPoint3d.h +++ b/GeoPoint3d.h @@ -50,6 +50,8 @@ class GeoPoint3d : public IGeoPoint3d { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : virtual bool Set( const Point3d& ptP) ; diff --git a/GeoVector3d.h b/GeoVector3d.h index 1f77b23..1cbbf9a 100644 --- a/GeoVector3d.h +++ b/GeoVector3d.h @@ -50,6 +50,8 @@ class GeoVector3d : public IGeoVector3d { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } + virtual const IObjGraphics* GetObjGraphics( void) const + { return m_OGrMgr.GetObjGraphics() ; } public : virtual bool Set( const Vector3d& vtV) ; diff --git a/ObjGraphicsMgr.h b/ObjGraphicsMgr.h index 27d0813..2bbecb1 100644 --- a/ObjGraphicsMgr.h +++ b/ObjGraphicsMgr.h @@ -31,6 +31,8 @@ class ObjGraphicsMgr m_pOGr = pOGr ; } IObjGraphics* GetObjGraphics( void) { return m_pOGr ; } + const IObjGraphics* GetObjGraphics( void) const + { return m_pOGr ; } void Invalidate( void) { if ( m_pOGr != nullptr) m_pOGr->Invalidate() ; }