169 lines
4.3 KiB
C++
169 lines
4.3 KiB
C++
#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<AcDbObjectId> 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<double> m_heights;
|
|
std::vector<CString> 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<CDTYG_XG_EXTRUD> g_XGExtrud;
|
|
typedef Singleton<CDTYG_XG_REVOLVE> g_XGRevolve;
|
|
typedef Singleton<CDTYG_XG_CUT> g_XGCut;
|
|
typedef Singleton<CDTYG_XG_SWEEP> g_XGSweep;
|
|
typedef Singleton<CDTYG_XG_LOFT> g_XGLoft;
|
|
typedef Singleton<CDTYG_XG_BDPipeBase> g_XGBDPipeBase;
|