#include "stdafx.h" #include "rxregsvc.h" HINSTANCE _hdllInstance = NULL ; AC_IMPLEMENT_EXTENSION_MODULE(arxmfcDLL); extern void InitAol(const TCHAR *szAppName); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; arxmfcDLL.AttachInstance(hInstance); InitAol(TCHXD); InitGeLib(); } else if (dwReason == DLL_PROCESS_DETACH) { arxmfcDLL.DetachInstance(); } return TRUE; } //计算 extern void MostUseWaterCalc(); extern void DrainSysCalc(); extern void ReserviorCalc(); //贮水池计算 extern void PressurePotCalc(); //气压水罐计算 extern void DecompressBoardCalc(); //减压孔板 extern void HydrantCalc(); //消火栓计算 extern void ExtinguisherCalc(); //灭火器计算 extern void SetPipeMatSpec(); //管材规格 extern void OutDrainCalc(); //室外水力 extern void MostUseHeatWaterCalc();//热水计算 extern void GasFireCalc(); //气体灭火 extern void RoomCalc(); //住宅估算 //给水计算 extern void FeedCalcMan(); //给水计算 extern void ResidenceFeedCalc(); //住宅给水计算 (读图) extern void FeedResidenceSysCalc();//住宅给水计算 (作废) extern void CalcFeedPipeDn(); //公建给水计算 extern void IndustryFeedCalc(); //工业给水计算 //extern void FeedWaterSysCalc(); //(作废) //导出 extern int IPrincipleFeed(); static ArxCommandTable g_acedCmdTable[] = { // {_T("gsjs2"),FeedWaterSysCalc, ACRX_CMD_MODAL}, // 给水计算 2003.8.18 //{_T("ysl"), MostUseWaterCalc, ACRX_CMD_MODAL}, // 最高日最大时用水量 2003.8.26 //{_T("psjs"), DrainSysCalc, ACRX_CMD_MODAL}, // 排水计算 2003.8.28 // {_T("hfc"), CesspoolCalc, ACRX_CMD_MODAL}, // 化粪池计算 2003.9.3 移植到了TWT_OUTDOOR //{_T("zsc"), ReserviorCalc, ACRX_CMD_MODAL}, // 贮水池计算 2003.9.4 //{_T("qysg"), PressurePotCalc, ACRX_CMD_MODAL}, // 气压水罐计算 2003.9.5 //{_T("jykb"), DecompressBoardCalc, ACRX_CMD_MODAL}, // 减压孔板 2003.9.8 //{_T("xhsjs"),HydrantCalc, ACRX_CMD_MODAL}, // 消火栓计算 2003.9.9 //{_T("mhq"), ExtinguisherCalc, ACRX_CMD_MODAL}, // 灭火器计算 2003.9.12 //{_T("gsjs"), FeedResidenceSysCalc, ACRX_CMD_MODAL}, // 住宅给水 2004.2.5 {_T("gcgg"), SetPipeMatSpec, ACRX_CMD_MODAL}, // 管材规格 2004.2.9 {_T("swsl"), OutDrainCalc, ACRX_CMD_MODAL}, // 室外水力 2004.6.23 //{_T("rysl"), MostUseHeatWaterCalc, ACRX_CMD_MODAL}, // 热用水量 2005.5.12 //{_T("FeedCalcMan"), FeedCalcMan, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 给水计算 2006.2.17 //{_T("gsgj"), CalcFeedPipeDn, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 给水管径 2004.2.5 2008-5-16转移 //{_T("zzgs"), ResidenceFeedCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 住宅给水 2004.9.7 2009-4-09转移 //{_T("gygj"), IndustryFeedCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 工业给水计算 2009.9.27 //{_T("qmjs"), GasFireCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 气灭简算 2013.05.21 //{_T("zzjs"), RoomCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 住宅简算 2013.06.03 }; void OnLoadApp() { for (int i = 0; i < ELEMENTS(g_acedCmdTable); i++) { acedRegCmds->addCommand(_T("SHWF_CALC"), g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].nCmdFlag, g_acedCmdTable[i].pFun); } } void OnUnloadApp() { acedRegCmds->removeGroup(_T("SHWF_CALC")); } //zxl 2013.11.22 add static extern_fun cmdtab[] = { {_T("IPrincipleFeed"), IPrincipleFeed}, }; // zxl 2013.11.22 add int OnDoFunc() { int cindex; cindex = ads_getfuncode(); int nRet=RTNORM; if (cindex >= 0 && cindex < ELEMENTS(cmdtab)) { if(cmdtab[cindex].cmdname[1]==_T(':')) { (*cmdtab[cindex].cmdfunc)(); ads_retvoid(); } else { (*cmdtab[cindex].cmdfunc)(); } nRet = RTNORM; } else nRet=RTERROR; return nRet; } // zxl 2013.11.22 add int OnDwgLoaded() { if(g_nProductId != 14) return RTNORM; int iMode; xg_getvar(_T("PDMODE"), &iMode); if(iMode != 0) xg_setvar(_T("PDMODE"), 0); for(int i=0;i14) acrxDynamicLinker->registerAppMDIAware(pkt); #endif // InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL); OnLoadApp(); break; case AcRx::kLoadDwgMsg: OnDwgLoaded();// zxl 2013.11.22 add break; case AcRx::kInvkSubrMsg: OnDoFunc();// zxl 2013.11.22 add break; case AcRx::kSaveMsg: break; case AcRx::kUnloadDwgMsg: //Bug no message coming break; case AcRx::kUnloadAppMsg: OnUnloadApp(); // InitModule(_hdllInstance, DLL_PROCESS_DETACH, NULL); break; } return AcRx::kRetOK; }