|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> Mesh.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "ImageInsert.h"
|
|
|
|
|
|
#include "colorruler.h"
|
|
|
|
|
|
#include "rect8ex.h"
|
|
|
|
|
|
#include ".\name.h"
|
|
|
|
|
|
#include ".\curveex.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include "MeshPackage.h"
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
|
|
#define MESH_TEXT 0x00000001 //3DMesh<73><68>ʽ<EFBFBD><CABD>ʹ<EFBFBD><CAB9>CDimension2D<32><44>
|
|
|
|
|
|
#define MESH_DFG 0x00000002 //DFG<46><47>ʽ
|
|
|
|
|
|
#define MESH_FXY 0x00000004 //F(x,y)<29><>ʽ
|
|
|
|
|
|
#define MESH_FUN_2D 0x00000008 //ʹ<><CAB9>CFunction2D<32><44>
|
|
|
|
|
|
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_X 0x00000010 //X<><58><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_Y 0x00000020 //Y<><59><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_XY 0x00000040 //XY<58><59><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_X2 0x00000100 //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_Y2 0x00000200 //Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
#define MESH_DIFFERENTIAL_XY2 0x00000400 //XY<58><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
|
|
|
|
|
|
#define MESH_DRAW_RULER 0x00001000 //<2F><>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define MESH_UPDATE_RULER 0x00002000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
|
//#define IMAGE_TRANSPARENT_ALPHA 0x00004000 //λͼ<CDBC><CDB8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD><CDAC>ɫ<EFBFBD>IJ<EFBFBD>ͬ<CDAC><CDB8><EFBFBD>ȣ<EFBFBD>Ϊ<EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>CImageInsert<72>е<EFBFBD><D0B5><EFBFBD>ͬ
|
|
|
|
|
|
//#define IMAGE_TRANSPARENT_COLOR 0x00008000 //λͼ<CDBC><CDB8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ȫ<C8AB><CDB8>
|
|
|
|
|
|
|
|
|
|
|
|
#define MESH_SERIALIZE_RULER 0x00010000 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CMesh
|
|
|
|
|
|
: public CMeshBase
|
|
|
|
|
|
, public CRect8
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CMesh(void);
|
|
|
|
|
|
virtual ~CMesh(void);
|
|
|
|
|
|
|
|
|
|
|
|
int64_t GetId() const;
|
|
|
|
|
|
|
|
|
|
|
|
void SetId(int64_t id);
|
|
|
|
|
|
|
|
|
|
|
|
void Serialize(CArchive& ar, const short& ver) override;
|
|
|
|
|
|
virtual int Read(CFile& fr, const short& ver);
|
|
|
|
|
|
virtual void Write(CFile &fw, const short& ver);
|
|
|
|
|
|
virtual void GetRange(CRect8& range);
|
|
|
|
|
|
virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint);
|
|
|
|
|
|
virtual BOOL IsInRange(CRect8& range);
|
|
|
|
|
|
virtual void Empty(void);
|
|
|
|
|
|
virtual void Rotate(double xs, double ys, double angle);
|
|
|
|
|
|
virtual void ScaleProperty(double sx, double sy);
|
|
|
|
|
|
virtual void Calibrate(int type, void* pValue);
|
|
|
|
|
|
virtual void ScaleCoordinate(double sx, double sy, int mode); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WriteDML(CFile& fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadDML(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WritePCG(CFile& fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadPCG(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void WritePCG2(CFile& fw, const short& ver, int nBaseTabNum);
|
|
|
|
|
|
virtual int ReadPCG2(CFile &fr, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
void WriteElementDML(BYTE*& buffElement, int& buffLen);
|
|
|
|
|
|
BOOL ReadElementDML(BYTE* bufData, const short& ver, int bufLen);
|
|
|
|
|
|
int ReadElementDML(CFile &fr, const short &ver);
|
|
|
|
|
|
void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint, BOOL bValue4);//bValue4<65><34>ʾ<EFBFBD>Ƿ<EFBFBD>Zֵ<5A><D6B5><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void SetMesh(CGrid* pDfg, int nMeshType, BOOL bGetZRange=FALSE, double dInvaliData=1e30, BOOL bInitColor=TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
int Read(CFile& fr, const short& ver, BOOL bNewFormat);
|
|
|
|
|
|
int ReadGrid_SurferAscii(LPCTSTR lpszFileName); //<2F><>ȡSurfer<65><72><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
void WriteGrid_SurferAscii(LPCTSTR lpszFileName); //д
|
|
|
|
|
|
int ReadGrid_SurferBinary6(LPCTSTR lpszFileName); //<2F><>ȡSurfer6<72>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
void WriteGrid_SurferBinary6(LPCTSTR lpszFileName); //д
|
|
|
|
|
|
int ReadGrid_SurferBinary7(LPCTSTR lpszFileName, void* pParentXy); //<2F><>ȡSurfer7<72>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
int ReadGrid_GeoFrameAscii(LPCTSTR lpszFileName);
|
|
|
|
|
|
void WriteGrid_GeoFrameAscii(LPCTSTR lpszFileName);
|
|
|
|
|
|
int ReadGrid_EPT(LPCTSTR lpszFileName); //<2F><>ȡEPT<50><54><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
int ReadGrid_Zmap(LPCTSTR lpszFileName); //<2F><>ȡPetrel<65><6C>ZMAP grid<69>ļ<EFBFBD>
|
|
|
|
|
|
int ReadGrid_EarthVision(LPCTSTR lpszFileName); //<2F><>ȡEarthVision<6F><6E><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
int ReadGrid_DEMAscii(LPCTSTR lpszFileName); //Digital Elevation Models
|
|
|
|
|
|
int ReadGrid_ArcInfoASCII(LPCTSTR lpszFileName); //<2F><>ȡArcInfo ASCII Grid Format<61><74><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int ReadGridData(CFile& fr, CDimension2D* pDfg, BOOL bReversal=FALSE); //<2F><>ȡASCII<49>ļ<EFBFBD><C4BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
|
|
|
|
|
//<2F><>DFG<46><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|
|
|
|
|
int Smooth(double smooth_coe = 1.0, long smooth_times = 1);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>һ<EFBFBD>У<EFBFBD>GDFGRID
|
|
|
|
|
|
void WriteGdfGrid(LPCTSTR lpszFileName);
|
|
|
|
|
|
void WriteGdfGrid(CFile& fw, int times);
|
|
|
|
|
|
int ReadGdfGrid(CFile& fr);
|
|
|
|
|
|
int ReadGdfGrid(CString strGridFile);
|
|
|
|
|
|
|
|
|
|
|
|
int CreateImage(CImageInsert* pImage, int times=1);
|
|
|
|
|
|
|
|
|
|
|
|
void ContourCreate(POSITION(AddContourCurve)(CCurve* pCurve, CString strLayer),
|
|
|
|
|
|
double step, long nameStep, CString nameLineLayer, CString otherLineLayer,
|
|
|
|
|
|
double czmin, double czmax);
|
|
|
|
|
|
|
|
|
|
|
|
void ContourCreate(std::vector<CCurve*>* curves, std::vector<CString*>* layers,
|
|
|
|
|
|
double step, long nameStep, CString nameLineLayer, CString otherLineLayer,
|
|
|
|
|
|
double czmin, double czmax);
|
|
|
|
|
|
|
|
|
|
|
|
void GetM( double &zmin, double &zmax, BOOL bRerange=FALSE, double minValidValue=-1e100, double maxValidValue=1e100 );
|
|
|
|
|
|
void SetM(double zmin, double zmax);
|
|
|
|
|
|
void GetDelt(double& dx, double& dy);
|
|
|
|
|
|
void GetOrg(double& x0, double& y0);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void CreateColor(void);
|
|
|
|
|
|
virtual void GetBitmap(void);
|
|
|
|
|
|
virtual void UpdateColorRuler(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void ExchangeXY(void); //<2F><><EFBFBD><EFBFBD>XY<58><59><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void ExchangeXY(void* pProjection); //ת<><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>,CProjection* pProjection
|
|
|
|
|
|
|
|
|
|
|
|
CColorRuler *m_pRuler;
|
|
|
|
|
|
CColorBase color;
|
|
|
|
|
|
|
|
|
|
|
|
void InitColor();
|
|
|
|
|
|
int ReadColor(CFile &fr, const short &ver);
|
|
|
|
|
|
void WriteColor(CFile &fw, const short &ver);
|
|
|
|
|
|
int CreateColorFromRuler(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>ߵĸ<DFB5><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>
|
|
|
|
|
|
|
|
|
|
|
|
void Offset(double dx, double dy);
|
|
|
|
|
|
void SetValue(CPtrList& curveList, double z0, BOOL bRangeOut);
|
|
|
|
|
|
void SetZ(long i, long j, double z0);
|
|
|
|
|
|
int DeleteValue(double valueStart, double endValue, double invalidValue);
|
|
|
|
|
|
BOOL IsInRangeZ(double z0);
|
|
|
|
|
|
long SetValueZ(double a, int nModeSel);
|
|
|
|
|
|
void ScaleZ(double dScale);
|
|
|
|
|
|
|
|
|
|
|
|
double Volume(CCurveEx& curve, double dClosedZ); //<2F><><EFBFBD>㹹<EFBFBD><E3B9B9>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȧ<EFBFBD>ձպ<D5B1><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double TradeArea(CCurve& curve, double baseZ = 0);
|
|
|
|
|
|
double GetClosedZ(CCurveEx& curve, double hightPointZ); //<2F><><EFBFBD>ñպ<C3B1>Zֵ<5A><D6B5>hightPointZһ<5A><D2BB>ΪGetHightPoint<6E><74><EFBFBD>õĸߵ<C4B8>Zֵ
|
|
|
|
|
|
int GetHightPoint(CCurveEx* pCurve, CPoint3D& hightPoint); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD>Χ<EFBFBD>ڵĸߵ<C4B8>, <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ò<EFBFBD><C3B2>ɹ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CMesh& mesh);
|
|
|
|
|
|
void CloneOtherParamter(CMesh& mesh); //<2F><><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
int GetNumber(long& numx, long& numy, long* pNumz=NULL);
|
|
|
|
|
|
int AutoReadFile(CString strMeshPathName); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><CAB6>
|
|
|
|
|
|
int AutoReadFile(CFile& fr, CString strExt);
|
|
|
|
|
|
int ReadMeshFile(CString strMeshPathName);
|
|
|
|
|
|
int GeologicalSection(CCurveEx& split, CCurveEx& section); //<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void WriteMesh(LPCTSTR lpszMeshName, DWORD dwFileType); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
void WriteOnlyDataToXYZ(CFile& fw, int times, const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool IsLightingEnabled() const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void EnableLighting();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void DisableLighting();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
int GetLightAzimuth() const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>ˮƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* \param azimuth ˮƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕȣ<EFBFBD><EFBFBD><EFBFBD>Χ [0, 360]
|
|
|
|
|
|
*/
|
|
|
|
|
|
void SetLightAzimuth(float azimuth);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
float GetLightElevation() const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD>ߴ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
* \param elevation ˮƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕȣ<EFBFBD><EFBFBD><EFBFBD>Χ [0, 360]
|
|
|
|
|
|
*/
|
|
|
|
|
|
void SetLightElevation(float elevation);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
float GetLightIntensity() const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void SetLightIntensity(float intensity);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ z <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
float GetZScaleFactor() const;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> z <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
void SetZScaleFactor(double factor);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
BOOL CutOut(CCurveEx* pCurve); //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
BOOL CutIn(CCurveEx* pCurve); //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
int CutSectionDfg(CCurveEx& split, CDimension2D& outDfg); //<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棨<EFBFBD><E6A3A8><EFBFBD><EFBFBD>Ϊһ<CEAA><D2BB>ά<EFBFBD><CEAC><EFBFBD>棩
|
|
|
|
|
|
int CutSlice(CDimension2D& outDfg, double zValue); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Zֵ<5A>е<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EEA3A9>Ƭ
|
|
|
|
|
|
|
|
|
|
|
|
CString GetName(void);
|
|
|
|
|
|
void SetName(LPCTSTR lpszName);
|
|
|
|
|
|
|
|
|
|
|
|
void EnableUpdateRuler(BOOL bDraw);
|
|
|
|
|
|
void EnableDrawRuler(BOOL bDraw);
|
|
|
|
|
|
BOOL IsSerializeRuler(void);
|
|
|
|
|
|
BOOL IsDrawRuler(void);
|
|
|
|
|
|
BOOL IsUpdateRuler(void);
|
|
|
|
|
|
CRect8 GetRulerRange(void);
|
|
|
|
|
|
CMeshPackage* GetPackage();
|
|
|
|
|
|
|
|
|
|
|
|
void InitMeshBaseType();
|
|
|
|
|
|
DWORD GetMeshType(void);
|
|
|
|
|
|
void SetMeshType(DWORD nType);
|
|
|
|
|
|
void SetMeshFunction(DWORD nFunType);
|
|
|
|
|
|
DWORD GetMeshFunction(void);
|
|
|
|
|
|
|
|
|
|
|
|
CDimension3D* FunToDfg(CFunction2D* pfun);
|
|
|
|
|
|
BOOL EncryptGrid(CDimension3D* pInDfg, CDimension3D* pOutDfg, int times);
|
|
|
|
|
|
|
|
|
|
|
|
static BOOL GetSaveAsFileName(CString &strePathName, LPCTSTR lpExt);
|
|
|
|
|
|
CImageInsert* GetImage() { return this->m_pImage.get(); }
|
|
|
|
|
|
public:
|
|
|
|
|
|
long m_nTimes; //<2F><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|
|
|
|
|
long m_FunctionSelect; //û<><C3BB>ʹ<EFBFBD><CAB9>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CString m_name;
|
|
|
|
|
|
int m_nFxyIndexZ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ƽ<EFBFBD><C6BD><EFBFBD>ϵ<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱʡΪ0
|
|
|
|
|
|
|
|
|
|
|
|
DWORD m_nFlags; //<2F>Ƿ<EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>ʾ....
|
|
|
|
|
|
COLORREF m_colTransparent; //<><CDB8>ɫ, <><CDB8><EFBFBD>ȣ<EFBFBD><EFBFBD><CDB8>0-255<35><35><EFBFBD><CDB8><EFBFBD><EFBFBD>
|
|
|
|
|
|
CString m_FileName;
|
|
|
|
|
|
bool IsPropertyChanged; // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public:
|
|
|
|
|
|
CDimension3D* GetDfg(void);
|
|
|
|
|
|
void SetTransparentColor(COLORREF col); //<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8>ɫ
|
|
|
|
|
|
COLORREF GetTransparentColor(void);
|
|
|
|
|
|
BOOL IsTransparent(void); //<2F>Ƿ<EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
void SetTransparentMode(DWORD nMode); //<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8>ģʽ
|
|
|
|
|
|
DWORD GetTransparentMode(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><CDB8>ģʽ
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void MakePackages(vector<CCurveEx*>* pFaults);
|
|
|
|
|
|
void RecreatPackages(vector<CCurveEx*>* pFaults, BOOL force);
|
|
|
|
|
|
|
|
|
|
|
|
bool SetAlpha(BYTE level);
|
|
|
|
|
|
void RemoveAlpha(void);
|
|
|
|
|
|
void CreateDfgPackage(CCurveEx* pCurve, vector<CCurveEx*>& packages
|
|
|
|
|
|
, std::vector<CRect8>& ranges, vector<COLORREF>& colors
|
|
|
|
|
|
, vector<double>& Zs);
|
|
|
|
|
|
|
|
|
|
|
|
inline void CreatePackageCross2(CCrossList &list, CCurveEx * pCurveGrid
|
|
|
|
|
|
, dfPoint &pt1, dfPoint &pt2, dfPoint &pt3, dfPoint &pt4
|
|
|
|
|
|
, std::vector<COLORREF> & colors,vector<double>& dZs
|
|
|
|
|
|
, std::vector<CCurveEx *> & packages, std::vector<CRect8>& ranges);
|
|
|
|
|
|
|
|
|
|
|
|
inline void CreatePackageCross4(CCrossList &list, CCurveEx * pCurveGrid
|
|
|
|
|
|
, dfPoint &pt1, dfPoint &pt2, dfPoint &pt3, dfPoint &pt4
|
|
|
|
|
|
, std::vector<COLORREF> & colors, vector<double>& Zs
|
|
|
|
|
|
, std::vector<CCurveEx *> & packages, vector<CRect8>& ranges);
|
|
|
|
|
|
|
|
|
|
|
|
void SetEnablePackage(BOOL enable) { EnablePackage = enable; }
|
|
|
|
|
|
BOOL GetEnablePackage() { return EnablePackage; }
|
|
|
|
|
|
|
|
|
|
|
|
double CalculateAngle(dfPoint& pt1, dfPoint& pt2);
|
|
|
|
|
|
double CalculateAngle(CCurveEx& curve);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
std::unique_ptr<CImageInsert> m_pImage;
|
|
|
|
|
|
CGrid* m_pMeshFun; //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>洦<EFBFBD><E6B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,CDimension3D* or CFunction2D*
|
|
|
|
|
|
CMeshPackage* m_pMeshPackage; // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
BOOL EnablePackage = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
CFunction2D* GetFun(void);
|
|
|
|
|
|
void ClearMeshFun(void);
|
|
|
|
|
|
virtual void ClearMesh(void);
|
|
|
|
|
|
// void SerializeDfg(CArchive& ar);
|
|
|
|
|
|
// void SerializeFxy(CArchive& ar);
|
|
|
|
|
|
|
|
|
|
|
|
void WriteDfg(CFile &fw, const short& ver);
|
|
|
|
|
|
void WriteFxy(CFile &fw, const short& ver);
|
|
|
|
|
|
void WriteFun(CFile &fw, const short& ver);
|
|
|
|
|
|
BOOL BeforeWrite(LPCTSTR lpszExtStr);
|
|
|
|
|
|
|
|
|
|
|
|
int Read3DMesh(CString strPathName);
|
|
|
|
|
|
int Read3DMesh(CFile& fr);
|
|
|
|
|
|
void Write3DMesh(CFile& fw, int times, const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>ڴ洮<DAB4>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
int ReadBuffer(BYTE* pDataBuffer, DWORD nDataLen, CString& strType);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>д<EFBFBD>뵽һ<EBB5BD><D2BB><EFBFBD>ڴ洮<DAB4><E6B4AE>
|
|
|
|
|
|
int GetFileBuffer(BYTE** ppBuffer, DWORD& nBufSize, CString& strType);
|
|
|
|
|
|
|
|
|
|
|
|
int ReadDfg(CString strDfgPathName);
|
|
|
|
|
|
int ReadFxy(CString strFxyPathName);
|
|
|
|
|
|
|
|
|
|
|
|
void DfgToBitmap(CImageBase& image,CColorBase& color, int times, int selPlane);
|
|
|
|
|
|
void DfgToBitmap(CImageBase& image,CColorBase& color,int times, long bnumx, long bnumy, long enumx, long enumy);
|
|
|
|
|
|
|
|
|
|
|
|
void FunToBitmap(CImageBase& image,CColorBase& color,int times, long bnumx, long bnumy, long enumx, long enumy);
|
|
|
|
|
|
|
|
|
|
|
|
void MeshFunction(CDimension3D* pSourceDim, CDimension3D* pDestDim, long nFunSel);
|
|
|
|
|
|
void MeshFunction(CFunction2D* pSourceDim, CFunction2D* pDestDim, long nFunSel);
|
|
|
|
|
|
double GetZ(CDimension3D* pDim, long i, long j, long nFunSel);
|
|
|
|
|
|
double GetZ(CFunction2D* pDim, long i, long j, long nFunSel);
|
|
|
|
|
|
|
|
|
|
|
|
inline int GetZ(vector<dfPoint> pts, CCurveEx& area,double& zValue);
|
|
|
|
|
|
inline COLORREF GetZColor(double& z);
|
|
|
|
|
|
CString GetDfgFileName(CString strSourcePathName, CString ext);
|
|
|
|
|
|
|
|
|
|
|
|
void SetValueDfg(CPtrList& curveList, double z0, BOOL bRangeOut);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ⲿ(<28><>bRangeOut<75><74><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊz0 */
|
|
|
|
|
|
void SetValueFun(CPtrList& curveList, double z0, BOOL bRangeOut);
|
|
|
|
|
|
BOOL CutOutDfg(CCurveEx* pCurve); //<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳü<C8B2><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㸳<EFBFBD><E3B8B3>*/
|
|
|
|
|
|
BOOL CutOutFun(CCurveEx* pCurve);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> wcw*/
|
|
|
|
|
|
BOOL CutInFun(CCurveEx* pCurve);
|
|
|
|
|
|
int GeologicalSectionDfg(CCurveEx& split, CCurveEx& section); //<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int GeologicalSectionFun(CCurveEx& split, CCurveEx& section); //<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊz0*/
|
|
|
|
|
|
void SetValueFunOutside(CFunction2D* pf,CPtrList& curveList, double z0);
|
|
|
|
|
|
/** @brief <20>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5>ⲿ*/
|
|
|
|
|
|
BOOL IsPtOutside(double x0, double y0, CPtrList& curveList);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊz0*/
|
|
|
|
|
|
void SetValueFunInside(CFunction2D* pf,CPtrList& curveList, double z0);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊz0*/
|
|
|
|
|
|
void SetValueCurveInside(CFunction2D* pf,CCurveEx* pCurve, double z0);
|
|
|
|
|
|
|
|
|
|
|
|
double zero = 1e-30;
|
|
|
|
|
|
|
|
|
|
|
|
bool isEdited = true;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>Ч<EFBFBD><D0A7>
|
|
|
|
|
|
bool m_isLightingEnabled = false;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
float m_lightAzimuth = 127.0f;
|
|
|
|
|
|
// <20><><EFBFBD>ߴ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>
|
|
|
|
|
|
float m_lightElevation = 50.0f;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>
|
|
|
|
|
|
float m_lightIntensity = 0.1f;
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> z <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
float m_zScaleFactor = 1.0f;
|
|
|
|
|
|
|
|
|
|
|
|
int64_t m_id = -1;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
virtual int ReadPCG(void *pxp, const short &ver);
|
|
|
|
|
|
virtual int ReadPCG2(void *pxp, const short &ver);
|
|
|
|
|
|
};
|