diff --git a/EGkSbzFromCurves.h b/EGkSbzFromCurves.h index e3bb415..a688a21 100644 --- a/EGkSbzFromCurves.h +++ b/EGkSbzFromCurves.h @@ -46,5 +46,5 @@ EGK_EXPORT ISurfBezier* GetSurfBezierByScrewing( const ICurve* pCurve, const Poi //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* 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) ; diff --git a/EGkSurfBezier.h b/EGkSurfBezier.h index aecaeaf..2b2089a 100644 --- a/EGkSurfBezier.h +++ b/EGkSurfBezier.h @@ -28,6 +28,11 @@ class __declspec( novtable) ISurfBezier : public ISurf public : enum Side { FROM_MINUS = -1, // da valori inferiori del parametro FROM_PLUS = 1} ; // da valori superiori del parametro +public : + enum RuledType { RLT_B_ISOPAR = 0, // con parametrizzazione simile tra le due curve + RLT_B_MINDIST = 1, // con distanza minima tra le due curve, usando start e end delle curve presenti + RLT_B_ISOPAR_SMOOTH = 2, // con parametrizzazione simile tra le due curve, tento di smussare un po' la curva nel mezzo ( forse questa modalità non serve se riesco a sistemare la triangolazione per le superfici bilineari) + RLT_B_MINDIST_PLUS = 2} ; // con distanza minima tra le due curve, aggiungendo punti lungo le curve dove necessario public : // IGeoObj ISurfBezier* Clone( void) const override = 0 ; public : @@ -77,6 +82,8 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual bool CreateByRegion( const POLYLINEVECTOR& vPL) = 0 ; virtual bool CreateByExtrusion( const ICurve* pCrv, const Vector3d& vtExtr, bool bDeg3OrDeg2 = false) = 0 ; 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 ; } ; //----------------------------------------------------------------------------- diff --git a/EXeExecutor.h b/EXeExecutor.h index 3ac17a3..13d4dc7 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -384,6 +384,7 @@ EXE_EXPORT int ExeCreateSurfBzByScrewing( int nParentId, int nCrvId, EXE_EXPORT int ExeCreateSurfBzByRevolve( int nParentId, int nCrvId, const Point3d& ptAx, const Vector3d& vtAx, bool bCapEnds, double dLinTol, int nRefType) ; +EXE_EXPORT int ExeCreateSurfBzRuled( int nParentId, int nCrvId1, int nCrvId2, int nRuledType, double dLinTol) ; // GeomDB Create Volume EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,