#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 g_arFloorViewPtrs; AcArray 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; }