diff --git a/EE3DllMain.h b/EE3DllMain.h new file mode 100644 index 0000000..9d2418e --- /dev/null +++ b/EE3DllMain.h @@ -0,0 +1,73 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EE3DllMain.h Data : 14.11.23 Versione : 2.5k2 +// Contenuto : Prototipi funzioni generali della DLL. +// +// +// +// Modifiche : 14.11.23 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include + +class ILogger ; + +//----------------------- Macro per import/export ---------------------------- +#undef EE3_EXPORT +#if defined( I_AM_EE3) // da definirsi solo nella DLL + #define EE3_EXPORT __declspec( dllexport) +#else + #define EE3_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +// E' necessaria l'interfaccia in C per caricare queste funzioni dinamicamente +extern "C" { + // restituisce la versione della Dll + EE3_EXPORT const char* GetEE3Version( void) ; + // permette di impostare il logger per la Dll + EE3_EXPORT void SetEE3Logger( ILogger* pLogger) ; + // imposta la chiave di protezione + EE3_EXPORT void SetEE3Key( const std::string& sKey) ; + // imposta se chiave hardware di rete + EE3_EXPORT void SetEE3NetHwKey( bool bNetHwKey) ; +} + + +//----------------------------------------------------------------------------- +#include "/EgtDev/Include/EGnStringUtils.h" +#include "/EgtDev/Include/EgtILogger.h" +#include "/EgtDev/Include/EgtKeyCodes.h" +#include "/EgtDev/Include/SELkKeyProc.h" + +//----------------------------------------------------------------------------- +// Test della chiave per caricare la DLL +inline bool +TestKeyForEE3( const std::string& sKey, int nKeyOpt, ILogger* pLogger) +{ + // verifico la chiave e le opzioni + unsigned int nOpt1, nOpt2 ; + int nOptExpDays ; + int nRet = GetKeyOptions( sKey, KEY_BASELIB_PROD, KEY_BASELIB_VER, KEY_BASELIB_LEV, + nOpt1, nOpt2, nOptExpDays) ; + if ( nRet != KEY_OK && ! EqualNoCase( sKey, "EE3Base")) { + if ( nRet != KEY_OK) { + std::string sErr = "Error on Key (EE3/" + ToString( nRet) + ")" ; + LOG_ERROR( pLogger, sErr.c_str()) ; + return false ; + } + if ( ( nOpt1 & ( KEYOPT_EEX_INPBASE|KEYOPT_EEX_EXPBASE)) == 0 || + ( nKeyOpt != 0 && ( nOpt1 & nKeyOpt) == 0) || + nOptExpDays < GetCurrDay()) { + std::string sErr = "Warning on Key (EE3/OPT)" ; + LOG_ERROR( pLogger, sErr.c_str()) ; + return false ; + } + } + return true ; +} diff --git a/EE3Export3dm.h b/EE3Export3dm.h new file mode 100644 index 0000000..adbb7ad --- /dev/null +++ b/EE3Export3dm.h @@ -0,0 +1,40 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023 +//---------------------------------------------------------------------------- +// File : EE3Export3dm.h Data : 21.09.23 Versione : +// Contenuto : Dichiarazione della interfaccia IExport3dm. +// +// +// +// Modifiche : 21.09.23 DB Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGeomDB.h" +#include "/EgtDev/Include/EExExportConst.h" +#include + +//----------------------- Macro per import/export ---------------------------- +#undef EE3_EXPORT +#if defined( I_AM_EE3) // da definirsi solo nella DLL +#define EE3_EXPORT __declspec( dllexport) +#else +#define EE3_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +class __declspec( novtable) IExport3dm +{ +public : + virtual ~IExport3dm( void) {} + virtual bool SetOptions( int nFilter) = 0 ; + virtual bool Export( IGeomDB* pGDB, int nId, const std::string& sFile) = 0 ; +} ; + +//----------------------------------------------------------------------------- +extern "C" { + EE3_EXPORT IExport3dm* CreateExport3dm(void) ; +} diff --git a/EE3Import3dm.h b/EE3Import3dm.h new file mode 100644 index 0000000..ad23959 --- /dev/null +++ b/EE3Import3dm.h @@ -0,0 +1,39 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023 +//---------------------------------------------------------------------------- +// File : EE3Import3dm.h Data : 26.06.23 Versione : 2.5f1 +// Contenuto : Dichiarazione della interfaccia IImport3dm. +// +// +// +// Modifiche : 26.06.23 DB Creazione modulo. +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGeomDB.h" +#include + +//----------------------- Macro per import/export ---------------------------- +#undef EE3_EXPORT +#if defined( I_AM_EE3) // da definirsi solo nella DLL +#define EE3_EXPORT __declspec( dllexport) +#else +#define EE3_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +class __declspec( novtable) IImport3dm +{ +public : + virtual ~IImport3dm( void) {} + virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, + double dTextHeight = 2.0, double dExtLine = 5.0, double dArrLen = 5.0, double dTextDist = 2.0, + bool bLenIsMM = true, int nDecDig = -2, std::string sFont = "ModernPropS.Nfe") = 0 ; +} ; + +//----------------------------------------------------------------------------- +extern "C" { + EE3_EXPORT IImport3dm* CreateImport3dm( void) ; +} diff --git a/EGkCalcPocketing.h b/EGkCalcPocketing.h new file mode 100644 index 0000000..dffa76d --- /dev/null +++ b/EGkCalcPocketing.h @@ -0,0 +1,31 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EGkCalcPocketing.h Data : 16.11.23 Versione : 2.5j1 +// Contenuto : Calcolo dei percorsi elementari di pocketing. +// +// +// +// Modifiche : 16.11.23 RE Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkCurveComposite.h" +#include "/EgtDev/Include/EGkSurfFlatRegion.h" + +//----------------------- Macro per import/export ---------------------------- +#undef EGK_EXPORT +#if defined( I_AM_EGK) // da definirsi solo nella DLL + #define EGK_EXPORT __declspec( dllexport) +#else + #define EGK_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dStep, double dAngle, int nType, + bool bSmooth, ICRVCOMPOPOVECTOR& vCrv) ; +EGK_EXPORT bool CalcZigZagInfill( const ISurfFlatRegion* pSfr, double dStep, bool bSmooth, bool bRemoveOverlapLink, + ICRVCOMPOPOVECTOR& vCrvCompoRes) ; diff --git a/EGkCurveAux.h b/EGkCurveAux.h index e12d361..05221eb 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- // EgalTech 2014-2014 //---------------------------------------------------------------------------- -// File : EGkCurveAux.h Data : 23.05.14 Versione : 1.5e9 +// File : EGkCurveAux.h Data : 28.01.24 Versione : 2.6a2 // Contenuto : Dichiarazione funzioni ausiliarie per ICurve. // // @@ -32,14 +32,18 @@ struct CNurbsData bool bRat ; // flag di curva razionale (pesi non tutti unitari) bool bPeriodic ; // flag per segnalare vettore dei nodi periodico bool bClosed ; // flag di curva chiusa + bool bClamped ; // flag di curva clamped bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2) DBLVECTOR vU ; // vettore dei nodi PNTVECTOR vCP ; // vettore dei punti di controllo DBLVECTOR vW ; // vettore dei pesi - CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {} + 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]) +// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA + //---------------------------------------------------------------------------- //! Trasforma un arco in una nuova curva di Bezier semplice o composta EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ; @@ -74,3 +78,19 @@ EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPl //---------------------------------------------------------------------------- //! Uniforma la pendenza di una composita tra quota iniziale e finale assegnate EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ; + +//---------------------------------------------------------------------------- +//! Calcolo del diagramma di Voronoi della curva, nei TempParam dei risultati la distanza +//! Per nBound tenere valore di default. +EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ; + +//---------------------------------------------------------------------------- +//! Calcolo del Medial Axis della curva (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza +const int WMAT_BOTHSIDES = 0 ; +const int WMAT_LEFT = 1 ; +const int WMAT_RIGHT = 2 ; +EGK_EXPORT bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nSide) ; + +//---------------------------------------------------------------------------- +//! Calcola l'offset completo di una curva +EGK_EXPORT bool CalcCurveFatCurve( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, double dRadius, bool bSquareEnds, bool bSquareMids) ; diff --git a/EGkCurveComposite.h b/EGkCurveComposite.h index 48b90ec..a8d55b3 100644 --- a/EGkCurveComposite.h +++ b/EGkCurveComposite.h @@ -41,7 +41,7 @@ class __declspec( novtable) ICurveComposite : public ICurve virtual const ICurve* GetLastCurve( void) const = 0 ; virtual const ICurve* GetPrevCurve( void) const = 0 ; virtual bool IsParamAtJoint( double dU) const = 0 ; - virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ; + virtual ICurve* RemoveFirstOrLastCurve( bool bLast = true) = 0 ; virtual bool ChangeStartPoint( double dU) = 0 ; virtual bool AddPoint( const Point3d& ptStart) = 0 ; virtual bool AddLine( const Point3d& ptNew, bool bEndOrStart = true) = 0 ; @@ -58,6 +58,7 @@ class __declspec( novtable) ICurveComposite : public ICurve virtual bool ArcsBezierCurvesToArcsPerpExtr( double dLinTol, double dAngTolDeg) = 0 ; virtual bool StraightArcsToLines( double dLinTol, double dAngTolDeg) = 0 ; virtual bool MergeCurves( double dLinTol, double dAngTolDeg, bool bStartEnd = true, bool bNeedSameProp = false) = 0 ; + virtual bool RemoveSmallParts( double dLinTol, double dAngTolDeg) = 0 ; virtual bool RemoveSmallDefects( double dLinTol, double dAngTolDeg, bool bAlsoSpikes = false) = 0 ; virtual bool RemoveUndercutOnY( double dLinTol, double dAngTolDeg) = 0 ; virtual bool IsAPoint( void) const = 0 ; @@ -67,6 +68,8 @@ class __declspec( novtable) ICurveComposite : public ICurve virtual bool IsATrapezoid( double dLinTol, Point3d& ptP, Vector3d& vtB1, Vector3d& vtL1, Vector3d& vtB2) const = 0 ; virtual bool SetCurveTempProp( int nCrv, int nProp, int nPropInd = 0) = 0 ; virtual bool GetCurveTempProp( int nCrv, int& nProp, int nPropInd = 0) const = 0 ; + virtual bool SetCurveTempParam( int nCrv, double dParam, int nParamInd = 0) = 0 ; + virtual bool GetCurveTempParam( int nCrv, double& dParam, int nParamInd = 0) const = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EGkDistPointCurve.h b/EGkDistPointCurve.h index e0dca1c..b4b5b47 100644 --- a/EGkDistPointCurve.h +++ b/EGkDistPointCurve.h @@ -49,22 +49,23 @@ class DistPointCurve // Il flag bIsSegment vale solo per linee. public : - EGK_EXPORT bool GetSqDist( double& dSqDist) ; - EGK_EXPORT bool GetDist( double& dDist) ; - EGK_EXPORT bool IsEpsilon( double dTol) - { double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; } - EGK_EXPORT bool IsSmall( void) - { return IsEpsilon( EPS_SMALL) ; } - EGK_EXPORT bool IsZero( void) - { return IsEpsilon( EPS_ZERO) ; } - EGK_EXPORT int GetNbrMinDist( void) { return (int) m_Info.size() ; } - EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) ; - EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) ; - EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) ; - EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) ; - EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide) ; - EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide) ; - EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) ; + EGK_EXPORT bool GetSqDist( double& dSqDist) const ; + EGK_EXPORT bool GetDist( double& dDist) const ; + EGK_EXPORT bool IsEpsilon( double dTol) const + { double dSqDist ; return ( GetSqDist( dSqDist) && ( dSqDist < SQ_EPS_ZERO || dSqDist < dTol * dTol)) ; } + EGK_EXPORT bool IsSmall( void) const + { return IsEpsilon( EPS_SMALL) ; } + EGK_EXPORT bool IsZero( void) const + { return IsEpsilon( EPS_ZERO) ; } + EGK_EXPORT int GetNbrMinDist( void) const + { return (int) m_Info.size() ; } + EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) const ; + EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) const ; + EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) const ; + EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) const ; + EGK_EXPORT bool GetSideAtMinDistPoint( int nInd, const Vector3d& vtN, int& nSide) const ; + EGK_EXPORT bool GetSideAtMinDistPoint( double dNearParam, const Vector3d& vtN, int& nSide) const ; + EGK_EXPORT bool GetMinDistInfo( int nInd, MinDistPCInfo& aInfo) const ; private : DistPointCurve( void) ; diff --git a/EGkDistPointSurfTm.h b/EGkDistPointSurfTm.h index c8ec942..43d7a1f 100644 --- a/EGkDistPointSurfTm.h +++ b/EGkDistPointSurfTm.h @@ -37,16 +37,16 @@ class DistPointSurfTm EGK_EXPORT DistPointSurfTm( const Point3d& ptP, const ISurfTriMesh& tmSurf) ; public : - EGK_EXPORT bool GetDist( double& dDist) ; - EGK_EXPORT bool IsEpsilon( double dTol) + EGK_EXPORT bool GetDist( double& dDist) const ; + EGK_EXPORT bool IsEpsilon( double dTol) const { return ( m_dDist >= 0. && ( m_dDist < EPS_ZERO || m_dDist < dTol)) ; } - EGK_EXPORT bool IsSmall( void) + EGK_EXPORT bool IsSmall( void) const { return IsEpsilon( EPS_SMALL) ; } - EGK_EXPORT bool IsZero( void) + EGK_EXPORT bool IsZero( void) const { return IsEpsilon( EPS_ZERO) ; } - EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) ; - EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) ; - EGK_EXPORT bool IsPointInside( void) + EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) const ; + EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) const ; + EGK_EXPORT bool IsPointInside( void) const { return m_bIsInside ; } private : diff --git a/EGkGeoObj.h b/EGkGeoObj.h index 466dda6..36bd595 100644 --- a/EGkGeoObj.h +++ b/EGkGeoObj.h @@ -56,6 +56,8 @@ class __declspec( novtable) IGeoObj virtual const IObjGraphics* GetObjGraphics( void) const = 0 ; virtual void SetTempProp( int nProp, int nPropInd = 0) = 0 ; virtual int GetTempProp( int nPropInd = 0) const = 0 ; + virtual void SetTempParam( double dParam, int nParamInd = 0) = 0 ; + virtual double GetTempParam( int nParamInd = 0) const = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EGkOffsetCurve.h b/EGkOffsetCurve.h index 0b6ffc1..26a6cab 100644 --- a/EGkOffsetCurve.h +++ b/EGkOffsetCurve.h @@ -26,6 +26,8 @@ class OffsetCurve { public : + EGK_EXPORT OffsetCurve(): m_dLinTol( 10 * EPS_SMALL) {} ; + EGK_EXPORT OffsetCurve( double dLinTol) : m_dLinTol( dLinTol) {} ; EGK_EXPORT ~OffsetCurve( void) ; public : @@ -35,7 +37,10 @@ class OffsetCurve EGK_EXPORT ICurve* GetCurve( void) ; EGK_EXPORT ICurve* GetLongerCurve( void) ; EGK_EXPORT ICurve* GetShorterCurve( void) ; + EGK_EXPORT double GetLinTol( void) const { return m_dLinTol ; } + EGK_EXPORT void SetLinTol( double dTol) { m_dLinTol = dTol ; } private : ICURVEPLIST m_CrvLst ; + double m_dLinTol ; } ; \ No newline at end of file diff --git a/EGkPolyLine.h b/EGkPolyLine.h index 61d0e42..88de9de 100644 --- a/EGkPolyLine.h +++ b/EGkPolyLine.h @@ -116,6 +116,11 @@ class PolyLine EGK_EXPORT bool GetConvexHullXY( PNTVECTOR& vConvHull) const ; EGK_EXPORT bool GetMinAreaRectangleXY( Point3d& ptCen, Vector3d& vtAx, double& dLen, double& dHeight) const ; EGK_EXPORT bool Trim( const Plane3d& plPlane, bool bInVsOut = true) ; + EGK_EXPORT void SetTempProp( int nProp, int nPropInd = 0) + { if ( nPropInd >= 0 && nPropInd < 2) + m_nTempProp[nPropInd] = nProp ; } + EGK_EXPORT int GetTempProp( int nPropInd = 0) const + { return (( nPropInd >= 0 && nPropInd < 2) ? m_nTempProp[nPropInd] : 0) ; } private : bool MyChangeStart( int nPos) ; @@ -123,15 +128,17 @@ class PolyLine bool MyMakeConvex( const Vector3d& vtN, bool bLeftSide) ; private : - int m_nRejected ; - PNTULIST m_lUPoints ; - mutable PNTULIST::const_iterator m_iter ; + int m_nRejected ; // numero punti rifiutati perchè coincidenti + int m_nTempProp[2] ; // vettore proprietà temporanee + PNTULIST m_lUPoints ; // lista dei punti + mutable PNTULIST::const_iterator m_iter ; // iteratore corrente } ; //---------------------------------------------------------------------------- // Raccolte di PolyLine -typedef std::vector POLYLINEVECTOR ; // vettore di PolyLine -typedef std::list POLYLINELIST ; // lista di PolyLine +typedef std::vector POLYLINEVECTOR ; // vettore di PolyLine +typedef std::list POLYLINELIST ; // lista di PolyLine +typedef std::vector POLYLINEMATRIX ; // matrice di PolyLine //---------------------------------------------------------------------------- EGK_EXPORT bool DistPointPolyLine( const Point3d& ptP, const PolyLine& plPoly, double& dDist) ; diff --git a/EGkPolygon3d.h b/EGkPolygon3d.h index 02c9541..a859ab8 100644 --- a/EGkPolygon3d.h +++ b/EGkPolygon3d.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2020 +// EgalTech 2015-2023 //---------------------------------------------------------------------------- -// File : Polygon3d.h Data : 02.10.20 Versione : 2.2j1 +// File : EGkPolygon3d.h Data : 17.12.23 Versione : 2.5l3 // Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio). // // @@ -58,7 +58,7 @@ class Polygon3d 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 GetLocalBBox( BBox3d& b3Loc) const ; EGK_EXPORT bool IsValid( void) const { return ! m_Plane.GetVersN().IsSmall() ; } EGK_EXPORT const Plane3d& GetPlane( void) const diff --git a/EGkPolygonElevation.h b/EGkPolygonElevation.h new file mode 100644 index 0000000..dfa0c18 --- /dev/null +++ b/EGkPolygonElevation.h @@ -0,0 +1,32 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EGkPolygonElevation.h Data : 02.10.20 Versione : 2.2j1 +// Contenuto : Dichiarazione della classe Polygon3d (poligono nello spazio). +// +// +// +// Modifiche : 30.08.15 DS Creazione modulo. +// 19.06.19 DS Aggiunta GetVertices. +// 23.07.19 DS Aggiunte Offset e Invert. +// 02.10.20 DS A FromPlaneTrimmedWithBox aggiunto parametro dToler. +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkPolygon3d.h" +#include "/EgtDev/Include/EGkSurfTriMesh.h" + +//----------------------- Macro per import/export ---------------------------- +#undef EGK_EXPORT +#if defined( I_AM_EGK) // da definirsi solo nella DLL + #define EGK_EXPORT __declspec( dllexport) +#else + #define EGK_EXPORT __declspec( dllimport) +#endif + + +//---------------------------------------------------------------------------- +EGK_EXPORT bool PolygonElevationInBBox( const Polygon3d& pgFacet, const BBox3d& b3Box, bool bAcceptOutFacet, double& dElev) ; +EGK_EXPORT bool PolygonElevationInClosedSurfTm( const Polygon3d& pgFacet, const ISurfTriMesh& CldStm, bool bAcceptOutFacet, double& dElev) ; diff --git a/EGkSfrCreate.h b/EGkSfrCreate.h index c81c3c7..0066574 100644 --- a/EGkSfrCreate.h +++ b/EGkSfrCreate.h @@ -30,7 +30,7 @@ EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionRectangle( double dWidth, double dL EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionStadium( double dWidth, double dLen) ; EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionDisk( double dRadius) ; EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromFatCurve( ICurve* pCrv, double dRadius, - bool bSquareEnds, bool bSquareMids) ; + bool bSquareEnds, bool bSquareMids, double dOffsLinTol = 10 * EPS_SMALL) ; // NB : la curva ingrassata non deve autointersecarsi EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromTriangle( const Triangle3d& Tria) ; EGK_EXPORT ISurfFlatRegion* GetSurfFlatRegionFromPolyLine( const PolyLine& ContourPolyLine) ; diff --git a/EGkStmFromTriangleSoup.h b/EGkStmFromTriangleSoup.h index f417910..e444c0a 100644 --- a/EGkStmFromTriangleSoup.h +++ b/EGkStmFromTriangleSoup.h @@ -36,14 +36,13 @@ class StmFromTriangleSoup EGK_EXPORT bool Start( int nBuckets = GRID_STD_BUCKETS) ; EGK_EXPORT bool AddTriangle( const Triangle3d& Tria) ; EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2, - const double dU0 = -1, const double dV0 = -1, const double dU1 = -1, const double dV1 = -1, - const double dU2 = -1, const double dV2 = -1) ; + double dU0 = -1, double dV0 = -1, double dU1 = -1, double dV1 = -1, double dU2 = -1, double dV2 = -1) ; EGK_EXPORT bool AddSurfTriMesh( const ISurfTriMesh& stmSource) ; EGK_EXPORT bool End( void) ; EGK_EXPORT ISurfTriMesh* GetSurf( void) ; private : - inline int AddVertex( const Point3d& ptP, const double dU = -1, const double dV = -1) ; + inline int AddVertex( const Point3d& ptP, double dU = -1, double dV = -1) ; private : ISurfTriMesh* m_pSTM ; diff --git a/EGkSubtractProjectedFacesOnStmFace.h b/EGkSubtractProjectedFacesOnStmFace.h new file mode 100644 index 0000000..0cd252d --- /dev/null +++ b/EGkSubtractProjectedFacesOnStmFace.h @@ -0,0 +1,29 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EGkSubtractProjectedFacesOnStmFace.h Data : 26.09.23 Versione : 2.5j1 +// Contenuto : Dichiarazione della funzione per proiettare facce di TriMesh su una superficie di TriMesh. +// +// +// +// Modifiche : 26.09.23 RE Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkSurfTriMesh.h" + +//----------------------- Macro per import/export ---------------------------- +#undef EGK_EXPORT +#if defined( I_AM_EGK) // da definirsi solo nella DLL + #define EGK_EXPORT __declspec( dllexport) +#else + #define EGK_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +EGK_EXPORT bool SubtractProjectedFacesOnStmFace( const ISurfTriMesh& Stm, int nFaceInd, ISURFTMPOVECTOR& vStmOthers, + bool bOCFlag, bool& bExistProjection, ISurfTriMesh*& pStmRes, + int& nNewFaceNbr) ; diff --git a/EGkSurfAux.h b/EGkSurfAux.h new file mode 100644 index 0000000..15254a2 --- /dev/null +++ b/EGkSurfAux.h @@ -0,0 +1,61 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EGkSurfAux.h Data : 09.08.23 Versione : +// Contenuto : Dichiarazione funzioni ausiliarie per ISurf. +// +// +// +// Modifiche : 09.08.23 DB Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkCurveComposite.h" +#include "/EgtDev/Include/EGkSurf.h" +#include "/EgtDev/Include/EGkGeoCollection.h" + + +//----------------------- Macro per import/export ---------------------------- +#undef EGK_EXPORT +#if defined( I_AM_EGK) // da definirsi solo nella DLL +#define EGK_EXPORT __declspec( dllexport) +#else +#define EGK_EXPORT __declspec( dllimport) +#endif + +//---------------------------------------------------------------------------- +//! Struttura dati per superficie Nurbs +struct SNurbsSurfData +{ + int nDegU ; // grado in U + int nDegV ; // grado in V + bool bRat ; // flag di superficie razionale (pesi non tutti unitari) + bool bPeriodicU ; // flag per segnalare vettore dei nodi periodico in U + bool bPeriodicV ; // flag per segnalare vettore dei nodi periodico in V + bool bClosedU ; // flag di superficie chiusa sul parametro U + bool bClosedV ; // flag di superficie chiusa sul parametro V + bool bClampedU ; // flag di superficie clamped sul parametro U + bool bClampedV ; // flag di superficie clamped sul parametro V + bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2) + DBLVECTOR vU ; // vettore dei nodi in U + DBLVECTOR vV ; // vettore dei nodi in V + int nCPU ; // numero di punti di controllo in U + int nCPV ; // numero di punti di controllo in V + PNTVECTOR vCP ; // vettore dei punti di controllo + PNTMATRIX mCP ; // matrice dei punti di controllo + DBLMATRIX mW ; // matrice dei pesi + + SNurbsSurfData( void) : nDegU( 0), nDegV( 0), bRat( false), bPeriodicU( false), bPeriodicV( false), bClosedU( false), bClosedV( false), + bClampedU( false), bClampedV( false), bExtraKnotes(false) {} +} ; + +// N.B. : in caso la superficie 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 superficie Nurbs standard in una nuova superficie di Bezier semplice o composta +EGK_EXPORT bool NurbsSurfaceCanonicalize( SNurbsSurfData& snData) ; +EGK_EXPORT ISurf* NurbsToBezierSurface( const SNurbsSurfData& snData) ; diff --git a/EGkSurfBezier.h b/EGkSurfBezier.h index d53d306..6ebf797 100644 --- a/EGkSurfBezier.h +++ b/EGkSurfBezier.h @@ -37,6 +37,7 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual bool SetControlPoint( int nIndU, int nIndV, const Point3d& ptCtrl, double dW) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ; virtual bool SetTrimRegion( const ISurfFlatRegion& sfrTrimReg) = 0 ; + virtual ISurfFlatRegion* GetTrimRegion( void) const = 0 ; virtual bool GetInfo( int& nDegU, int& nDegV, int& nSpanU, int& nSpanV, bool& bIsRat, bool& bTrimmed) const = 0 ; virtual const Point3d& GetControlPoint( int nIndU, int nIndV, bool* pbOk) const = 0 ; virtual const Point3d& GetControlPoint( int nInd, bool* pbOk) const = 0 ; @@ -57,6 +58,7 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual bool GetControlCurveOnU( int nIndV, PolyLine& plCtrlU) const = 0 ; virtual bool GetControlCurveOnV( int nIndU, PolyLine& plCtrlV) const = 0 ; virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ; + virtual bool GetLeaves ( std::vector>& vLeaves) const = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EGkSurfFlatRegion.h b/EGkSurfFlatRegion.h index 819b471..d975ded 100644 --- a/EGkSurfFlatRegion.h +++ b/EGkSurfFlatRegion.h @@ -36,6 +36,7 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf virtual bool Subtract( const ISurfFlatRegion& Other) = 0 ; virtual bool Intersect( const ISurfFlatRegion& Other) = 0 ; virtual bool Offset( double dDist, int nType) = 0 ; + virtual ISurfFlatRegion* CreateOffsetSurf( double dDist, int nType) const = 0 ; virtual bool GetGrossArea( double& dArea) const = 0 ; virtual const Point3d& GetPlanePoint( void) const = 0 ; virtual const Vector3d& GetNormVersor( void) const = 0 ; @@ -48,7 +49,8 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf virtual bool GetChunkCentroid( int nChunk, Point3d& ptCen) const ; virtual bool GetCurveClassification( const ICurve& Crv, double dLenMin, CRVCVECTOR& ccClass) const = 0 ; virtual int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides - virtual bool GetZigZagInfill( double dSideStep, bool bAllowStepCorrection, bool bInvert, ICRVCOMPOPOVECTOR& vpCrvs) const = 0 ; + virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = 3) const = 0 ; + virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = 1) const = 0 ; } ; //----------------------------------------------------------------------------- @@ -82,3 +84,9 @@ const int REGC_IN2 = 2 ; //!< La seconda regione const int REGC_SAME = 3 ; //!< Le due regioni coincidono const int REGC_OUT = 4 ; //!< Le due regioni sono esterne const int REGC_INTERS = 5 ; //!< Le due regioni si intersecano + +//----------------------------------------------------------------------------- +// Costanti per zona calcolo medial axis della regione +const int WMAT_IN_OUT = 0 ; +const int WMAT_IN = 1 ; +const int WMAT_OUT = 2 ; diff --git a/EGkSurfTriMesh.h b/EGkSurfTriMesh.h index 94c1f9f..11744ea 100644 --- a/EGkSurfTriMesh.h +++ b/EGkSurfTriMesh.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- // EgalTech 2014-2023 //---------------------------------------------------------------------------- -// File : EGkSurfTriMesh.h Data : 07.07.23 Versione : 2.5g1 +// File : EGkSurfTriMesh.h Data : 10.12.23 Versione : 2.5l2 // Contenuto : Dichiarazione della interfaccia ISurfTriMesh. // // @@ -43,7 +43,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual void SetLinearTolerance( double dLinTol) = 0 ; virtual void SetBoundaryAngle( double dBoundaryAngDeg) = 0 ; virtual void SetSmoothAngle( double dSmoothAngDeg) = 0 ; - virtual int AddVertex( const Point3d& ptVert, const double dU = -1, const double dV = -1) = 0 ; + virtual int AddVertex( const Point3d& ptVert, double dU = -1, double dV = -1) = 0 ; virtual bool MoveVertex( int nInd, const Point3d& ptNewVert) = 0 ; virtual int AddTriangle( const int nIdVert[3], int nTFlag = 0) = 0 ; virtual bool RemoveTriangle( int nId) = 0 ; @@ -88,7 +88,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual bool GetTriangleSmoothNormals( int nId, TriNormals3d& TNrms) const = 0 ; virtual ISurfTriMesh* CloneTriangle( int nTria) const = 0 ; virtual bool GetLoops( POLYLINEVECTOR& vPL) const = 0 ; - virtual bool GetSilhouette( const Vector3d& vtDir, double dTol, POLYLINEVECTOR& vPL) const = 0 ; + virtual bool GetSilhouette( const Vector3d& vtDir, double dTol, POLYLINEVECTOR& vPL, bool bAllTria = false) const = 0 ; virtual int GetFacetCount( void) const = 0 ; virtual int GetFacetSize( void) const = 0 ; virtual int GetFacetFromTria( int nT) const = 0 ; @@ -107,6 +107,11 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual bool SwapFacets( int nF1, int nF2) = 0 ; virtual bool GetFacetLocalBBox( int nF, BBox3d& b3Loc, int nFlag = BBF_STANDARD) const = 0 ; virtual bool GetFacetBBox( int nF, const Frame3d& frRef, BBox3d& b3Ref, int nFlag = BBF_STANDARD) const = 0 ; + virtual int GetEdgeCount( void) const = 0 ; + virtual int GetEdgeSize( void) const = 0 ; + virtual bool GetEdge( int nInd, int& nV1, int& nV2, int& nFl, int& nFr, double& dAng) const = 0 ; + virtual bool GetEdge( int nInd, Point3d& ptP1, Point3d& ptP2, double& dAng) const = 0 ; + virtual bool GetEdges( ICURVEPOVECTOR& vpCurve) const = 0 ; virtual bool Cut( const Plane3d& plPlane, bool bSaveOnEq) = 0 ; virtual bool GeneralizedCut( const ICurve& cvCurve, bool bSaveOnEq) = 0 ; virtual bool Add( const ISurfTriMesh& Other) = 0 ; diff --git a/EGnGetKeyData.h b/EGnGetKeyData.h index 6b050bd..dd0c352 100644 --- a/EGnGetKeyData.h +++ b/EGnGetKeyData.h @@ -33,3 +33,4 @@ EGN_EXPORT bool SetEGnKeyOptions( int nRet, int nKeyOpt1, int nKeyOpt2, int nKey EGN_EXPORT int GetEGnKeyOptions( int nProd, int nVer, int nLev, unsigned int& nKeyOpt1, unsigned int& nKeyOpt2, int& nKeyOptExpDays) ; // Interpretazione della stringa di LockId EGN_EXPORT bool GetLockIdStringInfo( const std::string& sLockId, int& nKeyType, bool& bNetKey, int& nUserId) ; +EGN_EXPORT bool GetLockIdStringNetData( const std::string& sLockId, std::string& sAddrPort) ; diff --git a/EGnStringUtils.h b/EGnStringUtils.h index 8e51f5b..34002ac 100644 --- a/EGnStringUtils.h +++ b/EGnStringUtils.h @@ -245,7 +245,7 @@ const std::string ToString( const int (&nVal)[size], int nPrec = 1) inline const std::string ToString( bool bVal) { return std::string( ( bVal ? "1" : "0")) ; } -EGN_EXPORT const std::string ToString( double dVal, int nPrec = 6) ; +EGN_EXPORT const std::string ToString( double dVal, int nPrec = 6, int* pnErr = nullptr) ; template const std::string ToString( const double (&dVal)[size], int nPrec = 6) { std::string sDest ; sDest.reserve( 14 * size) ; diff --git a/EGrScene.h b/EGrScene.h index c61756d..744ebc8 100644 --- a/EGrScene.h +++ b/EGrScene.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2014-2022 +// EgalTech 2014-2024 //---------------------------------------------------------------------------- -// File : EGrScene.h Data : 22.10.22 Versione : 2.4j1 +// File : EGrScene.h Data : 09.01.24 Versione : 2.5l7 // Contenuto : Dichiarazione della interfaccia IEGrScene per scena OpenGL. // // @@ -93,6 +93,8 @@ class IEGrScene // Grid virtual bool SetGridShow( bool bShowGrid, bool bShowFrame) = 0 ; virtual bool SetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int nExtSstep) = 0 ; + virtual bool SetGridGeoAdv( double dSnapStep, int nMinLineSstep, int nMajLineSstep, + double dXmin, double dXmax, double dYmin, double dYmax) = 0 ; virtual bool SetGridColor( Color colMinLine, Color colMajLine) = 0 ; virtual void GetGridParam( double& dSnapStep, int& nExtStep) const = 0 ; virtual bool GetShowGrid( void) = 0 ; diff --git a/EInAPI.h b/EInAPI.h index a8a0b25..3476840 100644 --- a/EInAPI.h +++ b/EInAPI.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2014-2022 +// EgalTech 2014-2024 //---------------------------------------------------------------------------- -// File : EInAPI.h Data : 06.05.22 Versione : 2.4e1 +// File : EInAPI.h Data : 09.01.24 Versione : 2.5l6 // Contenuto : API (application programming interface). // // @@ -34,6 +34,8 @@ extern "C" { // General EIN_EXPORT BOOL __stdcall EgtInit( int nDebug, const wchar_t* wsLogFile, const wchar_t* wsLogMsg) ; EIN_EXPORT BOOL __stdcall EgtExit( void) ; +typedef bool (__stdcall * pfOnTerminateProcess) ( int) ; +EIN_EXPORT BOOL __stdcall EgtSetOnTerminateProcess( pfOnTerminateProcess pFun) ; EIN_EXPORT BOOL __stdcall EgtSetUserLevel( int nUserLev) ; EIN_EXPORT int __stdcall EgtGetUserLevel( void) ; EIN_EXPORT BOOL __stdcall EgtSetKey( const wchar_t* wsKey) ; @@ -55,6 +57,7 @@ EIN_EXPORT BOOL __stdcall EgtSetNetHwKey( BOOL bNetHwKey) ; EIN_EXPORT BOOL __stdcall EgtGetKeyLevel( int nProd, int nVer, int nLev, int* pnKLev) ; EIN_EXPORT BOOL __stdcall EgtGetKeyOptions( int nProd, int nVer, int nLev, unsigned int* pnOpt2) ; EIN_EXPORT BOOL __stdcall EgtGetKeyLeftDays( int* pnLeftDays) ; +EIN_EXPORT BOOL __stdcall EgtGetKeyAssLeftDays( int* pnAssLeftDays) ; EIN_EXPORT BOOL __stdcall EgtGetKeyOptLeftDays( int* pnOptLeftDays) ; EIN_EXPORT BOOL __stdcall EgtGetOsInfo( wchar_t*& wsOs) ; EIN_EXPORT BOOL __stdcall EgtGetCpuInfo( wchar_t*& wsCpu) ; @@ -113,11 +116,13 @@ EIN_EXPORT BOOL __stdcall EgtImportDxf( const wchar_t* wsFilePath, double dScale EIN_EXPORT BOOL __stdcall EgtImportPnt( const wchar_t* wsFilePath, int nFlag) ; EIN_EXPORT BOOL __stdcall EgtImportStl( const wchar_t* wsFilePath, double dScaleFactor) ; EIN_EXPORT BOOL __stdcall EgtImport3MF( const wchar_t* wsFilePath) ; +EIN_EXPORT BOOL __stdcall EgtImport3dm( const wchar_t* wsFilePath) ; EIN_EXPORT BOOL __stdcall EgtAdvancedImportIsEnabled( void) ; EIN_EXPORT BOOL __stdcall EgtAdvancedImport( const wchar_t* wsFilePath, double dLinToler) ; EIN_EXPORT BOOL __stdcall EgtExportDxf( int nId, const wchar_t* wsFilePath, int nFlag, int nFilter) ; EIN_EXPORT BOOL __stdcall EgtExportStl( int nId, const wchar_t* wsFilePath, int nFilter) ; EIN_EXPORT BOOL __stdcall EgtExport3MF( int nId, const wchar_t* wsFilePath, int nFilter) ; +EIN_EXPORT BOOL __stdcall EgtExport3dm( int nId, const wchar_t* wsFilePath, int nFilter) ; EIN_EXPORT BOOL __stdcall EgtExportSvg( int nId, const wchar_t* wsFilePath, int nFilter) ; EIN_EXPORT BOOL __stdcall EgtSetThreeJSLibDir( const wchar_t* wsThreeJSLibDir) ; EIN_EXPORT BOOL __stdcall EgtExportThreeJS( int nId, const wchar_t* wsFilePath, int nFilter) ; @@ -335,6 +340,8 @@ EIN_EXPORT BOOL __stdcall EgtSelectPathObjs( int nId, BOOL bHaltOnFork) ; EIN_EXPORT int __stdcall EgtDuploNew( int nSouId) ; EIN_EXPORT BOOL __stdcall EgtDuploCount( int nSouId, int* pnCount) ; EIN_EXPORT BOOL __stdcall EgtDuploList( int nSouId, int*& vInd, int* pnCount) ; +EIN_EXPORT BOOL __stdcall EgtDuploInRawCount( int nSouId, int* pnCount) ; +EIN_EXPORT BOOL __stdcall EgtDuploWithoutRawList( int*& vInd, int* pnCount) ; EIN_EXPORT BOOL __stdcall EgtDuploSetModified( int nSouId) ; EIN_EXPORT BOOL __stdcall EgtDuploGetModified( int nSouId, BOOL* pbModif) ; EIN_EXPORT BOOL __stdcall EgtDuploSetLocked( int nDupId) ; @@ -718,6 +725,7 @@ EIN_EXPORT BOOL __stdcall EgtGetMachGroupNewName( const wchar_t* wsName, wchar_t EIN_EXPORT int __stdcall EgtAddMachGroup( const wchar_t* wsName, const wchar_t* wsMachineName) ; EIN_EXPORT int __stdcall EgtCopyMachGroup( const wchar_t* wsSouName, const wchar_t* wsName) ; EIN_EXPORT BOOL __stdcall EgtRemoveMachGroup( int nMGroupId) ; +EIN_EXPORT BOOL __stdcall EgtChangeMachGroupName( int nMGroupInd, const wchar_t* wsNewName) ; EIN_EXPORT BOOL __stdcall EgtGetMachGroupName( int nMGroupId, wchar_t*& wsName) ; EIN_EXPORT BOOL __stdcall EgtGetMachGroupMachineName( int nMGroupId, wchar_t*& wsMachineName) ; EIN_EXPORT int __stdcall EgtGetMachGroupId( const wchar_t* wsName) ; @@ -973,6 +981,8 @@ EIN_EXPORT BOOL __stdcall EgtSetWinRectAttribs( BOOL bOutline, const int WrCol[4 EIN_EXPORT BOOL __stdcall EgtSetGlobFrameShow( BOOL bShow) ; EIN_EXPORT BOOL __stdcall EgtSetGridShow( BOOL bShowGrid, BOOL bShowFrame) ; EIN_EXPORT BOOL __stdcall EgtSetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int nExtSstep) ; +EIN_EXPORT BOOL __stdcall EgtSetGridGeoAdv( double dSnapStep, int nMinLineSstep, int nMajLineSstep, + double dXmin, double dXmax, double dYmin, double dYmax) ; EIN_EXPORT BOOL __stdcall EgtSetGridColor( const int nMinCol[4], const int nMajCol[4]) ; EIN_EXPORT BOOL __stdcall EgtResize( int nW, int nH) ; EIN_EXPORT BOOL __stdcall EgtDraw( void) ; diff --git a/EMkMachMgr.h b/EMkMachMgr.h index a9c3de7..bf72fd5 100644 --- a/EMkMachMgr.h +++ b/EMkMachMgr.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- // EgalTech 2015-2023 //---------------------------------------------------------------------------- -// File : EMkMachMgr.h Data : 25.08.23 Versione : 2.5h3 +// File : EMkMachMgr.h Data : 28.10.23 Versione : 2.5j4 // Contenuto : Dichiarazione della interfaccia IMachMgr. // // @@ -14,6 +14,7 @@ // 13.01.21 DS Aggiunte in interfaccia GetCalcHead e GetCalcExit. // 21.09.22 DS Aggiunta in interfaccia GetAxisOffset. // 25.08.23 DS Aggiunta in interfaccia CopyMachGroup. +// 28.10.23 DS Aggiunte in interfaccia GetClEntAxesVal, GetToolSetupPosInCurrSetup e GetAllCurrAxesName. // //---------------------------------------------------------------------------- @@ -60,6 +61,7 @@ class __declspec( novtable) IMachMgr virtual int AddMachGroup( const std::string& sName, const std::string& sMachineName) = 0 ; virtual int CopyMachGroup( const std::string& sSouName, const std::string& sName) = 0 ; virtual bool RemoveMachGroup( int nId) = 0 ; + virtual bool ChangeMachGroupName( int nId, const std::string& sNewName) = 0 ; virtual std::string GetMachGroupName( int nId) const = 0 ; virtual std::string GetMachGroupMachineName( int nId) const = 0 ; virtual int GetMachGroupId( const std::string& sName) const = 0 ; @@ -166,6 +168,7 @@ class __declspec( novtable) IMachMgr virtual bool ImportSetup( const std::string& sName) = 0 ; virtual bool VerifyCurrSetup( STRVECTOR& vsErrors) = 0 ; virtual bool FindToolInCurrSetup( const std::string& sTool) = 0 ; + virtual bool GetToolSetupPosInCurrSetup( const std::string& sTool, std::string& sTcPos) = 0 ; virtual bool GetToolsInCurrSetupPos( const std::string& sTcPos, STRVECTOR& vsTools) = 0 ; virtual bool UpdateCurrSetup( void) = 0 ; virtual bool EraseCurrSetup( void) = 0 ; @@ -201,7 +204,7 @@ class __declspec( novtable) IMachMgr virtual bool MdbToBeImported( const std::string& sFile, STRVECTOR& vsMachiningsNames, INTVECTOR& vMachiningsTypes) const = 0 ; virtual bool MdbImport( const std::string& sFile, const STRVECTOR& vsMachiningsToImport, const STRVECTOR& vsMachiningsNames, STRVECTOR& vsImported) = 0 ; - // Operations : general + // Operations : general virtual int GetOperationCount( void) const = 0 ; virtual int GetFirstOperation( void) const = 0 ; virtual int GetNextOperation( int nId) const = 0 ; @@ -264,8 +267,9 @@ class __declspec( novtable) IMachMgr virtual bool GetMachiningEndPoint( Point3d& ptEnd) const = 0 ; // CL Entities Interrogations virtual bool GetClEntMove( int nEntId, int& nMove) const = 0 ; - virtual bool GetClEntFlag( int nEntId, int& nFlag) const = 0 ; + virtual bool GetClEntFlag( int nEntId, int& nFlag, int& nFlag2) const = 0 ; virtual bool GetClEntIndex( int nEntId, int& nIndex) const = 0 ; + virtual bool GetClEntAxesVal( int nEntId, DBLVECTOR& vAxes) const = 0 ; // Simulation virtual bool SimInit( void) = 0 ; virtual bool SimStart( bool bFirst) = 0 ; @@ -284,6 +288,7 @@ class __declspec( novtable) IMachMgr // Machine Calc virtual bool SetCalcTable( const std::string& sTable) = 0 ; virtual bool SetCalcTool( const std::string& sTool, const std::string& sHead, int nExit) = 0 ; + virtual bool GetAllCurrAxesName( STRVECTOR& vAxName) const = 0 ; virtual bool SetRotAxisBlock( const std::string& sAxis, double dVal) = 0 ; virtual bool GetRotAxisBlocked( int nInd, std::string& sAxis, double& dVal) const = 0 ; virtual bool GetCalcTool( std::string& sTool) const = 0 ; diff --git a/EXeConst.h b/EXeConst.h index 446021e..b6352d3 100644 --- a/EXeConst.h +++ b/EXeConst.h @@ -29,6 +29,7 @@ enum FileType { FT_NULL = 0, FT_BTLX = 19, FT_3MF = 20, FT_OBJ = 21, + FT_3DM = 22 , FT_IGES = 31, FT_STEP = 32, FT_ACIS = 33, @@ -66,6 +67,17 @@ enum ApprType{ APP_LINES = 0, // come ICurve::APL_STD APP_RIGHT_CONVEX_LINES = 12, // come ICurve::APL_RIGHT_CONVEX APP_ARCS = 3} ; +//----------------- Costanti tipo punto intersezione Linea Curva --------------- +enum CLiType { CLT_NONE = 0, + CLT_IN = 1, + CLT_OUT = 2, + CLT_TOUCH_IN = 3, + CLT_TOUCH_OUT = 4, + CLT_TGINI_IN = 5, + CLT_TGFIN_IN = 6, + CLT_TGINI_OUT = 7, + CLT_TGFIN_OUT = 8} ; + //----------------- Costanti tipo punto intersezione Linea SurfTriMesh --------- enum SLiType { SLT_NONE = 0, SLT_IN = 1, diff --git a/EXeExecutor.h b/EXeExecutor.h index e05e505..633161d 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2022 +// EgalTech 2015-2024 //---------------------------------------------------------------------------- -// File : EXcExecutor.h Data : 06.05.22 Versione : 2.4e1 +// File : EXcExecutor.h Data : 09.01.24 Versione : 2.5l6 // Contenuto : Interfaccia Executor. // // @@ -37,6 +37,8 @@ class LuaMgr ; // General EXE_EXPORT bool ExeInit( int nDebug, const std::string& sLogFile, const std::string& sLogMsg) ; EXE_EXPORT bool ExeExit( void) ; +EXE_EXPORT bool ExeSetOnTerminateProcess( pfOnTerminateProcess pFun) ; +EXE_EXPORT bool ExeOnTerminateProcess( int nExitCode) ; EXE_EXPORT int ExeGetDebugLevel( void) ; EXE_EXPORT bool ExeSetUserLevel( int nUserLev) ; EXE_EXPORT int ExeGetUserLevel( void) ; @@ -56,10 +58,11 @@ EXE_EXPORT bool ExeGetVersionInfo( std::string& sVer, const char* szNewLine) ; EXE_EXPORT bool ExeGetKeyInfo( std::string& sKey) ; EXE_EXPORT bool ExeSetLockType( int nType) ; EXE_EXPORT bool ExeSetLockId( const std::string& sLockId) ; -EXE_EXPORT bool ExeSetNetHwKey( bool bNetHwKey, int nUserId = 0) ; +EXE_EXPORT bool ExeSetNetHwKey( bool bNetHwKey, int nUserId = 0, const std::string& sAddrPort = "") ; EXE_EXPORT bool ExeGetKeyLevel( int nProd, int nVer, int nLev, int& nKLev) ; EXE_EXPORT bool ExeGetKeyOptions( int nProd, int nVer, int nLev, unsigned int& nOpt2) ; EXE_EXPORT bool ExeGetKeyLeftDays( int& nLeftDays) ; +EXE_EXPORT bool ExeGetKeyAssLeftDays( int& nAssLeftDays) ; EXE_EXPORT bool ExeGetKeyOptLeftDays( int& nOptLeftDays) ; EXE_EXPORT bool ExeGetOsInfo( std::string& sOs) ; EXE_EXPORT bool ExeGetCpuInfo( std::string& sCpu) ; @@ -121,11 +124,13 @@ EXE_EXPORT bool ExeImportDxf( const std::string& sFilePath, double dScaleFactor) EXE_EXPORT bool ExeImportPnt( const std::string& sFilePath, int nFlag) ; EXE_EXPORT bool ExeImportStl( const std::string& sFilePath, double dScaleFactor) ; EXE_EXPORT bool ExeImport3MF( const std::string& sFilePath) ; +EXE_EXPORT bool ExeImport3dm( const std::string& sFilePath) ; EXE_EXPORT bool ExeAdvancedImportIsEnabled( void) ; EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = 0.1) ; EXE_EXPORT bool ExeExportDxf( int nId, const std::string& sFilePath, int nFlag = 1, int nFilter = 393) ; EXE_EXPORT bool ExeExportStl( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeExport3MF( int nId, const std::string& sFilePath, int nFilter = 393) ; +EXE_EXPORT bool ExeExport3dm( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeExportSvg( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeSetThreeJSLibDir( const std::string & sThreeJSLibDir) ; EXE_EXPORT bool ExeExportThreeJS( int nId, const std::string& sFilePath, int nFilter = 393) ; @@ -314,7 +319,7 @@ EXE_EXPORT int ExeCreateCirclesAlongCurve( int nParentId, int nCrvId, double dO double dStartAdd, double dEndAdd, double dDiam, int* pnCount) ; // 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 bSquared) ; +EXE_EXPORT int ExeCreateSurfFrFatCurve( int nParentId, int nCrvId, double dRad, bool bSquaredEnds, bool bSquaredMids, double dLinTol) ; EXE_EXPORT int ExeCreateSurfFrRectangle( int nParentId, const Point3d& ptIni, const Point3d& ptCross, int nRefType) ; EXE_EXPORT int ExeCreateSurfFrRectangle3P( int nParentId, const Point3d& ptIni, const Point3d& ptCross, const Point3d& ptDir, int nRefType) ; @@ -357,6 +362,7 @@ EXE_EXPORT int ExeCreateSurfTmBySurfBezier( int nParentId, int nSbezId) ; EXE_EXPORT int ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart) ; EXE_EXPORT int ExeCreateSurfBezier( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTVECTOR& vPnt, int nRefType) ; EXE_EXPORT int ExeCreateSurfBezierRational( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTUVECTOR& vPntW, int nRefType) ; +EXE_EXPORT int ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight = 50, bool bShowTrim = false, int* pnCount = nullptr) ; // GeomDB Create Volume EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX, @@ -380,6 +386,7 @@ EXE_EXPORT int ExeGetFirstLayer( int nPartId, bool bOnlyVisible) ; EXE_EXPORT int ExeGetNextLayer( int nId, bool bOnlyVisible) ; EXE_EXPORT int ExeGetLastLayer( int nPartId, bool bOnlyVisible) ; EXE_EXPORT int ExeGetPrevLayer( int nId, bool bOnlyVisible) ; +EXE_EXPORT bool ExeIsGhostPart( int nGhostId) ; EXE_EXPORT int ExeGetFirstGhostPart( void) ; EXE_EXPORT int ExeGetNextGhostPart( int nId) ; EXE_EXPORT bool ExeEraseEmptyParts( void) ; @@ -391,6 +398,8 @@ EXE_EXPORT bool ExeSelectPathObjs( int nId, bool bHaltOnFork) ; EXE_EXPORT int ExeDuploNew( int nSouId) ; EXE_EXPORT bool ExeDuploCount( int nSouId, int& nCount) ; EXE_EXPORT bool ExeDuploList( int nSouId, INTVECTOR& vnRef) ; +EXE_EXPORT bool ExeDuploInRawCount( int nSouId, int& nCount) ; +EXE_EXPORT bool ExeDuploWithoutRawList( INTVECTOR& vnRef) ; EXE_EXPORT bool ExeDuploSetModified( int nSouId) ; EXE_EXPORT bool ExeDuploGetModified( int nSouId, bool& bModif) ; EXE_EXPORT bool ExeDuploSetLocked( int nDupId) ; @@ -529,7 +538,7 @@ EXE_EXPORT int ExeSplitText( int nId, int* pnCount) ; // GeomDb Curve Modify EXE_EXPORT bool ExeInvertCurve( const INTVECTOR& vIds) ; EXE_EXPORT bool ExeOffsetCurve( int nId, double dDist, int nType) ; -EXE_EXPORT int ExeOffsetCurveAdv( int nId, double dDist, int nType, int* pnCount) ; +EXE_EXPORT int ExeOffsetCurveAdv( int nId, double dDist, int nType, int* pnCount, double dLinTol = 10 * EPS_SMALL) ; EXE_EXPORT int ExeCurveMedialAxis( int nId) ; EXE_EXPORT bool ExeApproxCurve( int nId, int nApprType, double dLinTol) ; EXE_EXPORT bool ExeProjectCurveOnPlane( int nId, const Point3d& ptOn, const Vector3d& vtN, int nRefType) ; @@ -584,6 +593,9 @@ EXE_EXPORT bool ExeRemoveCurveCompoUndercutOnY( int nId, double dLinTol) ; EXE_EXPORT bool ExeChainCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType) ; EXE_EXPORT bool ExeReorderCurvesInGroup( int nGroupId, const Point3d& ptNear, int nRefType) ; EXE_EXPORT bool ExeProjectCurveOnSurfTm( int nCurveId, int nSurfTmId, const Vector3d& vtDir, int nDestGrpId, double dLinTol, int nRefType) ; +EXE_EXPORT int ExeCurveGetVoronoi( int nId, int nDestGrpId, int nBound, int* pnCount) ; +EXE_EXPORT int ExeCurveGetMedialAxis( int nId, int nDestGrpId, int nSide, int* pnCount) ; +EXE_EXPORT int ExeCurveGetFatCurve( int nId, int nDestGrpId, double dRad, bool bSquareEnds, bool bSquareMids, int* pnCount) ; // GeomDb Surf Modify EXE_EXPORT bool ExeInvertSurface( const INTVECTOR& vIds) ; @@ -593,6 +605,7 @@ EXE_EXPORT bool ExeSurfFrAdd( int nId1, int nId2) ; EXE_EXPORT bool ExeSurfFrSubtract( int nId1, int nId2) ; EXE_EXPORT bool ExeSurfFrIntersect( int nId1, int nId2) ; EXE_EXPORT bool ExeSurfFrOffset( int nId, double dDist, int nType) ; +EXE_EXPORT bool ExeSurfFrOffsetAdv( int nId, double dDist, int nType, int& nNewId) ; EXE_EXPORT bool ExeSurfFrMoveSimpleNoCollision( int nId1, int nId2, const Vector3d& vtDir, double& dLen, int nRefType) ; EXE_EXPORT bool ExeSurfFrRotateSimpleNoCollision( int nId1, int nId2, const Point3d& ptCen, double& dAngDeg, int nRefType) ; EXE_EXPORT bool ExeSurfTmMoveVertex( int nId, int nVert, const Point3d& ptNewVert, int nRefType, bool bUpdate) ; @@ -608,6 +621,10 @@ EXE_EXPORT bool ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors = false) EXE_EXPORT bool ExeSurfTmResetTwoColors( int nId) ; EXE_EXPORT int ExeSurfTmSplit( int nId, int nSplitterId, int* pnCount) ; EXE_EXPORT bool ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveOnEq) ; +EXE_EXPORT bool ExeSurfTmSubtractProjectedFacesOnFace( int nSurfId, int nFaceInd, int nDestGrpId, + INTVECTOR vSurfsId, bool bOCFlag, + bool& bExistProjection, int& nNewId, int& nNewFaceNbr) ; +EXE_EXPORT bool ExeSurfBzTrim( int nId, int nCutterId) ; // GeomDb Volume Modify EXE_EXPORT int ExeExplodeVolume( int nId, int* pnCount) ; @@ -639,6 +656,10 @@ EXE_EXPORT bool ExeTextGetFont( int nId, std::string& sFont) ; EXE_EXPORT bool ExeTextGetHeight( int nId, double& dH) ; EXE_EXPORT bool ExeTextGetItalic( int nId, bool& bItl) ; +// GeomDb Get Pocketing +EXE_EXPORT bool ExePocketing( const int nId, double dRad, double dStep, double dAngle, int nType, bool bSmooth, int nDestGrpId, int& nFirstId, int& nCrvCount) ; +EXE_EXPORT int ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bSmooth, bool bRemoveOverlapLink,int* pnCount) ; + // GeomDb Curve Get EXE_EXPORT bool ExeCurveDomain( int nId, double* pdStart, double* pdEnd) ; EXE_EXPORT bool ExeCurveLength( int nId, double* pdLen) ; @@ -679,8 +700,7 @@ EXE_EXPORT bool ExeSurfFrTestExternal( int nId1, int nId2, double dMinDist) ; EXE_EXPORT int ExeSurfFrChunkCount( int nId) ; EXE_EXPORT int ExeSurfFrChunkSimpleClassify( int nId1, int nChunk1, int nId2, int nChunk2, double dToler = 0) ; EXE_EXPORT int ExeExtractSurfFrChunkLoops( int nId, int nChunk, int nDestGrpId, int* pnCount) ; -EXE_EXPORT int ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bStepCorrection, - bool bInvert, int* pnCount) ; +EXE_EXPORT int ExeSurfFrGetZigZagInfill( int nId, int nDestGrpId, double dStep, double dAng, bool bSmooth, int* pnCount) ; EXE_EXPORT int ExeSurfTmVertexCount( int nId) ; EXE_EXPORT int ExeSurfTmFacetCount( int nId) ; EXE_EXPORT int ExeSurfTmPartCount( int nId) ; @@ -695,19 +715,22 @@ EXE_EXPORT bool ExeSurfTmFacetNearestMidPoint( int nId, int nFacet, const Point3 EXE_EXPORT bool ExeSurfTmFacetCenter( int nId, int nFacet, int nRefId, Point3d& ptCen, Vector3d& vtN) ; EXE_EXPORT bool ExeSurfTmFacetNormVersor( int nId, int nFacet, int nRefId, Vector3d& vtNorm) ; EXE_EXPORT bool ExeSurfTmFacetMinAreaRectangle( int nId, int nFacet, int nRefId, Frame3d& frRect, double& dDimX, double& dDimY) ; +EXE_EXPORT bool ExeSurfTmFacetElevationInBBox( int nId, int nFacet, const BBox3d& b3Box, bool bAcceptOutFacet, int nRefId, double& dElev) ; +EXE_EXPORT bool ExeSurfTmFacetElevationInClosedSurfTm( int nFacetStmId, int nFacet, int nClosedStmId, bool bAcceptOutFacet, double& dElev) ; EXE_EXPORT bool ExeSurfTmFacetOppositeSide( int nId, int nFacet, const Vector3d& vtDir, int nRefId, Point3d& ptP1, Point3d& ptP2) ; EXE_EXPORT bool ExeSurfTmFacetOppositeSideEx( int nId, int nFacet, const Vector3d& vtDir, int nRefId, Point3d& ptP1, Point3d& ptPm, Point3d& ptP2, Vector3d& vtIn1, Vector3d& vtOut2, double& dLen, double& dWidth) ; EXE_EXPORT bool ExeSurfTmFacetsContact( int nId, int nF1, int nF2, int nRefId, bool& bAdjac, Point3d& ptP1, Point3d& ptP2, double& dAng) ; EXE_EXPORT int ExeExtractSurfTmLoops( int nId, int nDestGrpId, int* pnCount) ; -EXE_EXPORT int ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDestGrpId, int nRefType, int* pnCount) ; +EXE_EXPORT int ExeGetSurfTmSilhouette( int nId, const Vector3d& vtDir, double dToler, int nDestGrpId, int nRefType, int* pnCount, bool bAllTria = false) ; EXE_EXPORT int ExeExtractSurfTmFacetLoops( int nId, int nFacet, int nDestGrpId, int* pnCount) ; EXE_EXPORT int ExeCopySurfTmFacet( int nId, int nFacet, int nDestGrpId) ; EXE_EXPORT bool ExeSurfTmGetAllVertInFacet( int nId, int nFacet, INTVECTOR& vVert) ; EXE_EXPORT bool ExeSurfTmGetFacetBBox( int nId, int nFacet, int nFlag, BBox3d& b3Box) ; EXE_EXPORT bool ExeSurfTmGetFacetBBoxGlob( int nId, int nFacet, int nFlag, BBox3d& b3Box) ; EXE_EXPORT bool ExeSurfTmGetFacetBBoxRef( int nId, int nFacet, int nFlag, const Frame3d& frRef, BBox3d& b3Box) ; +EXE_EXPORT int ExeSurfTmGetEdges( int nId, int nDestGrpId, bool bSmoothAng, int* pnCount) ; EXE_EXPORT bool ExeSurfBezierGetPoint( int nSurfId, double dU, double dV, int nRefId, Point3d& ptP) ; EXE_EXPORT bool ExeSurfBezierGetPointD1( int nSurfId, double dU, double dV, int nUsd, int nVsd, int nRefId, Point3d& ptP, Vector3d& vtDerU, Vector3d& vtDerV) ; @@ -778,21 +801,28 @@ EXE_EXPORT bool ExePointSurfTmDist( const Point3d& ptP, int nStmId, int nRefType double* pdDist, Point3d& ptMin, int* pnTria) ; // Geo Intersect -EXE_EXPORT bool ExeLineBoxInters( const Point3d& ptP, const Vector3d& vtDir, const BBox3d& b3Box, INTDBLVECTOR& vInters) ; +EXE_EXPORT bool ExeLineCurveInters( const Point3d& ptP, const Vector3d& vtDir, const int nId, const int nRefType, + INTDBLVECTOR& vInters) ; +EXE_EXPORT bool ExeLineBoxInters( const Point3d& ptP, const Vector3d& vtDir, const BBox3d& b3Box, + INTDBLVECTOR& vInters) ; +EXE_EXPORT bool ExeLineSurfTmInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, + INTDBLVECTOR& vInters) ; +EXE_EXPORT bool ExeLineVolZmapInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, + INTDBLVECTOR& vInters) ; +EXE_EXPORT int ExePlaneCurveInters( const Point3d& ptOn, const Vector3d& vtN, const int nId, const int nDestGrpId, const int nRefType, + int* pnCount) ; EXE_EXPORT int ExePlaneBoxInters( const Point3d& ptOn, const Vector3d& vtN, const BBox3d& b3Box, int nDestGrpId, int nRefType, int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ; -EXE_EXPORT bool ExeLineSurfTmInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, INTDBLVECTOR& vInters) ; EXE_EXPORT int ExePlaneSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, int nId, int nDestGrpId, int nRefType, double dToler, int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ; -EXE_EXPORT int ExeParPlanesSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, const DBLVECTOR& vdDist, int nId, int nDestGrpId, int nRefType, double dToler, - int* pnGrpCount) ; -EXE_EXPORT int ExeSurfTmSurfTmInters( int nId1, int nId2, int nDestGrpId, double dToler, - int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ; -EXE_EXPORT int ExePlaneCurveInters( const Point3d& ptOn, const Vector3d& vtN, const int nId, const int nDestGrpId, const int nRefType, int* pnCount) ; -EXE_EXPORT int ExeCurveCurveInters( const int nId1, const int nId2, const int nDestGrpId, int* pnPntCount, int* pnCrvCount) ; -EXE_EXPORT bool ExeLineVolZmapInters( const Point3d& ptP, const Vector3d& vtDir, int nId, int nRefType, INTDBLVECTOR& vInters) ; +EXE_EXPORT int ExeParPlanesSurfTmInters( const Point3d& ptOn, const Vector3d& vtN, const DBLVECTOR& vdDist, int nId, int nDestGrpId, int nRefType, double dToler, + int* pnGrpCount) ; EXE_EXPORT int ExePlaneVolZmapInters( const Point3d& ptOn, const Vector3d& vtN, int nId, int nDestGrpId, int nRefType, int* pnCount) ; +EXE_EXPORT int ExeCurveCurveInters( const int nId1, const int nId2, const int nDestGrpId, + int* pnPntCount, int* pnCrvCount) ; +EXE_EXPORT int ExeSurfTmSurfTmInters( int nId1, int nId2, int nDestGrpId, double dToler, + int* pnPntCount, int* pnCrvCount, int* pnSrfCount) ; // Collision Detection EXE_EXPORT int ExeCDeBoxSolid( const Frame3d& frBox, const Vector3d& vtDiag, int nSolidId, double dSafeDist, int nRefType) ; @@ -878,6 +908,7 @@ EXE_EXPORT bool ExeCAvSetAdvTool( double dToolLen, double dToolDiam, double dTip EXE_EXPORT bool ExeCAvSetSawTool( double dToolLen, double dToolDiam, double dThickness, double dStemDiam, double dToolCornR) ; EXE_EXPORT bool ExeCAvSetGenTool( int nToolSectId) ; EXE_EXPORT int ExeCAvGetToolOutline( int nDestGrpId, bool bApprox = false) ; +EXE_EXPORT double ExeCAvToolPosBox( const Point3d& ptP, const Vector3d& vtAx, const BBox3d& b3Box, const Vector3d& vtMove) ; EXE_EXPORT double ExeCAvToolPosStm( const Point3d& ptP, const Vector3d& vtAx, int nSurfTmId, const Vector3d& vtMove, int nRefType) ; EXE_EXPORT bool ExeCAvToolPathStm( int nCrvId, const Vector3d& vtAx, int nSurfTmId, const Vector3d& vtMove, double dLinTol, int nRefType) ; @@ -904,6 +935,7 @@ EXE_EXPORT bool ExeGetMachGroupNewName( std::string& sName) ; EXE_EXPORT int ExeAddMachGroup( const std::string& sName, const std::string& sMachineName) ; EXE_EXPORT int ExeCopyMachGroup( const std::string& sSouName, const std::string& sName) ; EXE_EXPORT bool ExeRemoveMachGroup( int nMGroupId) ; +EXE_EXPORT bool ExeChangeMachGroupName( int nId, const std::string& sNewName) ; EXE_EXPORT bool ExeGetMachGroupName( int nId, std::string& sName) ; EXE_EXPORT bool ExeGetMachGroupMachineName( int nId, std::string& sMachineName) ; EXE_EXPORT int ExeGetMachGroupId( const std::string& sName) ; @@ -1010,6 +1042,7 @@ EXE_EXPORT bool ExeGetDefaultSetupName( std::string& sName) ; EXE_EXPORT bool ExeImportSetup( const std::string& sName) ; EXE_EXPORT bool ExeVerifyCurrSetup( STRVECTOR& vsErrors) ; EXE_EXPORT bool ExeFindToolInCurrSetup( const std::string& sTool) ; +EXE_EXPORT bool ExeGetToolSetupPosInCurrSetup( const std::string& sTool, std::string& sTcPos) ; EXE_EXPORT bool ExeGetToolsInCurrSetupPos( const std::string& sTcPos, STRVECTOR& vsTools) ; EXE_EXPORT bool ExeUpdateCurrSetup( void) ; EXE_EXPORT bool ExeEraseCurrSetup( void) ; @@ -1108,8 +1141,10 @@ EXE_EXPORT bool ExeUpdateAllMachinings( bool bStopOnFirstErr, std::string& sErrL EXE_EXPORT bool ExeUpdateAllMachiningsEx( bool bStopOnFirstErr, std::string& sErrList, std::string& sWarnList) ; // CL Entities Interrogations EXE_EXPORT bool ExeGetClEntMove( int nEntId, int& nMove) ; -EXE_EXPORT bool ExeGetClEntFlag( int nEntId, int& nFlag) ; +EXE_EXPORT bool ExeGetClEntFlag( int nEntId, int& nFlag, int& nFlag2) ; EXE_EXPORT bool ExeGetClEntIndex( int nEntId, int& nIndex) ; +EXE_EXPORT bool ExeGetClEntAxesVal( int nEntId, DBLVECTOR& vAxes) ; + // Simulation EXE_EXPORT bool ExeSimInit( void) ; EXE_EXPORT bool ExeSimStart( bool bFirst) ; @@ -1143,6 +1178,7 @@ EXE_EXPORT bool ExeGetAllTcPosNames( STRVECTOR& vNames) ; // Machine Calc EXE_EXPORT bool ExeSetCalcTable( const std::string& sTable) ; EXE_EXPORT bool ExeSetCalcTool( const std::string& sTool, const std::string& sHead, int nExit) ; +EXE_EXPORT bool ExeGetAllCurrAxesName( STRVECTOR& vAxName) ; EXE_EXPORT bool ExeSetRotAxisBlock( const std::string& sAxis, double dVal) ; EXE_EXPORT bool ExeGetCalcTool( std::string& sTool, std::string& sHead, int& nExit) ; EXE_EXPORT bool ExeGetRotAxisBlocked( int nInd, std::string& sAxis, double& dVal) ; @@ -1189,6 +1225,8 @@ EXE_EXPORT bool ExeSetWinRectAttribs( bool bOutline, Color WrCol) ; EXE_EXPORT bool ExeSetGlobFrameShow( bool bShow) ; EXE_EXPORT bool ExeSetGridShow( bool bShowGrid, bool bShowFrame) ; EXE_EXPORT bool ExeSetGridGeo( double dSnapStep, int nMinLineSstep, int nMajLineSstep, int nExtSstep) ; +EXE_EXPORT bool ExeSetGridGeoAdv( double dSnapStep, int nMinLineSstep, int nMajLineSstep, + double dXmin, double dXmax, double dYmin, double dYmax) ; EXE_EXPORT bool ExeSetGridColor( Color colMin, Color colMaj) ; EXE_EXPORT bool ExeResize( int nW, int nH) ; EXE_EXPORT bool ExeDraw( void) ; diff --git a/EgtExecMgr.h b/EgtExecMgr.h index 92ad538..c54d5e9 100644 --- a/EgtExecMgr.h +++ b/EgtExecMgr.h @@ -37,7 +37,7 @@ class ExecManager { return m_pExecMap.insert( std::pair< std::string, Exec>( sName, eFunc)).second ; } int Execute( T& Executor, const std::string& sCmd1, const std::string& sCmd2, const STRVECTOR& vsParams) - { KeyExecMap::iterator Iter = m_pExecMap.find( sCmd1) ; + { const auto Iter = m_pExecMap.find( sCmd1) ; if ( Iter != m_pExecMap.end() && (Iter->second) != nullptr) { if ( ( Executor.*(Iter->second))( sCmd2, vsParams)) return ER_OK ; diff --git a/EgtFunPtrType.h b/EgtFunPtrType.h index fe4c6dd..853e7a1 100644 --- a/EgtFunPtrType.h +++ b/EgtFunPtrType.h @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2018-2018 +// EgalTech 2018-2023 //---------------------------------------------------------------------------- -// File : EgtFunPtrType.h Data : 19.07.18 Versione : 1.9g2 +// File : EgtFunPtrType.h Data : 23.11.23 Versione : 2.5k5 // Contenuto : Dichiarazione tipi puntatori a funzione. // // // // Modifiche : 19.07.18 DS Creazione modulo. -// +// 23.11.23 DS Aggiunta pfOnTerminateProcess. // //---------------------------------------------------------------------------- @@ -16,5 +16,6 @@ #include //---------------------------------------------------------------------------- -typedef int (__stdcall * pfProcEvents) (int, int) ; +typedef bool (__stdcall * pfOnTerminateProcess) ( int) ; +typedef int (__stdcall * pfProcEvents) ( int, int) ; typedef bool (__stdcall * pfOutText) ( const std::string&) ; diff --git a/EgtKeyCodes.h b/EgtKeyCodes.h index 704d327..9278809 100644 --- a/EgtKeyCodes.h +++ b/EgtKeyCodes.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2023 +// EgalTech 2015-2024 //---------------------------------------------------------------------------- -// File : EgtKeyCodes.h Data : 01.01.23 Versione : 2.5a1 +// File : EgtKeyCodes.h Data : 16.01.24 Versione : 2.65a1 // Contenuto : Costanti per codici di protezione librerie di base. // // @@ -17,6 +17,7 @@ // 01.01.21 DS Nuova gestione KEY_BASELIB_VER con versione prodotto e mese. // 01.01.22 DS Passaggio a versione 24. // 01.01.23 DS Passaggio a versione 25. +// 16.01.24 DS Passaggio a versione 26. // //---------------------------------------------------------------------------- @@ -24,7 +25,7 @@ //---------------------------------------------------------------------------- const int KEY_BASELIB_PROD = 207 ; -const int KEY_BASELIB_VER = 2509 ; +const int KEY_BASELIB_VER = 2602 ; const int KEY_BASELIB_LEV = 1 ; //---------------------------------------------------------------------------- diff --git a/EgtLogger.h b/EgtLogger.h index 24a52a7..66a6051 100644 --- a/EgtLogger.h +++ b/EgtLogger.h @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2013-2013 +// EgalTech 2013-2023 //---------------------------------------------------------------------------- -// File : EgtLogger.h Data : 06.12.13 Versione : 1.4a4 +// File : EgtLogger.h Data : 15.12.23 Versione : 2.5l3 // Contenuto : Classi per logger. // // // // Modifiche : 06.12.13 DS Creazione modulo. -// +// 15.12.23 DS Ora default è thread safe. // //---------------------------------------------------------------------------- @@ -76,7 +76,7 @@ namespace egtlogger } ; public : - Logger( LogLevel nLevel, const char* szName, bool bThreadSafe = false, + Logger( LogLevel nLevel, const char* szName, bool bThreadSafe = true, int nLoggableItems = LI_DATETIME | LI_LOGGERNAME | LI_LOGGERLEVEL | LI_FUNCTION | LI_LINENUMBER) : m_nLevel( nLevel), m_name( szName), m_threadProtect( bThreadSafe), m_loggableItem( nLoggableItems) {} @@ -109,8 +109,7 @@ namespace egtlogger void ClearOutputStreams( void) { - std::vector::iterator iter ; - for ( iter = m_outputStreams.begin(); iter < m_outputStreams.end() ; ++iter) { + for ( auto iter = m_outputStreams.cbegin() ; iter < m_outputStreams.cend() ; ++iter) { if ( iter->bOwned) delete iter->pStream ; } @@ -127,8 +126,7 @@ namespace egtlogger { m_threadProtect.Lock() ; - std::vector::iterator iter ; - for ( iter = m_outputStreams.begin() ; iter < m_outputStreams.end() ; ++iter) { + for ( auto iter = m_outputStreams.cbegin() ; iter < m_outputStreams.cend() ; ++iter) { if ( nLevel < iter->nLevel) continue ; diff --git a/SELkKeyProc.h b/SELkKeyProc.h index 8a74a06..673d6ac 100644 --- a/SELkKeyProc.h +++ b/SELkKeyProc.h @@ -1,13 +1,14 @@ //---------------------------------------------------------------------------- -// EgalTech 2014-2015 +// EgalTech 2014-2024 //---------------------------------------------------------------------------- -// File : SELkKeyProc.h Data : 27.07.15 Versione : 1.6g1 +// File : SELkKeyProc.h Data : 25.01.24 Versione : 2.6a1 // Contenuto : Dichiarazione funzioni per la gestione della chiave. // // // // Modifiche : 10.09.14 DS Creazione modulo. // 27.02.15 DS Agg. gestione chiavi hardware OxySec. +// 25.01.24 DS Agg. GetKeyLevelEx per scadenza assistenza. // //---------------------------------------------------------------------------- @@ -25,6 +26,8 @@ bool ReadKey( const std::string& sKey, const std::string& sScramKey, int VerifyKey( const std::string& sKey, int nProd, int nVer, int nLev) ; int GetKeyLevel( const std::string& sKey, int nProd, int nVer, int nLev, int& nKLev, int& nKExpDays) ; +int GetKeyLevelEx( const std::string& sKey, int nProd, int nVer, int nLev, + int& nKLev, int& nKExpDays, int& nKAssExpDays) ; int GetKeyOptions( const std::string& sKey, int nProd, int nVer, int nLev, unsigned int& nKOpt1, unsigned int& nKOpt2, int& nKOptExpDays) ; int GetCurrDay( void) ; diff --git a/SELkLockId.h b/SELkLockId.h index 4758594..f7a6b09 100644 --- a/SELkLockId.h +++ b/SELkLockId.h @@ -19,8 +19,8 @@ //------------------------------------------------------------------------------- // Imposto il tipo di protezione ammessa (ANY, HW, SW) bool SetLockType( int nType) ; -// Imposto chiave di rete e identificativo utente (0-9) -bool SetNetHwKey( bool bNetHwKey, int nUserId) ; +// Imposto chiave di rete, identificativo utente (0-9) e indirizzo +bool SetNetHwKey( bool bNetHwKey, int nUserId, const std::string& sAddrPort) ; // Libero chiave di rete (da eseguire al termine del programma) bool CloseNetHwKey( void) ; // Recupero l'identificativo in chiaro della protezione