Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

373 lines
16 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/********************************************************************
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;
}