#include "StdAfx.h" #include "StdArx.h" HINSTANCE _hdllInstance = NULL ; #ifndef _ttof #define _ttof(pszVal) _tcstod((pszVal), NULL) #endif void AddCommand(const TCHAR* cmdGroup, const TCHAR* cmdInt, const TCHAR* cmdLoc, const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal = -1); #define ADD_CMD(cmd, func) \ void func();\ AddCommand(_T("ISODRAFT"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) void InitApplication(); void UnloadApplication(); AC_IMPLEMENT_EXTENSION_MODULE(ISODraftDLL); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; ISODraftDLL.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { ISODraftDLL.DetachInstance(); } return TRUE; } extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); acrxDynamicLinker->registerAppMDIAware(pkt); InitApplication(); break; case AcRx::kUnloadAppMsg: UnloadApplication(); break; } return AcRx::kRetOK; } void InitApplication() { //轴测绘制 ADD_CMD(IS_ZCHZ, PL_ZCHZCmd); //轴测绘制 ADD_CMD(ISODRAW, PL_ZCHZCmd); //添加焊点 ADD_CMD(IS_TJHD, PL_TJHDCmd); //插入阀门 ADD_CMD(IS_CRFM, PL_CRFMCmd); //系统阀门 ADD_CMD(IS_XTFM, PL_XTFMCmd); //标注阀门 ADD_CMD(IS_BZFM, PL_BZFMCmd); //标注标高 ADD_CMD(IS_BZBG, PL_BZBGCmd); //标注尺寸 ADD_CMD(IS_BZZC, PL_BZZCCmd); ADD_CMD(IS_ZCBZ, PL_ZCBZCmd); //标注管径 ADD_CMD(IS_BZGJ, PL_BZGJCmd); //垫片间隙 ADD_CMD(IS_DPJX, PL_DPJXCmd); //插单法兰 ADD_CMD(IS_CDFL, PL_CDFLCmd); //插双法兰 ADD_CMD(IS_CSFL, PL_CSFLCmd); //插入变径 ADD_CMD(IS_CRBJ, PL_CRBJCmd); //布支吊架 ADD_CMD(IS_BZDJ, PL_BZDJCmd); //标注管件 ADD_CMD(IS_GZGJ, PL_GZGJCmd); //序号标注 ADD_CMD(IS_XHBZ, PL_XHBZCmd); //流向箭头 ADD_CMD(IS_LXJT, PL_LXJTCmd); //智能联动 //反应器 //测试 ADD_CMD(GTST, PL_GTSTCmd); } void UnloadApplication() { acedRegCmds->removeGroup(_T("ISODRAFT")); } void AddCommand(const TCHAR* cmdGroup, const TCHAR* cmdInt, const TCHAR* cmdLoc, const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal) { TCHAR cmdLocRes[65]; if (idLocal != -1) { ::LoadString(_hdllInstance, idLocal, cmdLocRes, 64); acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLocRes, cmdFlags, cmdProc); } else { acedRegCmds->addCommand(cmdGroup, cmdInt, cmdLoc, cmdFlags, cmdProc); } }