From 7c3a4e4ef84d2b522b8a70f8fc4c60d7c0d9a254 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 7 May 2024 09:52:23 +0200 Subject: [PATCH] Include : - aggiunte le funzioni di conversione di curve in Bezier. --- EGkCurveAux.h | 22 ++++++++++++++++++++++ EGkCurveBezier.h | 2 ++ EXeExecutor.h | 3 +++ 3 files changed, 27 insertions(+) diff --git a/EGkCurveAux.h b/EGkCurveAux.h index 4ece83e..3bca7e1 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -15,6 +15,8 @@ #include "/EgtDev/Include/EGkCurveComposite.h" +class ICurveBezier ; +class ICurveLine ; //----------------------- Macro per import/export ---------------------------- #undef EGK_EXPORT @@ -44,10 +46,30 @@ struct CNurbsData // N.B. : in caso la curva sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma OMOGENEA è [ w*x, w*y, w*z, w]) // tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA +//---------------------------------------------------------------------------- +//! Trasforma una linea in una nuova curva di Bezier semplice +EGK_EXPORT ICurveBezier* LineToBezierCurve( const ICurveLine* pLine) ; + //---------------------------------------------------------------------------- //! Trasforma un arco in una nuova curva di Bezier semplice o composta EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ; +//---------------------------------------------------------------------------- +//! Trasforma una curva compo in una nuova curva di Bezier semplice o composta +EGK_EXPORT ICurve* CompositeToBezierCurve( const ICurveComposite* pCrvCompo) ; + +//---------------------------------------------------------------------------- +//! Trasforma una curva bezier in una nuova curva di Bezier semplice o composta di grado 2 e razionale +EGK_EXPORT ICurve* BezierToBasicBezierCurve( const ICurveBezier* pCrvBezier) ; + +//---------------------------------------------------------------------------- +//! Aumento il grado della curva di Bezier +EGK_EXPORT ICurveBezier* BezierIncreaseDegree( const ICurveBezier* pCrvBezier) ; + +//---------------------------------------------------------------------------- +//! Riduco il grado della curva di Bezier +EGK_EXPORT ICurveBezier* BezierDecreaseDegree( const ICurveBezier* pCrvBezier, double dTol) ; + //---------------------------------------------------------------------------- //! Trasforma una curva in una nuova curva semplice o composta senza archi (solo linee o curve di Bezier) EGK_EXPORT ICurve* CurveToNoArcsCurve( const ICurve* pCrv) ; diff --git a/EGkCurveBezier.h b/EGkCurveBezier.h index 3f1462b..6cc1c09 100644 --- a/EGkCurveBezier.h +++ b/EGkCurveBezier.h @@ -16,6 +16,7 @@ #include "/EgtDev/Include/EGkCurve.h" class ICurveArc ; +class ICurveLine ; //---------------------------------------------------------------------------- class __declspec( novtable) ICurveBezier : public ICurve @@ -28,6 +29,7 @@ class __declspec( novtable) ICurveBezier : public ICurve virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ; virtual bool FromArc( const ICurveArc& crArc) = 0 ; + virtual bool FromLine( const ICurveLine& crLine) = 0 ; virtual int GetDegree( void) const = 0 ; virtual bool IsRational( void) const = 0 ; virtual bool IsAPoint( void) const = 0 ; diff --git a/EXeExecutor.h b/EXeExecutor.h index e410079..8834752 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -323,6 +323,8 @@ EXE_EXPORT int ExeCreatePolygonFromSide( int nParentId, int nNumSides, const Po const Point3d& ptFin, int nRefType) ; EXE_EXPORT int ExeCreateCirclesAlongCurve( int nParentId, int nCrvId, double dOffset, double dOverlap, double dStartAdd, double dEndAdd, double dDiam, int* pnCount) ; +EXE_EXPORT int ExeCreateCurveBezierForm( int nParentId, int nCrvId) ; + // GeomDB Create Surf EXE_EXPORT int ExeCreateSurfFlatRegion( int nParentId, const INTVECTOR& vCrvIds, int* pnCount) ; EXE_EXPORT int ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquaredEnds, bool bSquaredMids, double dLinTol) ; @@ -709,6 +711,7 @@ EXE_EXPORT bool ExeCurveCompoCenter( int nId, int nSimpCrv, int nRefId, Point3d& EXE_EXPORT bool ExeCurveCompoRadius( int nId, int nSimpCrv, double& dRad) ; EXE_EXPORT bool ExeCurveCompoAngCenter( int nId, int nSimpCrv, double& dAngCen) ; EXE_EXPORT bool ExeCurveCompoNormVersor( int nId, int nSimpCrv, int nRefId, Vector3d& vtNorm) ; +EXE_EXPORT bool ExeShowBezierCurveControlPoints( int nCrvId, int* pnCount) ; // GeomDb Surf Get EXE_EXPORT bool ExeSurfArea( int nId, double& dArea) ;