⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entity.h

📁 Visual C++CAD应用程序开发技术书籍的源代码
💻 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<CObArray,CTriChip*>	m_TriList;

public:
	//constructor && destructor
	CSTLModel();
	virtual ~CSTLModel();

	//display
	void	Draw(COpenGLDC* pDC);

	//serialize
	virtual 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<CObArray,CEntity*> 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();
//	BOOL	GetBox(CBox3D& box);

	UINT		GetEntitySize();
	CEntity*	GetEntity(UINT i);
/*	CString		GetName();
	void		SetName(LPCTSTR name);
	*/
protected:
	virtual void	UpdateBox();
};
#endif // !defined(AFX_ENTITY_H__BE769D85_6C72_43F4_88FB_5521CA66FC8E__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -