#pragma once #include "resource.h" #include "singleton.h" #include "BtnST.h" #include #include "xlistctrl.h" #include "AecDbMultiPartEntity.h" class AcDbX3dSolid; class AecDbX3dPart; class CDtygProperty : public CDialog { DECLARE_DYNAMIC(CDtygProperty) public: CDtygProperty(AecDbX3dPart *pPart, CWnd* pParent = NULL); CDtygProperty(AecDbBDPipeBase *pPart, CWnd* pParent = NULL); virtual ~CDtygProperty(); enum { IDD = IDD_PROPERTY }; protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnBnClickedButton2(); afx_msg void OnBnClickedButton3(); afx_msg void OnBnClickedButton4(); afx_msg void OnBnClickedButton5(); afx_msg void OnBnClickedButton8(); afx_msg void OnBnClickedOk(); afx_msg void OnNMDblClkList1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg LRESULT OnComboSelection(WPARAM nItem, LPARAM nSubItem); public: AcDbObjectId getLayerByStatisticsType(LPCTSTR sType); private: CXListCtrl m_wndListCtrl; CButton m_btnAdd; CButton m_btnModify; CButton m_btnDel; CButton m_btnImport; CButton m_btnExport; CFont m_font; // 查看构建属性使用 AecDbX3dPart *m_pPart; // 查看母实体属性使用 AecDbBDPipeBase *m_pMultiEnt; }; class CDTYGDlg : public CDialog { public: enum TYPE { kErr = -1, kBox, kCylinder, kCone, kPyramid, kCircleTorus, kRectTorus, kXTorus, kWedge, kDrums, kExtrude, kRevolve, kSpere, kLoft, kSweep, kCut, kWeir, }; DECLARE_DYNAMIC(CDTYGDlg) public: CDTYGDlg(CWnd* pParent = NULL); virtual ~CDTYGDlg(); enum { IDD = IDD_DTYG_DLG }; public: void SetObjectID(AcDbObjectId id); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); virtual void OnOK(); virtual void OnCancel(); void enableWindows(bool bEnble, const std::set &exceptions); void showEntity(bool bShow); bool HasSelectItem(); bool PropertyDlg(HTREEITEM hItem); TYPE getType(HTREEITEM hItem); bool getSelectItems(std::vector &items, bool bTip = true); void refreshTree(AcDbObjectId &id); void modifyDTYG(); void refreshHlightEntity(); bool getTransfromOf3DPart(AcGeMatrix3d &mat); DECLARE_MESSAGE_MAP() afx_msg void Ok() { OnOK(); } afx_msg void Cancel() { OnCancel(); } afx_msg void OnClose() { OnCancel(); } afx_msg LONG_PTR onAcadKeepFocus( UINT_PTR, LONG_PTR); afx_msg LRESULT OnRefreshHlightEntityMsg(WPARAM, LPARAM); afx_msg void OnBnClicked1(); // 长方体 afx_msg void OnBnClicked2(); // 圆住体 afx_msg void OnBnClicked3(); // 圆台体 afx_msg void OnBnClicked4(); // 棱锥体 afx_msg void OnBnClicked7(); // 球体 afx_msg void OnBnClicked8(); // 拉伸体 afx_msg void OnBnClicked9(); // 旋转体 afx_msg void OnBnClicked10(); // 楔体 afx_msg void OnBnClicked11(); // 球台体 afx_msg void OnBnClicked12(); // 环体 afx_msg void OnBnClicked15(); // 切割 afx_msg void OnBnClicked78(); // 下一个面 afx_msg void OnBnClicked79(); // 上一个面 afx_msg void OnBnClicked80(); // 应用 afx_msg void OnBnClicked81(); // 开始 afx_msg void OnBnClicked31(); // 位移-移动 afx_msg void OnBnClicked36(); // 位移-捕捉点移动 afx_msg void OnBnClicked34(); // 位移-复位 afx_msg void OnBnClicked27(); // 角度-旋转 afx_msg void OnBnClicked28(); // 角度-旋转 afx_msg void OnBnClicked75(); // 复制 afx_msg void OnBnClicked77(); // 镜像 afx_msg void OnBnClicked33(); // 修改 afx_msg void OnBnClicked32(); // 属性 afx_msg void OnBnClicked76(); // 删除 afx_msg void OnBnClicked20(); // 隐藏 afx_msg void OnBnClicked30(); // 隐藏 afx_msg void OnBnClicked5(); // 保存本地 afx_msg void OnBnClicked14(); // 本地载入 afx_msg void OnBnClickedButton6(); // 异形堰 afx_msg void OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMRclickTree1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult); afx_msg void OnBnClickedBtnFill(); public: struct compare_subent { bool operator () (const AcDbSubentId &id1, const AcDbSubentId &id2) const { return id1.index() < id2.index(); } }; private: // 10个需要设置图标的按钮 CButtonST m_btn1, m_btn2, m_btn3, m_btn4, m_btn7, m_btn8, m_btn9, m_btn10, m_btn11, m_btn12, m_btn15; CButton m_btnFaceBegin, m_btnFaceEnd, m_btnNext, m_btnPrev; CString m_sHatch; CButton m_wndBtHatch; // 平面定位 AcDbObjectId m_idSolidTemp; std::map m_SolidSubentIds; AcArray m_SolidGeFaces; int m_iFaceIdx; // end int m_iMove, m_iRotate; double m_dMove, m_dRotate; AcDbObjectId m_id; // 构建物 CString m_sObjectName; // 所选实体类型 //CJDXZDlg m_wndSelDlg; CTreeCtrl m_wndTree; CImageList m_Imagelist; CImageList m_Imagelist32; HTREEITEM m_hCurSelItem; AcDbObjectId m_HligthtID; // 选择tree上的item时,高亮的临时实体 public: afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); BOOL m_bAddHatch; afx_msg void OnBnClickedCheckHatch(); CButton m_wndBtnHatchCheck; }; typedef Singleton g_DtygDlg; class CBoxDlg : public CDialog { DECLARE_DYNAMIC(CBoxDlg) public: CBoxDlg(CWnd* pParent = NULL); virtual ~CBoxDlg(); enum { IDD = IDD_BOXDLG }; protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); afx_msg void OnBnClickedOk(); afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); DECLARE_MESSAGE_MAP() public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); public: int m_clr; double m_dX, m_dY, m_dZ; int m_iSub; PVOID m_pData; }; class CCylinderDlg : public CDialog { DECLARE_DYNAMIC(CCylinderDlg) public: CCylinderDlg(CWnd* pParent = NULL); virtual ~CCylinderDlg(); enum { IDD = IDD_CLNDLG }; protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); afx_msg void OnBnClickedOk(); afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); DECLARE_MESSAGE_MAP() public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); public: int m_clr; double m_dR; double m_dH; int m_iSub; PVOID m_pData; }; class CConeDLg : public CDialog { DECLARE_DYNAMIC(CConeDLg) public: CConeDLg(CWnd* pParent = NULL); virtual ~CConeDLg(); enum { IDD = IDD_CONDLG }; public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); protected: virtual void DoDataExchange(CDataExchange* pDX); afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCheck90(); afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); DECLARE_MESSAGE_MAP() public: virtual BOOL OnInitDialog(); public: int m_clr; double m_dr; double m_dR; double m_dH; PVOID m_pData; double m_dXOffset; int m_iSub; BOOL m_bIs90Tr; }; class CPyrmDlg : public CDialog { DECLARE_DYNAMIC(CPyrmDlg) public: CPyrmDlg(CWnd* pParent = NULL); virtual ~CPyrmDlg(); enum { IDD = IDD_PYRMDLG }; public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCheck90(); public: int m_clr; double m_dTH; double m_dTx; double m_dTy; double m_dBx; double m_dBy; PVOID m_pData; double m_dXOffset; int m_iSub; BOOL m_bIs90Tr; }; class CSpereDlg : public CDialog { DECLARE_DYNAMIC(CSpereDlg) public: CSpereDlg(CWnd* pParent = NULL); virtual ~CSpereDlg(); enum { IDD = IDD_SPEREDLG }; public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnBnClickedOk(); public: int m_clr; double m_dR; PVOID m_pData; int m_iSub; }; class CDrumsDlg : public CDialog // 圆台-鼓 { DECLARE_DYNAMIC(CDrumsDlg) public: CDrumsDlg(CWnd* pParent = NULL); virtual ~CDrumsDlg(); enum { IDD = IDD_DRUMS_DLG }; public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnBnClickedOk(); public: double m_dR, m_dL1, m_dL2, m_dSAngle, m_dEAngle; int m_iSub; int m_clr; PVOID m_pData; }; class CWedgeDlg : public CDialog { DECLARE_DYNAMIC(CWedgeDlg) public: CWedgeDlg(CWnd* pParent = NULL); virtual ~CWedgeDlg(); enum { IDD = IDD_WEDGE_DLG }; public: AcDbX3dSolid* makeSolid(const AcGePoint3d &ptOrg, const AcGeVector3d &vtZ); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnBnClickedOk(); public: double m_dA, m_dB, m_dT; int m_iSub; int m_clr; PVOID m_pData; }; class CTorusDlg : public CDialog { DECLARE_DYNAMIC(CTorusDlg) public: CTorusDlg(CWnd* pParent = NULL); virtual ~CTorusDlg(); enum { IDD = IDD_TORUS_DLG }; protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnStaticColor(); afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); afx_msg void OnBnClickedOk(); afx_msg void OnBnClickRadio(); public: void SetDonotSelectX() { m_bDonotSelectX = true; } AcDbX3dSolid* makeSolid(const AcGeMatrix3d &ucs); public: double m_dInnerR, m_dOuterR; // 内外径 double m_dStartA, m_dEndA; // 起终角度 double m_dRectH; // 矩形截面高 int m_iMode; // 0-Rect 1-Circle 2-region int m_iSub; bool m_bDonotSelectX; int m_clr; PVOID m_pData; }; class CYiXingYanDlg: public CDialog { DECLARE_DYNAMIC(CYiXingYanDlg) public: CYiXingYanDlg(double dLen, CWnd* pParent = nullptr); virtual ~CYiXingYanDlg(); enum { IDD = IDD_YIXINGYAN_DLG }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedRadioType(); afx_msg void OnBnClickedRadio2(); afx_msg void OnBnClickedRadio3(); void changeType(); void getXSolids(AcDbCurve *pCurve, AcArray &solids); private: AcDbX3dSolid* makeXSolid4Arc(const double &dStart, AcDbCurve *pCurve); AcDbRegion* makeRegion4Arc(const double &dStart, AcDbCurve *pCurve, const double &dL, const double &dT); private: CStatic m_wndPic; double m_dAllLen; public: int m_nType; double m_dHa; double m_dSp; double m_dL; double m_dH1; double m_dH2; double m_dT; };