164 lines
3.3 KiB
C++
164 lines
3.3 KiB
C++
#include "stdafx.h"
|
|
#include "actrans.h"
|
|
#include "blockmandlg.h"
|
|
#include <rxregsvc.h>
|
|
#include "Tuanmanage.h"
|
|
|
|
HINSTANCE _hdllInstance = NULL;
|
|
AC_IMPLEMENT_EXTENSION_MODULE(arxmfcDLL);
|
|
|
|
extern "C" int APIENTRY
|
|
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
|
{
|
|
if (dwReason == DLL_PROCESS_ATTACH)
|
|
{
|
|
_hdllInstance = hInstance;
|
|
arxmfcDLL.AttachInstance(hInstance);
|
|
}
|
|
else if (dwReason == DLL_PROCESS_DETACH)
|
|
{
|
|
arxmfcDLL.DetachInstance();
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
extern int Blkman();
|
|
extern int BlkArg();
|
|
extern int CallBlkMgr();
|
|
extern int BlkMgr();
|
|
extern int TSanitaryDlg();
|
|
extern int TKW();
|
|
extern int CallTKW();
|
|
extern int CallTKWnew();
|
|
extern int exportTK();
|
|
|
|
int ShowSlbMgr();
|
|
int ShowDwbMgr();
|
|
int DrawClapBoard();
|
|
int DrawApartBoard();
|
|
int CallBlkArg();
|
|
int CallBlkMan();
|
|
int CreateDbfFile();
|
|
int TKMgr();
|
|
int RepInsert();
|
|
int PurgeBlb();
|
|
int PatternMgr();
|
|
int TAW();
|
|
int GJKW();
|
|
int InsGJK();
|
|
int InvokeGJKW();
|
|
|
|
static extern_fun cmdtab[] = {
|
|
// {_T("C:BlkArg"),BlkArg1},
|
|
{_T("IBlkman"), CallBlkMgr},
|
|
{_T("ITKW"), CallTKW},
|
|
{_T("ITKWman"), CallTKWnew},
|
|
{_T("C:TBlkman"), BlkMgr},
|
|
{_T("C:TKW"), TKW},
|
|
{_T("C:exporttk"), exportTK},
|
|
{_T("C:TBlock"), BlkMgr},
|
|
{_T("C:TSan"), TSanitaryDlg},
|
|
{_T("C:TDwbMan"), ShowDwbMgr},
|
|
{_T("C:TSlb"), ShowSlbMgr},
|
|
{_T("C:TClap"), DrawClapBoard},
|
|
{_T("C:TApart"), DrawApartBoard},
|
|
{_T("C:ManageTK"), TKMgr},
|
|
{_T("C:TRepIns"), RepInsert},
|
|
{_T("C:TPurgeBlb"), PurgeBlb},//add by whl on 040902
|
|
{_T("C:TAW"), TAW},
|
|
{_T("C:GJKW"), GJKW},
|
|
{_T("C:INSERTGJK"), InsGJK},
|
|
{_T("ITUAN"), PatternMgr},
|
|
{_T("IGKW"), InvokeGJKW},
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
int OnDoFunc();
|
|
int OnDwgLoaded();
|
|
//////////////////////////////////////////////////////////////
|
|
//
|
|
// Entry point
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
|
|
{
|
|
switch (msg)
|
|
{
|
|
case AcRx::kInitAppMsg:
|
|
acrxUnlockApplication(pkt);
|
|
#if(ADS>14)
|
|
acrxDynamicLinker->registerAppMDIAware(pkt);
|
|
#endif
|
|
{
|
|
int nCustomFlag=GetCustomFlag();
|
|
if(!(nCustomFlag&CUSTOM_NO_DMLOAD))
|
|
{
|
|
InitDLRegistry(_hdllInstance, _T("wfB"));
|
|
UpdateDLRegistry(_T("wfB"), cmdtab, ELEMENTS(cmdtab));
|
|
}
|
|
}
|
|
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::kUnloadAppMsg:
|
|
break;
|
|
}
|
|
return AcRx::kRetOK;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
int OnDoFunc()
|
|
{
|
|
|
|
int cindex;
|
|
XPushVar<int> cmdecho(_T("CMDECHO"), 0);
|
|
XPushVar<int> blipmode(_T("BLIPMODE"), 0);
|
|
|
|
cindex = ads_getfuncode();
|
|
int nRet=RTNORM;
|
|
if (cindex >= 0 && cindex < ELEMENTS(cmdtab))
|
|
{
|
|
if(cmdtab[cindex].cmdname[1]==_T(':'))
|
|
{
|
|
|
|
{
|
|
XPushUndo vTemp;
|
|
(*cmdtab[cindex].cmdfunc)();
|
|
}
|
|
ads_retvoid();
|
|
}
|
|
else
|
|
{
|
|
(*cmdtab[cindex].cmdfunc)();
|
|
}
|
|
nRet = RTNORM;
|
|
}
|
|
else nRet=RTERROR;
|
|
|
|
return nRet;
|
|
}
|
|
|
|
int OnDwgLoaded()
|
|
{
|
|
int i;
|
|
for(i=0;i<ELEMENTS(cmdtab); i++)
|
|
{
|
|
XString sCmd;
|
|
if(cmdtab[i].cmdname[1]==_T(':'))
|
|
sCmd << _T("C:") << GetFullCmdName(&(cmdtab[i].cmdname[2]));
|
|
else
|
|
sCmd << cmdtab[i].cmdname;
|
|
ads_defun(sCmd,i);
|
|
}
|
|
return RTNORM;
|
|
}
|