#pragma once #include "DrawModel\BaseLib.h" #include "DrawOperator\DrawLib.h" #include "CallBack.h" //#include "clipper2\clipper.engine.h" //#include "clipper2\clipper.core.h" #include "clipper2\clipper.h" //#include "clipper2\clipper.rectclip.h" //#include "clipper2\clipper.rectclip.h" //#include "clipper2\RectClipLines.h" //#include "clipper2\clipper.export.h" #include "DrawOperator\FormatReader\GeoMapDataType.h" #include "IntersectionUtil.h" using namespace Clipper2Lib; //#include "DrawLib\XyIO.h" class AFX_EXT_CLASS CIDWCreator { public: CIDWCreator(); ~CIDWCreator(); // double dSearchDistance =0, void Create(CString xyzFile, CString borderFile,CString faultFile, CString resultFile, int XCount, double smoothFactor = 1, int smoothTimes = 2, CPPCallback callBack = nullptr, int insertTimes = 0, double contourStep = 5.0, int contourMarkStep = 5 , double xMin=-1, double yMin=-1, double xMax=-1, double yMax=-1); void SmoothMesh(CGrid* pGrid, CIntersectionUtil* intersectHelp, double smoothFactor=1); bool Calculate(); private: bool OpenFile(LPCTSTR lpszFileName, CXy* pXy); void Serialize(CArchive& ar, CXy* pXy); void ReadInToMatrix(string FilePath, vector>& data); void AddContourCurve(CXy* pXy, vector* curves, vector* layer); static void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime); bool IsPointInPolygon(double ptX, double ptY, CCurve* pCurve); private: CString m_strBorderFile; CString m_strXyzFile; int m_XCount; int m_YCount; double m_dX; double m_dY; double m_XMin; double m_XMax; double m_YMin; double m_YMax; double m_ZMin; double m_ZMax; DPoint3 ptO; }; class StepProgress { public: static CPPCallback DoProgress; static int stepCount; static int progress; static int lastProgress; };