You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include "itemselectcurve.h"
#include "itemfocusrect.h"
namespace NItem
{
#define MESH_GEOLOGICAL_SECTION 1 //地质剖面
#define MESH_VOLUME 2 //体积
#define MESH_SET_VALUE 3 //设置曲线范围内的Z值
#define MESH_CUT 4 //曲面切割
#define MESH_LINE_VALUE 5 //根据曲面插值曲线Z值
#define MESH_SCALE_Z 6 //Z值*系数
#define MESH_VOLUME_MODE_SELECT 7 //体积计算方式选择
#define MESH_CUT_SLICE 8 //切等时切片
class CItemMeshProcess : public CItemSelectCurve
{
public:
CItemMeshProcess(CSigmaDoc * ppDoc);
virtual ~CItemMeshProcess(void);
virtual void DoLButtonUp(CRect8& rect);
virtual BOOL DoSelectEnd(void);
void SetProcessIdea(int nIdea);
void OnOK(void) override;
void OnCancel(void) override;;
void OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) override;;
void OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) override;;
int OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) override;;
BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) override;;
BOOL OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) override;
void ScaleZ(void);
void SetValueZ(void);
void LineValue(void);
bool CalculateVolume(CCurveEx* pCurveRange, int mode, double & zOut, double & volumeOut);
bool SetZOfSurface(CCurveEx* pCurveRange, int zMode, double zIn);
protected:
//INT_PTR DoModal(UINT nID);
int m_nIdea;
CItemFocusRect* m_pItemFocus;
double m_dValueZ;
int m_nModeSetZ; //设置Z值时的方式
bool SetZOfSurfaceInMode12(CCurveEx * pCurveRange, double z0, BOOL bInCurve);
void GeologicalSection(CCurveEx* pSplit);
void SetValue(CCurveEx* pCurveRange, double z0, BOOL bInCurve);
void Cut(CPositionList& select);
int Cut(CMesh* pMesh, CPositionList& select);
int LineValue(CMesh* pMesh, CPositionList& select);
int m_nLineValueMode;
double m_dLineValueStep;
void SetValueZ(int nModeSel, double z);
//体积计算
void Volume(CCurveEx* pCurveRange, int mode); //计算体积
int m_nVolumeMode;
public:
int GetVolumeMode(void); //获得计算在什么曲面上计算体积0=构造图、1=等厚图)
void CutSlice(void);
};
};