📄 pandl.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 + -