1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-05-06 10:36:12 +03:00
2012-03-05 19:23:40 +04:00

140 lines
3.9 KiB
C++
Executable File

#include "stdafx.h"
#include "Fonc.hxx"
//=======================================================================
//function : grid2surf
//purpose : grid2surf S FileName
// cf jm-oliva@paris3.matra-dtv.fr ( Merci JMO )
//=======================================================================
Standard_Boolean grid2surf(Standard_CString ShapeName,Handle(Geom_BSplineSurface)& S )
{
Handle(TColStd_HArray2OfReal) H;
Standard_Real xmin, ymin, Dx, Dy;
H = ReadRegularGrid(ShapeName, xmin, ymin, Dx, Dy);
GeomAPI_PointsToBSplineSurface MkSurf;
MkSurf.Interpolate(H->Array2(), xmin, Dx, ymin, Dy);
S = MkSurf.Surface();
return Standard_True;
}
//=======================================================================
//function : grid2surf
//purpose :
// cf jm-oliva@paris3.matra-dtv.fr ( Merci JMO )
//=======================================================================
Standard_Boolean grid2surf(const CString aCStringShapeName,
Handle(Geom_BSplineSurface)& S )
{
char tmp_char[256] ="";
strcpy_s(tmp_char,aCStringShapeName);
int i = 0, len = strlen(tmp_char);
while (i < len)
{
if (tmp_char[i] == '\\')
tmp_char[i] = '/';
i++;
}
Standard_CString aFileName = tmp_char;
return grid2surf(aFileName,S);
}
//=======================================================================
//function : ReadRegularGrid
//purpose :
// cf jm-oliva@paris3.matra-dtv.fr ( Merci JMO )
//=======================================================================
Handle(TColStd_HArray2OfReal) ReadRegularGrid(Standard_CString FileName,
Standard_Real& xmin,
Standard_Real& ymin,
Standard_Real& Deltax,
Standard_Real& Deltay)
{
Handle(TColStd_HArray2OfReal) H;
Standard_Integer R1 = 1, R2, C1 = 1, C2, R, C;
Standard_Real x, y, z;
xmin = ymin = 10000000;
FILE *fp = NULL;
fopen_s(&fp, FileName, "r");
if (fp)
{
fscanf_s(fp, "%d %d", &R2, &C2);
cout << "Reading Grid : ( " << R2 << " , " << C2 << " )." << endl;
H = new TColStd_HArray2OfReal(C1, C2, R1, R2);
Standard_Real FirstX;
Standard_Real FirstY;
for(R = R1; R <= R2; R++)
{
for(C = C1; C <= C2; C++)
{
fscanf_s(fp, "%lf %lf %lf ", &x, &y, &z);
if(R == 1 && C == 1)
{
FirstX=x;
FirstY=y;
}
// First step for X
if(R == 1 && C == 2)
Deltax = x - FirstX;
// First step for Y
if(R == 2 && C == 1)
Deltay = y - FirstY;
// H->SetValue(R, C, z);
H->SetValue(C, R, z);
if(x < xmin) xmin = x;
if(y < ymin) ymin = y;
}
}
cout << "Deltax = " << Deltax << endl;
cout << "Deltay = " << Deltay << endl;
fclose(fp);
}
else
{
cout << "cannot open file : " << FileName << endl;
}
return H;
}
//=======================================================================
//function : ReadRegularGrid
//purpose :
// cf jm-oliva@paris3.matra-dtv.fr ( Merci JMO )
//=======================================================================
Handle(TColStd_HArray2OfReal) ReadRegularGrid(const CString aCStringFileName,
Standard_Real& xmin,
Standard_Real& ymin,
Standard_Real& Deltax,
Standard_Real& Deltay)
{
char tmp_char[256] ="";
strcpy_s(tmp_char,aCStringFileName);
int i = 0, len = strlen(tmp_char);
while (i < len)
{
if (tmp_char[i] == '\\')
tmp_char[i] = '/';
i++;
}
Standard_CString aFileName = tmp_char;
Handle(TColStd_HArray2OfReal) H;
H = ReadRegularGrid(aFileName,xmin,ymin,Deltax,Deltay);
return H;
}