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.

741 lines
29 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD> Xy.h
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include <map>
#include "afxdb.h"
#include "xydc.h"
#include "rect8ex.h"
#include "afxcoll.h"
#include ".\classlist.h"
#include "..\projectionLib\projection.h"
#include ".\fileencrypt.h"
#include "MapStringToPtrNoCase.h"
#include "XyElementFilter.h"
#include <unordered_map>
#include "Util.h"
#include "VtkSettings.h"
#include <optional>
// <20>𶫷<EFBFBD><F0B6ABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><CDB7>ħ<EFBFBD><C4A7>
#define KEVISUALIZATION_BINARY 1001101
#define XY_STYLE_DERIVED_LEGEND 0x0001 //<2F>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD>,<2C>Dz<EFBFBD><C7B2><EFBFBD>Ӧ<EFBFBD>ø<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ̳<CEBC><CCB3><EFBFBD><EFBFBD><EFBFBD>
#define XY_STYLE_LAYER_SORT 0x0002 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾԪ<CABE><D4AA>
class CCgmDefaultInfo //Ϊ<>˶<EFBFBD>ȡCGM<47><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ļ<EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD>DOC<4F><43><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
public:
CCgmDefaultInfo()
{
mode=-1;
scaling=1;
};
int mode;
double scaling;
};
class COne;
class AFX_EXT_CLASS CXy
{
public:
CXy();
virtual ~CXy();
virtual void Clear(void);
public:
NBase::CRect8 m_markRect; //<2F><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ, <20><>ʾ<EFBFBD><CABE><EFBFBD>ŵķ<C5B5>Χ, Ϊ<><CEAA><EFBFBD><EFBFBD>CInsertDraw<61><77><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD><EFBFBD>׼ȷ
NBase::CRect8 m_range; //ͼ<><CDBC><EFBFBD>ķ<EFBFBD>Χ
NBase::CRect8 m_display; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ
short m_version; //<2F><>ȡ<EFBFBD>İ汾<C4B0><E6B1BE>
NBase::CSize8 m_scaleSize; //ͼ<><CDBC><EFBFBD>ĺ<EFBFBD><C4BA>ݱ<EFBFBD><DDB1><EFBFBD>
CSize m_unit; //x,y<><79><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>λѡ<CEBB><D1A1>
CString m_strName; //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_strMaker; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_strDate; //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double m_dScaleFactor; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ǰͼ<C7B0><CDBC><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ֵ<EFBFBD><D6B5>1<EFBFBD><31>m_dScaleFactor
long color;
CMapStringToPtrNoCase mark;
void* m_DataClassAppend; //<2F><><EFBFBD>ӵķ<D3B5><C4B7><EFBFBD><E0B7BD>
CHowToViewCurve* HowToViewCurve;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CHowToViewPoint* HowToViewPoint;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CProjection m_ExchangeXYZ; //ͶӰ
CString projection;
//CMeshPackage* m_pMeshPackage; // <20><><EFBFBD>񲹶<EFBFBD>
BOOL m_bRealTimeDraw; // <20><>ȡ<EFBFBD>ļ<EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>ͼ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COLORREF m_symbolBackcolor = 16777216; // <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF m_symbolForecolor = 16777216; // <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
protected:
std::unique_ptr<CFileEncrypt> m_pEncrypt; //<2F><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
CLayer* m_pLayer; //CLayer*CXy
BOOL m_bXyDrawContinue; //<2F>Զ<EFBFBD>DRAW<41><57>־,<2C><>ΪFALSEʱ,ֹͣDRAW<41><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_tempViewState; //Ԫ<>ص<EFBFBD><D8B5><EFBFBD>ʾ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
double m_RedundantError; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD m_dwFlags; //<2F><><EFBFBD><EFBFBD>,<2C><><EFBFBD>̳<EFBFBD><CCB3><EFBFBD><EFBFBD><EFBFBD>,<2C>Ƿ񰴲<C7B7><F1B0B4B2><EFBFBD>ʾԪ<CABE>ص<EFBFBD><>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>չ
POSITION AddElement(COne* pOne);
CPtrList value; //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й©
CClassList m_ClassList; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
virtual COleObject* ReadOleData(CFile& fr, const short &ver);
BOOL m_bEnablePackage = FALSE;
CString m_faultLayer; // <20>ϲ<EFBFBD>ͼ<EFBFBD><CDBC>
CString m_borderLayer; // <20>߽<EFBFBD>ͼ<EFBFBD><CDBC>
CString m_meshLayer3D; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CString m_faultLayer3D; // <20>ϲ<EFBFBD>ͼ<EFBFBD><CDBC>
CString m_borderLayer3D; // <20>߽<EFBFBD>ͼ<EFBFBD><CDBC>
CString m_wellLayer3D; // <20><>ͼ<EFBFBD><CDBC>
int64_t m_mainMeshId3D = -1;
public:
CPtrList m_printTemplateList; //<2F>ļ<EFBFBD><C4BC>еĴ<D0B5>ӡģ<D3A1><C4A3><EFBFBD>б<EFBFBD>
//Ϊ<><CEAA><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><E0B6A8>
void* CreateExtendObject(int nType); //return CBaseExtend*
int FindExtendType(LPCTSTR lpszKey);
bool CreateMeshPackage();
void EnableMeshPackage(BOOL enable,BOOL force = FALSE);
bool IsEnableMeshPackage() { return this->m_bEnablePackage; }
void SetFaultLayer(CString layer);
CString GetFaultLayer();
void SetBorderLayer(CString layer);
CString GetBorderLayer();
void SetMeshLayer3D(const CString& layer);
const CString& GetMeshLayer3D() const;
void SetFaultLayer3D(const CString& layer);
const CString& GetFaultLayer3D() const;
void SetBorderLayer3D(const CString& layer);
const CString& GetBorderLayer3D() const;
void SetWellLayer3D(const CString& layer);
const CString& GetWellLayer3D();
void SetMainMeshId3D(int64_t id);
int64_t GetMainMeshId3D() const;
public:
BOOL ReadOtherWithExtension(LPCTSTR lpstrFileName, CCgmDefaultInfo* pCgmInfo=NULL); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȡ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dfd,dfb,xyz<79>ȸ<EFBFBD>ʽ
BOOL ReadOtherWithExtension(CFile& fr, CString ext, CCgmDefaultInfo* pCgmInfo/*=NULL*/);
/**
* ע<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> bug<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>Ŵ<EFBFBD>С
*/
BOOL ReadWithExtension(LPCTSTR lpstrFileName); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>Զ<EFBFBD>ʶ<EFBFBD><CAB6>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȡ
BOOL ReadMemory(BYTE* bufFile, int bufLen, int formatCode); // formatCode: 1=dfd, 2=dfb, 3=dml, 4=pcg
BOOL WriteMemory(BYTE*& bufFile, int& bufLen, int formatCode); // formatCode: 1=dfd, 2=dfb, 3=dml, 4=pcg
BOOL WriteMemory(BYTE*& bufFile, int& bufLen, NBase::CPositionList& select, int formatCode, const short& ver);
void SaveAsWithExtension(LPCTSTR lpszFileName, short ver=-1, BOOL bWriteAllLayerName=TRUE);
POSITION ReadImageRecognise(LPCTSTR lpcsImageName); //<2F>Զ<EFBFBD>ʶ<EFBFBD><CAB6>ͼ<EFBFBD><CDBC><EFBFBD>ļ<EFBFBD>
CImageInsert* FromImage(LPCTSTR lpcsImageName);
CMetaFile* FromWMF(LPCTSTR lpcsWmfName);
CMxn* FromSegy(LPCTSTR lpszSegyName);
CSection* FromSegyMemory(LPCTSTR lpszSegyName, BOOL bReadCoor=FALSE, int posx=72, int posy=76);
int DFD_ReadOnlyCurveLayer(LPCTSTR lpstrFileName); //ֻ<><D6BB>ȡ<EFBFBD>ļ<EFBFBD><C4BC>еIJ<D0B5>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
int FromCgm(LPCTSTR lpszPathName, CCgmDefaultInfo* pCgmInfo=NULL); //<2F><><EFBFBD><EFBFBD>CCgm<67>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,pCgmInfoΪCGM<47>еı<D0B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromCgm(CFile& fr, CCgmDefaultInfo* pCgmInfo=NULL); //<2F><><EFBFBD><EFBFBD>CCgm<67>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,pCgmInfoΪCGM<47>еı<D0B5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromShp(LPCTSTR lpszPathName); //<2F><>ArcView<65>е<EFBFBD>SHP<48>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromMif(LPCTSTR lpszPathName); //<2F><>MapInfo<66>е<EFBFBD>Mif<69>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromDxf(LPCTSTR lpszPathName); //<2F><>AutoCAD<41>е<EFBFBD>DXF<58>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromDxf(CFile& fr); //<2F><>AutoCAD<41>е<EFBFBD>DXF<58>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromUmapAsc(LPCTSTR lpszPathName); //<2F><>UMap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBDBB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>asc
int FromUmapBlk(LPCTSTR lpszPathName); //<2F><>UMap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBBDBB><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>blk
int FromMapGis(LPCTSTR lpszPathName); //<2F><>MapGis<69>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromGeoMap(LPCTSTR lpszPathName); //<2F><>GeoMap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ļ<EFBFBD><C4BC>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromZgf(LPCTSTR lpszPathName); //<2F><>ZMAP<41><50>ZGF<47><46>ʽ<EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FromGridAuto(LPCTSTR lpszFileName); //<2F>Զ<EFBFBD>ʶ<EFBFBD><CAB6>GRID<49>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ж<EFBFBD>ȡ(*.grd,*.grid)
int FromGeoFrame_Map(LPCTSTR lpszPathName); //<2F><>ȡGeoFrame<6D><65>Map<61>ļ<EFBFBD>
int FromEmf(LPCTSTR lpszPathName); //<2F><>ȡEMF<4D>ļ<EFBFBD>
int FromGDBX(LPCTSTR lpszPathName); //<2F><>ȡGDBX<42>ļ<EFBFBD>(xml<6D><6C><EFBFBD><EFBFBD>)
int ToCgm(CXyDC* pXyDC, CFile& fw); //<2F><><EFBFBD><EFBFBD>CGM<47>ļ<EFBFBD>
int ToCgm(CXyDC* pXyDC, LPCTSTR lpszPathName); //<2F><><EFBFBD><EFBFBD>CGM<47>ļ<EFBFBD>
int ToEps(CXyDC* pXyDC, CFile& fw); //<2F><><EFBFBD><EFBFBD>EPS<50>ļ<EFBFBD>
int ToEps(CXyDC* pXyDC, LPCTSTR lpszPathName); //<2F><><EFBFBD><EFBFBD>ΪEPS<50>ļ<EFBFBD>;
int ToPdf(CXyDC* pXyDC, CFile& fw, const NBase::CRect8& pRect,
bool state, int cType, int sType); //<2F><><EFBFBD><EFBFBD>PDF<44>ļ<EFBFBD>
int ToPdf(CXyDC* pXyDC, LPCTSTR lpszPathName, const NBase::CRect8& pRect,
bool state, int cType, int sType); //<2F><><EFBFBD><EFBFBD>ΪPDF<44>ļ<EFBFBD>
int ToDxf(CXyDC* pXyDC, CFile& fw); //<2F><><EFBFBD><EFBFBD>DXF<58>ļ<EFBFBD>
int ToDxf(CXyDC* pXyDC, LPCTSTR lpszPathName); //<2F><><EFBFBD><EFBFBD>ΪDXF<58>ļ<EFBFBD>;
int ToUmap(CXyDC* pXyDC, CFile& fw); //<2F><><EFBFBD><EFBFBD>ΪUMap<61>ļ<EFBFBD><><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int ToMapGisAsc(CXyDC* pXyDC, CFile& fw, BOOL bCreateLayerFile); //<2F><><EFBFBD><EFBFBD>MapGis<69><73><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
int ToMapGisAsc(CXyDC* pXyDC, LPCTSTR lpszPathName, BOOL bCreateLayerFile); //<2F><><EFBFBD><EFBFBD>ΪMapGis<69><73><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>;
int ToKML(CFile& fw); //<2F><><EFBFBD><EFBFBD>google KML<4D>ļ<EFBFBD>
int ToGeoMap(CXyDC* pXyDC, CFile& fw); //<2F><><EFBFBD><EFBFBD>GeoMap<61><70>GDB<44>ļ<EFBFBD>
int ToGeoMap(CXyDC* pXyDC, LPCTSTR lpszPathName); //<2F><><EFBFBD><EFBFBD>GeoMap<61><70>GDB<44>ļ<EFBFBD>
int ToGDBX(CXyDC* pXyDC, CFile& fw);
/////////////////////DML<4D><4C>ʽ////////////////////////////////////////////////////////////////////////////
public:
virtual int DML_Read(CString m_input, short ver=-1);
virtual int DML_Read2(CFile& fr, short ver=-1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
virtual int DML_Read(CFile& fr, short ver=-1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
virtual int DML_ReadData(CFile& fr, short ver=-1);
virtual int DML_Write(CFile& fw, NBase::CPositionList& select, short ver=-1);
virtual int DML_Write(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE, int nBaseTabNum=0);
virtual int DML_WriteAll(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE);
virtual int DML_Write(LPCTSTR lpszFileName, short ver=-1, BOOL bWriteAllLayerName=TRUE);
virtual void DML_WriteData(CFile& fw, short ver, BOOL bWriteAllLayerName, int nBaseTabNum);
void DML_WriteViewState(CFile &fw, int view_state, short ver, int nBaseTabNum);
void DML_Write(CProjection& pj, CFile& fw, short ver, int nBaseTabNum);
int DML_Read(CProjection& pj, CFile& fr, short ver);
protected:
int DML_ReadSectionHead(CFile& fr, short ver=-1);
int DML_ReadSectionSymbols(CFile& fr, short ver=-1);
int DML_ReadSectionClasses(CFile& fr, short ver=-1);
int DML_ReadSectionLayers(CFile& fr, short ver=-1);
int DML_ReadSectionEmbellish(CFile& fr, short ver=-1);
int DML_ReadSectionData(CFile& fr, short ver=-1);
int DML_ReadSectionTail(CFile& fr, short ver=-1);
private :
void DeSerialize(CArchive& ar);
/////////////////////<2F><><EFBFBD><EFBFBD>PCG<43><47>ʽ////////////////////////////////////////////////////////////////////////////
public:
void AddEmbed(COne* pOne,CXy* pXy= NULL); //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>COne<6E><65>һ<EFBFBD><D2BB>Ƕ<EFBFBD><C7B6>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>xy
void PCG_InsertWellOrSectionToMap(CString filePath, CXyDC * pdc); //<2F><><EFBFBD><EFBFBD>pcg<63><67>ʽ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
std::vector<COne*> & GetLatestReadOnes(); //ggff
virtual int PCG_Read2(CString filePath, short ver = -1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
virtual int PCG_Read(CString m_input, short ver=-1);
virtual int PCG_Read2(CFile& fr, short ver=-1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
virtual int PCG_Read(CFile& fr, short ver=-1); //XML<4D>ļ<EFBFBD><C4BC><EFBFBD>д
int Pcg2_ReadPlaneMap(CFile& fr, short ver); // PCG2.0
virtual int PCG_ReadData(CFile& fr, short ver=-1, void * pXy=NULL);
virtual int PCG_Write(CFile& fw, CPositionList& select, short ver=-1);
virtual int PCG_Write(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE, int nBaseTabNum=0);
virtual int PCG_WriteAll(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE);
virtual int PCG_Write(LPCTSTR lpszFileName, short ver=2, BOOL bWriteAllLayerName=TRUE);
virtual void PCG_WriteData(CFile& fw, short ver, BOOL bWriteAllLayerName, int nBaseTabNum);
virtual void PCG2_WriteData(CFile& fw, short ver, BOOL bWriteAllLayerName, int nBaseTabNum);
void PCG_WriteViewState(CFile &fw, int view_state, short ver, int nBaseTabNum);
void PCG_Write(CProjection& pj, CFile& fw, short ver, int nBaseTabNum);
int PCG_Read(CProjection& pj, CFile& fr, short ver);
virtual int PCG_ReadWellColumn(CFile& fr, short ver = -1); //ggff2025
virtual int PCG_WriteWellColumn(CFile& fw, short ver = -1);
virtual int PCG_ReadCrossSection(CFile& fr, short ver = -1);
virtual int PCG_WriteCrossSection(CFile& fr, short ver = -1);
protected:
int PCG_ReadSectionHead(CFile& fr, short ver=-1);
int PCG_ReadSectionSymbols(CFile& fr, short ver=-1, void * pXy=NULL);
int PCG_ReadSectionClasses(CFile& fr, short ver=-1);
int PCG_ReadSectionLayers(CFile& fr, short ver=-1);
int PCG_ReadSectionEmbellish(CFile& fr, short ver=-1);
int PCG_ReadSectionData(CFile& fr, short ver=-1);
int PCG_ReadSectionTail(CFile& fr, short ver=-1);
int PCG2_ReadSectionLayers(CFile& fr, short ver = -1);
int PCG2_ReadSectionData(CFile& fw, short ver = 2, void *pXy=NULL);
int PCG2_ReadElement(CFile& fr, short ver = 2);
/////////////////////˫<><CBAB><EFBFBD><EFBFBD>ʽ////////////////////////////////////////////////////////////////////////////
public:
bool OpenFile(LPCTSTR lpszFileName, bool realTimeDraw);
virtual void DFB_Serialize(CArchive& ar, short ver, BOOL bWriteAllLayerName=TRUE);
virtual void DFB_WriteData(CArchive& ar, short ver);
int DFB_SerializeRead(CString strInput);
int DFB_SerializeWrite(CString strOutput, short ver, BOOL bWriteAllLayerName=TRUE);
/* @brief д˫<D0B4><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD>ʽ */
int DFB_SerializeWrite(CArchive& ar, short ver, BOOL bWriteAllLayerName=TRUE);
int DFB_Read (CArchive& ar, NBase::CPositionList& select, short ver); //<2F><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>select<63><74>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD>أ<EFBFBD><D8A3>е<EFBFBD>λ<EFBFBD><CEBB>
int DFB_Write(CArchive& ar, NBase::CPositionList& select, short ver);
int DFB_Read(CArchive& ar, int type, const short& ver);
void DFB_Write(CArchive& ar, int type, const short& ver);
uint64_t DFB_ReadHeader(CArchive& ar);
void DFB_WriteHeader(CArchive& ar, uint64_t header);
int16_t DFB_ReadVersion(CArchive& ar);
void DFB_WriteVersion(CArchive& ar, int16_t ver);
int DFD_WritePureData(CFile& fw, int selType);
void DFB_ReadEncrypt(CArchive& ar, short ver=-1);
void DFB_WriteEncrypt(CArchive& ar, short ver=-1);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
virtual int KEV_Read(CString m_input, short ver = -1);
virtual int DFD_Read(CString m_input, short ver=-1);
virtual int DFD_Read(CFile &fr, short ver=-1);
virtual int DFD_Read2(CFile &fr, short ver=-1); //ת<><D7AA>ΪCStdioFile<6C><65><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ,<2C>ٶȱ<D9B6>CFile<6C><65>Ҫ<EFBFBD><D2AA>
virtual int DFD_Write(CString m_output, short ver=-1, BOOL bWriteAllLayerName=TRUE);
virtual int DFD_Write(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE);
virtual int DFD_Write2(CFile& fw, short ver=-1, BOOL bWriteAllLayerName=TRUE); //ת<><D7AA>ΪCStdioFile<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д,<2C>ٶȱ<D9B6>CFile<6C><65>Ҫ<EFBFBD><D2AA>
virtual void DFD_WriteData(CFile& fw, short ver, BOOL bWriteAllLayerName);
void DFD_WriteViewState(CFile &fw, int view_state, short ver=-1);
int DFD_Read (CFile &fr, NBase::CPositionList& select, short ver = -1); // <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>select<63><74>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ڵ<EFBFBD>ǰ<EFBFBD>أ<EFBFBD><D8A3>е<EFBFBD>λ<EFBFBD><CEBB>
int DFD_Write(CFile& fw, NBase::CPositionList& select);
void DFD_Write(CFile& fw, POSITION pos, const short &ver, BOOL bWriteColor=TRUE);
void DFD_WriteLegend(CFile& fw, short ver, double cc=1.0);
void DFD_WriteMark(CFile& fw, short ver, double cc = 1.0);
int DFD_WriteViewData(CFile& fw, short ver);
//type= PLINE_CLOSE <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>,
// PLINE_SOLID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int DFD_WriteSelectPline(CFile& fw, short ver, int type, BOOL bIncludeEmbellish);
//outType=0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ΪDOUBLEFOX_CURVE<56><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ΪDOUBLEFOX_POINT<4E><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int DFD_WriteXYZ(CFile& fw, int outType=0, char split=',', int nOutMode=0);
int DFD_WriteSelectData(CFile& fw, int selType, short ver=-1);
int DFD_WritePurePline(CFile& fw, short ver=-1);
int DFD_WritePlineSmooth(CFile& fw, NBase::CPositionList& select, double step, int bIsBezier); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪB<CEAA><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD>
void DFD_WriteVersion(CFile& fw, const short& ver); //д<><D0B4>ǰ<EFBFBD><EFBFBD><E6B1BE>
void DFD_WriteProjection(CFile& fw); //дͶӰ<CDB6><D3B0>Ϣ
void DFD_WriteUnit(CFile& fw);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ReadCurveBinary(CString strBinaryName, double dRedundantError=-1); //<2F><>ȡCCurveBinary<72>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ǰXY<58><59>
// int WritePointToDB(CDatabase& db, CString strTableName, CString date);
// int WritePlineToDB(CDatabase& db, CString strTableName, CString date, BOOL IsNodeRecord /*=TRUE*/);
int Convert2Visibility(int viewStatus);
CString Convert2TypeName(int elementType);
public:
CFileEncrypt* GetFileEncrypt(void);
BOOL IsEncrypted(void);
virtual void Draw(CXyDC& dc, POSITION p);
virtual void Draw(CXyDC& dc, bool bSetProgressPos=false);
virtual void DrawLayerSort(CXyDC& dc, bool bSetProgressPos=false);
void Draw(CXyDC& dc, NBase::CPositionList& select);
virtual POSITION AddElement(void *pElement,int m_type);
virtual POSITION IsInRange(NBase::CRect8& range);
virtual void operator=(CXy& xy);
COne* CreateOne(void* pElement, int type);
void GetOneParameter(COne* pOne);
NBase::CRect8 GetRange(void);
NBase::CRect8 GetRange(NBase::CPositionList& select);
NBase::CRect8 GetDisplayRange(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ
void GetRange(NBase::CPoint3D& minPoint, NBase::CPoint3D& maxPoint);
void GetRange(NBase::CRect8& rect, BOOL bIncludeNoView=TRUE);
int IsInRange(NBase::CRect8& range, NBase::CPositionList &select, BOOL bIsOnlyEnable=TRUE);
int IsInRange(NBase::CRect8& range, NBase::CPositionList &select, int nElementType, BOOL bIsOnlyEnable);
BOOL IsDrawContinue(void);
void SetDrawContinue(BOOL bDraw);
CPtrList* GetValueList(void);
int GetCount(void);
// <20><><EFBFBD>Χ<E3B7B6>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
double GetSurfaceAngle(CCurveEx& curve);
///////////////////////////////////////////////////////////////////////////////////////////////////
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void InitLayerClass(void);
CClassList* GetClassList(void);
int GetLayerCount(void);
int SetLayerState(CString sLayer, int state, BOOL bIncludeSubLayer=FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
CLayerList* GetClass(POSITION pos);
CLayerList* GetClass(CString strClassName);
CLayerList* AddClass(CString strClassName);
virtual CLayer* FindAddLayer(CString name, bool* pbCreateNew = NULL); //<2F>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>иò<D0B8>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD><F2B7B5BB><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>λ<EFBFBD><CEBB>
virtual CLayer* AddLayer(CLayer* pl);
POSITION FindClass(CString strClassName);
CLayer* FindLayer(CString name, BOOL bWithSubLayer = FALSE);
void FindLayers(CString name, CPtrList& layers, BOOL bWithSubLayer = FALSE);
CLayer* GetAtLayer(POSITION pos);
CLayer* GetCurrentLayer(void);
void SetCurrentLayer(CString sLayer);
void SetCurrentLayer(CLayer* pLayer);
int GetLayerUsing(CStringList& arrValue); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>λָ<EFBFBD><EFBFBD>
* \param LayerList <EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* \param strLayerName ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD> CLass Name û<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>򣬽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ʱ bWithSubLayer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \param bWithSubLayer <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD><EFBFBD>
* \param bRemoveAtNoClear <EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD>ѻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ClassList <EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD>ȥ
* \return
*/
int GetLayer(CPtrList& LayerList, CString strLayerName, BOOL bWithSubLayer=TRUE, BOOL bRemoveAtNoClear=FALSE);
int ReplaceLayer(CString strOld, CString strNew, BOOL bWord, BOOL bCase);
void RemoveLayer(CString strLayerName, BOOL bWithSubLayer=TRUE, BOOL bRemoveData=TRUE);
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>λ˳<CEBB><CBB3><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
int MoveLayerInSameClassSeries(CString strSourceLayer, BOOL bWithPosition=FALSE, POSITION posInsert=NULL, int nMode=0); //Before:nMode==0,After:nMode=1
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
int MoveLayer(CString strSourceLayer, CString strParentDestLayer, BOOL bWithPosition=FALSE, POSITION posInsert=NULL, int nMode=0);//Before:nMode==0,After:nMode=1
int MoveClassLayer(CString strSourceClass, CString strParentDestLayer, BOOL bWithPosition=FALSE, POSITION posInsert=NULL, int nMode=0);//Before:nMode==0,After:nMode=1
int MoveLayerToClass(CString strSourceLayer, CString strDestClass, BOOL bWithPosition=FALSE, POSITION posInsert=NULL, int nMode=0);//Before:nMode==0,After:nMode=1
protected:
/**
* <EFBFBD><EFBFBD> listTemp ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>plcd<EFBFBD><EFBFBD>
*
* \param listTemp Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CLayer ָ<EFBFBD><EFBFBD>
* \param plcd ͼ<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
* \param bWithPosition <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ false<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> plcd <EFBFBD><EFBFBD>ĩβ
* \param posInsert Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* \param nMode 0 <EFBFBD><EFBFBD><EFBFBD> posInsert ǰ<EFBFBD>1 <EFBFBD><EFBFBD><EFBFBD> posInsert <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void MoveLayer(CPtrList& listTemp, CLayerList* plcd, BOOL bWithPosition, POSITION posInsert, int nMode);
public:
int ReplaceElementLayer(CLayer* pOldLayer, CLayer* pNewLayer);
///////////////////////////////////////////////////////////////////////////////////////////////////
POSITION InsertElementBefore(POSITION pos, COne* pNewOne);
POSITION InsertElementBefore(POSITION pos, void* pElement, int nType);
POSITION InsertElementAfter(POSITION pos, COne* pNewOne);
POSITION InsertElementAfter(POSITION pos, void* pElement, int nType);
POSITION AddTailOne(COne* pOne);
POSITION AddHeadOne(COne* pOne);
//<2F><><EFBFBD>뵽posInsertAfterָ<72><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>֮<EFBFBD><D6AE>,ΪNULLʱ<4C><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int MoveIn(CXy* pxy,
NBase::CPositionList& elemList,
POSITION posInsertAfter=NULL,
CPtrList* pAddedMarkList=NULL,
CPtrList* pAddedLayerList=NULL,
bool bRepositionMark = true,
bool bReplaceExistLayer = false, //<2F><>pxy<78>еĶ<D0B5><C4B6><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
bool removeFromSource = true); // <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int MoveInBottom(CXy* pxy,
NBase::CPositionList& elemList,
CPtrList* pAddedMarkList = NULL,
CPtrList* pAddedLayerList = NULL,
bool bRepositionMark = true,
bool bReplaceExistLayer = false); //<2F><>pxy<78>еĶ<D0B5><C4B6><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
int MoveInBefore(CXy* pxy, NBase::CPositionList& elemList, const CString& destLayerName,
CPtrList* pAddedMarkList = NULL,
CPtrList* pAddedLayerList = NULL,
bool bRepositionMark = true,
bool bReplaceExistLayer = false);
int MoveInBefore(CXy* pxy, NBase::CPositionList& elemList, POSITION pos,
CPtrList* pAddedMarkList = NULL,
CPtrList* pAddedLayerList = NULL,
bool bRepositionMark = true,
bool bReplaceExistLayer = false);
int MoveInAfter(CXy* pxy, NBase::CPositionList& elemList, const CString& destLayerName,
CPtrList* pAddedMarkList = NULL,
CPtrList* pAddedLayerList = NULL,
bool bRepositionMark = true,
bool bReplaceExistLayer = false);
POSITION MoveToFront(POSITION pos); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
POSITION MoveToBack(POSITION pos); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
POSITION MoveForward(POSITION pos); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
POSITION MoveBackward(POSITION pos); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
void ChangeToProjection(CString strProjection); //<2F><><EFBFBD>ݵ<EFBFBD>ǰͶӰת<D3B0><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͶӰ
void SetProjection(CString strProjection); //<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ͶӰ<CDB6><D3B0>ʽ
CString GetProjection(void);
void SetUnit(int unitx, int unity);
void SetUnit(CSize unit);
CSize GetUnit(void);
void SetElementColor(POSITION pos, COLORREF newColor);
long GetElementIndex(POSITION pos);
void GetElementIndexs(const std::vector<POSITION> positions, std::vector<long> &indexs) const;
POSITION FindIndex(long index);
int GetElementType(POSITION pos);
CLayer* GetElementLayer(POSITION pos);
BOOL SetElementLayer(POSITION pos, CLayer *pl);
BOOL SetElementLayer(POSITION pos, CString sLayer);
int SetElementState(POSITION pos, int nState); //<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>ʾ״̬
void RemoveAt(COne* pOne);
void RemoveAt(POSITION pos);
COne* RemoveAtNoClear(POSITION pos);
BOOL RemoveAtNoClear(COne* pOne);
COne* SetAt(POSITION pos, COne* pOne);//<2F><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>
COne* GetAt(POSITION pos) const;
void* GetAtValue(POSITION pos);
void RemoveAllLegend(void);
void RemoveAllLayer(void);
void RemoveAllData(void);
void RemoveAllPrintTemplate(void);
int ClearNoUseMark(CPtrList* ptrNoUseMark = NULL); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õķ<C3B5><C4B7>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD>ptrNoUseMark<72><6B>
int ClearLayerNoneData(CPtrList* pNoneDataLayerList = NULL); //ɾ<><C9BE>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD>
int AddMark(CXy* pxy, BOOL bDeleteOld=TRUE);
void RemoveMark(CString key);
void* RemoveMarkNoClear(CString key);
CMapStringToPtrNoCase* GetMark(void);
void* FindMark(CString key);
POSITION FindElement(CString name); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><D4AA>
//bReplace=0 ʱ<><CAB1>ʾ<EFBFBD><CABE><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//bReplace=1 ʱ<><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ָ<EFBFBD>벻Ϊ<EBB2BB>ղŸ<D5B2><C5B8>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//bReplace=2 ʱ<><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ָ<EFBFBD>벻Ϊ<EBB2BB><CEAA>ʱ<EFBFBD><CAB1><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int PositionNew(int bReplace=1);
void GetNewUsing(CStringList& arrValue); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õķ<C3B5><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL SetSectionColor(long bkColor, long frSolidColor, long frLineColor);
/**
* <EFBFBD><EFBFBD>ȡ {slayer} ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ POSITION
*
* \param slayer ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> GetAt <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD> COne *
* \param bWithSubLayer <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD>
* \param bIncludeNoEdit
* \return
*/
int GetElement(CString slayer, NBase::CPositionList& select, BOOL bWithSubLayer=FALSE, BOOL bIncludeNoEdit=TRUE);
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ {nElementType} <EFBFBD><EFBFBD>ͼԪλ<EFBFBD><EFBFBD>
*
* \param nElementType ͼԪ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD> COne <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> GetAt <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD> COne *
* \param bWithSubLayer <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD>
* \return
*/
int GetElement(int nElementType, NBase::CPositionList& select, BOOL bIncludeNoEdit=FALSE);
/**
* <EFBFBD><EFBFBD>ȡ {pLayer} ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ {nElementType} <EFBFBD><EFBFBD>ͼԪλ<EFBFBD><EFBFBD>
*
* \param pLayer ͼ<EFBFBD><EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> GetAt <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD> COne *
* \param nElementType ͼԪ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD> COne <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Ϊ 0 ʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \param bWithSubLayer <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD>
* \return
*/
int GetElement(CLayer* pLayer, NBase::CPositionList& select, int nElementType=0, BOOL bWithSubLayer=FALSE);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬿<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>
*
* \param filter <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>filter<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>ֵ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD>б<EFBFBD>
* \return
*/
int GetElement(const CXyElementFilter &filter, NBase::CPositionList &select) const;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> source <EFBFBD><EFBFBD>ɸѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ
*
* \param filter <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD>б<EFBFBD>
* \return
*/
int GetElement(const NBase::CPositionList &source, const CXyElementFilter &filter, NBase::CPositionList &select) const;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>֧<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>óɱ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Եͣ<EFBFBD><EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
*
* \param filter <EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><EFBFBD><EFBFBD>
* \param select <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼԪ<EFBFBD>б<EFBFBD>
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD>
*/
int GetElement(std::shared_ptr<ElementFilter> filter, NBase::CPositionList &select) const;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> id <EFBFBD><EFBFBD>ȡ POSITION
*
* \param id ͼԪ id
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> POSITION<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD> nullptr
*/
POSITION GetPositionById(int64_t id) const;
/**
* ͨ<EFBFBD><EFBFBD> id <EFBFBD><EFBFBD>ȡͼԪ
*
* \param id
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӦͼԪָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD> nullptr
*/
COne* GetOneById(int64_t id) const;
/**
* <EFBFBD>ж<EFBFBD> COne <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɸѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* \param pOne
* \param filter
* \return
*/
bool MatchFilter(COne* pOne, const CXyElementFilter& filter) const;
CHowToViewCurve* GetCurHowToViewCurve(void);
CHowToViewPoint* GetCurHowToViewPoint(void);
void SetCurHowToViewCurve(CHowToViewCurve* pHTVC);
void SetCurHowToViewPoint(CHowToViewPoint* pHTVP);
CHowToViewCurve* GetDeriveHowToViewCurve(CString sPathName);
CHowToViewPoint* GetDeriveHowToViewPoint(CString sPathName);
BOOL IsDeriveLegend(void);
void EnableDeriveLegend(BOOL bDerive);
BOOL IsLayerSort(void);
void EnableLayerSort(BOOL bEnable);
CHyperlink* GetHyperlink(POSITION pos);
POSITION Find(COne* pOne, POSITION startAfter=NULL);
COne* FindCurve(CString name);
COne* FindPoint(CString name);
POSITION FindFirstElement(int nType);
void DisplayReversal(void);
int DisplayAll(BOOL bIsView=TRUE, int nTypeSelect=0);
void SetRedundantError(double error);
double GetRedundantError(void);
void Rotate(double xs, double ys, double angle);
void ScaleProperty(double sx, double sy, BOOL bPersonalEmbellish, BOOL bOwnerProperties, BOOL bJudgeEditSatte=TRUE);
void ScaleCoor(double xs,double ys,double dx,double dy);
void Offset(double dx, double dy);
void ScaleCoordinate(double sx, double sy, int mode=0); //mode=0:<3A>ӣ<EFBFBD>1:<3A><><EFBFBD><EFBFBD>2:<3A>ˣ<EFBFBD>3:<3A><>
// typeΪУ<CEAA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уλ<D0A3><CEBB><EFBFBD>ĵ<EFBFBD>Уλ<D0A3><CEBB>;valueΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC>CCalibrate2<65><32>CCalibrate4<65><34>
void Calibrate(int type, void* pValue);
int Replace(COLORREF cOldColor, COLORREF cNewColor, BOOL bOwnerProperties, BOOL bLayerEmbellish);
int SetColor(COLORREF cNewColor, BOOL bOwnerProperties, BOOL bLayerEmbellish); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ɫ
static int RedundantCurve(LPCTSTR lpszInputFileName, LPCTSTR lpszOutputFileName, double dError);
void* FindStation(LPCTSTR lpStrLineName); //<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ߵ<EFBFBD>CStation<6F><6E><EFBFBD><EFBFBD>
CProgressCtrl* GetProgress(void);
//<2F>ٶȱ༭<C8B1><E0BCAD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
int ReadTV(CString m_input);
void SetVelocityMode(int xMode, int yMode);
DWORD GetVelocityStyle(void);
void SetVelocityStyle(DWORD dwStyle);
int m_xMode;
int m_yMode;
void ExchangeXY(void);
static void RemoveAllXy(CMapStringToPtrNoCase& map);
int MetaToImage(CMetaFile* pMeta, CImageInsert& image);
CString m_FileName;
////////////<2F><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>WM_COPYDATA<54><41>Ϣʱ<CFA2><CAB1><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ȡģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pCopyDataStruct->dwData/////////////////
////<2F>½<EFBFBD><C2BD>ļ<EFBFBD>
// 0://DML
// 1://DFD
// 2://DFB
////<2F>ϲ<EFBFBD><CFB2>ļ<EFBFBD>
// 10://DML
// 11://DFD
// 12://DFB
////<2F>ϲ<EFBFBD><CFB2>ļ<EFBFBD><C4BC><EFBFBD>ͳһͶӰ
// 20://DML
// 21://DFD
// 22://DFB
//hReceiveWndΪ<64><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ĵ<EFBFBD><C4B4>ڣ<EFBFBD>wParam<61><6D><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>Ĵ<EFBFBD><C4B4>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>createModeΪ<65>ļ<EFBFBD><C4BC><EFBFBD>ȡģʽ
BOOL SendMessage_CopyData(HWND hReceiveWnd, WPARAM wParam=0, int createMode=2);
BOOL ReceiveMessage_CopyData(COPYDATASTRUCT* pCopyDataStruct);
//////////////////////////////////////////////////////////////////////////////////////////////////
std::unique_ptr<VtkSceneParameterSettings> vtkSceneParameterSettings;
private:
void DFB_SerializeCOnes(CArchive& ar, const short& ver);
void AssignLayerToCOne(COne* pOne, std::unordered_map<CString, CLayer*, CStringHash>& layerCache);
POSITION EnsureUniqueIdWithPosition(POSITION pos, COne* pOne);
void DFD_ReadVtkSceneParameterSettings(CFile& fw, VtkSceneParameterSettings& settings);
void DFD_WriteVtkSceneParameterSettings(CFile& fr, const VtkSceneParameterSettings& settings);
void DFD_WriteKeyValue(CFile& fw, const char* key, bool value);
void DFD_WriteKeyValue(CFile& fw, const char* key, int value);
void DFD_WriteKeyValue(CFile& fw, const char* key, uint32_t value);
void DFD_WriteKeyValue(CFile& fw, const char* key, int64_t value);
void DFD_WriteKeyValue(CFile& fw, const char* key, double value);
void DFD_WriteKeyValue(CFile& fw, const char* key, const CString& value);
std::unordered_map<int64_t, POSITION> m_idMap;
std::vector<COne*> m_LatestReadingOnes; //ggff<66><66>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>´<EFBFBD>pcg<63>ļ<EFBFBD><C4BC>еľ<D0B5><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
enum XYTYPE
{ //ggff2025
plane,
wellPole,
wellSection
};
XYTYPE GetXyType() { return m_XyType; }
void SetXyType(XYTYPE type) { m_XyType = type; }
protected:
XYTYPE m_XyType;
public:
virtual int PCG_ReadData(CKXmlParse& xp, short ver = -1, void * pXy = NULL);
int PCG_Read3(CString strFilePath,short ver = -1); // (CFile& fr, short ver = -1);
virtual int PCG_ReadWellColumn(CKXmlParse& xp, short ver = -1); //ggff2025
virtual int PCG_ReadCrossSection(CKXmlParse& xp, short ver = -1);
int PCG_ReadSectionHead(CKXmlParse& xp, short ver = -1);
int PCG_ReadSectionSymbols(CKXmlParse& xp, short ver/*=-1*/, void * pXy);
int PCG_ReadSectionClasses(CKXmlParse& xp, short ver/*=-1*/);
int PCG2_ReadSectionLayers(CKXmlParse& xp, short ver/*=-1*/);
int PCG_ReadSectionLayers(CKXmlParse& xp, short ver/*=-1*/);
int PCG_ReadSectionEmbellish(CKXmlParse& xp, short ver/*=-1*/);
int PCG2_ReadSectionData(CKXmlParse& xp, short ver, void *pXy);
int PCG_ReadSectionData(CKXmlParse& xp, short ver/*=-1*/);
int PCG_Read(CProjection& pj, CKXmlParse& xp , short ver);
int PCG_ReadSectionTail(CKXmlParse& xp, short ver = -1);
protected:
int PCG3_Read(CKXmlParse& xp, short ver = -1);
int PCG3_ReadKevWellData(CFile& fr, int ver);
};
AFX_INLINE CPtrList* CXy::GetValueList(void)
{
return &value;
}
AFX_INLINE CClassList* CXy::GetClassList(void)
{
return &m_ClassList;
}
typedef void (* PFUN_NEW_OLE)(COleItem** pItem, COleObject **pObject);
extern "C" AFX_EXT_API PFUN_NEW_OLE * WINAPI AfxGetPFUN_NEW_OLE();