#include "StdAfx.h" #include "StdArx.h" #include "resource.h" #include "CoreTools.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(PlumbingDLL); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; PlumbingDLL.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { PlumbingDLL.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("PLMB_Cmd"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) void InitApplication() { acrxBuildClassHierarchy(); //室内管线 ADD_CMD(CR_SCGX, CR_SCGXCmdFnc); //初始设置 ADD_CMD(WD_CSSZ, WD_CSSZCmdFnc); //绘制管线 ADD_CMD(WD_HZGX, WD_HZGXCmdFnc); //引出管线 ADD_CMD(WD_YCGX, WD_YCGXCmdFnc); //管径变更 ADD_CMD(WD_GJBG, WD_GJBGCmdFnc); //管线套管 ADD_CMD(WD_GXTG, WD_GXTGCmdFnc); //端加弯头 ADD_CMD(WD_DJWT, WD_DJWTCmdFnc); //弯头连管 ADD_CMD(WD_WTLG, WD_WTLGCmdFnc); //管线连接 ADD_CMD(WD_GXLJ, WD_GXLJCmdFnc); //管线变径 ADD_CMD(WD_GXBJ, WD_GXBJCmdFnc); //三通连接 ADD_CMD(WD_STLJ, WD_STLJCmdFnc); //添加三通 ADD_CMD(WD_TJST, WD_TJSTCmdFnc); //添加四通 ADD_CMD(WD_TJST, WD_TJSTCmdFnc); //添加堵头 ADD_CMD(WD_TJDT, WD_TJDTCmdFnc); //添加法兰 ADD_CMD(WD_CRFL, WD_CRFLCmdFnc); //插对法兰 ADD_CMD(WD_CDFL, WD_CDFLCmdFnc); //遮挡断开 ADD_CMD(WD_ZDDK, WD_ZDDKCmdFnc); //去除断开 ADD_CMD(WD_QCDK, WD_QCDKCmdFnc); //管端断管 ADD_CMD(WD_GDDG, WD_GDDGCmdFnc); //管线虚段 ADD_CMD(WD_GXXD, WD_GXXDCmdFnc); //去除虚段 ADD_CMD(WD_QCXD, WD_QCXDCmdFnc); //合并管线 ADD_CMD(WD_HBGX, WD_HBGXCmdFnc); //设备 //放置水箱 ADD_CMD(WD_FZSX, WD_FZSXCmdFnc); //放置水泵 ADD_CMD(WD_FZSB, WD_FZSBCmdFnc); //放置洁具 ADD_CMD(WD_FZJJ, WD_FZJJCmdFnc); //消火栓箱 ADD_CMD(WD_XHSX, WD_XHSXCmdFnc); //布置喷头 ADD_CMD(WD_PZPT, WD_PZPTCmdFnc); //布雨水斗 ADD_CMD(WD_BYSD, WD_BYSDCmdFnc); //置灭火器 ADD_CMD(WD_ZMHQ, WD_ZMHQCmdFnc); //排水附件 ADD_CMD(WD_PSFJ, WD_PSFJCmdFnc); //给水附件 ADD_CMD(WD_GSFJ, WD_GSFJCmdFnc); //消防附件 ADD_CMD(WD_XFFJ, WD_XFFJCmdFnc); //设备连管 ADD_CMD(WD_SBLG, WD_SBLGCmdFnc); //设备占位 ADD_CMD(WD_SBZW, WD_SBZWCmdFnc); //设备设计 ADD_CMD(WD_SBSJ, WD_SBSJCmdFnc); //设备族库 ADD_CMD(WD_SBZK, WD_SBZKCmdFnc); //室外管线 ADD_CMD(WD_SWGX, WD_SWGXCmdFnc); //置检查井 ADD_CMD(WD_ZJCJ, WD_ZJCJCmdFnc); //管线接井 ADD_CMD(WD_GXJJ, WD_GXJJCmdFnc); //置消火栓 ADD_CMD(WD_ZXHS, WD_ZXHSCmdFnc); //栓连管线 ADD_CMD(WD_SLGX, WD_SLGXCmdFnc); //双击井 DBL_AEC_ASMBLWELL ADD_CMD(DBL_AEC_ASMBLWELL, DBL_AEC_ASMBLWELL); void WD_SKJS(); // 消火栓栓口计算 ADD_CMD(WD_SKJS, WD_SKJS); // 喷淋设置 void WD_PLSZ(); ADD_CMD(WD_PLSZ, WD_PLSZ); // 布置喷头 void WD_BZPT_RY(); void WD_BZPT_JX(); void WD_BZPT_ZX(); void WD_BZPT_HX(); void WD_BZPT_JD(); ADD_CMD(WD_RYPT, WD_BZPT_RY); ADD_CMD(WD_JXPT, WD_BZPT_JX); ADD_CMD(WD_ZXPT, WD_BZPT_ZX); ADD_CMD(WD_HXPT, WD_BZPT_HX); ADD_CMD(WD_JDPT, WD_BZPT_JD); } void UnloadApplication() { acedRegCmds->removeGroup(_T("PLMB_Cmd")); }