#pragma once #include "item.h" namespace NItem { #define MESH_DEFAULT 0 #define MESH_CREATE_CONTOUR 1 #define MESH_EDIT_NODE 2 //网格节点编辑 #define MESH_HISTOGRAM 3 //统计图 #define MESH_GET_RANGE 4 //获得Z值范围,用户可以指定无效值 #define MESH_GRID_SMOOTH 5 //对网格进行平滑 class CItemMesh : public CItem { public: CItemMesh(CSigmaDoc* ppDoc); virtual ~CItemMesh(void); //CDC* m_pDrawDC; //virtual void OnDraw(CXyDC* pDC); void OnLButtonDown(CDC * pDC, UINT nFlags, CPoint point, int vk) override; int OnMouseMove(CDC * pDC, UINT nFlags, CPoint point) override; void SetPos(POSITION pos) override; CMesh* GetMesh(void); void SaveAs(COne* pOne, LPCTSTR filePath, int index); void SaveAsOnlyData(COne* pOne, LPCTSTR filePath); wchar_t * GetInformationForGeneratingContour(); bool CreateContour(COne* pOne, char * infoString); //BOOL InitPropertyGridMesh(CXTPPropertyGrid& grid); bool GridPointNoExist(UINT nFlags, CPoint point); CString GetGridValue(UINT nFlags, CPoint point); //平滑操作 bool GridSmooth(COne* pOne, double coefficient, int smoothNumber); void OnDraw(CXyDC* pDC) override; void OnDraw(CXyDC* pXyDC, CDC* pDC) override; void EditNode(CSigmaView* pView, CDC *pDC, CRect rt); bool FindNodeLocation(CDC *pDC, CPoint point, int& locationX, int& locationY); void Histogram(void); void ConfirmGridBtn(); int GetEditMode(void); CPositionList m_posAddList; //for histogram void SetHistogramRange(double zmin, double zmax); int DeleteSelected(void); void DrawNode(CXyDC* pDC); void DrawNode(CXyDC* pDC, CRect rect); void SetZValueOfNodeSelected(double v); bool SetZOfGridPoint(double z, int row, int column); void GetAreaAndValueForSelected(double minZ, double maxZ, double * areaOut, double * volumeOut); protected: CDC * pDrawerDC; //for histogram void DrawHistogram(CXyDC* pDC); bool ParseInformationOfCreatingContour(char * infoStr); CSize8 m_zrange; //Z值范围 BOOL m_bDrawRangeZ; //CDlgHistogram *m_pHistogramDlg; CColorBase color; int typeIndex; //背景显示类型:透明等 long m_levelAlpha; //透明度设置(0-255) CString name; int modeFun; //偏导等 int GetFunctionIdea(DWORD nFunMode); DWORD GetFunctionMode(int nFunIdea); int m_nDimensionSel; //维数,0=2D,1=3D BOOL m_bReversal = FALSE; BOOL m_bRuler = FALSE; BOOL m_bUpdateRuler = FALSE; CPoint2D m_point; BOOL m_bShowColorPane; int m_RulerIdea; //如水平平滑,水平方格,垂直平滑,垂直方格 int GetRulerIdea(DWORD nMode); DWORD GetRulerMode(int nIdea); int m_nSelect; //for create contour double m_contourStep; long m_contourMarkStep; CString m_strLayerMark; CString m_strLayerOther; int m_nFaultageMode; CString m_strFaultageFile; CString m_strFaultageLayer; //for node edit BOOL m_bDrawPrevPoint; CPoint2D m_ptPrevPoint; void DrawFocus(CPoint2D point); //for get Z range CSize8 m_szInvalidateValueZ; BOOL m_bResetZ = FALSE; //for smooth double m_smoothcoef; //平滑系数 long m_smthtimes; //平滑次数 CRect clientRect; }; };