www.pudn.com > roll.rar > PostFigure.cpp


// PostFigure.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "roll.h" 
#include "PostFigure.h" 
#include "comnfun.h" 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CPostFigure 
CPostFigure::CPostFigure() 
{ 
	bError=TRUE; 
	xp=yp=xpp=ypp=NULL; 
	for(short i=0;i<8;i++) codepe[i]=NULL; 
	ExitFileName=_T(""); 
} 
 
BOOL CPostFigure::OpenBIEMDatatFile(CString FileName) 
{ 
	int i,ti; 
	short pe[8],numnode,numload; 
	char buf[280]; 
	float *xc,*yc,*zc; 
	float *dx,*dy,*dz; 
	if(ExitFileName==FileName) 
		return TRUE; 
	else ExitFileName=FileName; 
	DeAlloc(); 
	bError=TRUE; 
	CStdioFile file; 
	if(!file.Open(FileName, 
		CFile::modeRead|CFile::typeText)) return !bError; 
	file.ReadString(buf,280); 
	file.ReadString(buf,280); 
	sscanf(buf," NP=%hd NE=%hd",&numnode,&numelem); 
	if(numnode<4||numelem<1) return !bError; 
	if( !Alloc( numnode ) ) { 
		file.Close(); 
		return  !bError; 
	} 
	xc=new float[numnode]; 
	yc=new float[numnode]; 
	zc=new float[numnode]; 
	dx=new float[numnode]; 
	dy=new float[numnode]; 
	dz=new float[numnode]; 
	if(xc==NULL||yc==NULL||zc==NULL||dx==NULL||dy==NULL||dz==NULL) { 
		if(xc) delete[] xc; 
		if(yc) delete[] yc; 
		if(zc) delete[] zc; 
		if(dx) delete[] dx; 
		if(dy) delete[] dy; 
		if(dz) delete[] dz; 
		file.Close(); 
		return  !bError; 
	} 
	for(i=0;i<7;i++) 
		file.ReadString(buf,280); 
	for(i=0;inumload) numload=kl; 
		if(km>numload) numload=km; 
		if(kn>numload) numload=kn; 
	} while(tixpp[0]?xp[0]:xpp[0]; 
	ymin=yp[0]ypp[0]?yp[0]:ypp[0]; 
	for(i=1;ixmax) xmax=xp[i]; 
		if(yp[i]ymax) ymax=yp[i]; 
		xpp[i] = (xc[i]+dx[i]+zc[i]+dz[i])*0.707107f; 
		ypp[i] = (xc[i]+dx[i]-zc[i]-dz[i])*0.408248f+(yc[i]+dy[i])*0.816597f; 
		if(xpp[i]xmax) xmax=xpp[i]; 
		if(ypp[i]ymax) ymax=ypp[i]; 
	} 
	delete[] xc; 
	delete[] yc; 
	delete[] zc; 
	delete[] dx; 
	delete[] dy; 
	delete[] dz; 
	bError=FALSE; 
	float x=0.5f*(xmax+xmin); 
	float y=0.5f*(ymax+ymin); 
	directx[0] = 0.707107f; 
	directx[1] = 0.408248f; 
	directy[0] = 0.0f; 
	directy[1] = 0.816597f; 
	directz[0] = 0.707107f; 
	directz[1] = -0.408248f; 
	for(i=0;i