228 lines
7.9 KiB
C++
228 lines
7.9 KiB
C++
#include "stdafx.h"
|
|
#include "rxregsvc.h"
|
|
#include "TDbPipeMultDim.h"
|
|
#include "DbVPipeDim.h"
|
|
#include "DbMTextNew.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 LeaderDim(); // 引出标注
|
|
extern void DimSymbElevation(); // 单注标高
|
|
extern void SetPipeElevation(); // 单管标高
|
|
extern void DimSanitary(); // 标注洁具
|
|
extern void PipeSerialSort(); // 入户排序
|
|
extern void VPipeSerialSort(); // 立管排序
|
|
extern void DimPipeSerial(); // 入户管号
|
|
extern void DimPipeLength(); // 标注管长
|
|
extern void DimPipeGradient(); // 管道坡度
|
|
extern void MirrorDimCmd(); // 标注镜像
|
|
extern void MoveDnDimCmd(); // 管径移动
|
|
extern void ResetDimPosition(); // 标注复位
|
|
extern void DimSinglePipeDnRadius(); // 单管管径
|
|
extern void DimPipeDnRadius(); // 管径标注
|
|
extern void MultiPipeDimDn(); // 多管标注
|
|
extern void DimPipeDnFromSprink(); // 喷淋管径
|
|
extern void ModidyMultiDimDn(); // 多管标注修改
|
|
extern void EditElevation(); // 修改标高
|
|
extern void PlusPipeSerial(); // 编号增一
|
|
extern void MinusPipeSerial(); // 编号减一
|
|
extern void ShowPipeElevation(); // 显示标高
|
|
extern void ChangePipeDirection(); // 改变流向
|
|
extern void UpdateToolBar(); // 工具条升级
|
|
extern void DimContinue(); // 逐点标注
|
|
extern void TextMLine(); // 多行文字
|
|
extern void UpdateToolBarCmd(); // 工具条升级
|
|
|
|
extern void test();//test
|
|
// 菜单开关
|
|
extern int GetPipeEleState(); // 标高读取
|
|
extern int SetPipeEleState(); // 标高设置
|
|
|
|
// 编辑函数
|
|
int EditMutiPipeDim(AcDbObjectId id);
|
|
int EditVPipeDim(AcDbObjectId id);
|
|
int EditLeaderDim(AcDbObjectId id);
|
|
int EditMutiText(AcDbObjectId id);
|
|
//int EditFloorRect(AcDbObjectId id); // cet 2013.1.8 add
|
|
|
|
|
|
static AecObjectEditMethod g_pOldEditMutiPipeDim=NULL;
|
|
static AecObjectEditMethod g_pOldEditVPipeDim=NULL;
|
|
static AecObjectEditMethod g_pOldEditLeaderDim = NULL;
|
|
static AecObjectEditMethod g_pOldEditMutiText = NULL;
|
|
//static AecObjectEditMethod g_pOldEditFloorRect = NULL; // cet 2013.1.8 add
|
|
|
|
static ArxCommandTable g_acedCmdTable[] = {
|
|
//{_T("ycbz"), LeaderDim, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 引出标注
|
|
//{_T("dzbg"), DimSymbElevation, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 单注标高 2003.11.20
|
|
{_T("dgbg"), SetPipeElevation, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 单管标高 2003.11.17
|
|
//{_T("bzjj"), DimSanitary, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标注洁具 2003.11.11
|
|
//{_T("rhpx"), PipeSerialSort, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 入户排序 2006.11.29
|
|
//{_T("lgpx"), VPipeSerialSort, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 立管排序 2007.1.31
|
|
//{_T("rhgh"), DimPipeSerial, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 入户管号 2003.11.6
|
|
{_T("gcbz"), DimPipeLength, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标注管长 2007.9.13
|
|
{_T("gdpd"), DimPipeGradient, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 管道坡度 2004.3.10
|
|
{_T("bzjx"), MirrorDimCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标注镜像 2009.4.20
|
|
{_T("gjyd"), MoveDnDimCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 管径移动 2008.10.27
|
|
{_T("bzfw"), ResetDimPosition, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 标注复位 2004.6.22
|
|
{_T("dggj"), DimSinglePipeDnRadius, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 单管管径 2006.12.19
|
|
{_T("gjbz"), DimPipeDnRadius, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 管径标注 2003.11.19
|
|
{_T("dgbz"), MultiPipeDimDn, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 多管标注 2004.3.19
|
|
//{_T("plgj"), DimPipeDnFromSprink, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 喷淋管径 2003.11.20
|
|
//{_T("dbxg"), ModidyMultiDimDn, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 多管标注修改2004.8.30
|
|
//{_T("xgbg"), EditElevation, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 修改标高 2003.11.24
|
|
//{_T("bhzy"), PlusPipeSerial, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 编号增一 2004.10.14
|
|
//{_T("bhjy"), MinusPipeSerial, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 编号减一 2004.10.14
|
|
//{_T("xsbg"), ShowPipeElevation, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 显示标高 2003.12.5
|
|
//{_T("gblx"), ChangePipeDirection, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 改变流向 2005.3.17
|
|
//{_T("gjtsj"), UpdateToolBar, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 工具条升级 2012.07.10
|
|
//{_T("zdbz"), DimContinue, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 逐点标注 2012.09.04 从tch_anotate移植而来
|
|
//{_T("dhwz2"), TextMLine, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 多行文字
|
|
//{_T("gjtsj2"),UpdateToolBarCmd, ACRX_CMD_MODAL| ACRX_CMD_USEPICKSET }, // 新工具条升级2013.03.28
|
|
|
|
};
|
|
|
|
|
|
void OnLoadApp()
|
|
{
|
|
|
|
for(int i=0; i<ELEMENTS(g_acedCmdTable); i++) {
|
|
acedRegCmds->addCommand(_T("SHWF_ANOTATE"), g_acedCmdTable[i].szCmdGlobal,
|
|
g_acedCmdTable[i].szCmdGlobal, g_acedCmdTable[i].nCmdFlag, g_acedCmdTable[i].pFun);
|
|
}
|
|
|
|
g_pOldEditMutiPipeDim=TDbPipeMultDim::SetEditMethod(EditMutiPipeDim);
|
|
g_pOldEditVPipeDim = TDbVPipeDim::SetEditMethod(EditVPipeDim);
|
|
g_pOldEditLeaderDim = TDbSymbMultiLeader::SetEditMethod(EditLeaderDim);
|
|
// TDbMTextNew::SetEditMethod(NULL);
|
|
g_pOldEditMutiText = TDbMTextNew::SetEditMethod(EditMutiText);
|
|
// g_pOldEditFloorRect = TDbFloorRect::SetEditMethod(EditFloorRect); // cet 2013.1.8 add
|
|
|
|
AfxInitRichEdit();// zxl 2013.01.29 add 提供CRICHEDITCTRL支持
|
|
}
|
|
|
|
void OnUnloadApp()
|
|
{
|
|
acedRegCmds->removeGroup(_T("SHWF_ANOTATE"));
|
|
TDbPipeMultDim::SetEditMethod(g_pOldEditMutiPipeDim);
|
|
TDbVPipeDim::SetEditMethod(g_pOldEditVPipeDim);
|
|
TDbSymbMultiLeader::SetEditMethod(g_pOldEditLeaderDim);
|
|
TDbMTextNew::SetEditMethod(g_pOldEditMutiText);
|
|
// TDbFloorRect::SetEditMethod(g_pOldEditFloorRect); // cet 2013.1.8 add
|
|
}
|
|
|
|
static extern_fun cmdtab[] = {
|
|
{_T("GetPipeEleState"), GetPipeEleState},
|
|
{_T("SetPipeEleState"), SetPipeEleState},
|
|
};
|
|
|
|
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()
|
|
{
|
|
if(g_nProductId != 8)
|
|
return RTNORM;
|
|
for(int i=0;i<ELEMENTS(cmdtab); i++)
|
|
{
|
|
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);
|
|
// InitModule(_hdllInstance, DLL_PROCESS_ATTACH, NULL);
|
|
OnLoadApp();
|
|
break;
|
|
case AcRx::kLoadDwgMsg:
|
|
OnDwgLoaded();
|
|
break;
|
|
case AcRx::kInvkSubrMsg:
|
|
OnDoFunc();
|
|
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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|