Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtCalc/ArxMain.cpp
T
2026-09-28 15:28:50 +08:00

166 lines
5.1 KiB
C++

#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;i<ELEMENTS(cmdtab); i++) {
ads_defun(cmdtab[i].cmdname,i);
}
return RTNORM;
}
//////////////////////////////////////////////////////////////
//
// Entry point
//
//////////////////////////////////////////////////////////////
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxUnlockApplication(pkt);
#if(ADS>14)
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;
}