//---------------------------------------------------------------------------- // 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 //----------------------------------------------------------------------------- // Per calcolo percorso di Svuotatura o di Lucidatura EGK_EXPORT bool CalcPocketing( const ISurfFlatRegion* pSfr, double dRad, double dRadialOffs, double dStep, double dAngle, double dOpenMinSafe, int nType, bool bSmooth, bool bCalcUnclReg, bool bInvert, bool bAvoidOpt, bool bConventionalMilling, bool bAllowZigZagOneWayBorders, bool bCalcFeed, const Point3d& ptEndPrec, const ISurfFlatRegion* pSfrLimit, bool bAllOffs, double dMaxOptSize, int nLiType, double dLiTang, double dLiElev, int nLoType, double dLoTang, bool bPolishing, double dEpicyclesRad, double dEpicyclesDist, bool bContour, ICRVCOMPOPOVECTOR& vCrv) ; EGK_EXPORT bool IsPocketingHole( const ISurfFlatRegion* pSfr, double dRad, double dRadialOffs, double dStep, int nType, int nLiType, double dLiTang, double dRatioSfrTool) ; EGK_EXPORT bool CalcSmoothCurve( ICurveComposite* pCrv, double dRightLen, double dLeftLen, bool bAsParam) ; EGK_EXPORT bool CalcZigZagInfill( const ISurfFlatRegion* pSfr, double dStep, bool bSmooth, bool bRemoveOverlapLink, ICRVCOMPOPOVECTOR& vCrvCompoRes) ; //----------------------------------------------------------------------------- // Sottotipo di lavorazione enum { POCKET_ZIGZAG = 0, POCKET_ONEWAY = 1, POCKET_SPIRALIN = 2, POCKET_SPIRALOUT = 3, POCKET_CONFORMAL_ZIGZAG = 4, POCKET_CONFORMAL_ONEWAY = 5 } ; // Definizione di lato aperto e lato chiuso enum { TEMP_PROP_CLOSE_EDGE = 0, TEMP_PROP_OPEN_EDGE = 1, TEMP_PROP_OPEN_EDGE_IN_RAW = 2 } ; // Definizione di curva invalida enum { TEMP_PROP_INVALID = -1 } ; // Definizione curva di raccordo per smussi enum { TEMP_PROP_SMOOTH = -2 } ; // Definizione tipo di curva per casi speciali enum { TEMP_PROP_SINGLE_CURVE = -3, TEMP_PROP_OPT_TRAPEZOID = -4, TEMP_PROP_BORDER_CURVE = -5, TEMP_PROP_OPT_CIRCLE = -9, TEMP_PROP_CONTOUR_BORDER = -10 } ; // Definizione tipo di curva per entrate da fuori enum { TEMP_PROP_OUT_START = -6 } ; // Definizione di curva attiva/non attiva enum { TEMP_PROP_CURVE_ACTIVE = -7, TEMP_PROP_CURVE_INACTIVE = -8 } ; // Definizione tipo LeadIn enum { LEAD_IN_NONE = 0, LEAD_IN_GLIDE = 1, LEAD_IN_ZIGZAG = 2, LEAD_IN_HELIX = 3 } ; // Definizione tipo LeadOut enum { LEAD_OUT_NONE = 0, LEAD_OUT_GLIDE = 1 } ;