Files
envi-code/SourceCode/Code2026/tg_shs/shs_outdoor/ArxMain.cpp
T

372 lines
16 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
/********************************************************************
2026-09-28 15:28:50 +08:00
created: 2007/10/12
created: 12:10:2007 15:09
2026-10-04 00:04:20 +08:00
filename: f:\tg_dev\水电开发\twt_outdoor\arxmain.cpp
file path: f:\tg_dev\水电开发\twt_outdoor
2026-09-28 15:28:50 +08:00
file base: arxmain
file ext: cpp
2026-10-04 00:04:20 +08:00
author: 沈睿
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
2007-10-12 从twt_kernal工程剥离出来
2026-09-28 15:28:50 +08:00
*********************************************************************/
#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;
}
2026-10-04 00:04:20 +08:00
// 以下是命令函数
2026-09-28 15:28:50 +08:00
extern void VolumeRoofCmd();
extern void VolumeRoofCmd2();
2026-10-04 00:04:20 +08:00
// 以下是命令函数
//室外绘图
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(); //预计算
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//室外标注
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(); //躲避更新
2026-09-28 15:28:50 +08:00
extern void DimPipeInWell();
2026-10-04 00:04:20 +08:00
//室外计算
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(); //标高计算
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//纵断面图
extern void SplitVerticalSection(); //一分为二
extern void ModifyVSData(); //修改管井
extern void SetVerticalSectionHead(); //设置表头
extern void ModifyVerticalSectionHead(); //修改表头
extern void ModifyVericalSectionEle(); //纵断标高
extern void VerticalSection(); //纵断面图
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
//横断面图
2026-09-28 15:28:50 +08:00
extern void HorizontalSection();
2026-10-04 00:04:20 +08:00
//其它命令
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(); //修复井
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
// 以下是编辑函数
2026-09-28 15:28:50 +08:00
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;
2026-10-04 00:04:20 +08:00
extern int CreateNewCity(); //创建暴雨强度公式
extern int GetRainAreaState(); //面积读取
extern int SetRainAreaState(); //面积设置
2026-09-28 15:28:50 +08:00
extern void CloneExternRefEnts();
static ArxCommandTable g_acedCmdTable[] = {
2026-10-04 00:04:20 +08:00
{_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
2026-09-28 15:28:50 +08:00
};
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;
}