#include "StdAfx.h" #include "StdArx.h" #include "CoreTools.h" #include "resource.h" #include #include "EquipDesignMainBar.h" #include "EquipmentMakeDlg.h" #include "pipelinetools.h" #include "AecDbEquBaseDraw2d.h" #include "EquipmentLibraryDlg.h" HINSTANCE _hdllInstance =NULL ; #ifndef _ttof #define _ttof(pszVal) _tcstod((pszVal), NULL) #endif //{{AFX_ARX_MSG void InitApplication(); void UnloadApplication(); //}}AFX_ARX_MSG //{{AFX_ARX_ADDIN_FUNCS //}}AFX_ARX_ADDIN_FUNCS namespace { bool isModuleLoaded(LPCTSTR str) { AcDbVoidPtrArray* pApps = reinterpret_cast(acrxLoadedApps()); if (pApps == NULL) return false; bool bFound = false; for (int i = 0; i < pApps->length(); i++) { if (_tcsicmp(reinterpret_cast(pApps->at(i)), str) == 0) { bFound = true; break; } } for (; pApps->length() > 0;) { delete reinterpret_cast(pApps->at(0)); pApps->removeAt(0); } delete pApps; return bFound; } } extern "C" { __declspec(dllexport) bool selectEquipment(CString &strPath) { return PipelineTools::GetEquipmentFile(strPath); } __declspec(dllexport) bool getEquipmentFromDB(const int &idx, CString &strPath) { return PipelineTools::GetEquipmentFile(idx, strPath); } __declspec(dllexport) bool getEquipmentDBIdx(int &idx) { return PipelineTools::GetEquipmentFile(idx); } __declspec(dllexport) AecDbEwEquipment* selectSingleEqu(LPCTSTR pszPath, LPCTSTR pszFile) { bool bTemp(false); return CEquipmentLibraryDlg::selectSingleEqu(pszPath, pszFile, false, false, bTemp, bTemp); } } // Define the sole extension module object. AC_IMPLEMENT_EXTENSION_MODULE(EarthWormDLL); extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) { if (dwReason == DLL_PROCESS_ATTACH) { _hdllInstance = hInstance; EarthWormDLL.AttachInstance(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) { EarthWormDLL.DetachInstance(); } return TRUE; } // ObjectARX EntryPoint 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("SHPLANTST"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func) /* typedef int (*ADSFUNC) (void); // First, define the structure of the table: a string // giving the AutoCAD name of the function, and a pointer to // a function returning type int. struct func_entry { TCHAR *func_name; ADSFUNC func; }; extern int adsgetEquiment(); static struct func_entry func_table[] = { {_T("adsgetEquiment"), adsgetEquiment}, };*/ #define ELEMENTS(array) (sizeof(array) / sizeof((array)[0])) void InitApplication() { /* for (int i = 0; i < ELEMENTS(func_table); i++) { if (!acedDefun(func_table[i].func_name, i)) { acutPrintf(_T("\nacedDefun error!")); return; } if (!acedRegFunc(func_table[i].func, i)) { acutPrintf(_T("\nacedRegFunc error!")); return; } } */ AecDbEquBaseDraw2d::rxInit(); // 绘制风管 ADD_CMD(PL_HZFG, PL_HZFG); // 绘制桥架 ADD_CMD(PL_HZQJ, PL_HZQJ); // 设备管理 ADD_CMD(PL_SBGL, PL_SBGL); // 设备设计 ADD_CMD(PL_SBSJ, PL_SBSJ); // 放置设备 ADD_CMD(PL_FZRQ, PL_FZRQ); //设备基础 ADD_CMD(PL_SBJC, PL_SBJC); // 组合设备管理 void PL_ZHSB(); ADD_CMD(PL_ZHSB, PL_ZHSB); // 初始设置 ADD_CMD(PL_CSSZ, PL_CSSZ); // 清理天正 ADD_CMD(PL_QLTG, PL_QLTGCmdFunc); // 法兰管线 ADD_CMD(PL_FLGD, PL_FLGDCmd); // 对焊管线 ADD_CMD(PL_DHGD, PL_DHGDCmd); // 螺纹管线 ADD_CMD(PL_LWGD, PL_LWGDCmd); // 承插管线 ADD_CMD(PL_CCGD, PL_CCGDCmd); // 卡箍 沟槽 管线 void PL_CKGDCmd(); ADD_CMD(PL_CKGD, PL_CKGDCmd); //统计报表 ADD_CMD(PL_TJBB, PL_TJBBCmd); //引出管线 ADD_CMD(PL_YCGX, PL_YCGXCmd); //路径管线 ADD_CMD(PL_LJGD, PL_LJGDCmd); //放样管线->按RYP要求改为空间弧管[菜单] ADD_CMD(PL_FYGX, PL_FYGXCmd); //管线中线 void PL_GXZXCmd(); ADD_CMD(PL_GXZX, PL_GXZXCmd); //单线变管 ADD_CMD(PL_DXBG, PL_DXBGCmd); // 端加弯头 ADD_CMD(PL_DJWT, PL_welbow); // 弯头连管 ADD_CMD(PL_WTLG1, PL_welbow2); //添加变径 ADD_CMD(PL_GXBJ, PL_GXBJ); // 添加三通 ADD_CMD(PL_TJST1, PL_wtee); //端接三通 ADD_CMD(PL_djst, PL_djst); // 偏向三通 ADD_CMD(PL_PXST, PL_wltee); // 二分三通 ADD_CMD(PL_EFST, PL_wytee); //非对称三通(定制) ADD_CMD(PL_DZST, PL_pxtee); //排气三通 ADD_CMD(PL_PQST, PL_PQSTCmd); //排泥三通 ADD_CMD(PL_PNST, PL_PNSTCmd); //吸水喇叭 ADD_CMD(PL_XSLB, PL_XSLBCmd); //排水喇叭 ADD_CMD(PL_PSLB, PL_PSLBCmd); // 添加四通 ADD_CMD(PL_TJST2, PL_wCross); //管线共面 主支同面 主管支管同面 ADD_CMD(PL_GXGM, PL_gxgmCmd); ADD_CMD(PL_GXGMSUB, PL_gxgmsubCmd); // 添加堵头 ADD_CMD(PL_TJDT, PL_wcap); //添加卡箍 ADD_CMD(PL_TJKG, PL_tjkgCmd); //塑料管 ADD_CMD(PL_TJZT, PL_TJZTCmd);//直通 eThrough ADD_CMD(PL_TJHJ, PL_TJHJCmd);//活接 eUJoin ADD_CMD(PL_JSJT, PL_RJoinCmd);//加伸缩节 eRJoin ADD_CMD(PL_WLJT, PL_WLJTCmd);//外螺纹接头 eOJoin ADD_CMD(PL_NLJT, PL_NLJTCmd);//内螺纹接头 eIJoin // ADD_CMD(PL_45WT, PL_45WTCmd);//45度弯头 ADD_CMD(PL_RJWT, PL_RJWTCmd);//锐角弯头 //U型避让 ADD_CMD(PL_UXBR, PL_UXBRCmd); // 构件连管 ADD_CMD(PL_GZLG, PL_winf2inf); // 水池管理 ADD_CMD(PL_SCGL, PL_SCGL); // 分系统 ADD_CMD(PL_FXT, PL_FXT); //////////////////////////////////// // 在线标注 ADD_CMD(PL_ZXBZ, PL_wdimonln2); // 线上标注 ADD_CMD(PL_XSBZ, PL_wdimonlnt); // 线下标注 ADD_CMD(PL_XXBZ, PL_wdimonlnb); // 引出标注 ADD_CMD(PL_YCBZ, PL_wdimldrx2); // 引出上标 ADD_CMD(PL_YCSB, PL_wdimldrxt); //序号标注 ADD_CMD(PL_XHBZ,PL_XHBZCmdFnc); //序号批标 ADD_CMD(PL_XHPB,PL_XHPBCmdFnc); // 垂直标注 ADD_CMD(PL_ZZBZ, PL_wdimldry2); // 垂直侧标 ADD_CMD(PL_ZZCB, PL_wdimldryt); // 批量标注 ADD_CMD(PL_BLBZ, PL_BLBZCmd); // 端头标注 ADD_CMD(PL_DTBZ, PL_DTBZCmd); // 标高标注 ADD_CMD(PL_BGGZ, PL_BGGZCmd); // 分行标注 ADD_CMD(PL_FHBZ, PL_FHBZCmd); // 分列标注 ADD_CMD(PL_FLBZ, PL_FLBZCmd); // 坡度标注 ADD_CMD(PL_BDBZ, PL_BDBZCmd); //管件标注 ADD_CMD(PL_GJBZ, PL_GJBZCmd); // 阀门标注 ADD_CMD(PL_FMBZ, PL_FBZYCmd); // 阀标高注 ADD_CMD(PL_FBZE, PL_FBZECmd); // 设备标注 ADD_CMD(PL_SBBZ, PL_SBBZCmd); // 仪表标注 ADD_CMD(PL_YBBZ, PL_SBZECmd); ////////////////////////////////////// // 安全阀 ADD_CMD(PL_CAQF, PL_wSValve); // 三通阀 ADD_CMD(PL_STFM, PL_wTValve); // 角阀 ADD_CMD(PL_CRJF, PL_wAValve); //截止阀 //碟阀 //四通阀 ADD_CMD(PL_XTFM, PL_XTFMCmd); //疏水阀 ADD_CMD(PL_SSFM, PL_SSFMCmd); //针型阀 ADD_CMD(PL_CZXF, PL_CZXFCmd); //常闭阀 ADD_CMD(PL_CCBF, PL_CCBFCmd); // 插入法兰 ADD_CMD(PL_CRFL, PL_wFlange); //插入对法兰 ADD_CMD(PL_CDFL, PL_wFlange2); //插入U型膨胀节 ADD_CMD(PL_CUXJ, PL_cuxjCmd); ADD_CMD(PL_2D3D, PL_2D3D); ADD_CMD(PL_CRZF, PL_CRZFCmd); ADD_CMD(PL_CBYF, PL_CBYFCmd); ADD_CMD(PL_CJZF, PL_CRJZFCmd); ADD_CMD(PL_CRDF, PL_CRDFCmd); ADD_CMD(PL_CZHF, PL_CZHFCmd); ADD_CMD(PL_CPQF, PL_CPQFCmd); ADD_CMD(PL_CJYF, PL_CJYFCmd); ADD_CMD(PL_AQFM, PL_AQFMCmd); ADD_CMD(PL_TJFM, PL_TJFMCmd); ADD_CMD(PL_CPNF, PL_CPNFCmd); ADD_CMD(PL_CDCF, PL_CDCFCmd); ADD_CMD(PL_GMFM, PL_GMFMCmd); ADD_CMD(PL_XSFM, PL_XSFMCmd); ADD_CMD(PL_JYFM, PL_JYFMCmd); ADD_CMD(PL_XJJT, PL_XJJTCmd); ADD_CMD(PL_CRZM, PL_CRZMCmd); ////////////////////////////////////// //插入盲板 ADD_CMD(PL_CRMB, PL_CRMBCmd); //插入孔板 ADD_CMD(PL_CRKB, PL_CRKBCmd); //插压力表 ADD_CMD(PL_CYLB, PL_CYLBCmd); //插温度表 ADD_CMD(PL_CWDB, PL_CWDBCmd); //桶式滤器 ADD_CMD(PL_TSLQ, PL_TSLQCmd); //临时滤器 ADD_CMD(PL_LSLQ, PL_LSLQCmd); //T型滤器 ADD_CMD(PL_TXLQ, PL_TXLQCmd); //Y型滤器 ADD_CMD(PL_YXLQ, PL_YXLQCmd); //插入视镜 ADD_CMD(PL_CRSJ, PL_CRSJCmd); //插流量计 ADD_CMD(PL_CLLJ, PL_CLLJCmd); //插阻火器 ADD_CMD(PL_CZHQ, PL_CZHQCmd); //不锈钢伸缩接头 ADD_CMD(PL_SSJT,PL_SSJTCmd); //传力接头 ADD_CMD(PL_CLJT,PL_CLJTCmd); //管道消声器 ADD_CMD(PL_GDSQ,PL_GDSQCmd); //管道静态混合器 ADD_CMD(PL_JTHQ,PL_JTHQCmd); //小型设备 ADD_CMD(PL_XXSB,PL_XXSBCmd); // 待定 ADD_CMD(PL_wValveRp, PL_wValveRp); ADD_CMD(PL_wpipeadd, PL_wpipeadd); ADD_CMD(PL_draw3d, PL_draw3d); ADD_CMD(PL_wTransp, PL_wTransp); // [合并管线] ADD_CMD(PL_wmerge, PL_wmerge); // [2/3维互换] ADD_CMD(PL_wVolv23d, PL_wVolv23d); // [系统选择] ADD_CMD(PL_wSysSel, PL_wSysSel); // [绘制管线] ADD_CMD(PL_wpipedraw, PL_wpipedraw); // [物料报表]-国能 void PL_wlbom(); ADD_CMD(PL_GNBB, PL_wlbom); // [物料报表]-工业 ADD_CMD(PL_gybb, PL_wbom); // [物料报表]-市政 ADD_CMD(PL_szbb, PL_wbomEx); //报表序号刷回 ADD_CMD(PL_xhsh, PL_xhshCmd); //综合报表 ADD_CMD(PL_CHBB, PL_CHBBCmd); //模板组追加,不开放 ADD_CMD(GP_ADD,GP_ADD); // [标注设置] ADD_CMD(PL_wdimcfg, PL_wdimcfg); //[BIM 数据] ADD_CMD(PL_wbimadd, PL_wbimadd); // [插入阀门] ADD_CMD(PL_wValve, PL_wValve); //阀门删除的合并管线. ADD_CMD(PL_VALERASED, PL_VALERASED); //合并管线 ADD_CMD(PL_hbgx, PL_hbgx); // [断管符号] ADD_CMD(PL_wBreak, PL_wBreak); // [管端断管] ADD_CMD(PL_wBreakt, PL_wBreakt); // [去除符号] ADD_CMD(PL_wDelbrk, PL_wDelbrk); //管线虚段 ADD_CMD(PL_gxxd, PL_gxxd); //去除虚段 ADD_CMD(PL_qcxd, PL_qcxd); // [批量转管] ADD_CMD(PL_fmtwpipe, PL_fmtwpipe); // [设备旋转] ADD_CMD(PL_wrotate, PL_wrotate); // [绘ISO图] ADD_CMD(PL_wISO, PL_wISO); //轴线ISO void PL_ZXTSCmd(); ADD_CMD(PL_ZXTS, PL_ZXTSCmd); //套管ISO void PL_TGFHCmd(); ADD_CMD(PL_TGFH, PL_TGFHCmd); // 绘制集水槽 ADD_CMD(PL_HZJSC, PL_HZJSC); // 绘制排泥管 ADD_CMD(PL_HZPNG, PL_HZPNG); // 绑定剖面 ADD_CMD(PL_BD2D, PL_BD2D); // 部切设备 ADD_CMD(PL_PQSB, PL_PQSB); //巴歇尔槽 ADD_CMD(PL_BXEC, PL_BXEC); //管线连接 ADD_CMD(PL_GXLJ, PL_GXLJ); //弯头遮挡 ADD_CMD(PL_WTZD, PL_WTZD); //设备对接 ADD_CMD(PL_SBDJ, PL_SBDJ); //批量导入设备 ADD_CMD(PL_PLDR, PL_PLDR); //设备旋转 ADD_CMD(PL_SBXZ, PL_SBXZ); //设备连管 ADD_CMD(PL_SBLG, PL_SBLG); //设备标高 ADD_CMD(PL_XGBG, PL_XGBG); //设备颜色 ADD_CMD(PL_XGYS, PL_XGYS); //关闭接口箭头 ADD_CMD(PL_GBJK, PL_GBJK); //测试 ADD_CMD(PL_TST, PL_TST); //系统开关 ADD_CMD(PL_XTKG, PL_XTKG); //斜管修改 ADD_CMD(PL_XGXG, PL_XGXG); //管线双击 ADD_CMD(DBL_AEC_EWPIPE,DBL_AEC_EWPIPE); //管件双击 ADD_CMD(DBL_AEC_DBEWFIT,DBL_AEC_DBEWFIT); //标注双击 ADD_CMD(DBL_AEC_EWPIPEDIM,DBL_AEC_EWPIPEDIM); ADD_CMD(DBL_AEC_DBWEQUIPMENT, DBL_AEC_DBWEQUIPMENT); //等级设置 ADD_CMD(PL_DJSZ,PL_DJSZ); //管道风机 ADD_CMD(HA_GDFJ,HA_GDFJ); //管网提取->内部命令 ADD_CMD(PL_GWTQ,PL_GWTQ); //管径变更 ADD_CMD(PL_GJBG,PL_GJBG); //S系列弯头数据检查更新升级 void PL_SWTGX(); ADD_CMD(PL_SWTGX, PL_SWTGX); //系统变更 ADD_CMD(PL_XTBG, PL_XTBG); // 录入阀门尺寸 ADD_CMD(PL_FMCC,PL_FMCC); // 闸阀 ADD_CMD(P3_CRZF, P3_CRZF); // 刀型闸阀 ADD_CMD(P3_CRDXZF, P3_CRDXZF); // 截止阀 ADD_CMD(P3_CRJZF, P3_CRJZF); // 蝶阀 ADD_CMD(P3_CRDF, P3_CRDF); // 止回阀 ADD_CMD(P3_CRZHF, P3_CRZHF); // 排气阀 ADD_CMD(P3_CRPQF, P3_CRPQF); // 浆液阀 ADD_CMD(P3_CRJYF, P3_CRJYF); // 柱塞阀 ADD_CMD(P3_CRZSF, P3_CRZSF); // 球阀 ADD_CMD(P3_CRQF, P3_CRQF); // 调节阀 ADD_CMD(P3_CRTJF, P3_CRTJF); // 水力控制阀 ADD_CMD(P3_CRSLKZF, P3_CRSLKZF); // 浮球阀 ADD_CMD(P3_CRFQF, P3_CRFQF); // 排泥阀 ADD_CMD(P3_CRPNF, P3_CRPNF); // 电磁阀 ADD_CMD(P3_CRDCF, P3_CRDCF); // 橡胶接头 ADD_CMD(P3_CRXJJT, P3_CRXJJT); // 伸缩接头 ADD_CMD(P3_CRSSJT, P3_CRSSJT); // 传力接头 ADD_CMD(P3_CRCLJT, P3_CRCLJT); // 管道补偿器 void P3_CRGDBCQ(); ADD_CMD(P3_GDBC, P3_CRGDBCQ); ADD_CMD(P3_BIM2DB, p3_bimInfoInsert); //立管显示 ADD_CMD(PL_LGXS, PL_LGXS); //系统抽管--分系统图 ADD_CMD(PL_FXTT, PL_XTCGCmdFnc); //ISO通用标注 ADD_CMD(ISO_DAL, ISO_DALCmdFnc); // ADD_CMD(ISO_TXT, ISO_TXTCmdFnc); // 插入水泵 void PL_CRSB(); ADD_CMD(PL_CRSB, PL_CRSB); //测试 void PL_TEST(); ADD_CMD(PL_TEST, PL_TEST); void PL_INVKEQU(); ADD_CMD(PL_INVKEQU, PL_INVKEQU); //获取三维范围 void PL_GEXT(); ADD_CMD(PL_GEXT, PL_GEXT); ADD_CMD(PL_GetBox, PL_GEXT); ADD_CMD(CO_BOX, PL_GEXT); ADD_CMD(GETBOX, PL_GEXT); void PL_PARAM_NOZZ(); ADD_CMD(pl_sbgz, PL_PARAM_NOZZ); // 组合设备数据库与Aec3DMep.db分离 // 此命令可以将已经保存在Aec3DMep.db中的组合设备导入到新的组合设备数据库中 void rebackZHSB(); ADD_CMD(rebackZHSB, rebackZHSB); // 上华3d模型管理器 void PL_SHMX(); ADD_CMD(PL_SHMX, PL_SHMX); // 复制阀门 void pl_fzfm(); ADD_CMD(PL_FZFM, pl_fzfm); } void UnloadApplication() { deleteAcRxClass(AecDbEquBaseDraw2d::desc()); extern CEquipDesignMainBar* g_pMainBar; extern CEquipmentMakeDlg* g_pMainEquDlg; if (g_pMainBar != NULL) DELETE_PTR(g_pMainBar); if (g_pMainEquDlg != NULL) DELETE_PTR(g_pMainEquDlg); acedRegCmds->removeGroup(_T("SHPLANTST")); }