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

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()
{
}