#include "stdafx.h" #include "AecBaseDoubleClickEdit.h" #include "AecDbObjXDataMap.h" #ifdef AECRXBASE_EXPORT #define AECDLLIMPEXP __declspec(dllexport) #else #define AECDLLIMPEXP __declspec(dllimport) #endif AecBaseDoubleClickEdit::AecBaseDoubleClickEdit(void) { } AecBaseDoubleClickEdit::~AecBaseDoubleClickEdit(void) { } //不得导出,需要数据,增加特定的获取函数 AecDbObjXDataMap g_mapGlobalData; void AecBaseDoubleClickEdit::startEdit(AcDbEntity *pEnt, AcGePoint3d pt) { if (pEnt != NULL) { //命令名 DBL_DXFNAME TCHAR szCmd[65]; _tcscpy(szCmd,_T("DBL_")); _tcscat(szCmd,pEnt->isA()->dxfName()); //判断命令是否存在 AcEdCommand* pCmd = acedRegCmds->lookupLocalCmd(szCmd); if (pCmd != NULL) { //发送ID 到 USERI; AcDbObjectId id = pEnt->objectId(); g_mapGlobalData.SetAt(szCmd,id); pEnt->close(); acedPostCommand(_T("\x03")); _tcscat(szCmd,_T(" ")); acedPostCommand(szCmd); } else { acutPrintf(_T("\nLocalCmd %s does not exist!"),szCmd); } } } void AecBaseDoubleClickEdit::finishEdit(void) { } AECDLLIMPEXP bool GetDoubleClickEnt(LPCTSTR pszCmd,AcDbObjectId& id) { g_mapGlobalData.GetAt(pszCmd,id); g_mapGlobalData.SetAt(pszCmd,AcDbObjectId::kNull); return id.isValid(); } //内部使用 AECDLLIMPEXP bool GetDoubleClickEntNoReset(LPCTSTR pszCmd,AcDbObjectId& id) { g_mapGlobalData.GetAt(pszCmd,id); return id.isValid(); } AECDLLIMPEXP bool SetDoubleClickEnt(LPCTSTR pszCmd, AcDbObjectId &id) { g_mapGlobalData.SetAt(pszCmd, id); return true; }