#ifndef _TCONTAINERSINGLETON_H__ #define _TCONTAINERSINGLETON_H__ #if _MSC_VER > 1000 #pragma once #endif #include #include class TContainerSingleton { public: typedef std::list LstIDData; typedef std::list LstProHeight; typedef std::map LstReMoveMap; typedef std::map LstProHeightMap; typedef std::map LstGroupIDMap; typedef std::map LstSubIDMap; public: static TContainerSingleton* GetInstance(); static void ReleaseInstance(); public: void MapCurrentDwg(); void AppendThunder(LPCTSTR pszGNo, const AcDbObjectId& idThunder); void AppendThunder(LPCTSTR pszGNo, const AcDbObjectIdArray& arIdThunder); int GetGroupThunder(LPCTSTR pszGNo, AcDbObjectIdArray& arIdThunder); int GetThunderMap(LstGroupIDMap& mapThunder); void AppendRemoveProHeight(LPCTSTR pszGNo, double dProHeight); void AppendProHeight(LPCTSTR pszGNo, const AcGeDoubleArray& arProHeight); void ClearProHeight(); int GetGroupProHeight(LPCTSTR pszGNo, AcGeDoubleArray& arProHeight); int GetProHeightMap(LstProHeightMap& mapProHeight); void GetNumArrayBySpecGroup(LPCTSTR pszGNo, AcGeIntArray& arNum); void RemoveThunderNoGNo(const AcDbObjectId& idThunder); void RemoveThunder(const AcDbObjectId& idThunder); void RemoveThunder(const AcDbObjectIdArray& arIdThunder); void RemoveThunder(LPCTSTR pszGNo, const AcDbObjectId& idThunder); void RemoveThunder(LPCTSTR pszGNo, const AcDbObjectIdArray& arIdThunder); AcDbObjectId GetIdFromEntity(Entity& ent); BOOL GetThunderGroupNo(const AcDbObjectId& idThun, CString& sGroupNo, LPCTSTR pszKey = TEL_GROUP_NO); BOOL GetThunderNumber(const AcDbObjectId& idThun, CString& sNumber); BOOL GetThunderNumber(AcDbEntity* pEnt, CString& sNumber); BOOL GetXData(AcDbEntity* pEnt, LPCTSTR pszAppName, CString& sXData); // subObjOpt public: void AppendCircle(LPCTSTR pszGNo, const AcDbObjectId& idCir); void AppendCircle(LPCTSTR pszGNo, const AcDbObjectIdArray& arIdCir); int GetCircle(LPCTSTR pszGNo, AcDbObjectIdArray& arIdCir); void RemoveCircle(LPCTSTR pszGNo, const AcDbObjectId& idCir); void EreaseSpecGNoCircl(LPCTSTR pszGNo); void AppendRegion(LPCTSTR pszGNo, const AcDbObjectId& idReg); void AppendRegion(LPCTSTR pszGNo, const AcDbObjectIdArray& arIdReg); int GetRegion(LPCTSTR pszGNo, AcDbObjectIdArray& arIdReg); void RemoveRegion(LPCTSTR pszGNo, const AcDbObjectId& idReg); void EreaseSpecGNoRegion(LPCTSTR pszGNo); void Append3DSolid(LPCTSTR pszGNo, const AcDbObjectId& idSolid); void Append3DSolid(LPCTSTR pszGNo, const AcDbObjectIdArray& arIdSolid); int Get3DSolid(LPCTSTR pszGNo, AcDbObjectIdArray& arIdSolid); void Remove3DSolid(LPCTSTR pszGNo, const AcDbObjectId& idSolid); void EreaseSpecGNo3dSolid(LPCTSTR pszGNo); AcGePoint3d GetThunderInsertPosition(const AcDbObjectId& idThunder); // 避雷线数据 public: void AppendThunderLine(LPCTSTR pszGNo, const AcDbObjectId& idThunderLine); void RemoveThunderLine(const AcDbObjectId& idThunderLine); void RemoveThunderLine(LPCTSTR pszGNo, const AcDbObjectId& idThunderLine); int GetGroupThunderLine(LPCTSTR pszGNo, AcDbObjectIdArray& arIdThunderLine); int GetThunderLineMap(LstGroupIDMap& mapThunder); void GetTLineNumArrayBySpecGroup(LPCTSTR pszGNo, AcGeIntArray& arNum); void AppendLineRegion(LPCTSTR pszGNo, const AcDbObjectId& idReg); void RemoveLineRegion(LPCTSTR pszGNo, const AcDbObjectId& idReg); int GetLineRegion(LPCTSTR pszGNo, AcDbObjectIdArray& arIdReg); void EreaseSpecGNoLineRegion(LPCTSTR pszGNo); void AppendLine3DSolid(LPCTSTR pszGNo, const AcDbObjectId& idSolid); void RemoveLine3DSolid(LPCTSTR pszGNo, const AcDbObjectId& idSolid); int GetLine3DSolid(LPCTSTR pszGNo, AcDbObjectIdArray& arIdSolid); void EreaseSpecGNoLine3dSolid(LPCTSTR pszGNo); void AppendRemoveLineProHeight(LPCTSTR pszGNo, double dProHeight); void AppendLineProHeight(LPCTSTR pszGNo, const AcGeDoubleArray& arProHeight); void ClearLineProHeight(); int GetGroupLineProHeight(LPCTSTR pszGNo, AcGeDoubleArray& arProHeight); int GetProLineHeightMap(LstProHeightMap& mapProHeight); public: void AppendPreview3DSolid(LPCTSTR pszGNo, const AcDbObjectId& idSolid); void EreasePreview3DSolid(); private: BOOL HasExist(const AcDbObjectId& idThunder, const LstIDData& lstID); BOOL HasExist(double dProHeight, const LstProHeight& lstProHeight); void MergeProHeight(LstProHeightMap& mapRomve, LstProHeightMap& mapProHeight); protected: TContainerSingleton(); private: static TContainerSingleton *m_pSingleton; LstReMoveMap m_mapLineRemove; LstProHeightMap m_mapLineProHeight; LstReMoveMap m_mapRemove; LstProHeightMap m_mapProHeight; LstGroupIDMap m_mapID; LstSubIDMap m_mapCircle; // 保护圆 LstSubIDMap m_mapRegion; // 二维联合保护区域 LstSubIDMap m_map3DSolid; // 三维实体 LstSubIDMap m_mapPreview3DSolid; // 预览时临时三维实体 LstGroupIDMap m_mapThundLine; // 避雷线ID数组 LstSubIDMap m_mapTLRegion; // 避雷线区域 LstSubIDMap m_mapTL3DSolid; // 避雷线三维实体 }; #endif // !defined(_TCONTAINERSINGLETON_H__)