// tch_siteplan.cpp : Initialization functions #include "StdAfx.h" #include #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 cmdecho(_T("CMDECHO"), 0); XPushVar 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() { }