373 lines
16 KiB
C++
373 lines
16 KiB
C++
/********************************************************************
|
||
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 <DbWell.h>
|
||
#include <DbWellDim.h>
|
||
#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; i<ELEMENTS(g_acedCmdTable); i++) {
|
||
acedRegCmds->addCommand(_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;i<ELEMENTS(cmdtab); i++) // cet 2010.9.21 add
|
||
{
|
||
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);
|
||
acrxDynamicLinker->registerAppMDIAware(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;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|