#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; iaddCommand(_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;iregisterAppMDIAware(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; }