Include :
- Aggiunte funzioni e definizioni per classe di calcolo per ottimizzazione lavorazioni - Aggiunti vincoli per algoritmo ShortestPath - Aggiunte funzioni per Executor.
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2025-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : ENkMachOptimization.h Data : 31.03.25 Versione : 2.7a1
|
||||
// Contenuto : Classe per calcolo ottimizzato per le lavorazioni.
|
||||
//
|
||||
//
|
||||
// Modifiche : 31.03.2025 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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
// Definizione utensile
|
||||
struct ToolOptm {
|
||||
int nId ; // Id dell'utensile ( univoco)
|
||||
|
||||
double dTCX ; // Coordinata cambio utensile per X
|
||||
double dTCY ; // Coordinata cambio utensile per Y
|
||||
double dTCZ ; // Coordinata cambio utensile per Z
|
||||
double dTCA ; // Coordinata cambio utensile per A
|
||||
double dTCB ; // Coordinata cambio utensile per B
|
||||
double dTCC ; // Coordinata cambio utensile per C
|
||||
|
||||
bool bTCX ; // Flag per condsiderare/scartare il controllo sulla coordinata X
|
||||
bool bTCY ; // Flag per condsiderare/scartare il controllo sulla coordinata Y
|
||||
bool bTCZ ; // Flag per condsiderare/scartare il controllo sulla coordinata Z
|
||||
bool bTCA ; // Flag per condsiderare/scartare il controllo sulla coordinata A
|
||||
bool bTCB ; // Flag per condsiderare/scartare il controllo sulla coordinata B
|
||||
bool bTCC ; // Flag per condsiderare/scartare il controllo sulla coordinata C
|
||||
|
||||
double dTLoad ; // Tempo di carico
|
||||
double dTUnLoad ; // Tempo di scarico
|
||||
|
||||
ToolOptm( int nI, double dX, double dY, double dZ, double dA, double dB, double dC,
|
||||
bool bX, bool bY, bool bZ, bool bA, bool bB, bool bC, double dTL, double dTUL) :
|
||||
nId( nI), dTCX( dX), dTCY( dY), dTCZ( dZ), dTCA( dA), dTCB( dB), dTCC( dC),
|
||||
bTCX( bX), bTCY( bY), bTCZ( bZ), bTCA( bA), bTCB( bB), bTCC( bC), dTLoad( dTL), dTUnLoad( dTUL) {}
|
||||
} ;
|
||||
typedef std::vector<ToolOptm> TOOLOPTMVECTOR ;
|
||||
typedef std::list<ToolOptm> TOOLOPTMLIST ;
|
||||
|
||||
// Definizione strutta per singola lavorazione
|
||||
struct MachOptm {
|
||||
int nId ; // Id della lavorazione corrente
|
||||
int nIdTool ; // Id dell'utensile corrente
|
||||
int nGroup ; // Gruppo di appartenenza della lavorazione
|
||||
|
||||
double dX_Start ; // Stato iniziale asse lineare X
|
||||
double dY_Start ; // Stato iniziale asse lineare Y
|
||||
double dZ_Start ; // Stato iniziale asse lineare Z
|
||||
double dA_Start ; // Stato iniziale asse rotante A
|
||||
double dB_Start ; // Stato iniziale asse rotante B
|
||||
double dC_Start ; // Stato iniziale asse rotante C
|
||||
|
||||
double dX_End ; // Stato finale asse lineare X
|
||||
double dY_End ; // Stato finale asse lineare Y
|
||||
double dZ_End ; // Stato finale asse lineare Z
|
||||
double dA_End ; // Stato finale asse rotante A
|
||||
double dB_End ; // Stato finale asse rotante B
|
||||
double dC_End ; // Stato finale asse rotante C
|
||||
|
||||
MachOptm( int nIdL, int nToolL, int nGroupL,
|
||||
double dX_Start, double dY_Start, double dZ_Start, double dA_Start, double dB_Start, double dC_Start,
|
||||
double dX_End, double dY_End, double dZ_End, double dA_End, double dB_End, double dC_End) :
|
||||
nId( nIdL), nIdTool( nToolL), nGroup( nGroupL),
|
||||
dX_Start( dX_Start), dY_Start( dY_Start), dZ_Start( dZ_Start),
|
||||
dA_Start( dA_Start) , dB_Start( dB_Start), dC_Start( dC_Start),
|
||||
dX_End( dX_End), dY_End( dY_End), dZ_End( dZ_End),
|
||||
dA_End( dA_End), dB_End( dB_End), dC_End( dC_End) {}
|
||||
} ;
|
||||
typedef std::vector<MachOptm> MACHOPTMVECTOR ;
|
||||
typedef std::list<MachOptm> MACHOPTMLIST ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
class __declspec( novtable) IMachOptimization
|
||||
{
|
||||
public :
|
||||
virtual ~IMachOptimization( void) {}
|
||||
virtual bool InsertTool( int nId, double dTCX, double dTCY, double dTCZ, double dTCA,
|
||||
double dTCB, double dTCC, bool bX, bool bY, bool bZ, bool bA,
|
||||
bool bB, bool bC, double dTLoad, double dTUnL) ;
|
||||
virtual bool InsertMachining( int nId, int nToolId, int nGroup,
|
||||
double dX_Start, double dY_Start, double dZ_Start,
|
||||
double dA_Start, double dB_Start, double dC_Start,
|
||||
double dX_End, double dY_End, double dZ_End,
|
||||
double dA_End, double dB_End, double dC_End) = 0 ;
|
||||
virtual bool InsertDependence( int nIdPrec, int nIdSucc) = 0 ;
|
||||
virtual bool InsertSuggestedDependences( int nIdPrec, int nIdSucc) = 0 ;
|
||||
virtual bool SetFirstMachining( int nId) = 0 ;
|
||||
virtual bool SetLastMachining( int nId) = 0 ;
|
||||
virtual bool SetFeeds( double dFeedL, double dFeedA) = 0 ;
|
||||
virtual bool SetAllGroupsAsMandatory( bool bAllMandatory = false) = 0 ;
|
||||
virtual bool GetResult( INTVECTOR& vIds) = 0 ;
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
ENK_EXPORT IMachOptimization* CreateMachOptimization( void) ;
|
||||
@@ -39,6 +39,9 @@ class __declspec( novtable) IShortestPath
|
||||
virtual bool Calculate( int nType) = 0 ;
|
||||
virtual bool GetOrder( INTVECTOR& vOrder) = 0 ;
|
||||
virtual bool GetMinLength( double& dMinLen) = 0 ;
|
||||
virtual bool SetConstraintOrder( int nPrev, int nNext) = 0 ;
|
||||
virtual bool SetSuggestedOrder( int nPrev, int nNext) = 0 ;
|
||||
virtual bool SetDistMatrix( const INTMATRIX& mDistMatrix) = 0 ;
|
||||
|
||||
public :
|
||||
enum SpType{ SP_NONE = 0,
|
||||
|
||||
@@ -994,6 +994,25 @@ EXE_EXPORT bool ExeAutoNestPrintResults( const std::string& sHtmlFile) ;
|
||||
EXE_EXPORT bool ExeAutoNestGetResults( int& nNestedParts, int& nParts, int& nSheets, int& nNestings, double& dTotFillRatio) ;
|
||||
EXE_EXPORT bool ExeAutoNestGetOneResult( int nInd, int& nType, int& nId, int& nFlag, double& dX, double& dY, double& dAngRot) ;
|
||||
|
||||
// Machining Order Optimization
|
||||
EXE_EXPORT bool ExeOptMachInit( void) ;
|
||||
EXE_EXPORT bool ExeOptMachTerminate( void) ;
|
||||
EXE_EXPORT bool ExeOptMachAddTool( int nId, double dTCX, double dTCY, double dTCZ, double dTCA,
|
||||
double dTCB, double dTCC, bool bX, bool bY, bool bZ, bool bA,
|
||||
bool bB, bool bC, double dTLoad, double dTUnL) ;
|
||||
EXE_EXPORT bool ExeOptMachAddMachining( int nId, int nToolId, int nGroup,
|
||||
double dX_Start, double dY_Start, double dZ_Start,
|
||||
double dA_Start, double dB_Start, double dC_Start,
|
||||
double dX_End, double dY_End, double dZ_End,
|
||||
double dA_End, double dB_End, double dC_End) ;
|
||||
EXE_EXPORT bool ExeOptMachSetFirstMachining( int nId) ;
|
||||
EXE_EXPORT bool ExeOptMachSetLastMachining( int nId) ;
|
||||
EXE_EXPORT bool ExeOptMachSetFeeds( double dFeedL, double dFeedA) ;
|
||||
EXE_EXPORT bool ExeOptMachAddDependence( int nIdPrec, int nIdSucc) ;
|
||||
EXE_EXPORT bool ExeOptMachAddSuggestedDependence( int nIdPrec, int nIdSucc) ;
|
||||
EXE_EXPORT bool ExeOptMachSetAllGroupDependencesAsMandatory( bool bAllMandatory) ;
|
||||
EXE_EXPORT bool ExeOptMachGetResult( INTVECTOR& vIds) ;
|
||||
|
||||
// Collision Avoidance Tool SurfaceTriMesh
|
||||
EXE_EXPORT bool ExeCAvSetStdTool( double dToolLen, double dToolDiam, double dToolCornR) ;
|
||||
EXE_EXPORT bool ExeCAvSetAdvTool( double dToolLen, double dToolDiam, double dTipLen, double dTipDiam, double dToolCornR) ;
|
||||
|
||||
Reference in New Issue
Block a user