228 lines
5.5 KiB
C++
228 lines
5.5 KiB
C++
// tch_siteplan.cpp : Initialization functions
|
|
#include "StdAfx.h"
|
|
#include <afxdllx.h>
|
|
#include "rxregsvc.h"
|
|
#include "TDbRoadEntity.h"
|
|
#include "TRoadDragJig.h"
|
|
#include "TDbLayoutLegend.h"
|
|
#include "TDbParkingSpace.h"
|
|
#include "TDbParking.h"
|
|
#include "LandScapeDataCenterNew.h"
|
|
#include "GlwGlobalVariable.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
HINSTANCE _hdllInstance = NULL;
|
|
AC_IMPLEMENT_EXTENSION_MODULE(ArxCmdDLL);
|
|
|
|
extern "C" int APIENTRY
|
|
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
|
{
|
|
if (dwReason == DLL_PROCESS_ATTACH)
|
|
{
|
|
_hdllInstance = hInstance;
|
|
ArxCmdDLL.AttachInstance(hInstance);
|
|
}
|
|
else if (dwReason == DLL_PROCESS_DETACH)
|
|
{
|
|
ArxCmdDLL.DetachInstance();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
//
|
|
// Entry point
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
void OnLoadApp();
|
|
void OnUnloadApp();
|
|
int OnDwgLoaded();
|
|
int OnDoFunc();
|
|
|
|
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
|
|
{
|
|
switch (msg)
|
|
{
|
|
case AcRx::kInitAppMsg:
|
|
acrxUnlockApplication(pkt);
|
|
#if (ADS>14)
|
|
acrxDynamicLinker->registerAppMDIAware(pkt);
|
|
#endif
|
|
OnLoadApp();
|
|
|
|
acrxBuildClassHierarchy();
|
|
break;
|
|
case AcRx::kLoadDwgMsg:
|
|
OnDwgLoaded();
|
|
break;
|
|
case AcRx::kInvkSubrMsg:
|
|
OnDoFunc();
|
|
break;
|
|
case AcRx::kSaveMsg:
|
|
break;
|
|
case AcRx::kUnloadDwgMsg:
|
|
break;
|
|
case AcRx::kUnloadAppMsg:
|
|
OnUnloadApp();
|
|
break;
|
|
}
|
|
return AcRx::kRetOK;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
//
|
|
// 以下是命令函数
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
// ADS命令表
|
|
void Test12();
|
|
static ArxCommandTable g_cmdTable[]=
|
|
{
|
|
{_T("Test12"), Test12, ACRX_CMD_MODAL|ACRX_CMD_DEFUN|ACRX_CMD_USEPICKSET}, // 示例命令,可删除
|
|
};
|
|
|
|
|
|
|
|
// 成片布树
|
|
void MultPlaceTree();
|
|
// 任意布树
|
|
void SinglePlaceTree();
|
|
// 道路绘制
|
|
void DrawRoadCmd();
|
|
// 道路圆角
|
|
void FilletRoadCmd();
|
|
// sg add 111205,增加了总平图例、车位布置命令
|
|
void LayoutLegendCmd();
|
|
void ParkingSpaceCmd();
|
|
//
|
|
void LandScapeDraw();
|
|
//地下坡道
|
|
void UndergroundRamp();
|
|
//车位统计
|
|
void ParkingStatisticCmd();
|
|
//车位修改
|
|
void ParkingAlterCmd();
|
|
//坐标网格
|
|
void SymbCoordGrid();
|
|
|
|
// ACED 命令表
|
|
static ArxCommandTable g_acedCmdTable[] = {
|
|
{_T("PL_CPBS"), MultPlaceTree, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TSingleTree"), SinglePlaceTree, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TRoad"), DrawRoadCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TFilRoad"), FilletRoadCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
//
|
|
{ _T("TLandScape"), LandScapeDraw, ACRX_CMD_MODAL | ACRX_CMD_USEPICKSET },
|
|
|
|
// sg add 111205,增加了总平图例、车位布置命令
|
|
{_T("TLayoutLegend"), LayoutLegendCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TParkingSpace"), ParkingSpaceCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TUndergroundRamp"), UndergroundRamp, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{_T("TParkingStatistic"), ParkingStatisticCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
//{_T("TParkingAlter"), ParkingAlterCmd, ACRX_CMD_MODAL|ACRX_CMD_USEPICKSET},
|
|
{ _T("TCoordGrid"),SymbCoordGrid, ACRX_CMD_MODAL },
|
|
};
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
//
|
|
// 以下是入口函数
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
// 在应用程序加载上需要做的动作
|
|
void OnLoadApp()
|
|
{
|
|
TchAddCommand(_T("wfS"), g_acedCmdTable, ELEMENTS(g_acedCmdTable), FALSE);
|
|
|
|
int nCustomFlag = GetCustomFlag();
|
|
if (!(nCustomFlag&CUSTOM_NO_DMLOAD))
|
|
{
|
|
InitDLRegistry(_hdllInstance, _T("wfS"));
|
|
UpdateDLRegistry(_T("wfS"), g_cmdTable, ELEMENTS(g_cmdTable));
|
|
UpdateDLRegistry(_T("wfS"), g_acedCmdTable, ELEMENTS(g_acedCmdTable));
|
|
}
|
|
|
|
TDbRoadEntity::rxInit();
|
|
TDbLineRoadEntity::rxInit();
|
|
TDbLineLandScapeEntity::rxInit();
|
|
TDbArcRoadEntity::rxInit();
|
|
TDbArcLandScapeEntity::rxInit();
|
|
RoadDrag::CMixRoadForJig::rxInit();
|
|
TDbLayoutLegend::rxInit();
|
|
TDbParkingSpace::rxInit();
|
|
ATSParking::rxInit();
|
|
|
|
acrxBuildClassHierarchy();
|
|
}
|
|
|
|
// 在应用程序卸载时需要做的动作
|
|
void OnUnloadApp()
|
|
{
|
|
acedRegCmds->removeGroup(_T("wfS"));
|
|
deleteAcRxClass(ATSParking::desc());
|
|
deleteAcRxClass(TDbParkingSpace::desc());
|
|
deleteAcRxClass(TDbLayoutLegend::desc());
|
|
deleteAcRxClass(RoadDrag::CMixRoadForJig::desc());
|
|
deleteAcRxClass(TDbArcLandScapeEntity::desc());
|
|
deleteAcRxClass(TDbArcRoadEntity::desc());
|
|
deleteAcRxClass(TDbLineLandScapeEntity::desc());
|
|
deleteAcRxClass(TDbLineRoadEntity::desc());
|
|
deleteAcRxClass(TDbRoadEntity::desc());
|
|
if (pGlobalVariable)
|
|
delete pGlobalVariable;
|
|
}
|
|
|
|
int OnDwgLoaded()
|
|
{
|
|
// ACAD的Demand loading机制在键入命令加载时, 发送了两次本消息
|
|
if (g_nProtectCode > 0)
|
|
{
|
|
int i;
|
|
for (i=0; i<ELEMENTS(g_cmdTable); i++)
|
|
{
|
|
XString sCmdName(256);
|
|
sCmdName << _T("C:") << GetFullCmdName(g_cmdTable[i].szCmdGlobal);
|
|
ads_defun(sCmdName, i);
|
|
}
|
|
}
|
|
|
|
return RTNORM;
|
|
}
|
|
|
|
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(g_cmdTable))
|
|
{
|
|
XPushUndo vTemp;
|
|
(*g_cmdTable[cindex].pFun)();
|
|
}
|
|
ads_retvoid();
|
|
return RTNORM;
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////
|
|
//
|
|
// 以下是测试命令
|
|
//
|
|
//////////////////////////////////////////////////////////////
|
|
void Test12()
|
|
{
|
|
} |