#ifndef _AECSTATUSRECORD_H__ #define _AECSTATUSRECORD_H__ #if _MSC_VER > 1000 #pragma once #endif #include #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif class DLLIMPEXP AECStatusRecord { public: AECStatusRecord(); AECStatusRecord(const AECStatusRecord& src); ~AECStatusRecord(); enum EAcquire { kString = 1, kAngle = 2, kDist = 3, kPoint = 4, kEntity = 5, }; LPCTSTR Prompt(); void SetPrompt(LPCTSTR pszPrompt); LPCTSTR KeywordList(); void SetKeywordList(LPCTSTR pszKeys); void SetNextStatus(AECStatusRecord* pStatus,int nPos = 0); AECStatusRecord* GetNextStatus(int nPos = 0); void SetCommandStop(BOOL bStop); BOOL IsCommand2Stop(); AECStatusRecord* GetLastStatus(int nPos = 0); void SetPos(int nPos); int GetPos(); void SetUndoGroupId(int nUndoGoupid); int GetUndoGroupId(); //当next status为null时,返回的root状态 void SetBackStatus(AECStatusRecord* pStatus); AECStatusRecord* GetBackStatus(); void SetKeyStatus(LPCTSTR pszKey,AECStatusRecord* pStatuss); AECStatusRecord* GetKeyStatus(LPCTSTR pszKey); AECStatusRecord* GetParentStaRec(); void SetStatusType(EAcquire eType); EAcquire GetStatusType(); void SetAcquireDouble(double dVl); double GetAcquireDouble(); void SetAcquireString(LPCTSTR pszVal); LPCTSTR GetAcquireString(); void SetAcquirePoint(const AcGePoint3d& ptGe); AcGePoint3d GetAcquirePoint(); void SetAcquireEntity(const AcDbObjectId& id); void GetAcquireEntity(AcDbObjectId& id); void SetPlanPosition(int nPos); int GetPlanPosition(); void SetSegStatusFinish(BOOL bFlag); BOOL IsStatusFinish(); void SetRefDblValue(double dVal); double GetRefDblValue(); BOOL IsValSeted(); AECStatusRecord& operator = (const AECStatusRecord& src); void CopyFrom(const AECStatusRecord* pRec); private: TCHAR m_szPrompt[256]; TCHAR m_szKeywords[256]; std::map m_mapPos2StatusNext; std::map m_mapPos2StatusLast; AECStatusRecord* m_pParentStatus; AECStatusRecord* m_pBackStatus; union { double m_dVal[3]; TCHAR m_szVal[256]; ads_name m_adsEnt; }; double m_dRefValue; BOOL m_bValSeted; BOOL m_bCmdStop; int m_nPlanPos; int m_nPos; BOOL m_bSegStatFinish; EAcquire m_eAcquire; int m_nUndoGoupid; std::map m_mapStatus; }; #endif //_AECSTATUSRECORD_H__