diff --git a/EGkCurveAux.h b/EGkCurveAux.h index 0c625dc..2807457 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -75,9 +75,13 @@ EGK_EXPORT ICurve* ApproxBezierWithCubics( const ICurveBezier* pCrvBezier, doubl EGK_EXPORT ICurveBezier* ApproxArcCurveBezierWithSingleCubic( const ICurveBezier* pCrvBezier, const Point3d& ptCen) ; //---------------------------------------------------------------------------- -//! Campiona una serie di punti dalla curva e li interpola con una o pił curve di bezier +//! Campiona una serie di punti dalla curva e li approssima con una o pił curve di bezier EGK_EXPORT ICurve* ApproxCurveWithBezier( const ICurve*, double dTol) ; +//---------------------------------------------------------------------------- +//! Interpola un set di punti e li approssima con una o pił curve di bezier cubiche +EGK_EXPORT ICurve* InterpolatePointSetWithBezier( const PNTVECTOR& vPnt, double dTol) ; + //---------------------------------------------------------------------------- //! Aumento il grado della curva di Bezier EGK_EXPORT ICurveBezier* BezierIncreaseDegree( const ICurveBezier* pCrvBezier) ; diff --git a/EGkCurveBezier.h b/EGkCurveBezier.h index 954bc0c..b3a96a3 100644 --- a/EGkCurveBezier.h +++ b/EGkCurveBezier.h @@ -41,6 +41,7 @@ class __declspec( novtable) ICurveBezier : public ICurve virtual bool MakeRational( void) = 0 ; virtual bool MakeRationalStandardForm( void) = 0 ; virtual bool MakeNonRational( double dTol) = 0 ; + virtual bool IsALine( void) const = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EGkSbzFromCurves.h b/EGkSbzFromCurves.h index 6ca56da..f90fdc0 100644 --- a/EGkSbzFromCurves.h +++ b/EGkSbzFromCurves.h @@ -41,11 +41,9 @@ EGK_EXPORT ISurfBezier* GetSurfBezierByScrewing( const ICurve* pCurve, const Poi double dAngRotDeg, double dMove, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; //EGK_EXPORT ISurfBezier* GetSurfBezierRectSwept( double dDimH, double dDimV, double dBevelH, double dBevelV, // const ICurve* pGuide, int nCapType, double dLinTol = 10 * EPS_SMALL) ; -//EGK_EXPORT ISurfBezier* GetSurfBezierSwept( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtAx, -// bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; -//EGK_EXPORT ISurfBezier* GetSurfBezierSwept( const ISurfFlatRegion* pSfrSect, const ICurve* pGuide, const Vector3d& vtAx, -// bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; //EGK_EXPORT ISurfBezier* GetSurfBezierTransSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const Point3d& ptP, const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ; EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const ICurve* pCurve1, const ICurve* pCurve2, int nType, double dLinTol = 10 * EPS_SMALL) ; EGK_EXPORT ISurfBezier* GetSurfBezierSkinned( const CICURVEPVECTOR& vCrv, double dLinTol = 10 * EPS_SMALL) ; +EGK_EXPORT ISurfBezier* GetSurfBezierSweptInPlane( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtNorm, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; +EGK_EXPORT ISurfBezier* GetSurfBezierSwept3d( const ICurve* pSect, const ICurve* pGuide, const Vector3d& vtNorm, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ; diff --git a/EGkSurfBezier.h b/EGkSurfBezier.h index 08e6fd2..a5f8831 100644 --- a/EGkSurfBezier.h +++ b/EGkSurfBezier.h @@ -88,6 +88,7 @@ public : // IGeoObj virtual bool CreateByScrewing( const ICurve* pCurve, const Point3d& ptAx, const Vector3d& vtAx, double dAngRotDeg, double dMove) = 0 ; virtual bool CreateByPointCurve( const Point3d& pt, const ICurve* pCurve) = 0 ; virtual bool CreateByTwoCurves( const ICurve* pCurve1, const ICurve* pCurve2, int nType) = 0 ; + virtual bool CreateBySetOfCurves( const ICURVEPOVECTOR& vCrvBez, bool bReduceToDeg3 = true) = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EXeExecutor.h b/EXeExecutor.h index 18cc977..587bf91 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -389,6 +389,8 @@ EXE_EXPORT int ExeCreateSurfBzByRevolve( int nParentId, int nCrvId, EXE_EXPORT int ExeCreateSurfBzByPointCurve( int nParentId, int nCrvId, const Point3d& ptAx, bool bCapEnds, double dLinTol, int nRefType) ; EXE_EXPORT int ExeCreateSurfBzRuled( int nParentId, int nCrvId1, int nCrvId2, int nRuledType, bool bCapEnds, double dLinTol) ; EXE_EXPORT int ExeCreateSurfBzSkinned( int nParentId, const INTVECTOR& nCrvId1, bool bCapEnds, double dLinTol) ; +EXE_EXPORT int ExeCreateSurfBzSwept( int nParentId, int nSectId, int nGuideId, const Vector3d& vtAx, + bool bCapEnds, double dLinTol, int nRefType) ; // GeomDB Create Volume EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,