From abd033342bb46fde39c215d2a5c8197e0556ca73 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 21 Apr 2026 15:08:56 +0200 Subject: [PATCH] Include : - aggiunte funzioni per la regolarizzazione dei bordi di una surf di trimming. - --- EGkCurveAux.h | 10 +++++----- EGkSbzFromCurves.h | 2 +- EGkSurfBezier.h | 1 + EGkTrimming.h | 2 ++ EXeExecutor.h | 1 + 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/EGkCurveAux.h b/EGkCurveAux.h index 3f419ff..ccfa1df 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -45,7 +45,7 @@ struct CNurbsData CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bClamped( true), bExtraKnotes(false) {} } ; -// 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]) +// 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 //---------------------------------------------------------------------------- @@ -65,7 +65,7 @@ EGK_EXPORT ICurve* ArcToBezierCurve( const ICurveArc* pArc, int nDeg = 3, bool b EGK_EXPORT ICurve* CompositeToBezierCurve( const ICurveComposite* pCrv, int nDeg = 3, bool bMakeRatOrNot = false) ; //---------------------------------------------------------------------------- -//! Trasforma una curva bezier in una nuova curva di Bezier semplice o composta della razionalità e grado desiderato ( minimo 3) +//! Trasforma una curva bezier in una nuova curva di Bezier semplice o composta della razionalit� e grado desiderato ( minimo 3) EGK_EXPORT ICurve* EditBezierCurve( const ICurveBezier* pCrv, int nDeg = 3, bool bMakeRatOrNot = false, double dTol = 10 * EPS_SMALL) ; //---------------------------------------------------------------------------- @@ -77,11 +77,11 @@ EGK_EXPORT ICurve* ApproxBezierWithCubics( const ICurve* pCrv, double dTol) ; EGK_EXPORT ICurveBezier* ApproxArcCurveBezierWithSingleCubic( const ICurve* pCrv, const Point3d& ptCen, const Vector3d& vtN) ; //---------------------------------------------------------------------------- -//! Campiona una serie di punti dalla curva e li approssima con una o più curve di bezier -EGK_EXPORT ICurve* ApproxCurveWithBezier( const ICurve* pCrv, double dTol) ; +//! Campiona una serie di punti dalla curva e li approssima con una o pi� curve di bezier +EGK_EXPORT ICurve* ApproxCurveWithBezier( const ICurve* pCrv, double dTol, const Vector3d& vtStart = V_NULL, const Vector3d& vtEnd = V_NULL) ; //---------------------------------------------------------------------------- -//! Interpola un set di punti e li approssima con una o più curve di bezier cubiche +//! Interpola un set di punti e li approssima con una o pi� curve di bezier cubiche EGK_EXPORT ICurve* InterpolatePointSetWithBezier( const PNTVECTOR& vPnt, double dLinTol, double dMaxLen) ; //---------------------------------------------------------------------------- diff --git a/EGkSbzFromCurves.h b/EGkSbzFromCurves.h index 1d86cc2..d09e6d0 100644 --- a/EGkSbzFromCurves.h +++ b/EGkSbzFromCurves.h @@ -44,7 +44,7 @@ EGK_EXPORT ISurfBezier* GetSurfBezierByScrewing( const ICurve* pCurve, const Poi //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* GetSurfBezierRuledSmooth( const ICurve* pCurve1, const ICurve* pCurve2, double dSampleLen = 10) ; +EGK_EXPORT ISurfBezier* GetSurfBezierRuledSmooth( const ICurve* pCurve1, const ICurve* pCurve2, BIPNTVECTOR& vSyncLines, double dSampleLen = 10) ; EGK_EXPORT ISurfBezier* GetSurfBezierRuledGuided( const ICurve* pCurve1, const ICurve* pCurve2, const BIPNTVECTOR& vCrv, 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) ; diff --git a/EGkSurfBezier.h b/EGkSurfBezier.h index 0e81ad3..b961b3c 100644 --- a/EGkSurfBezier.h +++ b/EGkSurfBezier.h @@ -105,6 +105,7 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual PNTVECTOR GetAllControlPoints( void) const = 0 ; virtual bool LimitSurfToTrimmedRegion( void) = 0 ; virtual bool CreateSmoothRuledByTwoCurves( const ICurve* pCurve0, const ICurve* pCurve1, double dSampleLen) = 0 ; + virtual bool CreateSmoothRuledByTwoCurves( const ICurve* pCurve0, const ICurve* pCurve1, double dSampleLen, BIPNTVECTOR& vSyncLines) = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EGkTrimming.h b/EGkTrimming.h index 6c327e7..f710423 100644 --- a/EGkTrimming.h +++ b/EGkTrimming.h @@ -56,3 +56,5 @@ EGK_EXPORT bool GetTrimmingSyncInterpolation( const ICurve* pCrvEdge1, const ICu EGK_EXPORT bool GetTrimmingHoleBorders( const CISURFPVECTOR& vpSurf, const Point3d& ptRef, double dSurfLinTol, double dSurfAngTol, double dEdgeLinTol, double dEdgeAngTol, double dEdgeThick, ICRVCOMPOPOVECTOR& vHoleBorders) ; +EGK_EXPORT bool RegolarizeBordersLocally( ISurfBezier* pSurfBz, const BIPOINT& bpIsoStart, + const BIPOINT& bpIsoEnd, double dTol) ; diff --git a/EXeExecutor.h b/EXeExecutor.h index 2bc372d..670150e 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -1537,3 +1537,4 @@ EXE_EXPORT bool ExeTrimmingGetSurfBzSyncPoints( int nParentId, int nEdge1Id, int EXE_EXPORT bool ExeTrimmingGetHoleBorder( int nParentId, const INTVECTOR& vSurfIds, const INTVECTOR& vOtherSurfIds, double dSurfLinTol, double dSurfAngTol, double dEdgeLinTol, double dEdgeAngTol, double dEdgeThick, int& nFirstId, int& nCount) ; +EXE_EXPORT bool ExeRegolarizeSurfaceLocally( int nSurfId, int nSyncStartId, int nSyncEndId, double dLinTol) ;