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

639 lines
12 KiB
C++

#include "StdAfx.h"
#include "StdArx.h"
#include "resource.h"
#include "CoreTools.h"
#include "DBReactorOfDTYG.h"
#include "AecDbFloorTreeView.h"
#include "FloorMgrDlg.h"
#include "CXMLCMainBar.h"
HINSTANCE _hdllInstance = NULL ;
#ifndef _ttof
#define _ttof(pszVal) _tcstod((pszVal), NULL)
#endif
AcArray<AcDbEntity*> g_arFloorViewPtrs;
AcArray<int> g_viewportNumbers;
extern void ClearFloorTreeView();
void InitApplication();
void UnloadApplication();
AC_IMPLEMENT_EXTENSION_MODULE(Pool3dCmdDll);
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_hdllInstance = hInstance;
Pool3dCmdDll.AttachInstance(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
Pool3dCmdDll.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;
}
void InitApplication()
{
CEntityOverrule::rxInit();
AecDbFloorTreeView::rxInit();
acrxBuildClassHierarchy();
#define ADD_CMD(cmd, func) CoreTools::AddCommand(_T("POOL3D"), _T(#cmd), _T(#cmd), ACRX_CMD_TRANSPARENT | ACRX_CMD_USEPICKSET, func)
//院标设置
ADD_CMD(PL_YBSZ, PL_YBSZCmdFnc);
//项目楼层
ADD_CMD(PL_XMLC, PL_XMLCCmdFnc);
//布置轴网
ADD_CMD(PL_BZZW, PL_BZZWCmdFnc);
//轴网标注
ADD_CMD(PL_ZWBZ, PL_ZWBZCmdFnc);
//单轴标注
ADD_CMD(PL_DZBZ, PL_DZBZCmdFnc);
//添加轴号
ADD_CMD(PL_TJZH, PL_TJZHCmdFnc);
//删除轴号
ADD_CMD(PL_SCZH, PL_SCZHCmdFnc);
//柱网构筑
ADD_CMD(PL_ZWGZ, PL_ZWGZCmdFnc);
//楼层视图
ADD_CMD(PL_LCST, PL_LCSTCmdFnc);
// 绘制底板
ADD_CMD(PL_HZDB, PL_DYSCCmdFnc);
//定义水池
void PL_HZB();
ADD_CMD(PL_DYSC, PL_HZB);
// 斜底板
void PL_XDB();
ADD_CMD(PL_HZXB, PL_XDB);
//测试水池形状
ADD_CMD(PL_SCXZ, PL_SCXZCmdFnc);
//加矩形池
ADD_CMD(PL_JJXC, PL_JJXCCmdFnc);
//加圆形池
ADD_CMD(PL_JYXC, PL_JYXCCmdFnc);
//加椭圆池
ADD_CMD(PL_JTYC, PL_JTYCCmdFnc);
//修改水池->作废->改为通过夹点修改
ADD_CMD(PL_XGSC, PL_XGSCCmdFnc);
//加方锥井
ADD_CMD(PL_JFZJ, PL_JFZJCmdFnc);
//加方圆井
ADD_CMD(PL_JFYJ, PL_JFYJCmdFnc);
//加圆锥井
ADD_CMD(PL_JYZJ, PL_JYZJCmdFnc);
//加异形井
ADD_CMD(PL_JYXJ, PL_JYXJCmdFnc);
//波浪地板
ADD_CMD(PL_BLDB, PL_BLDBCmdFnc);
//截面底板
ADD_CMD(PL_JMDB, PL_JMDBCmdFnc);
//旋转底板
ADD_CMD(PL_XZDB, PL_XZDBCmdFnc);
//底板裁剪
ADD_CMD(PL_DBCJ, PL_DBCJCmdFnc);
//加集水坑
ADD_CMD(PL_JJSK, PL_JJSKCmdFnc);
//池底开洞
ADD_CMD(PL_CDKD, PL_CDKDCmdFnc);
//穿管开洞
ADD_CMD(PL_GCQB, PL_GCQBCmdFnc);
//批量穿管开洞->多管开洞
ADD_CMD(PL_DGKD, PL_DGKDCmdFnc);
//池底素砼
ADD_CMD(PL_CDST, PL_CDSTCmdFnc);
//素砼底基
ADD_CMD(PL_STDJ, PL_STDJCmdFnc);
//装配造簇
ADD_CMD(PL_ZPZC, PL_ZPZCCmdFnc);
//构筑插簇
ADD_CMD(PL_GZCC, PL_GZCCCmdFnc);
//截面设计
ADD_CMD(PL_JMSJ, PL_JMSJCmdFnc);
//绘制沟渠
ADD_CMD(PL_LSJM, PL_LSJMCmdFnc);
//绘制盖板
ADD_CMD(PL_HZGB, PL_HZGBCmdFnc);
//单体隐藏
ADD_CMD(PL_DTYC, PL_DTYCCmdFnc);
//隐藏其他
ADD_CMD(PL_YCQT, PL_YCQTCmdFnc);
//显示其他
ADD_CMD(PL_XSQB, PL_XSQBCmdFnc);
//土 建
//绘制墙体
ADD_CMD(PL_HZQT, PL_HZQTCmdFnc);
//绘制幕墙-->转到 ArchCmd
//ADD_CMD(PL_HZMQ, PL_HZMQCmdFnc);
//绘制弧墙
ADD_CMD(PL_HZHQ, PL_HZHQCmdFnc);
//墙体打断
ADD_CMD(PL_QTDD, PL_QTDDCmdFnc);
//墙体倒角
ADD_CMD(PL_QTDJ, PL_QTDJCmdFnc);
//墙体倒圆
ADD_CMD(PL_QTDY, PL_QTDYCmdFnc);
//立面拉墙
ADD_CMD(PL_LMLQ, PL_LMLQCmdFnc);
ADD_CMD(PL_PMLQ, PL_PMLQCmdFnc);
//单线变墙
ADD_CMD(PL_DXBQ, PL_DXBQCmdFnc);
//插入柱子
ADD_CMD(PL_CRZZ, PL_CRZZCmdFnc);
//放置横梁
ADD_CMD(PL_FZHL, PL_FZHLCmdFnc);
//批量改梁
ADD_CMD(PL_PLGL, PL_PLGLCmdFnc);
//墙体插柱子
ADD_CMD(PL_QTCZ, PL_QTCZCmdFnc);
//批量改柱
ADD_CMD(PL_PLGZ, PL_PLGZCmdFnc);
//预埋支撑
ADD_CMD(PL_YMZZ, PL_YMZZCmdFnc);
//电缆沟放置支架
ADD_CMD(PL_LGZJ, PL_LGZJCmdFnc);
//放置支架
ADD_CMD(PL_FZZJ, PL_FZZJCmdFnc);
//放置吊架
ADD_CMD(PL_FZDJ, PL_FZDJCmdFnc);
//放置平台->代替方形圆形平台
ADD_CMD(PL_FZPT, PL_FZPTCmdFnc);
//放置护栏
ADD_CMD(PL_FZHN, PL_FZHNCmdFnc);
ADD_CMD(PL_QXHN, PL_QXHNCmdFnc);
//平台楼梯->护栏直线楼梯
ADD_CMD(PL_PTLT, PL_PTLTCmdFnc);
//平台楼梯->护栏圆弧楼梯
ADD_CMD(PL_YHLT, PL_YHLTCmdFnc);
//圆护爬梯
ADD_CMD(PL_YHZT, PL_YHZTCmdFnc);
//直线爬梯
ADD_CMD(PL_ZXPT, PL_ZXPTCmdFnc);
//双跑楼梯
ADD_CMD(PL_SPLT, PL_SPLTCmdFnc);
//多段楼梯
ADD_CMD(PL_DDLT, PL_DDLTCmdFnc);
//墙体开洞,池壁开洞
ADD_CMD(PL_QTKD, PL_QTKDCmdFnc);
ADD_CMD(PL_CBKD, PL_QTKDCmdFnc);
ADD_CMD(PL_ZLKD, PL_ZLKDCmdFnc);
//洞口编号复位
ADD_CMD(PL_DHFW, PL_DHFWCmdFnc);
//洞标设置
ADD_CMD(PL_DBSZ, PL_DBSZCmdFnc);
//洞口标注
ADD_CMD(PL_DKBZ, PL_DKBZCmdFnc);
//洞口符号
ADD_CMD(PL_DKFH, PL_DKFHCmdFnc);
//套管标注
ADD_CMD(PL_TGBZ, PL_TGBZCmdFnc);
//翼环标注
ADD_CMD(PL_YHBZ, PL_YHBZCmdFnc);
//断墙符号
ADD_CMD(PL_DQFH, PL_DQFHCmdFnc);
//墙体插窗
ADD_CMD(PL_QTCC, PL_QTCCCmdFnc);
//墙体插门
ADD_CMD(PL_QTCM, PL_QTCMCmdFnc);
//换剖门窗
ADD_CMD(PL_HPMC, PL_HPMCCmdFnc);
//组合门窗
ADD_CMD(PL_ZHMC, PL_ZHMCCmdFnc);
//转角窗户->ArchCmd
//ADD_CMD(PL_ZJCH, PL_ZJCHCmdFnc);
//门窗命名
ADD_CMD(PL_MCMM, PL_MCMMCmdFnc);
//门三维选型
ADD_CMD(PL_M3XX, PL_M3XXCmdFnc);
//窗三维选型
ADD_CMD(PL_C3XX, PL_C3XXCmdFnc);
//放置平板
ADD_CMD(PL_FZPB, PL_FZPBCmdFnc);
//平板开洞
ADD_CMD(PL_PBKD, PL_PBKDCmdFnc);
//开洞报表
ADD_CMD(PL_DKBB, PL_DKBBCmdFnc);
//洞口编号
ADD_CMD(PL_DKBH, PL_DKBHCmdFnc);
//编号隐显
ADD_CMD(PL_BHYX, PL_BHYXCmdFnc);
//方形平台
ADD_CMD(PL_FXPT, PL_FXPTCmdFnc);
//圆形平台
ADD_CMD(PL_YXPT, PL_YXPTCmdFnc);
//任意屋顶
ADD_CMD(PL_RYPD, PL_RYPDCmdFnc);
//人字坡顶
ADD_CMD(PL_RZPD, PL_RZPDCmdFnc);
//攒尖坡顶
ADD_CMD(PL_ZJPD, PL_ZJPDCmdFnc);
//矩形坡顶
ADD_CMD(PL_JXPD, PL_JXPDCmdFnc);
//加老虎窗
ADD_CMD(PL_JLHC, PL_JLHCCmdFnc);
//测试命令
ADD_CMD(PL_TESTT, PL_TESTCmdFnc);
ADD_CMD(PL_FJTEST, PL_FJTESTCmdFnc);
ADD_CMD(PL_FKCZTEST, PL_FKCZTESTCmdFnc);
ADD_CMD(PL_FKSPTEST, PL_FKSPTESTCmdFnc);
ADD_CMD(PL_FMCZTEST, PL_FMCZTESTCmdFnc);
ADD_CMD(PL_FMSPTEST, PL_FMSPTESTCmdFnc);
ADD_CMD(PL_TESTSX, SX_TESTCmdFnc);
ADD_CMD(PL_TESTFGRLJ, FGRLJ_TESTCmdFnc);
ADD_CMD(PL_TESTFGXSQ, FGXSQ_TESTCmdFnc);
ADD_CMD(PL_TESTNLB, NLB_TESTCmdFnc);
ADD_CMD(PL_BJFTEST, PL_BJFTESTCmdFnc);
//内部支持命令
//提取门表
ADD_CMD(PL_TQMB, PL_TQMBCmdFnc);
//提取窗表
ADD_CMD(PL_TQCB, PL_TQMBCmdFnc);
//墙体的各种测
ADD_CMD(WL_TESTT, WL_TESTCmdFnc);
//单体异构
ADD_CMD(PL_DTYG, PL_DTYGCmdFnc);
//墙面平视
ADD_CMD(PL_QMPS, PL_QMPSCmdFnc);
//设备占位
ADD_CMD(PL_SBZW, PL_SBZWCmdFnc);
//放置管嘴---任意放置管嘴
ADD_CMD(PL_RYGZ, PL_FZGZCmd);
//俯视显示 透明显示 三维旋转
ADD_CMD(PL_BMPS, PL_BMPSCmdFnc);
ADD_CMD(PL_TMXS, PL_TMXSCmdFnc);
ADD_CMD(PL_SWXZ, PL_SWXZCmdFnc);
//剖切出图
ADD_CMD(PL_PQCT, PL_PQCTCmdFnc);
//折线剖切
ADD_CMD(PL_ZXPQ, PL_ZXPQCmdFnc);
//混凝土体积
ADD_CMD(PL_HNTJ, PL_HNTJCmdFnc);
ADD_CMD(PL_TQSW, PL_TQSWCmdFnc);
//混凝土报表
ADD_CMD(PL_MTBB, PL_HNBBCmdFnc);
//插入单体-->总图需要
ADD_CMD(PL_CRDT, PL_CRDTCmdFnc);
//更新单体
ADD_CMD(PL_GXDT, PL_GXDTCmdFnc);
//临时命令->去除掉块
ADD_CMD(PL_QCDK, PL_QCDKCmdFnc);
//立管固架->作
ADD_CMD(PL_LGGJ, PL_LGGJCmdFnc);
//放置支墩
ADD_CMD(PL_FZZD, PL_FZZDCmdFnc);
//布置桩基
ADD_CMD(PL_BZZJ, PL_BZZJCmdFnc);
//剖切设置
ADD_CMD(PL_PQSZ, PL_PQSZCmdFnc);
//KKS编码
ADD_CMD(PL_KKSB, PL_FPBHCmdFnc);
//编号重置
ADD_CMD(PL_BHCZ, PL_BHCZCmdFnc);
//编号显隐
ADD_CMD(PL_BHXY, PL_BHXYCmdFnc);
//墙线加粗
ADD_CMD(PL_QXJC, PL_QXJCCmdFnc);
//墙线擦除
ADD_CMD(PL_QXCC, PL_QXCCCmdFnc);
//墙线补画
ADD_CMD(PL_QXBH, PL_QXBHCmdFnc);
//墙线变虚
ADD_CMD(PL_QXBX, PL_QXBXCmdFnc);
//板线加粗
ADD_CMD(PL_BXJC, PL_BXJCCmdFnc);
//构件分层
ADD_CMD(PL_GJFC, PL_GJFC2CmdFnc);
//剖切隐藏
ADD_CMD(PL_PQYC, PL_PQYCCmdFnc);
//去除剖切
ADD_CMD(PL_QQPQ, PL_QQPQCmdFnc);
//关于
ADD_CMD(PL_BBXX, PL_BBXXCmdFnc);
// 绘制水槽
ADD_CMD(PL_HZSC, PL_HZSC);
//绘制槽壁
ADD_CMD(PL_HZCB, PL_HZCB);
// 水池网格
ADD_CMD(PL_PMSJ, PL_PMSJ);
// 平面生池
ADD_CMD(PL_PMSC, PL_PMSC);
//双击修改命令函数
//命令格式: DBL_DXFNAME,DBL_DXFNAME
ADD_CMD(DBL_AEC_DBWALL, DBL_AEC_DBWALL);
ADD_CMD(DBL_AEC_DBCOLMN, DBL_AEC_DBCOLMN);
ADD_CMD(DBL_AEC_DBBEAM, DBL_AEC_DBBEAM);
ADD_CMD(DBL_AEC_DBSLAB, DBL_AEC_DBSLAB);
ADD_CMD(DBL_AEC_X3DPART,DBL_AEC_X3DPART);
void DBL_AEC_DBEXTENDENT();
ADD_CMD(DBL_AEC_DBEXTENDENT,DBL_AEC_DBEXTENDENT);
ADD_CMD(DBL_AEC_DBPARAEQUI, DBL_AEC_DBPARAEQUI);
ADD_CMD(DBL_AEC_DBWEIR, DBL_AEC_DBWEIR);
ADD_CMD(DBL_AEC_RIVERGROOVE, DBL_AEC_RIVERGROOVE);
ADD_CMD(DBL_AEC_DBXBG, DBL_AEC_DBXBG);
ADD_CMD(DBL_AEC_MULTIPARTENT, DBL_AEC_MULTIPARTENT);
ADD_CMD(DBL_AEC_DBXEQUIPMENT, DBL_AEC_DBXEQUIPMENT);
ADD_CMD(DBL_AEC_DBASTAIR,DBL_AEC_DBASTAIR);
ADD_CMD(DBL_AEC_CLMSTAIR,DBL_AEC_CLMSTAIR);
ADD_CMD(DBL_AEC_DBLSTAIR,DBL_AEC_DBLSTAIR);
ADD_CMD(DBL_AEC_DBZSTAIR,DBL_AEC_DBZSTAIR);
ADD_CMD(DBL_AEC_DBMRPSTAIR,DBL_AEC_DBMRPSTAIR);
ADD_CMD(DBL_AEC_GUARDBAR,DBL_AEC_GUARDBAR);
ADD_CMD(DBL_AEC_DBHOLDER,DBL_AEC_DBHOLDER);
ADD_CMD(DBL_AEC_DBHANGER,DBL_AEC_DBHANGER);
ADD_CMD(DBL_AEC_DBBOSSHOLDER,DBL_AEC_DBBOSSHOLDER);
ADD_CMD(DBL_AEC_DBOPENING,DBL_AEC_DBOPENING);
ADD_CMD(DBL_AEC_DBXROOF,DBL_AEC_DBXROOF);
ADD_CMD(DBL_AEC_XDORMERWIN,DBL_AEC_XDORMERWIN);
//沟渠
ADD_CMD(DBL_AEC_DBEWPIPEBASE,DBL_AEC_DBEWPIPEBASE);
//保温层
void DBL_AEC_DBINSUL();
ADD_CMD(DBL_AEC_DBINSUL, DBL_AEC_DBINSUL);
ADD_CMD(PL_GBQQ, ModifyXEqus);
// 管道过滤器
void PL_GDGV();
ADD_CMD(PL_GDGV, PL_GDGV);
// 一般罐体
void PL_YBGT();
ADD_CMD(PL_YBGT, PL_YBGT);
// 一般箱体
void PL_YBXT();
ADD_CMD(PL_YBXT, PL_YBXT);
// 浅层砂滤
void PL_QCSL();
ADD_CMD(PL_QCSL, PL_QCSL);
// 插喇叭口
void PL_CLBK();
ADD_CMD(PL_CLBK, PL_CLBK);
// 参数底板
void PL_CSDB();
ADD_CMD(PL_CSDB, PL_CSDB);
// 插入格栅
ADD_CMD(PL_CRGS, PL_CRGS);
// 插曝气器
ADD_CMD(PL_CRBQ, PL_CRBQQ);
// 插入水槽
ADD_CMD(PL_CRSC, PL_CRSC);
// 插集水堰
ADD_CMD(PL_CJSY, PL_CJSY);
// 砂水分离类
ADD_CMD(PL_CCSJ,PL_CCSJ);
// 螺旋泵类
ADD_CMD(PL_CLXB,PL_CLXB);
// 闸门类
ADD_CMD(PL_CZM,PL_CRZM);
// 闸门类
ADD_CMD(PL_CQBJ,PL_CQBJ);
// 刮泥机类
ADD_CMD(PL_CGNJ,PL_CGNJ);
// 浓缩机类
ADD_CMD(PL_CNSJ,PL_CNSJ);
// 爆气机类
ADD_CMD(PL_CBQJ,PL_CBQJ);
// 加药混合类
ADD_CMD(PL_JYHH,PL_JYHH);
// 过滤机
ADD_CMD(PL_CGLJ,PL_CGLJ);
// 斜板管
ADD_CMD(PL_CXBG,PL_CXBG);
// 插罐箱
ADD_CMD(PL_CGX, PL_CGX);
//水池容积
ADD_CMD(PL_SCRJ, PL_SCRJ);
// 井口修改
ADD_CMD(PL_WellModify, PL_WellModify);
// 异形构筑物
ADD_CMD(PL_YXGZ, PL_YXGZCmdFnc);
void PL_PMFYCmdFnc();
ADD_CMD(PL_PMFY, PL_PMFYCmdFnc);
// 修改异形墙截面
ADD_CMD(PL_XGJM, PL_XGJM);
// 异形开洞
ADD_CMD(PL_YXKD, PL_YXKDCmdFnc);
// 异形穿管
ADD_CMD(PL_YXCG, PL_YXCGCmdFnc);
// 统一墙高
ADD_CMD(PL_TYQG, PL_TYQG);
// 洞口编号
ADD_CMD(PL_ZDBH, PL_DKBH);
//点点连接
ADD_CMD(PL_DDLJ, PL_DDLJ);
// 平法标注
void inertPingFaDim();
ADD_CMD(PL_PFBZ, inertPingFaDim);
void DBL_AEC_PFDIM();
ADD_CMD(DBL_AEC_PFDIM, DBL_AEC_PFDIM);
//防腐涂面
ADD_CMD(PL_FFTM, PL_FFTM);
//建保温层
ADD_CMD(PL_JBWC, PL_JBWC);
//保温融合
ADD_CMD(PL_BWRH, PL_BWRH);
//保温统计
ADD_CMD(PL_BWTJ, PL_BWTJ);
//涂面统计
ADD_CMD(PL_TMTJ, PL_TMTJ);
//外墙贴皮
ADD_CMD(PL_WQTP, PL_WQTP);
//独立基础
void PL_DLJC();
ADD_CMD(PL_DLJC, PL_DLJC);
}
extern CFloorMgrDlg * g_pFloorMgrDlg;
extern CXMLCMainBar *g_wndXMLCDlgBar;
void UnloadApplication()
{
ClearFloorTreeView();
deleteAcRxClass(CEntityOverrule::desc());
deleteAcRxClass(AecDbFloorTreeView::desc());
acedRegCmds->removeGroup(_T("POOL3D"));
//old dlg delete
if (g_pFloorMgrDlg != NULL)
delete g_pFloorMgrDlg;
if (g_wndXMLCDlgBar != NULL)
delete g_wndXMLCDlgBar;
g_wndXMLCDlgBar = NULL;
}