#pragma once
|
|
#include "CHPathScheduler/PathScheduler.h"
|
|
class AFX_EXT_CLASS CPathScheduler_Dual_Flying : public CPathScheduler
|
{
|
public:
|
CPathScheduler_Dual_Flying(void);
|
virtual ~CPathScheduler_Dual_Flying(void);
|
|
// virtual func
|
virtual int GetSchedulerType() const { return SchedulerType_Dual_Flying; }
|
virtual int PathScheduling(const VectorPathData& vecPathData, const VectorPathData& vecStartPath);
|
|
protected:
|
int CalculateRangeRect(int nGantryCount, int nModuleCount, int nScanCount, int nGlassSizeX, int nGlassSizeY, int nScanMargin, int nOriginDir, int nBaseDir, VectorRangeData& vecRangeData);
|
|
int CalculatePath(int nModuleIdx, int nScanIdx, const SPathData& startPath, const VectorPathData& vecTotalPathData, const SRangeData& rtRange, CPathSchedulerResult& scheduleResult);
|
|
virtual int CalculatePath(const SPathData& startPath, const VectorPathData& vecFirstPathData, const VectorPathData& vecSecondPathData, CPathSchedulerResult& scheduleResult) { return 1; }
|
|
SRangeData* GetScanRangeData(int nModuleIdx, int nScanIdx);
|
const SRangeData* GetScanRangeData(int nModuleIdx, int nScanIdx) const;
|
|
static int GetDirectionX(int nDir1, int nDir2);
|
static int GetDirectionY(int nDir1, int nDir2);
|
static int IsChangeModuleIndex(int nDir1, int nDir2);
|
static int IsChangeScanIndex(int nDir1, int nDir2);
|
static int IsChangeScanDir(int nDir1, int nDir2);
|
static int GetChangeModuleIndex(int nModuleIndex, int nOriginDir, int nBaseDir, int nGantryModuleCount, int nTotalModuleCount);
|
static int GetChangeScanIndex(int nScanIndex, int nTotalScanCount);
|
static int GetChangeScanDir(int nScanDir);
|
|
protected:
|
VectorRangeData m_vecScanRangeData;
|
|
};
|