#pragma once /* 20250509 增加CEmbedPcg图元可以在平面图中包装单井、剖面等图元,当平面图导入单井柱、剖面时,这些图元都装入CEmbedPcg对象。 目前每个CEmbedPcg只包含一个扩展图元。 注意:在单井、剖面等独立模块中打开这些图元时,不需要使用CEmbedPcg, 单井、剖面对象直接引入到xy中 */ #include "BaseExtend.h" #include "PathXy.h" class CBaseExtendTypeEmbedPcg : public CBaseExtendType { public: CBaseExtendTypeEmbedPcg(void); virtual CBaseExtend* CreateExtendObject(int nType); //根据指定类型生成对像,类型ID号必须>=100 virtual int GetExtendType(LPCTSTR lpszKey); //根据指定字符串生成对像类型,类型ID号必须>=100 }; //////////////////////////////////////////////////////////// class CBaseExtendTypeEmbedPcgUitility { public: CBaseExtendTypeEmbedPcgUitility(); virtual ~CBaseExtendTypeEmbedPcgUitility(); }; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class AFX_EXT_CLASS CEmbedPcg : public CBaseExtend, public CXyBlock { public: CEmbedPcg(); virtual ~CEmbedPcg(); public: virtual int ReadPCG(CFile &fr, const short &ver); void WritePCG(CFile &fw, const short& ver, int nBaseTabNum); virtual void Serialize(CArchive& ar, const short& ver) override; void Write(CFile &fw, const short& ver); virtual int Read(CFile& fr, const short& ver); void operator=(CEmbedPcg& pn); virtual BOOL IsInRange(CRect8& range); virtual void Draw(CXyDC& dc); virtual void Draw(CXyDC& dc, void* pHowToView); virtual void Transform(CXyDC* pDC, float* matrix, BOOL bUndo); virtual void GetRange(CRect8& range); virtual void GetRange(CPoint3D& minPoint, CPoint3D& maxPoint); virtual CBaseExtend* CreateClone(); protected: void OffsetExtendObjs(CXy* xy, CRect8 rect); //ggff2025,平面图引入井或剖面时,由于这些图元只存储相对位置,因此要偏移一下 public: virtual int ReadPCG(void *pxp, const short &ver); };