#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(UINT idd, CWnd* pParent = NULL); virtual ~CDTYG_XG(); virtual bool init(AecEqui::XPrimData *pData , AcDbObjectId idEqu , AcDbObjectId &hlid , const AcGePoint3d &ptIns , const AcGeVector3d &vtDir , const bool &bVert ); void resetLayersAndOverrules(); void AddOverrules(); void DelIntermediaryObj(); bool getRegionData(AcDbObjectId &idReg, CString &sReg, AcGePoint3d &ptC); bool getRegionData(AcDbObjectId &idReg, AcDbRegion *&pReg, AcGePoint3d &ptC); void TransformEntity(AcDbEntity *pEnt); void UnTransformEntity(AcDbEntity *pEnt); protected: virtual void OnOK(); virtual void OnCancel(); DECLARE_MESSAGE_MAP() protected: AcDbObjectId m_idReg; // 交给用户修改的polyline或Circle的id AcDbObjectId m_idPath; // 交给用户修改的 路径 或 旋转轴 的id AecEqui::XPrimData *m_pPrim; CString m_sReg; // 将polyline转存为字符串表示 std::vector m_interObjs; // 中间实体对象 AcDbObjectId m_idHlight; AcDbObjectId m_idEqu; // 设备的插入点 AcGePoint3d m_ptIns; // 设备的插入方向 AcGeVector3d m_vtDir; // 是否垂直 bool m_bVert; }; class CDTYG_XG_EXTRUD : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_EXTRUD) public: CDTYG_XG_EXTRUD(CWnd* pParent = NULL); virtual ~CDTYG_XG_EXTRUD(); virtual bool init(AecEqui::XPrimData *pData , AcDbObjectId idEqu , AcDbObjectId &hlid , const AcGePoint3d &ptIns , const AcGeVector3d &vtDir , const bool &bVert ); 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; }; class CDTYG_XG_REVOLVE : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_REVOLVE) public: CDTYG_XG_REVOLVE(CWnd* pParent = NULL); virtual ~CDTYG_XG_REVOLVE(); virtual bool init(AecEqui::XPrimData *pData , AcDbObjectId idEqu , AcDbObjectId &hlid , const AcGePoint3d &ptIns , const AcGeVector3d &vtDir , const bool &bVert ); 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 = NULL); virtual ~CDTYG_XG_SWEEP(); virtual bool init(AecEqui::XPrimData *pData , AcDbObjectId idEqu , AcDbObjectId &hlid , const AcGePoint3d &ptIns , const AcGeVector3d &vtDir , const bool &bVert ); 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_LOFT : public CDTYG_XG { DECLARE_DYNAMIC(CDTYG_XG_LOFT) public: CDTYG_XG_LOFT(CWnd* pParent = NULL); virtual ~CDTYG_XG_LOFT(); virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); virtual bool init(AecEqui::XPrimData *pData , AcDbObjectId idEqu , AcDbObjectId &hlid , const AcGePoint3d &ptIns , const AcGeVector3d &vtDir , const bool &bVert ); 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; }; typedef Singleton g_equXGExtrud; typedef Singleton g_equXGRevolve; typedef Singleton g_equXGSweep; typedef Singleton g_equXGLoft;