#include "StdAfx.h" #include "resource.h" #include "CoreTools.h" #include "StdArx.h" HINSTANCE _hdllInstance =NULL ; #ifndef _ttof #define _ttof(pszVal) _tcstod((pszVal), NULL) #endif void InitApplication(); void UnloadApplication(); AC_IMPLEMENT_EXTENSION_MODULE(HavcCmd); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; HavcCmd.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { HavcCmd.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() { #define AddCommand CoreTools::AddCommand //测试命令 #define ADD_CMD(cmd, func) AddCommand(_T("SPLD"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) AddCommand(_T("SPLD"), _T("SP_TEST"), _T("SP_TEST"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_TESTCmdFnc); AddCommand(_T("SPLD"), _T("sp_roadadd"), _T("sp_roadadd"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_RoadAddmdFnc); //三维地形 AddCommand(_T("SPLD"), _T("SP_SWDX"), _T("SP_SWDX"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_SWDXCmdFnc); //地面平整 AddCommand(_T("SPLD"), _T("SP_DMPZ"), _T("SP_DMPZ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_DMPZCmdFnc); //道路测试 AddCommand(_T("SPLD"), _T("SP_DLCS"), _T("SP_DLCS"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_DLCSCmdFnc); //绘制道路 AddCommand(_T("SPLD"), _T("SP_HZDL"), _T("SP_HZDL"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_HZDLCmdFnc); //道路边线 AddCommand(_T("SPLD"), _T("SP_DLBX"), _T("SP_DLBX"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_DLBXCmdFnc); //弯头连接 AddCommand(_T("SPLD"), _T("SP_WTLJ"), _T("SP_WTLJ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_WTLJCmdFnc); //变径拐弯 AddCommand(_T("SPLD"), _T("SP_BJGW"), _T("SP_BJGW"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_BJGWCmdFnc); //三通连接 AddCommand(_T("SPLD"), _T("SP_STLJ"), _T("SP_STLJ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_STLJCmdFnc); //四通连接 AddCommand(_T("SPLD"), _T("SP_TJST"), _T("SP_TJST"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_TJSTCmdFnc); //多通路口 AddCommand(_T("SPLD"), _T("SP_DTLK"), _T("SP_DTLK"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_DTLJCmdFnc); //添加环岛 AddCommand(_T("SPLD"), _T("SP_TJHD"), _T("SP_TJHD"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_TJHDCmdFnc); //插雨水井 /*AddCommand(_T("SPLD"), _T("SP_CYSJ"), _T("SP_CYSJ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_CYSJCmdFnc); //管线连井 AddCommand(_T("SPLD"), _T("SP_GXLJ"), _T("SP_GXLJ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_GXLJCmdFnc); //布置树... AddCommand(_T("SPLD"), _T("SP_GXLJ"), _T("SP_GXLJ"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_GXLJCmdFnc); //碰撞检查 AddCommand(_T("SPLD"), _T("SP_PZJC"), _T("SP_PZJC"), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, SP_PZJCCmdFnc); */ ADD_CMD(DBL_AEC_3DROAD ,DBL_AEC_3DROAD ); ADD_CMD(SP_CRSJ, SP_CRSJ); } void UnloadApplication() { acedRegCmds->removeGroup(_T("SP_TEST")); }