235 lines
6.0 KiB
C++
235 lines
6.0 KiB
C++
#pragma once
|
|
#include "resource.h"
|
|
#include <functional>
|
|
#include "singleton.h"
|
|
#include "GsPreviewCtrl.h"
|
|
#include "xlistctrl.h"
|
|
#include "ListBoxST.h"
|
|
#include "bomreportdef.h"
|
|
|
|
class AecDbEwEquipment;
|
|
|
|
class CEquLibCopyTreeDlg;
|
|
|
|
class CEquipmentLibraryDlg : public CDialog
|
|
{
|
|
public:
|
|
DECLARE_DYNAMIC(CEquipmentLibraryDlg)
|
|
|
|
public:
|
|
enum EOPER
|
|
{
|
|
eMana = 0, // 管理设备
|
|
eIns = 1, // 插入设备到DWG
|
|
eSel = 2, // 选择设备,返回设备表中的ID
|
|
eManaZhSb = 3,
|
|
eInsZhSb = 4,
|
|
};
|
|
|
|
public:
|
|
CEquipmentLibraryDlg(EOPER oper
|
|
, LPCTSTR pszDir = NULL
|
|
, LPCTSTR pszFile = NULL
|
|
, bool bUIFangle = false
|
|
, bool bUI2DCheck = false
|
|
, CWnd* pParent = NULL);
|
|
virtual ~CEquipmentLibraryDlg();
|
|
enum { IDD = IDD_EQU_LIB_DLG };
|
|
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
virtual BOOL OnInitDialog();
|
|
virtual BOOL DestroyWindow();
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
private:
|
|
void initDbLibraryComb();
|
|
void initDirTree();
|
|
void initFileList();
|
|
void initBIMList();
|
|
void initPreviewCtrl();
|
|
void refreshFileList(HTREEITEM hItem);
|
|
void refreshBimList(int idx);
|
|
void getBimDatasByList(std::map<CString, CString> &bims);
|
|
void getSelectedFiles(std::vector<int> &files);
|
|
bool isFolderItem(HTREEITEM hItem);
|
|
bool isRootItem(HTREEITEM hItem);
|
|
bool isClassItem(HTREEITEM hItem);
|
|
HTREEITEM getParentFolder(const HTREEITEM &hItem);
|
|
CString getClassName(const HTREEITEM &hItem);
|
|
CString getEquLibraryName();
|
|
|
|
// 根据锚点来锚定目录
|
|
void anchorDir();
|
|
|
|
public:
|
|
CUIISQLiteServer& getSqliteDB() { return m_sqlDB; }
|
|
|
|
public:
|
|
// 设备管理
|
|
static void sbgl();
|
|
|
|
// 组合设备管理
|
|
static void zhsbgl();
|
|
|
|
// 插入组合设备
|
|
static void crzhsb(LPCTSTR pszDir = NULL);
|
|
|
|
// 插入设备
|
|
static void crsb(LPCTSTR pszDir = NULL);
|
|
|
|
static int selectSingleEquID(LPCTSTR pszDir = NULL // 目录锚点
|
|
, LPCTSTR pszFile = NULL // 文件名锚点
|
|
, bool bUIFangle = false // 是否显示“插入法兰”选项
|
|
, bool bUI2DCheck = false // 是否显示“二维显示为符号”选项
|
|
);
|
|
static AecDbEwEquipment* selectSingleEqu(LPCTSTR pszDir // 目录锚点
|
|
, LPCTSTR pszFile // 文件名锚点
|
|
, bool bUIFangle // 是否显示“插入法兰”选项
|
|
, bool bUI2DCheck // 是否显示“二维显示为符号”选项
|
|
, bool &bUseFangle // 返回“插入法兰”选项的选择结果
|
|
, bool &b2DCheck // 返回“二维显示为符号”选项的选择结果
|
|
);
|
|
|
|
static AecDbEwEquipment* selectCustomValve(LPCTSTR pszDir // 目录锚点
|
|
, double dDN // 文件中名中的中的公称直径,例:“DN100”
|
|
, bool bUIFangle // 是否显示“插入法兰”选项
|
|
, bool bUI2DCheck // 是否显示“二维显示为符号”选项
|
|
, bool &bUseFangle // 返回“插入法兰”选项的选择结果
|
|
, bool &b2DCheck // 返回“二维显示为符号”选项的选择结果
|
|
);
|
|
|
|
static bool ExtractBomOfZHEqu(AcDbBlockReference *pRef, AecDbEwEquipment &equ);
|
|
|
|
// 下面两个函数,只凭 数据库中的 Folder Class 和 文件名,来取出设备
|
|
// 用来取名称中带公称直径的设备
|
|
static AecDbEwEquipment* getEquipment(LPCTSTR pszPath, double dDN);
|
|
// 用来取名称有 pszFile 做为子串的设备
|
|
static AecDbEwEquipment* getEquipment(LPCTSTR pszPath, LPCTSTR pszFile);
|
|
static bool saveEquToDb(AcDbObjectId equID, LPCTSTR pszEquName);
|
|
|
|
AecDbEwEquipment* getEquipment(int fid);
|
|
|
|
public:
|
|
afx_msg LONG_PTR onAcadKeepFocus(UINT_PTR, LONG_PTR);
|
|
afx_msg void OnBnClickedDirAdd();
|
|
afx_msg void OnBnClickedDirRename();
|
|
afx_msg void OnBnClickedDirDel();
|
|
afx_msg void OnBnClickedDirOut();
|
|
afx_msg void OnBnClickedDirIn();
|
|
afx_msg void OnBnClickedFileAdd();
|
|
afx_msg void OnBnClickedFileNew();
|
|
afx_msg void OnBnClickedFileUpdateThumbnail();
|
|
afx_msg void OnBnClickedFileCopy();
|
|
afx_msg void OnBnClickedFileRename();
|
|
afx_msg void OnBnClickedFileAnchor();
|
|
afx_msg void OnBnClickedFileDel();
|
|
afx_msg void OnBnClickedFileOut();
|
|
afx_msg void OnBnClickedBimAdd();
|
|
afx_msg void OnBnClickedBimModi();
|
|
afx_msg void OnBnClickedBimDel();
|
|
afx_msg void OnBnClickedOk();
|
|
afx_msg void OnBnClickedInsert();
|
|
afx_msg void OnCheckLineVlv();
|
|
afx_msg void OnCheckFlange();
|
|
afx_msg void OnTvnSelchangedDirTree(NMHDR *pNMHDR, LRESULT *pResult);
|
|
afx_msg void OnLbnSelchangeFileList();
|
|
afx_msg void OnTvnRBClickDirTree(NMHDR* pNMHDR, LRESULT* pResult);
|
|
afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
|
|
afx_msg void OnCbnSelchangeLibrary();
|
|
afx_msg void OnCheckSearch();
|
|
afx_msg void OnEnChangeSearch();
|
|
afx_msg void OnLbnDblClkFileList();
|
|
|
|
|
|
private:
|
|
CComboBox m_cmbEquLib;
|
|
CImageList m_imageList;
|
|
CTreeCtrl m_ctrlDirTree;
|
|
CListBoxST m_ctrlFileList;
|
|
CXListCtrl m_ctrlBimList;
|
|
CGsPreviewCtrl m_wndViewCtrl;
|
|
CStatic m_ctrlStaticSep;
|
|
CEdit m_ctrlSearchEdt;
|
|
CStatic m_ctrlStaticDir, m_ctrlStaticFile;
|
|
EOPER m_eOper;
|
|
CUIISQLiteServer m_sqlDB;
|
|
HBITMAP m_hBitmap;
|
|
|
|
// 目录定位点
|
|
CString m_strDirAnchor;
|
|
|
|
// 文件定位点
|
|
CString m_strFileAnchor;
|
|
|
|
// 界面上是否显示 “插入法兰” 选项
|
|
bool m_bUI_Fangle;
|
|
|
|
//法兰端面和垫片
|
|
CString m_sEndF1, m_sEndF2;
|
|
CString m_sGaskets;
|
|
|
|
// 界面上是否显示 “二维显示为符号” 选项
|
|
bool m_bUI_2DFlag;
|
|
|
|
std::vector<CString> m_EquLibs;
|
|
|
|
// 当前的设备库
|
|
int m_nIdxEquLib;
|
|
|
|
public:
|
|
int m_iSelectFileID;
|
|
|
|
// 是否自动插入法兰
|
|
int m_bUseFangle;
|
|
int m_bLineVlv;//单线阀门
|
|
|
|
// 是否二维显示为符号
|
|
int m_bCheck2DFlag;
|
|
|
|
// 是否是电动阀门
|
|
int m_nValveType;
|
|
|
|
// 是否开启搜索
|
|
BOOL m_bSearch;
|
|
|
|
// 搜索内容
|
|
CString m_sSearch;
|
|
|
|
std::vector<std::shared_ptr<AcDbDatabase>> m_dbs;
|
|
|
|
};
|
|
typedef Singleton<CEquipmentLibraryDlg> g_EquLibDlg;
|
|
|
|
class CEquLibCopyTreeDlg : public CDialog
|
|
{
|
|
public:
|
|
DECLARE_DYNAMIC(CEquLibCopyTreeDlg)
|
|
enum { IDD = IDD_EQU_LIB_COPY_TREE_DLG };
|
|
CEquLibCopyTreeDlg(CImageList &img
|
|
, CUIISQLiteServer &db
|
|
, const CEquipmentLibraryDlg::EOPER &oper
|
|
, CWnd *pParent = NULL);
|
|
~CEquLibCopyTreeDlg();
|
|
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX);
|
|
virtual BOOL OnInitDialog();
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
public:
|
|
afx_msg void OnBnClickedOk();
|
|
afx_msg void OnBnClickedCancel();
|
|
afx_msg void OnNewFolder();
|
|
|
|
int getClassId() { return m_iClassId; }
|
|
|
|
private:
|
|
CImageList &m_imageList;
|
|
CUIISQLiteServer &m_sqlDB;
|
|
CTreeCtrl m_ctrlDirTree;
|
|
int m_iClassId;
|
|
CEquipmentLibraryDlg::EOPER m_eOper;
|
|
};
|
|
|