211 lines
5.1 KiB
C++
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"));
|
|
}
|