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

183 lines
5.9 KiB
C++

#include "stdafx.h"
#include <DbPump.h>
#include <DbFloorPipe.h>
#include <DbWaterTank.h>
#include "DbDoubleLinePipeReducer.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);
// Insert this DLL into the resource chain
// new CDynLinkLibrary(arxmfcDLL);
//Init for AOL
InitAol(TCHXD);
InitGeLib();
//InitAcUiDLL();
}
else if (dwReason == DLL_PROCESS_DETACH)
{
arxmfcDLL.DetachInstance();
}
return TRUE;
}
// 以下是命令函数
//地热盘管
extern void DrawFloorPipe(); //地热盘管
extern void DoubleFloorLine(); //双线盘管
extern void SelectFloorPipe(); //双线盘管
//泵房
extern void CreateHole(); //开孔
extern void DrawPumpCmd(); //绘制水泵
extern void DrawPumpBaseCmd(); //水泵基础
extern void SelectPumpCmd(); //水泵选型
extern void PumpSection(); //剖面生成
extern void DrawWaterTank(); //绘制水箱
extern void WaterTankCalc(); //水箱计算
extern void OverfallPipe(); //溢流管
extern void WaterInPipe(); //进水管
extern void DrawPumpPipeCmd(); //进出水管
extern void SearchPipeSys(); //搜索
extern void InsertFeedNode(); //插给水点
extern void DimFeedNodeQ(); //标注流量
extern void InsDoubleLineReducer(); //大小接头
extern void Test();
//室外
extern void SetPipeLength(); //强改管长
extern void CalcOutFeed(); //给水管网
//阀门
extern void SetValveSpec(); //阀门规格
// 以下是编辑函数
int EditFloorPipe(AcDbObjectId id);
int EditPump(AcDbObjectId id);
int EditWaterTank(AcDbObjectId id);
int EditDoubleLineReducer(AcDbObjectId id);
static AecObjectEditMethod g_pOldEditFloorPipe=NULL;
static AecObjectEditMethod g_pOldEditPump=NULL;
static AecObjectEditMethod g_pOldEditWaterTank=NULL;
static AecObjectEditMethod g_pOldEditDoubleLineReducer=NULL;
static ArxCommandTable g_acedCmdTable[] = {
//{_T("kk"), CreateHole, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 开孔 2004.1.2
//{_T("hzsb"), DrawPumpCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 绘制水泵 2004.1.5
//{_T("sbjc"), DrawPumpBaseCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 水泵基础 2004.7.28
//{_T("sbxx"), SelectPumpCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 水泵选型 2004.7.29
//{_T("drpg"), DrawFloorPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 地热盘管 2005.3.30
//{_T("sxpg"), DoubleFloorLine, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 双线盘管 2005.3.30转移
//{_T("xzpg"), SelectFloorPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET | ACRX_CMD_REDRAW}, // 选择盘管 2005.3.30转移
//{_T("sbpm"), PumpSection, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 剖面生成 2005.9.13
//{_T("hzsx"), DrawWaterTank, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 绘制水箱 2003.12.11
//{_T("sxjs"), WaterTankCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 水箱计算 2003.8.28
//{_T("ylg"), OverfallPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 溢流管 2005.11.17
//{_T("jsg"), WaterInPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 进水管 2005.11.21
//{_T("jcsg"), DrawPumpPipeCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 进出水管 2005.11.25
//{_T("search"),SearchPipeSys, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 搜索 2006.10.24
//{_T("cgsd"), InsertFeedNode, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 插给水点 2006.10.24
//{_T("bzll"), DimFeedNodeQ, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标注流量 2006.10.25
//{_T("qggc"), SetPipeLength, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 强改管长 2006.10.25
//{_T("fmgg"), SetValveSpec, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 阀门规格 2007.5.29
{_T("dxjt"), InsDoubleLineReducer, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 大小接头 2008.12.12
};
void OnLoadApp()
{
for(int i=0; i<ELEMENTS(g_acedCmdTable); i++) {
acedRegCmds->addCommand(_T("SHWF_PUMP"), g_acedCmdTable[i].szCmdGlobal,
g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].nCmdFlag, g_acedCmdTable[i].pFun);
}
g_pOldEditFloorPipe=TDbFloorPipe::SetEditMethod(EditFloorPipe);
g_pOldEditPump=TDbPump::SetEditMethod(EditPump);
g_pOldEditWaterTank=TDbWaterTank::SetEditMethod(EditWaterTank);
g_pOldEditDoubleLineReducer = TDbDoubleLinePipeReducer::SetEditMethod(EditDoubleLineReducer);
}
void OnUnloadApp()
{
acedRegCmds->removeGroup(_T("SHWF_PUMP"));
TDbFloorPipe::SetEditMethod(g_pOldEditFloorPipe);
TDbPump::SetEditMethod(g_pOldEditPump);
TDbWaterTank::SetEditMethod(g_pOldEditWaterTank);
TDbDoubleLinePipeReducer::SetEditMethod(g_pOldEditDoubleLineReducer);
}
int OnDwgLoaded()
{
return RTNORM;
}
//////////////////////////////////////////////////////////////
//
// Entry point
//
//////////////////////////////////////////////////////////////
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxUnlockApplication(pkt);
acrxDynamicLinker->registerAppMDIAware(pkt);
// InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL);
OnLoadApp();
break;
case AcRx::kLoadDwgMsg:
OnDwgLoaded();
break;
case AcRx::kInvkSubrMsg:
break;
case AcRx::kSaveMsg:
break;
case AcRx::kUnloadDwgMsg: //Bug no message coming
break;
case AcRx::kInitDialogMsg:
break;
case AcRx::kUnloadAppMsg:
OnUnloadApp();
// InitModule(_hdllInstance, DLL_PROCESS_DETACH, NULL);
break;
}
return AcRx::kRetOK;
}