Files
envi-code/SourceCode/Code2026/ArchCmd/ArchCmd.cpp
T
2026-09-28 15:28:50 +08:00

211 lines
5.1 KiB
C++

#include "StdAfx.h"
#include "StdArx.h"
#include "resource.h"
#include "CoreTools.h"
#include "AecDbZLineXOpeningDraw.h"
#include "AecDbLineSegStairDraw.h"
#include "AecDbArcSegStairDraw.h"
#include "AecDbAscentDraw.h"
#include "AecDbBalconyDraw.h"
#include "AecDbParaLlelStairDraw.h"
#include "AecDbCornerStairDraw.h"
#include "AecDbDoubleMulStairDraw.h"
#include "AecDbScissorsStairDraw.h"
#include "AecDbCrossStairDraw.h"
#include "AecDbTriangleStairDraw.h"
#include "AecDbRectCornerStairDraw.h"
#include "AecDbXStepDraw.h"
#include "AecDbXApronDraw.h"
HINSTANCE _hdllInstance = NULL ;
#ifndef _ttof
#define _ttof(pszVal) _tcstod((pszVal), NULL)
#endif
void AddCommand(const TCHAR* cmdGroup, const TCHAR* cmdInt, const TCHAR* cmdLoc,
const int cmdFlags, const AcRxFunctionPtr cmdProc, const int idLocal = -1);
void InitApplication();
void UnloadApplication();
AC_IMPLEMENT_EXTENSION_MODULE(ArchDLL);
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_hdllInstance = hInstance;
ArchDLL.AttachInstance(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
ArchDLL.DetachInstance();
}
return TRUE;
}
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(pkt);
acrxDynamicLinker->registerAppMDIAware(pkt);
InitApplication();
break;
case AcRx::kUnloadAppMsg:
UnloadApplication();
break;
}
return AcRx::kRetOK;
}
#define ADD_CMD(cmd, func) CoreTools::AddCommand(_T("ArchCmd"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func)
void InitApplication()
{
AecDbCornerStairDraw::rxInit();
AecDbParaLlelStairDraw::rxInit();
AecDbZLineXOpeningDraw::rxInit();
AecDbLineSegStairDraw::rxInit();
AecDbArcSegStairDraw::rxInit();
AecDbAscentDraw::rxInit();
AecDbBalconyDraw::rxInit();
AecDbDoubleMulStairDraw::rxInit();
AecDbScissorsStairDraw::rxInit();
AecDbCrossStairDraw::rxInit();
AecDbTriangleStairDraw::rxInit();
AecDbRectCornerStairDraw::rxInit();
AecDbXStepDraw::rxInit();
AecDbXApronDraw::rxInit();
//带形窗户
ADD_CMD(PL_DXCH, PL_DXCHCmdFnc);
//绘制幕墙
ADD_CMD(PL_HZMQ, PL_HZMQCmdFnc);
//转角窗户
ADD_CMD(PL_ZJCH, PL_ZJCHCmdFnc);
//直线楼梯
ADD_CMD(PL_ZXLT, PL_ZXLTCmdFnc);
//放置坡道
ADD_CMD(PL_FZPD, PL_FZPDCmdFnc);
//放置阳台
ADD_CMD(PL_FZYT, PL_FZYTCmdFnc);
//放置台阶
ADD_CMD(PL_FZTJ, PL_FZTJCmdFnc);
//放置散水
ADD_CMD(PL_FZSS, PL_FZSSCmdFnc);
//测试
ADD_CMD(AR_TEST, AR_TESTCmdFnc);
//圆弧楼梯
ADD_CMD(AR_YHLT, AR_YHLTCmdFnc);
//双分平行楼梯
ADD_CMD(PL_SFPX, PL_SFPXCmdFnc);
//双分转角楼梯
ADD_CMD(PL_SFZJ, PL_SFZJCmdFnc);
//双分三跑楼梯
ADD_CMD(PL_SFSP, PL_SPSPCmdFnc);
//交叉楼梯
ADD_CMD(PL_JCLT, PL_JCLTCmdFnc);
//选择线型
ADD_CMD(PL_shlt, PL_shltCmdFnc);
//2022-12-28
//剪刀楼梯
ADD_CMD(PL_JDLT, PL_JDLTCmdFnc);
//三角楼梯
ADD_CMD(PL_SJLT, PL_SJLTCmdFnc);
//矩形转角
ADD_CMD(PL_JXZJ, PL_JXZJCmdFnc);
//插入角柱
ADD_CMD(PL_CRJZ, PL_CRJZCmdFnc);
//构造柱子
ADD_CMD(PL_GZZZ, PL_GZZZCmdFnc);
//构造砼墙
ADD_CMD(PL_GZTQ, PL_GZTQCmdFnc);
//柱子底座
ADD_CMD(PL_ZZDZ, PL_ZZDZCmdFnc);
//布置洁具
ADD_CMD(PL_BZJJ, PL_BZJJCmdFnc);
//布置隔板
ADD_CMD(PL_BZGB, PL_BZGBCmdFnc);
//布置隔间
ADD_CMD(PL_BZGJ, PL_BZGJCmdFnc);
//基线对齐
ADD_CMD(PL_JXDQ, PL_JXDQCmdFnc);
//边线对齐
ADD_CMD(PL_BXDQ, PL_BXDQCmdFnc);
ADD_CMD(DBL_AEC_DBXAPRON, DBL_AEC_DBXAPRON);
ADD_CMD(DBL_AEC_DBXSTEP, DBL_AEC_DBXSTEP);
ADD_CMD(DBL_AEC_DBLNSTAIR, DBL_AEC_DBLNSTAIR);
ADD_CMD(DBL_AEC_SCISSORSSTAIR, DBL_AEC_SCISSORSSTAIR);
ADD_CMD(DBL_AEC_DOUBLEMULSTAIR, DBL_AEC_DOUBLEMULSTAIR);
ADD_CMD(DBL_AEC_RECTCORNERSTAIR, DBL_AEC_RECTCORNERSTAIR);
ADD_CMD(DBL_AEC_DBASSTAIR, DBL_AEC_DBASSTAIR);
ADD_CMD(DBL_AEC_PARALLELSTAIR, DBL_AEC_PARALLELSTAIR);
ADD_CMD(DBL_AEC_DBCNRSTAIR, DBL_AEC_DBCNRSTAIR);
ADD_CMD(DBL_AEC_CROSSSTAIR, DBL_AEC_CROSSSTAIR);
ADD_CMD(DBL_AEC_TRIANGLESTAIR, DBL_AEC_TRIANGLESTAIR);
ADD_CMD(DBL_AEC_DBBALCONY, DBL_AEC_DBBALCONY);
ADD_CMD(DBL_AEC_DBZXOPENING, DBL_AEC_DBZXOPENING);
ADD_CMD(DBL_AEC_DBCOLMN_CRJZ, DBL_AEC_DBCOLMN_CRJZ);
ADD_CMD(DBL_AEC_DBCOLMN_GZZZ, DBL_AEC_DBCOLMN_GZZZ);
ADD_CMD(DBL_AEC_DBASCENT, DBL_AEC_DBASCENT_CMD);
//ADD_CMD(DBL_AEC_DBBEAM_CRJZ, DBL_AEC_DBBEAM_CRJZ);
ADD_CMD(DBL_AEC_DBGCWALL, DBL_AEC_DBGCWALL);
#ifndef _DEBUG
//发送项目管理命令
acedPostCommand(_T("PL_XMLC "));
#endif
}
void UnloadApplication()
{
deleteAcRxClass(AecDbXApronDraw::desc());
deleteAcRxClass(AecDbXStepDraw::desc());
deleteAcRxClass(AecDbRectCornerStairDraw::desc());
deleteAcRxClass(AecDbTriangleStairDraw::desc());
deleteAcRxClass(AecDbScissorsStairDraw::desc());
deleteAcRxClass(AecDbCornerStairDraw::desc());
deleteAcRxClass(AecDbParaLlelStairDraw::desc());
deleteAcRxClass(AecDbLineSegStairDraw::desc());
deleteAcRxClass(AecDbZLineXOpeningDraw::desc());
deleteAcRxClass(AecDbArcSegStairDraw::desc());
deleteAcRxClass(AecDbAscentDraw::desc());
deleteAcRxClass(AecDbBalconyDraw::desc());
deleteAcRxClass(AecDbDoubleMulStairDraw::desc());
deleteAcRxClass(AecDbCrossStairDraw::desc());
acedRegCmds->removeGroup(_T("ArchCmd"));
}