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

📄 pandl.cpp

📁 自己毕业时做的程序
💻 CPP
字号:
// Entity.cpp: implementation of the CEntity class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "PandL.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPointtest::CPointtest()
{
}



CPointtest::~CPointtest()
{
}

//////////////////////////

//class  apoint



APoint::APoint()
{
}

APoint::~APoint()
{
	Clear();
}

void APoint::Add(CPointtest* pt3)
{
	m_PointList.Add(pt3);
}



//load with data File
BOOL APoint::LoadSTLFile(LPCTSTR stlfile)
{
	FILE* file;
	int i, j;
	i=0;j=0;
	int type=0;
	if((file = fopen(stlfile, "r")) == NULL)
		return FALSE;

	char str[80];
	CPointtest* Point = NULL;

	double nof[4];
    for(i=0;i<4;i++)
	nof[i]=0;
	
    fscanf(file,"%*s %*s %*s %*s  %lf %*s %*s %*s %*s  %lf",&nof[0],&nof[1]); 
 
    while(fscanf(file,"%s",str)==1){
	     if(strncmp(str,"line",4)==0){

          fscanf(file,"%lf  %*s %lf",&nof[2],&nof[3]); 

	     for(i=0;i<nof[3];i++)
		 {	
	    	Point = new CPointtest();
		    fscanf(file,"%lf %lf %lf",&(Point->pt3.x),&(Point->pt3.y),&(Point->pt3.z));
    		Add(Point);
		 }
		 }
	}

/*	char title[80];
	if(GetFileTitle(stlfile,title,80)==0){
		SetName(title);
	}*/

	return TRUE;
}


void	APoint::Clear()
{
	for(int i=0;i<m_PointList.GetSize();i++)
		delete m_PointList[i];
	m_PointList.RemoveAll();

}

BOOL	APoint::IsEmpty()
{
	return m_PointList.GetSize() == 0;
}


//////////////////////////////////////////
//class CLine
CLine::CLine()
{
}


CLine::~CLine()
{
}

//////////////////////////////////////////
//class  CALine



CALine::CALine()
{
}

CALine::~CALine()
{
	Clear();
}

void CALine::Add(CLine* line)
{
	m_LineList2.Add(line);
}


//load with STL File
BOOL CALine::LoadTXTFile(LPCTSTR stlfile)
{
	FILE* file;
	int i, j;
	i=0;j=0;
	int type=0;
	if((file = fopen(stlfile, "r")) == NULL)
		return FALSE;

	char str[80];	
	CPointtest* Point = NULL;
    CLine* line=NULL;

	double nof[4];
    for(i=0;i<4;i++)
	nof[i]=0;
	
    fscanf(file,"%*s %*s %*s %*s  %lf %*s %*s %*s %*s  %lf",&nof[0],&nof[1]); 
 
	
      while(fscanf(file,"%s",str)==1){
//	for(int num=0;num<nof[0];num++)
//	{
	     if(strncmp(str,"line",4)==0){

          fscanf(file,"%lf  %*s %lf",&nof[2],&nof[3]); 
          line=new CLine();
	     for(i=0;i<nof[3];i++)
		 {	
	    	Point = new CPointtest();
		    fscanf(file,"%lf %lf %lf",&(Point->pt3.x),&(Point->pt3.y),&(Point->pt3.z));
    		line->m_PointList2.Add(Point);
		 }
		 Add(line);
		 }
//	}
	}   

	return TRUE;
}
void	CALine::Clear()
{
	for(int i=0;i<m_LineList2.GetSize();i++)
		delete m_LineList2[i];
	m_LineList2.RemoveAll();

}
void CALine::Del(int index)
{
//   delete m_LineList2[index];
   m_LineList2.RemoveAt(index);
}

BOOL	CALine::IsEmpty()
{
	return m_LineList2.GetSize() == 0;
}



///////////////////////////
//class tri chip 

CTriChip::CTriChip()
{
}

CTriChip::CTriChip(const POINT3D& v0,const POINT3D& v1,const POINT3D& v2,const VECTOR3D& nor)
{
	vex[0] = v0;
	vex[1] = v1;
	vex[2] = v2;
	normal = nor;
}

CTriChip::~CTriChip()
{
}

VECTOR3D CTriChip::ComputerVector(const POINT3D& v0,const POINT3D& v1,const POINT3D& v2)
{
	double v31[3],v32[3];
	double n;

	v31[0]=v0.x-v2.x;
	v31[1]=v0.y-v2.y;
	v31[2]=v0.z-v2.z;

	v32[0]=v1.x-v2.x;
	v32[1]=v1.y-v2.y;
	v32[2]=v1.z-v2.z;




	VECTOR3D vector;

	vector.dx=v31[1]*v32[2]-v32[1]*v31[2];
	vector.dy=v31[2]*v32[0]-v32[2]*v31[0];
	vector.dz=v31[0]*v32[1]-v32[0]*v31[1];

	n=sqrt(vector.dx*vector.dx+vector.dy*vector.dy+vector.dz*vector.dz);
	vector.dx=vector.dx/n;
	vector.dy=vector.dy/n;
	vector.dz=vector.dz/n;

	return vector;

}

const CTriChip& CTriChip::operator=(const CTriChip& tri)
{
	normal = tri.normal;
	for(int i=0;i<3;i++)
		vex[i] = tri.vex[i];
	return *this;
}



//////////////////////////////////////////
//class  CSTLModel


CSTLModel::CSTLModel()
{
}

CSTLModel::~CSTLModel()
{
	Clear();
}

void CSTLModel::Add(CTriChip* tri)
{
	m_TriList.Add(tri);
}



//load with STL File
BOOL CSTLModel::LoadSTLFile(LPCTSTR stlfile)
{
	FILE* file;
	int type=0;
	if((file = fopen(stlfile, "r")) == NULL)
		return FALSE;

	char str[80];
	CTriChip* tri = NULL;
	while(fscanf(file,"%s",str)==1){
		if(strncmp(str,"normal",6)==0){
			tri = new CTriChip();
			fscanf(file,"%lf %lf %lf",&(tri->normal.dx),&(tri->normal.dy),&(tri->normal.dz));
			fscanf(file,"%*s %*s");
			fscanf(file,"%*s %lf %lf %lf",&(tri->vex[0].x),&(tri->vex[0].y),&(tri->vex[0].z));
			fscanf(file,"%*s %lf %lf %lf",&(tri->vex[1].x),&(tri->vex[1].y),&(tri->vex[1].z));
			fscanf(file,"%*s %lf %lf %lf",&(tri->vex[2].x),&(tri->vex[2].y),&(tri->vex[2].z));
			Add(tri);
		}
	}

/*	char title[80];
	if(GetFileTitle(stlfile,title,80)==0){
		SetName(title);
	}*/


	return TRUE;
}


void	CSTLModel::Clear()
{
	for(int i=0;i<m_TriList.GetSize();i++)
		delete m_TriList[i];
	m_TriList.RemoveAll();

//	m_bModified = TRUE;
}

BOOL	CSTLModel::IsEmpty()
{
	return m_TriList.GetSize() == 0;
}

⌨️ 快捷键说明

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