166 lines
5.1 KiB
C++
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;
|
|
}
|
|
|