#include "stdafx.h" #include #include #include #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; iaddCommand(_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; }