From a664c34fecaefd5809994248cfffb3db1a980f25 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sun, 17 Aug 2014 16:47:43 +0000 Subject: [PATCH] Include : - aggiornamenti vari. --- EGkPolyArc.h | 37 ++++++++++++++++++++++++++++++++----- EGkPolyLine.h | 4 ++++ EgkCurveComposite.h | 4 ++-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/EGkPolyArc.h b/EGkPolyArc.h index 377f555..7bd6ef3 100644 --- a/EGkPolyArc.h +++ b/EGkPolyArc.h @@ -33,26 +33,51 @@ class PolyArc EGK_EXPORT PolyArc( void) ; EGK_EXPORT ~PolyArc( void) ; EGK_EXPORT bool Clear( void) ; + EGK_EXPORT bool SetExtrusion( const Vector3d& vtExtr) ; EGK_EXPORT bool AddUPoint( double dPar, const Point3d& ptP, double dBulge) ; + EGK_EXPORT bool ModifyLastBulge( double dBulge) ; + EGK_EXPORT bool Close( void) ; EGK_EXPORT bool EraseFirstUPoint( void) ; EGK_EXPORT bool EraseLastUPoint( void) ; EGK_EXPORT bool AddOffsetToU( double dOffset) ; + EGK_EXPORT bool SetElevation( double dZ) ; + EGK_EXPORT bool AddElevation( double dZ) ; + EGK_EXPORT bool Translate( const Vector3d& vtMove) ; + EGK_EXPORT bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) + { double dAngRad = dAngDeg * DEGTORAD ; + return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; } + EGK_EXPORT bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) ; + EGK_EXPORT bool Scale( const Frame3d& frRef, double dCoeff) ; // deve essere uniforme + EGK_EXPORT bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; + // Shear non applicabile EGK_EXPORT bool ToGlob( const Frame3d& frRef) ; EGK_EXPORT bool ToLoc( const Frame3d& frRef) ; EGK_EXPORT bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ; EGK_EXPORT bool Splice( PolyArc& PA) ; + EGK_EXPORT const Vector3d& GetExtrusion(void) const + { return m_vtExtr ; } + EGK_EXPORT int GetRejectedNbr( void) const + { return m_nRejected ; } EGK_EXPORT int GetPointNbr( void) const { return m_nCount ; } - EGK_EXPORT bool GetFirstUPoint( double* pdPar, Point3d* pptP, double* pdBulge) const ; + EGK_EXPORT bool GetFirstUPoint( double* pdPar, Point3d* pptP, double* pdBulge, bool bNotLast = false) const ; EGK_EXPORT bool GetNextUPoint( double* pdPar, Point3d* pptP, double* pdBulge, bool bNotLast = false) const ; - EGK_EXPORT bool GetFirstU( double& dPar) const - { return GetFirstUPoint( &dPar, nullptr, nullptr) ; } + EGK_EXPORT bool GetFirstU( double& dPar, bool bNotLast = false) const + { return GetFirstUPoint( &dPar, nullptr, nullptr, bNotLast) ; } EGK_EXPORT bool GetNextU( double& dPar, bool bNotLast = false) const { return GetNextUPoint( &dPar, nullptr, nullptr, bNotLast) ; } - EGK_EXPORT bool GetFirstPoint( Point3d& ptP, double& dBulge) const - { return GetFirstUPoint( nullptr, &ptP, &dBulge) ; } + EGK_EXPORT bool GetFirstPoint( Point3d& ptP, double& dBulge, bool bNotLast = false) const + { return GetFirstUPoint( nullptr, &ptP, &dBulge, bNotLast) ; } EGK_EXPORT bool GetNextPoint( Point3d& ptP, double& dBulge, bool bNotLast = false) const { return GetNextUPoint( nullptr, &ptP, &dBulge, bNotLast) ; } + EGK_EXPORT int GetArcNbr( void) const + { return ( m_nCount > 1 ? ( m_nCount - 1) : 0) ; } + EGK_EXPORT bool GetFirstUArc( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* pptFin, double* pdBulge) const ; + EGK_EXPORT bool GetNextUArc( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* pptFin, double* pdBulge) const ; + EGK_EXPORT bool GetFirstArc( Point3d& ptIni, Point3d& ptFin, double& dBulge) const + { return GetFirstUArc( nullptr, &ptIni, nullptr, &ptFin, &dBulge) ; } + EGK_EXPORT bool GetNextArc( Point3d& ptIni, Point3d& ptFin, double& dBulge) const + { return GetNextUArc( nullptr, &ptIni, nullptr, &ptFin, &dBulge) ; } private : struct UPointB @@ -66,6 +91,8 @@ class PolyArc typedef std::list UPNTBLIST ; // lista di UPointB private : + Vector3d m_vtExtr ; + int m_nRejected ; int m_nCount ; UPNTBLIST m_lUPointBs ; mutable UPNTBLIST::const_iterator m_iter ; diff --git a/EGkPolyLine.h b/EGkPolyLine.h index efe1b47..9829d8c 100644 --- a/EGkPolyLine.h +++ b/EGkPolyLine.h @@ -34,6 +34,7 @@ class PolyLine EGK_EXPORT ~PolyLine( void) ; EGK_EXPORT bool Clear( void) ; EGK_EXPORT bool AddUPoint( double dPar, const Point3d& ptP) ; + EGK_EXPORT bool Close( void) ; EGK_EXPORT bool EraseFirstUPoint( void) ; EGK_EXPORT bool EraseLastUPoint( void) ; EGK_EXPORT bool AddOffsetToU( double dOffset) ; @@ -50,6 +51,8 @@ class PolyLine EGK_EXPORT bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ; EGK_EXPORT bool Splice( PolyLine& PL) ; EGK_EXPORT bool IsClosed( void) const ; + EGK_EXPORT int GetRejectedNbr( void) const + { return m_nRejected ; } EGK_EXPORT int GetPointNbr( void) const { return m_nCount ; } EGK_EXPORT bool GetFirstUPoint( double* pdPar, Point3d* pptP) const ; @@ -95,6 +98,7 @@ class PolyLine const Vector3d& vtAx, double dLen, bool bIsSegment = true) const ; private : + int m_nRejected ; int m_nCount ; UPNTLIST m_lUPoints ; mutable UPNTLIST::const_iterator m_iter ; diff --git a/EgkCurveComposite.h b/EgkCurveComposite.h index 223b496..eda5979 100644 --- a/EgkCurveComposite.h +++ b/EgkCurveComposite.h @@ -24,8 +24,8 @@ class __declspec( novtable) ICurveComposite : public ICurve virtual bool AddCurve( const ICurve& cCrv, bool bEndOrStart = true, double dLinTol = EPS_SMALL) = 0 ; virtual bool AddCurve( ICurve* pCrv, bool bEndOrStart = true, double dLinTol = EPS_SMALL) = 0 ; virtual bool FromSplit( const ICurve& cCrv, int nParts) = 0 ; - virtual bool FromPointVector( const PNTVECTOR& vPnt) = 0 ; - virtual bool FromPointBulgeVector( const UPNTVECTOR& vUPnt, const Vector3d& vtN) = 0 ; + virtual bool FromPolyLine( const PolyLine& PL) = 0 ; + virtual bool FromPolyArc( const PolyArc& PA) = 0 ; virtual bool PolygonCenterCorner( int nSides, const Point3d& ptCen, const Point3d& ptCorner) = 0 ; virtual bool PolygonCenterMidSide( int nSides, const Point3d& ptCen, const Point3d& ptMidSide) = 0 ; virtual bool PolygonSide( int nSides, const Point3d& ptStart, const Point3d& ptEnd) = 0 ;