Compare commits

..

10 Commits

Author SHA1 Message Date
Riccardo Elitropi 2ded5d72ed Include :
- piccola modifica.
2024-02-13 12:28:02 +01:00
Riccardo Elitropi fd9ad51978 Include :
- aggiunto algoritmo Dijkstra.
2024-02-08 13:04:40 +01:00
Dario Sassi 09409e92e8 Include :
- aggiornamento mensile codici protezione librerie.
2024-02-02 15:58:26 +01:00
Dario Sassi 65b7c14f62 Include :
- aggiornamento prototipi.
2024-01-31 09:41:58 +01:00
SaraP d2f78740bb Include :
- aggiornamento prototipi.
2024-01-29 14:44:21 +01:00
Dario Sassi f7a3a6f00f Include :
- tolto Voronoi e aggiustamenti conseguenti.
2024-01-29 09:14:36 +01:00
Dario Sassi dc7a6fa31f Include :
- aggiornamento prototipi.
2024-01-25 18:17:54 +01:00
Dario Sassi 3ca2a64bfa Include :
- aggiornamento prototipi
- aggiunte costanti per tipo punto intersezione Linea-Curva.
2024-01-17 13:20:46 +01:00
Dario Sassi 8b52d7e8aa Include :
- aggiornamento prototipi.
2024-01-16 19:42:44 +01:00
Dario Sassi cf09eda254 Include :
- passaggio codici protezione librerie a 26.
2024-01-16 10:35:45 +01:00
12 changed files with 94 additions and 116 deletions
-3
View File
@@ -19,8 +19,6 @@
#include "/EgtDev/Include/EGkPlane3d.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
class Voronoi ;
//----------------------------------------------------------------------------
class __declspec( novtable) ICurve : public IGeoObj
{
@@ -94,7 +92,6 @@ class __declspec( novtable) ICurve : public IGeoObj
virtual bool TrimEndAtLen( double dLenTrim) = 0 ;
virtual bool ExtendStartByLen( double dLenExt) = 0 ;
virtual bool ExtendEndByLen( double dLenExt) = 0 ;
virtual Voronoi* GetVoronoiObject( void) const = 0 ;
} ;
//----------------------------------------------------------------------------
+4 -1
View File
@@ -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.
//
//
@@ -86,6 +86,9 @@ EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCr
//----------------------------------------------------------------------------
//! 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) ;
//----------------------------------------------------------------------------
+8 -4
View File
@@ -17,7 +17,6 @@
#include "/EgtDev/Include/EGkIntersCurves.h"
#include "/EgtDev/Include/EgkCurveComposite.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EGkVoronoi.h"
class ISurfTriMesh ;
@@ -50,9 +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 Voronoi* GetVoronoiObject( void) const = 0 ;
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) const = 0 ;
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = Voronoi::WMAT_LEFT) const = 0 ;
virtual bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = 3) const = 0 ;
virtual bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide = 1) const = 0 ;
} ;
//-----------------------------------------------------------------------------
@@ -86,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 ;
-93
View File
@@ -1,93 +0,0 @@
//----------------------------------------------------------------------------
// EgalTech 2015-2023
//----------------------------------------------------------------------------
// File : EGkVoronoi.h Data : 23.11.23 Versione : 2.5k5
// Contenuto : Dichiarazione della classe Voronoi con libreria VRONI
//
//
//
// Modifiche : 23.11.23 SP Creazione modulo.
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkFrame3d.h"
#include "/EgtDev/Include/EGkCurve.h"
#include "/EgtDev/Include/EGkCurveArc.h"
#include "/EgtDev/Include/EGkCurveBezier.h"
#include "/EgtDev/Include/EGkCurveComposite.h"
#include "/EgtDev/Include/EGkCurveLine.h"
#include "/EgtDev/Extern/vroni/Include/vroni_object.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
static const int VORONOI_STD_BOUND = 3 ;
static const double VRONI_OFFS_TOL = 1e-14 ;
//-------------------------- Forward Definitions -------------------------------
class ISurfFlatRegion ;
//----------------------------------------------------------------------------
class Voronoi
{
public :
// costanti per il lato del medial axis
enum WMATSide { WMAT_LEFT = 0,
WMAT_RIGHT = 1,
WMAT_BOTHSIDES = 2} ;
public :
EGK_EXPORT Voronoi( void)
: m_vroni( nullptr), m_nBound( VORONOI_STD_BOUND), m_bVDComputed( false), m_bAllowAdd( true) {} ;
EGK_EXPORT Voronoi( const ICurve* pCrv, bool bAllowAdd) ;
EGK_EXPORT Voronoi( const ISurfFlatRegion* pSfr, bool bAllowAdd) ;
EGK_EXPORT ~Voronoi( void) ;
public :
EGK_EXPORT bool AddCurve( const ICurve* pCrv) ;
EGK_EXPORT bool AddSurfFlatRegion( const ISurfFlatRegion* pSfr) ;
EGK_EXPORT ICurve* GetCurve( int nId) const ;
EGK_EXPORT int GetCurveCount( void) const
{ return m_vpCrvs.size() ; } ;
EGK_EXPORT bool CalcVoronoiDiagram( ICURVEPOVECTOR& vCrvs, int nBound = VORONOI_STD_BOUND) ;
EGK_EXPORT bool CalcOffset( ICURVEPOVECTOR& vOffs, double dOffs, int nType) ;
EGK_EXPORT bool CalcFatCurve( ICURVEPOVECTOR& vOffs, double dOffs, bool bSquareEnds, bool bSquareMids) ;
EGK_EXPORT bool CalcMedialAxis( ICURVEPOVECTOR& vCrvs, int nSide) ;
private :
bool Clear( void) ;
bool IsValid( void) const
{ return m_vroni != nullptr ; } ;
bool AddCurveToVroni( const ICurve * pCrv) ;
bool AddLineToVroni( const ICurveLine* pLine, int& nVroniCrv, int nLoopId, int nCrvId = 0, Point3d ptForcedEnd = P_INVALID) ;
bool AddArcToVroni( const ICurveArc* pArc, int& nVroniCrv, int nLoopId, int nCrvId = 0, Point3d ptForcedEnd = P_INVALID) ;
bool AddCompoToVroni( const ICurveComposite* pCompo, int& nCrv, int nLoopId) ;
bool AddBezierToVroni( const ICurveBezier* pBezier, int& nVroniCrv, int nLoopId) ;
bool CalcVoronoi( int nBound = VORONOI_STD_BOUND) ;
bool CalcVroniOffset( ICRVCOMPOPLIST& vOffs, double dOffs, bool bRightOffs, bool bLeftOffs) ;
bool UpdateVoronoi( double dOffs) ;
bool VerifyCurvesValidityForOffset( void) ;
bool AdjustOpenOffsetCurve( ICurveComposite& pCompo, double dOffs) ;
bool AdjustOffsetStart( ICurveComposite& pCompo) ;
int GetOffsetCurveSide( const ICurveComposite& pOffs, int nCrv) ;
ICurve* GetBisectorCurve( int i) ;
private :
vroniObject* m_vroni ; // oggetto base della libreria vroni
Frame3d m_Frame ; // frame in cui è espresso l'oggetto vroni
int m_nBound ; // bound associato al diagramma di Voronoi corrente
CICURVEPVECTOR m_vpCrvs ; // curve associate al Voronoi ( espresse rispetto a m_Frame)
BBox3d m_bBox ; // box degli oggetti associati al Voronoi
bool m_bVDComputed ; // indica se il diagramma di Voronoi è stato calcolato
bool m_bAllowAdd ; // indica se possibile aggiungere altre curve/superifici dopo aver creato l'oggetto Voronoi
} ;
+1 -1
View File
@@ -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 <size_t size>
const std::string ToString( const double (&dVal)[size], int nPrec = 6)
{ std::string sDest ; sDest.reserve( 14 * size) ;
+2
View File
@@ -57,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) ;
@@ -724,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) ;
+1
View File
@@ -61,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 ;
+39
View File
@@ -0,0 +1,39 @@
//----------------------------------------------------------------------------
// EgalTech 2024-2024
//----------------------------------------------------------------------------
// File : ENkDijkstra.h Data : 08.02.24 Versione : 2.6b1
// Contenuto : Classe per calcolo del percorso a peso minimo su un grafo orientato.
//
//
// Modifiche : 02.02.2024 RE Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EgtNumCollection.h"
//----------------------- Macro per import/export ----------------------------
#undef ENK_EXPORT
#if defined( I_AM_ENK) // da definirsi solo nella DLL
#define ENK_EXPORT __declspec( dllexport)
#else
#define ENK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
class __declspec( novtable) IDijkstra
{
public :
virtual ~IDijkstra( void) {}
virtual bool SetGraph( DBLMATRIX AdjMatrix, int nDestInd = -1) = 0 ;
virtual bool GetPath( INTVECTOR& vNodePath) = 0 ;
} ;
//-----------------------------------------------------------------------------
ENK_EXPORT IDijkstra* CreateDijkstra( void) ;
//-----------------------------------------------------------------------------
// costante per arco non presente
const double WEIGHT_NO_ADJ = 1073741823U ;
+11
View File
@@ -67,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,
+19 -9
View File
@@ -62,6 +62,7 @@ EXE_EXPORT bool ExeSetNetHwKey( bool bNetHwKey, int nUserId = 0, const std::stri
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) ;
@@ -604,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) ;
@@ -799,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) ;
@@ -926,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) ;
+4 -3
View File
@@ -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 = 2512 ;
const int KEY_BASELIB_VER = 2602 ;
const int KEY_BASELIB_LEV = 1 ;
//----------------------------------------------------------------------------
+5 -2
View File
@@ -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) ;