#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")); }