137 lines
3.5 KiB
C++
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__
|