www.pudn.com > Visual C++ CAD应用程序开发技术源代码ch6.rar > Entity.h


// Entity.h: interface for the CEntity class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_ENTITY_H__BE769D85_6C72_43F4_88FB_5521CA66FC8E__INCLUDED_) 
#define AFX_ENTITY_H__BE769D85_6C72_43F4_88FB_5521CA66FC8E__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "..\inc\GeomCalc\cadbase.h" 
 
class COpenGLDC; 
class AFX_EXT_CLASS CEntity : public CObject   
{ 
protected: 
	BOOL		m_bModified; 
	CBox3D*		m_pBox; 
	UINT		m_id; 
	CString		m_name; 
	COLORREF	m_color; 
	BOOL		m_bVisible; 
	BOOL		m_bHighlight; 
 
public: 
	//constructor and destructor 
	CEntity(); 
	virtual ~CEntity(); 
 
	//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(); 
 
protected: 
	virtual		void UpdateBox()=0; 
}; 
 
 
//triangle chip 
class AFX_EXT_CLASS CTriChip:public CObject 
{ 
 
	DECLARE_SERIAL(CTriChip) 
public: 
	//attribs 
	CPoint3D  vex[3]; 
	CVector3D normal; 
 
public: 
	//constructor && destructor 
	CTriChip(); 
	CTriChip(const CPoint3D& v0,const CPoint3D& v1,const CPoint3D& v2,const CVector3D& norm); 
	virtual ~CTriChip(); 
 
	//display 
	virtual void Draw(COpenGLDC* pDC); 
 
	//serialize 
	virtual void Serialize(CArchive& ar); 
	 
	//operator 
	const CTriChip& operator=(const CTriChip&); 
 
protected: 
}; 
 
 
//tessellated model 
class AFX_EXT_CLASS CSTLModel: public CEntity 
{ 
	DECLARE_SERIAL(CSTLModel) 
//attribs 
public: 
	CTypedPtrArray	m_TriList; 
 
public: 
	//constructor && destructor 
	CSTLModel(); 
	virtual ~CSTLModel(); 
 
	//display 
	void	Draw(COpenGLDC* pDC); 
 
	//serialize 
	void	Serialize(CArchive& ar); 
 
	//		operation 
	const   CSTLModel& operator=(const CSTLModel&); 
	 
	void	Add(CTriChip* tri); 
	BOOL	LoadSTLFile(LPCTSTR file); 
	void	Clear(); 
 
	//attrib accessing 
	BOOL	IsEmpty(); 
 
protected: 
	virtual void UpdateBox(); 
}; 
 
class AFX_EXT_CLASS CPart : public CEntity 
{ 
//attribs 
protected: 
	CTypedPtrArray m_EntList; 
 
public: 
	//constructor && destructor 
	CPart(); 
	virtual ~CPart(); 
 
	//draw 
	virtual void Draw(COpenGLDC* pDC); 
 
	//serialize 
	virtual void Serialize(CArchive& ar); 
 
	//operation 
	void	AddEntity(CEntity* ent); 
	void	RemoveEntity(CEntity* ent); 
	void	RemoveAllEntity(); 
 
	//attrib accessing 
	BOOL	IsEmpty(); 
 
	UINT		GetEntitySize(); 
	CEntity*	GetEntity(UINT i); 
 
protected: 
	virtual void	UpdateBox(); 
}; 
#endif // !defined(AFX_ENTITY_H__BE769D85_6C72_43F4_88FB_5521CA66FC8E__INCLUDED_)