#include "StdAfx.h" #include "StdArx.h" #include "resource.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("SHSPECPIPE"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) void InitApplication(); void UnloadApplication(); AC_IMPLEMENT_EXTENSION_MODULE(EarthWormDLL); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; EarthWormDLL.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { EarthWormDLL.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() { #ifdef ZWCAD acrxLoadModule(ACRX_T("PipeHangerCmd.zrx"), 1); #else acrxLoadModule(ACRX_T("PipeHangerCmd.arx"), 1); #endif //等级管线 ADD_CMD(PL_DJGX,PL_DJGXCmd); //曲率管线 //ADD_CMD(PL_QUGX, PL_QUGXCmd); //加补强圈 //半管接头 //支管补强=== ADD_CMD(PL_ZGBQ,PL_JBQQCmd); //八字盲板 ADD_CMD(PL_BZMB,PL_BZMBCmd); //放置插板 ADD_CMD(PL_FZCB, PL_FZCBCmd); //变径弯头 ADD_CMD(PL_BJWT, PL_BJWTCmd); //管线双击 工业? 临时注释掉 后期分辨 ADD_CMD(DBL_AEC_EWPIPE_SPEC, DBL_AEC_EWPIPE_SPEC); //TEST ADD_CMD(PP_TEST, PP_TESTCmd); } void UnloadApplication() { acedRegCmds->removeGroup(_T("SHSPECPIPE")); #ifdef ZWCAD acrxDynamicLinker->unloadModule(_T("PipeHangerCmd.zrx")); #else acrxDynamicLinker->unloadModule(_T("PipeHangerCmd.arx")); #endif } 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); } }