/******************************************************************** created: 2007/10/12 created: 12:10:2007 15:09 filename: f:\tg_dev\水电开发\twt_outdoor\arxmain.cpp file path: f:\tg_dev\水电开发\twt_outdoor file base: arxmain file ext: cpp author: 沈睿 2007-10-12 从twt_kernal工程剥离出来 *********************************************************************/ #include "stdafx.h" #include "twtdef.h" #include #include #include "DbPool.h" #include "rxregsvc.h" #include "DbVerticalSectionFeed.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 VolumeRoofCmd(); extern void VolumeRoofCmd2(); // 以下是命令函数 //室外绘图 extern void OutLib(); //室外图库 extern void PoolLib(); //水池管理 extern void InsGully(); //雨 水 口 extern void InsOutDoorPoolCmd(); //布 置 池 extern void InsWaterMeter(); //水 表 井 extern void InsOutHydrant(); //室外消火栓 extern void Gully2Well(); //雨水连井 extern void ExtendOutdoorPipe(); //出户连井 extern void DrawRoad(); //绘制道路 extern void DrawTreeCmd(); //平 面 树 extern void InsWellCmd(); //布 置 井 extern void InsOutdoorFeedNode(); //给水节点 extern void InsStakeAlongLine(); //沿线布桩 extern void InsStakeRandom(); //任意布桩 extern void DrawPipeCanal(); //绘制方沟 extern void InsWaterBucket(); //布雨水斗 extern void LinkWaterBucket(); //连雨水斗 extern void SiphonRainWaterCalc(); //虹吸计算 extern void BeforehandCalc(); //预计算 //室外标注 extern void WellDim(); //井 标 注 extern void DefineWellEle(); //地面标高 extern void PlusWellSerial(); //井号增一 extern void MinusWellSerial(); //井号减一 extern void BraWellSerialCmd(); //支井编号 extern void WellSerialCmd(); //井 编 号 extern void DimPipeElevation(); //管底标注 extern void DimWellCoord(); //井坐标 extern void WellCoordSheet(); //井坐标表 extern void CollectElevWell(); //采集高程 extern void MoveWellDimCmd(); //编号移动 extern void EvadeUpdating(); //躲避更新 extern void DimPipeInWell(); //室外计算 extern void CalcEarthwork(); //土方计算 extern void RainCalcParm(); //雨水参数 extern void DirtParameter(); //服务面积 extern void RainWellAreaCmd(); //汇流面积 extern void SetDirtWellQ(); //污井流量 extern void ModifyPipeEle(); //改管高程 extern void ElevationCheck(); //标高检查 extern void RainCalc(); //雨水水力 extern void DirtWellCalc(); //小区污水 extern void CivilDirtWellCalc(); //市政污水 extern void RoofRainCalc(); //屋面雨水 extern void ElevationCalc(); //标高计算 //纵断面图 extern void SplitVerticalSection(); //一分为二 extern void ModifyVSData(); //修改管井 extern void SetVerticalSectionHead(); //设置表头 extern void ModifyVerticalSectionHead(); //修改表头 extern void ModifyVericalSectionEle(); //纵断标高 extern void VerticalSection(); //纵断面图 //横断面图 extern void HorizontalSection(); //其它命令 extern void SetMeasureCoord(); //测量坐标系 extern void SetWcsCoord(); //世界坐标系 extern void FindWell(); //搜 索 井 extern void CheckPipeInter(); //交叉检查 extern void EraseDim(); //删除标注 extern void CesspoolCalc(); //化粪池计算 extern void IntersectPointNumber(); //交点编号 extern void PerpeDistanceTable(); //垂距表 extern void DivisionLine(); //雨水划分线 extern void CreateRunoffArea(); //汇水面积 extern void OverfallWeirCalc(); //溢流堰 extern void RoofInfoCalc(); //屋面信息计算 extern int ShowRecurCyle(); //显示重现周期 extern int ShowRunoffQuotiey(); //显示径流系数 extern void EditOutdoorPipe(); //查修管线 extern void ModifyWell(); //修改井 extern void RepiarWell(); //修复井 // 以下是编辑函数 int EditWell(AcDbObjectId id); int EditWellDim(AcDbObjectId id); int EditNewPool(AcDbObjectId id); int EditVerticalSection(AcDbObjectId id); int EditVerticalSectionFeed(AcDbObjectId id); int EditConflunceArea(AcDbObjectId id); static AecObjectEditMethod g_pOldEditWell=NULL; static AecObjectEditMethod g_pOldEditPool=NULL; static AecObjectEditMethod g_pOldEditWellDim=NULL; static AecObjectEditMethod g_pOldEditVerticalSection=NULL; static AecObjectEditMethod g_pOldEditVerticalSectionFeed=NULL; static AecObjectEditMethod g_pOldEditConflunceArea = NULL; extern int CreateNewCity(); //创建暴雨强度公式 extern int GetRainAreaState(); //面积读取 extern int SetRainAreaState(); //面积设置 extern void CloneExternRefEnts(); static ArxCommandTable g_acedCmdTable[] = { {_T("yslj"), Gully2Well, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 雨水连井 2004.5.31 //{_T("clzb"), SetMeasureCoord, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 测量坐标系 2007.10.11 //{_T("sjzb"), SetWcsCoord, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 世界坐标系 2007.10.11 {_T("gdbz"), DimPipeElevation, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 管底标注 2006.5.17 {_T("jbz"), WellDim, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井标注 2004.3.12 {_T("chlj"), ExtendOutdoorPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 出户连井 2005.10.21 {_T("ssj"), FindWell, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 搜 索 井 2005.10.10 {_T("swtk"), OutLib, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 室外图库 2004.2.27 {_T("scgl"), PoolLib, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 水池管理 2004.2.27 {_T("dmbg"), DefineWellEle, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 地面标高 2004.8.8 {_T("jhjy"), MinusWellSerial, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井号减一 2007.2.5 {_T("jhzy"), PlusWellSerial, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井号增一 2007.2.5 {_T("zhjbh"), BraWellSerialCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 支井编号 2006.11.16 {_T("jbh"), WellSerialCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井编号 2004.8.19 {_T("gxpz"), CheckPipeInter, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 交叉检查 2004.7.30 //{_T("roof"), VolumeRoofCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 坡屋顶求体积 2006.2.14 //{_T("roof2"), VolumeRoofCmd2, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 坡屋顶求体积 2006.2.14 //{_T("hzdl"), DrawRoad, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 绘制道路 2004.3.8 {_T("tfjs"), CalcEarthwork, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 土方计算 2006.10.31 {_T("wjll"), SetDirtWellQ, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 污井流量 2005.4.1 {_T("yscs"), RainCalcParm, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 雨水参数 2005.11.29 {_T("fwmj"), DirtParameter, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 服务面积 2005.7.12 {_T("hlmj"), RainWellAreaCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 汇流面积 2005.2.22 {_T("zdbt"), SetVerticalSectionHead, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET },// 设置表头 2005.11.23 {_T("xgbt"), ModifyVerticalSectionHead, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET },// 修改表头 2007.1.19 {_T("yfwe"), SplitVerticalSection, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, //一分为二 2005.10.18 {_T("dyxg"), ModifyVSData, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 修改管井 2005.12.14 {_T("bzc"), InsOutDoorPoolCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 布 置 池 2004.3.4 {_T("swxf"), InsOutHydrant, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 室外消火栓 2004.3.3 //{_T("sbj"), InsWaterMeter, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 水表井 2004.3.2 {_T("ysk"), InsGully, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 雨水口 2004.3.1 {_T("jzb"), DimWellCoord, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井坐标 2007.10.12 {_T("jzbb"), WellCoordSheet, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 井坐标表 2007.10.15 {_T("pms"), DrawTreeCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 平面树 2004.3.16 {_T("bzj"), InsWellCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 布 置 井 2004.3.3 //{_T("gggc"), ModifyPipeEle, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 改管高程 2007.11.14 {_T("cjgc"), CollectElevWell, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 采集高程 2008.3.3 {_T("scbz"), EraseDim, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 删除标注 2008.05.09 {_T("yxbz"), InsStakeAlongLine, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 沿线布桩 2008.05.28 {_T("rybz"), InsStakeRandom, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 任意布桩 2008.06.03 {_T("hzfg"), DrawPipeCanal, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 绘制方沟 2009.03.12 //{_T("bhyd"), MoveWellDimCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 编号移动 2009.04.14 {_T("hfc"), CesspoolCalc, ACRX_CMD_MODAL}, // 化粪池计算 2003.9.3 移植到了TWT_OUTDOOR {_T("jdbh"), IntersectPointNumber, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 交点编号 2010.3.11 cet {_T("cjb"), PerpeDistanceTable, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 垂距表 2010.3.15 cet {_T("hdmt"), HorizontalSection, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 横断面图 2010.4.19 cet //{_T("hshf"), DivisionLine, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 雨水划分线 2010.9.13 cet //{_T("wmjs"), RoofInfoCalc, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 屋面信息计算 2010.9.16 cet //{_T("hsmj"), CreateRunoffArea, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 汇水面积 2010.9.16 cet //{_T("yly"), OverfallWeirCalc, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 溢流堰 2010.9.29 cet //{_T("bysd"), InsWaterBucket, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 布雨水斗 2010.10.11 cet //{_T("lysd"), LinkWaterBucket, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 连雨水斗 2010.10.18 cet //{_T("hxjs"), SiphonRainWaterCalc, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 虹吸计算 2010.10.20 cet //{_T("yjs"), BeforehandCalc, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 预计算 2010.11.12 cet {_T("bgjc"), ElevationCheck, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 标高检查 2011.9.13 cet {_T("dbgx"), EvadeUpdating, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET}, // 躲避更新 2011.9.27 cet {_T("cxgx"), EditOutdoorPipe, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 查修管线 2011.10.25 zxl {_T("xgj"), ModifyWell, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 修改井 2011.11.23 zxl {_T("bgjs"), ElevationCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标高计算 2010.12.08 cet {_T("zdbg"), ModifyVericalSectionEle, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET },//纵断标高 2005.10.17 {_T("zdmt"), VerticalSection, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 纵断面图 2004.3.11 {_T("yssl"), RainCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 雨水水力 2005.2.23 {_T("xqws"), DirtWellCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 小区污水 2005.4.1 {_T("szws"), CivilDirtWellCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 市政污水 2005.7.12 {_T("wmys"), RoofRainCalc, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 屋面雨水 2005.9.8 //{_T("xfj"), RepiarWell, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 修复井 2012.08.06 // {_T("1234"), DimPipeInWell, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 管底标注 2012.08.06 // {_T("tckb"), CloneExternRefEnts, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 图层拷贝 2013.4.27 }; void ReadSettingData() { CRegProperty regProp(GetRegLocation(), _T("TWTConfig")); regProp.SetTopRootKey(HKEY_CURRENT_USER); } void OnLoadApp() { ReadSettingData(); g_csDwbPath = g_sDwbPath; // g_csSysPath = g_sAppPath; // g_csSysPath = g_csSysPath.Left(g_csSysPath.GetLength() - 7) + _T("\\sys\\"); for(int i=0; iaddCommand(_T("SHWF_OUTDOOR"), g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].nCmdFlag, g_acedCmdTable[i].pFun); } g_pOldEditWell=TDbWell::SetEditMethod(EditWell); g_pOldEditPool = TDbPool::SetEditMethod(EditNewPool); g_pOldEditWellDim = TDbWellDim::SetEditMethod(EditWellDim); g_pOldEditVerticalSection=TDbVerticalSection::SetEditMethod(EditVerticalSection); g_pOldEditVerticalSectionFeed=TDbVerticalSectionFeed::SetEditMethod(EditVerticalSectionFeed); g_pOldEditConflunceArea = TDbConfluenceArea::SetEditMethod(EditConflunceArea); } void OnUnloadApp() { acedRegCmds->removeGroup(_T("SHWF_OUTDOOR")); TDbWell::SetEditMethod(g_pOldEditWell); TDbPool::SetEditMethod(g_pOldEditPool); TDbVerticalSection::SetEditMethod(g_pOldEditVerticalSection); TDbVerticalSectionFeed::SetEditMethod(g_pOldEditVerticalSectionFeed); TDbConfluenceArea::SetEditMethod(g_pOldEditConflunceArea); } // cet 2010.9.21 add static extern_fun cmdtab[] = { {_T("IShowRecurCyle"), ShowRecurCyle}, {_T("IShowRunoffQuotie"), ShowRunoffQuotiey}, {_T("GetRainAreaState"), GetRainAreaState}, {_T("SetRainAreaState"), SetRainAreaState}, {_T("ICreateNewCity"), CreateNewCity}, // cet 2010.9.21 add }; // cet 2010.9.21 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; } int OnDwgLoaded() { g_csDwbPath = g_sDwbPath; // g_csSysPath = g_sAppPath; // g_csSysPath = g_csSysPath.Left(g_csSysPath.GetLength() - 7) + _T("\\sys\\"); for(int i=0;iregisterAppMDIAware(pkt); OnLoadApp(); break; case AcRx::kLoadDwgMsg: OnDwgLoaded(); break; case AcRx::kInvkSubrMsg: OnDoFunc(); // cet 2010.9.21 add break; case AcRx::kSaveMsg: break; case AcRx::kUnloadDwgMsg: //Bug no message coming break; case AcRx::kUnloadAppMsg: OnUnloadApp(); break; } return AcRx::kRetOK; }