#pragma once #include "resource.h" #include "singleton.h" #include "acdbx3dsolid.h" #include "XListCtrl.h" #define WM_REFRESH_HLIGHT_ENTITY_MESSAGE (WM_USER+100) class CDTYG_XG : public CDialog { DECLARE_DYNAMIC(CDTYG_XG) public: CDTYG_XG(const AcDbX3dSolid::Primitive &type, UINT idd, CWnd* pParent = nullptr); virtual ~CDTYG_XG(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); void resetLayersAndOverrules(); void AddOverrules(); void DelIntermediaryObj(); bool getRegionData(AcDbObjectId &idReg, CString &sReg, AcGePoint3d &ptC); bool getRegionData(AcDbObjectId &idReg, AcDbRegion *&pReg, AcGePoint3d &ptC); protected: virtual void OnOK(); virtual void OnCancel(); DECLARE_MESSAGE_MAP() protected: AcDbObjectId m_idReg; // 交给用户修改的polyline或Circle的id AcDbObjectId m_idPath; // 交给用户修改的 路径 或 旋转轴 的id AcDbObjectId m_idEntity; // 建筑实体 CString m_sGUID; // 单体异构标识 CString m_sReg; // 将polyline转存为字符串表示 AcDbX3dSolid::Primitive m_type; std::vector m_interObjs; // 中间实体对象 AcGeMatrix3d m_matrix; AcDbObjectId m_idHlight; }; class CDTYG_XG_EXTRUD : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_EXTRUD) public: CDTYG_XG_EXTRUD(CWnd* pParent = nullptr); virtual ~CDTYG_XG_EXTRUD(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_EXTRUD }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() public: void drawRegion(); afx_msg void OnBnClickedOk(); public: double m_dHeight; AcGePoint3d m_ptFr, m_ptTo; }; class CDTYG_XG_REVOLVE : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_REVOLVE) public: CDTYG_XG_REVOLVE(CWnd* pParent = nullptr); virtual ~CDTYG_XG_REVOLVE(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_DEF }; protected: DECLARE_MESSAGE_MAP() public: void drawRegion(); afx_msg void OnBnClickedOk(); public: AcGePoint3d m_ptOrg; // 旋转轴原点 AcGeVector3d m_vt; // 旋转轴方向 double m_dSweepAngle; // 旋转角度 double m_dStartAngle; // 旋转起始角度 }; class CDTYG_XG_SWEEP : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_SWEEP) public: CDTYG_XG_SWEEP(CWnd* pParent = nullptr); virtual ~CDTYG_XG_SWEEP(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_DEF }; protected: DECLARE_MESSAGE_MAP() public: void drawRegion(); afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCancel(); public: AcDbCurve *m_pCurve; }; class CDTYG_XG_CUT : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_CUT) public: CDTYG_XG_CUT(CWnd* pParent = nullptr); virtual ~CDTYG_XG_CUT(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_DEF }; protected: DECLARE_MESSAGE_MAP() public: void drawRegion(); afx_msg void OnBnClickedOk(); public: double m_dHeight; AcGePoint3d m_ptFr, m_ptTo; }; class CDTYG_XG_LOFT : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_LOFT) public: CDTYG_XG_LOFT(CWnd* pParent = nullptr); virtual ~CDTYG_XG_LOFT(); virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_LOFT }; protected: DECLARE_MESSAGE_MAP() public: afx_msg void drawRegion(); afx_msg void OnBnClickedOk(); afx_msg LRESULT OnEditEnd(WPARAM, LPARAM); afx_msg void OnBnClickedCheck1(); afx_msg void OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult); public: CXListCtrl m_lstCtrl; std::vector m_heights; std::vector m_regs; BOOL m_bUseTbl; }; class CDTYG_XG_BDPipeBase: public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_BDPipeBase) public: CDTYG_XG_BDPipeBase(CWnd* pParent = nullptr); virtual ~CDTYG_XG_BDPipeBase(); virtual bool init(AcDbObjectId &idEntity, LPCTSTR guid, AcDbObjectId &hlid); enum { IDD = IDD_DTYG_MODIFY_DEF }; protected: DECLARE_MESSAGE_MAP() public: void drawRegion(); afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCancel(); private: AcGePoint3d m_ptOldStartPoint; }; typedef Singleton g_XGExtrud; typedef Singleton g_XGRevolve; typedef Singleton g_XGCut; typedef Singleton g_XGSweep; typedef Singleton g_XGLoft; typedef Singleton g_XGBDPipeBase;