Files
envi-code/SourceCode/Code2026/ArchCmd/ArchCmd.cpp
T

210 lines
5.2 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#include "StdAfx.h"
2026-09-28 15:28:50 +08:00
#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();
2026-10-04 00:04:20 +08:00
//带形窗户
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_DXCH, PL_DXCHCmdFnc);
2026-10-04 00:04:20 +08:00
//绘制幕墙
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_HZMQ, PL_HZMQCmdFnc);
2026-10-04 00:04:20 +08:00
//转角窗户
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_ZJCH, PL_ZJCHCmdFnc);
2026-10-04 00:04:20 +08:00
//直线楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_ZXLT, PL_ZXLTCmdFnc);
2026-10-04 00:04:20 +08:00
//放置坡道
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_FZPD, PL_FZPDCmdFnc);
2026-10-04 00:04:20 +08:00
//放置阳台
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_FZYT, PL_FZYTCmdFnc);
2026-10-04 00:04:20 +08:00
//放置台阶
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_FZTJ, PL_FZTJCmdFnc);
2026-10-04 00:04:20 +08:00
//放置散水
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_FZSS, PL_FZSSCmdFnc);
2026-10-04 00:04:20 +08:00
//测试
2026-09-28 15:28:50 +08:00
ADD_CMD(AR_TEST, AR_TESTCmdFnc);
2026-10-04 00:04:20 +08:00
//圆弧楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(AR_YHLT, AR_YHLTCmdFnc);
2026-10-04 00:04:20 +08:00
//双分平行楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_SFPX, PL_SFPXCmdFnc);
2026-10-04 00:04:20 +08:00
//双分转角楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_SFZJ, PL_SFZJCmdFnc);
2026-10-04 00:04:20 +08:00
//双分三跑楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_SFSP, PL_SPSPCmdFnc);
2026-10-04 00:04:20 +08:00
//交叉楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_JCLT, PL_JCLTCmdFnc);
2026-10-04 00:04:20 +08:00
//选择线型
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_shlt, PL_shltCmdFnc);
//2022-12-28
2026-10-04 00:04:20 +08:00
//剪刀楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_JDLT, PL_JDLTCmdFnc);
2026-10-04 00:04:20 +08:00
//三角楼梯
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_SJLT, PL_SJLTCmdFnc);
2026-10-04 00:04:20 +08:00
//矩形转角
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_JXZJ, PL_JXZJCmdFnc);
2026-10-04 00:04:20 +08:00
//插入角柱
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_CRJZ, PL_CRJZCmdFnc);
2026-10-04 00:04:20 +08:00
//构造柱子
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_GZZZ, PL_GZZZCmdFnc);
2026-10-04 00:04:20 +08:00
//构造砼墙
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_GZTQ, PL_GZTQCmdFnc);
2026-10-04 00:04:20 +08:00
//柱子底座
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_ZZDZ, PL_ZZDZCmdFnc);
2026-10-04 00:04:20 +08:00
//布置洁具
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_BZJJ, PL_BZJJCmdFnc);
2026-10-04 00:04:20 +08:00
//布置隔板
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_BZGB, PL_BZGBCmdFnc);
2026-10-04 00:04:20 +08:00
//布置隔间
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_BZGJ, PL_BZGJCmdFnc);
2026-10-04 00:04:20 +08:00
//基线对齐
2026-09-28 15:28:50 +08:00
ADD_CMD(PL_JXDQ, PL_JXDQCmdFnc);
2026-10-04 00:04:20 +08:00
//边线对齐
2026-09-28 15:28:50 +08:00
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
2026-10-04 00:04:20 +08:00
//发送项目管理命令
2026-09-28 15:28:50 +08:00
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"));
}