Files
envi-code/SourceCode/Code2026/tg_shs/inc/pipebase/TDbXDataMap.h
T
2026-09-28 15:28:50 +08:00

137 lines
3.5 KiB
C++

#ifndef _TDBXDATAMAP_H__
#define _TDBXDATAMAP_H__
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef _TCHPIPEBASE_
#define DLLIMPEXP __declspec(dllexport)
#else
#ifdef _TCHPIPEBASE_COM_
#define DLLIMPEXP
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#endif
#ifndef TCHPIPEBASE_DBXSERVICE
#define TCHPIPEBASE_DBXSERVICE "TCHPIPEBASE_DBXSERVICE"
#endif
#include <map>
#include "dbfiler.h"
#include "TDb.h"
class DLLIMPEXP TDbXDataMap
{
public:
TDbXDataMap();
TDbXDataMap(const TDbXDataMap& datamap);
virtual ~TDbXDataMap();
public:
BOOL SetAt(LPCTSTR pszKey,int nVal);
BOOL SetAt(LPCTSTR pszKey,double dVal);
BOOL SetAt(LPCTSTR pszKey,const AcGeDoubleArray& arVal);
BOOL SetAt(LPCTSTR pszKey,const AcGeVector3d& vt,BOOL bTransformBy = FALSE);
BOOL SetAt(LPCTSTR pszKey,const AcGePoint3d& ptGe,BOOL bTransformBy = FALSE);
BOOL SetAt(LPCTSTR pszKey,const AcGePoint3dArray& arPt,BOOL bTransformBy = FALSE);
BOOL SetAt(LPCTSTR pszKey,LPCTSTR pszValue);
BOOL SetAt(LPCTSTR pszKey,const AcDbObjectId& id,BOOL bIsSoft = TRUE);
BOOL SetAt(LPCTSTR pszKey,const AcGeMatrix3d& xform);
BOOL GetAt(LPCTSTR pszKey,int& nVal) const;
BOOL GetAt(LPCTSTR pszKey,double& dVal) const;
BOOL GetAt(LPCTSTR pszKey,AcGeDoubleArray& arVal) const;
BOOL GetAt(LPCTSTR pszKey,AcGeVector3d& vt) const;
BOOL GetAt(LPCTSTR pszKey,AcGePoint3d& ptGe) const;
BOOL GetAt(LPCTSTR pszKey,AcGePoint3dArray& arPt) const;
BOOL GetAt(LPCTSTR pszKey,AcGeMatrix3d& xform) const;
BOOL GetAt(LPCTSTR pszKey,CString &sValue) const;
BOOL GetAt(LPCTSTR pszKey,AcDbObjectId& id) const;
BOOL SetAt(LPCTSTR pszKey,int iIndex,LPCTSTR pszValue);
BOOL GetAt(LPCTSTR pszKey,int iIndex,CString &sValue);
BOOL SetAt(LPCTSTR pszKey,int iIndex,const TDbXDataMap& xDataMap);
BOOL GetAt(LPCTSTR pszKey,int iIndex,TDbXDataMap& xDataMap);
BOOL SetAt(LPCTSTR pszKey,const TDb::TXData& XData);
BOOL GetAt(LPCTSTR pszKey,TDb::TXData& XData);
BOOL HasKey(LPCTSTR pszKey,int& nVt);
void Empty();
BOOL RemoveAt(LPCTSTR pszKey);
BOOL RemoveAt(LPCTSTR pszKey,int nIndex);
//支持扩展数据的4个方法 bXRecord = fase 操作扩展数据 bXRecord = true 操作扩展词典
BOOL Write(AcDbObject* pEnt,LPCTSTR pszApp,BOOL bXRecord = FALSE);
BOOL Write(const AcDbObjectId& id,LPCTSTR pszApp,BOOL bXRecord = FALSE);
BOOL Read(AcDbObject* pEnt,LPCTSTR pszApp,BOOL bXRecord = FALSE);
BOOL Read(const AcDbObjectId& id,LPCTSTR pszApp,BOOL bXRecord = FALSE);
TDbXDataMap& operator = (const TDbXDataMap& srcMap);
BOOL CopyFrom(const TDbXDataMap* pSrc);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
typedef std::map<CString,TDb::TXData>::iterator It;
It Begin();
BOOL GetNext(It& it,TDb::TXData& xData);
It End();
// 增加 clone 的 xdatamap 的关系复制维护lfy 2011-12-6
void BeginCloneXlation(TDbXDataMap* pMapClone,AcDbIdMapping& idMap) const;
public:
BOOL XDMap2Resbuf(LPCTSTR pszApp,struct resbuf*& pRb,BOOL bXRecord = FALSE);
BOOL Resbuf2XDMap(struct resbuf* pRb,BOOL bXRecord = FALSE,AcDbDatabase* pDb = NULL);
private:
BOOL ParseToRecords(CString& sText,CStringArray& arRecords);
BOOL ExtractRecord(CString& sRecord,CString& sKey,CString& sType,CString& sInfo);
BOOL StringToAcGePoint3d(CString& sText,AcGePoint3d& ptGe);
BOOL StringToAcGeVector3d(CString& sText,AcGeVector3d& ptGe);
private:
std::map<CString,TDb::TXData> m_xData;
};
#endif //X_TDBXDATAMAP_H__