183 lines
5.9 KiB
C++
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|