Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

661 lines
13 KiB
C++

#include "StdAfx.h"
#include "StdArx.h"
#include "CoreTools.h"
#include "resource.h"
#include <afxdllx.h>
#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<AcDbVoidPtrArray*>(acrxLoadedApps());
if (pApps == NULL)
return false;
bool bFound = false;
for (int i = 0; i < pApps->length(); i++)
{
if (_tcsicmp(reinterpret_cast<LPCTSTR>(pApps->at(i)), str) == 0)
{
bFound = true;
break;
}
}
for (; pApps->length() > 0;)
{
delete reinterpret_cast<LPTSTR>(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"));
}