|
//////////////////////////////////////
//CEntity
class CEntity : public CObject
{
public:
CEntity();
virtual ~CEntity();
protected:
BOOL m_bModified;
CBox3D* m_pBox;
UINT m_id;
CString m_name;
COLORREF m_color;
BOOL m_bVisible;
BOOL m_bHighlight;
public:
enum Type {
kSTLModel = 0,
kPart,
kBezierCurve,
kBezierSurface,
kNurbsCurve,
kNurbsSurface,
kLine,
kPolyline,
kArc,
};
public:
//display
virtual void Draw(COpenGLDC* pDC) = 0;
//serialize
virtual void Serialize(CArchive& ar);
//attrib accessing
BOOL GetBox(CBox3D& box);
void SetID(UINT nID);
UINT GetID();
void SetName(LPCTSTR name);
CString GetName();
void SetColor(COLORREF color);
COLORREF GetColor();
void SetVisible(BOOL bVisible);
BOOL IsVisible();
void SetHighlight(BOOL bHighlight);
BOOL IsHighlight();
//get entity type
virtual CEntity::Type type() const = 0;
protected:
virtual void UpdateBox() = 0;
};
//////////////////////////////////////////////////////////////////////////////////////////
///CLine
class CLine : public CEntity
{
DECLARE_SERIAL(CLine)
protected:
CPoint3D m_pointStart;
CPoint3D m_pointEnd;
int m_width;
public:
//////////////////////////////////////////////////////////////////////////////////////
//构造函数和析构造函数
CLine();
CLine(CPoint3D pointStart, CPoint3D pointEnd,int width);
virtual ~CLine();
//////////////////////////////////////////////////////////////////////////////////////
//设置和清除函数
void clear();
void set(CPoint3D pointStart, CPoint3D pointEnd, int width);
//////////////////////////////////////////////////////////////////////////////////////
//显示和保存函数
virtual void Draw(COpenGLDC* pDC);
virtual void Serialize(CArchive& ar);
//////////////////////////////////////////////////////////////////////////////////////
//判断函数
BOOL IsEmpty() const;
virtual CEntity::Type type() const;
protected:
//////////////////////////////////////////////////////////////////////////////////////
//内部更新m_pBox函数
virtual void UpdateBox();
};
|
|