EgtGeomKernel :

- cambiato Load, con uso di NgeReader.
This commit is contained in:
Dario Sassi
2014-04-15 06:48:39 +00:00
parent f956fd20cc
commit 2cbdfc1db9
33 changed files with 492 additions and 330 deletions
+22 -40
View File
@@ -16,6 +16,7 @@
#include "SurfTriMesh.h"
#include "GeoObjFactory.h"
#include "NgeWriter.h"
#include "NgeReader.h"
#include "Triangulate.h"
#include "\EgtDev\Include\EGkStringUtils3d.h"
#include "\EgtDev\Include\EGkPolyLine.h"
@@ -370,31 +371,22 @@ SurfTriMesh::Save( NgeWriter& ngeOut) const
//----------------------------------------------------------------------------
bool
SurfTriMesh::Load( Scanner& TheScanner)
SurfTriMesh::Load( NgeReader& ngeIn)
{
// imposto ricalcolo della grafica
m_OGrMgr.Reset() ;
// leggo la prossima linea
string sLine ;
if ( ! TheScanner.GetLine( sLine))
return false ;
// la divido in parametri
STRVECTOR vsParams ;
Tokenize( sLine, ";", vsParams) ;
// 3 parametri : flag chiuso num vertici e num tria
if ( vsParams.size() != 3)
return false ;
// leggo la prossima linea ( 3 parametri : flag chiuso num vertici e num tria)
// recupero il flag
bool bClosed ;
if ( ! FromString( vsParams[0], bClosed))
if ( ! ngeIn.ReadBool( bClosed, ";"))
return false ;
// recupero il numero di vertici
int nNumVert ;
if ( ! FromString( vsParams[1], nNumVert))
if ( ! ngeIn.ReadInt( nNumVert, ";"))
return false ;
// recupero il numero di triangoli
int nNumTria ;
if ( ! FromString( vsParams[2], nNumTria))
if ( ! ngeIn.ReadInt( nNumTria, ";", true))
return false ;
// inizializzo la superficie TriMesh
if ( ! Init( nNumVert, nNumTria))
@@ -404,40 +396,30 @@ SurfTriMesh::Load( Scanner& TheScanner)
int nInd ;
StmVert vV ;
for ( int i = 0 ; i < nNumVert ; ++ i) {
// leggo la prossima linea
if ( ! TheScanner.GetLine( sLine))
return false ;
// la divido in parametri
Tokenize( sLine, ";", vsParams) ;
// 4 parametri : Indice, Punto, IdTria, Flag
if ( vsParams.size() != 4)
return false ;
// leggo la prossima linea ( 4 parametri : Indice, Punto, IdTria, Flag)
// la interpreto e imposto il vertice
if ( ! FromString( vsParams[0], nInd) ||
! FromString( vsParams[1], vV.ptP) ||
! FromString( vsParams[2], vV.nIdTria) ||
! FromString( vsParams[3], vV.nFlag) ||
if ( ! ngeIn.ReadInt( nInd, ";") ||
! ngeIn.ReadPoint( vV.ptP, ";") ||
! ngeIn.ReadInt( vV.nIdTria, ";") ||
! ngeIn.ReadInt( vV.nFlag, ";", true) ||
! SetVertex( nInd, vV))
return false ;
}
// lettura dei triangoli
StmTria tT ;
for ( int i = 0 ; i < nNumTria ; ++ i) {
// leggo la prossima linea
if ( ! TheScanner.GetLine( sLine))
return false ;
// la divido in parametri
Tokenize( sLine, ";", vsParams) ;
// 6 parametri : Indice, IdVertici, IdAdiacenze, Normale, TFlag, EFlag
if ( vsParams.size() != 6)
return false ;
// leggo la prossima linea ( 6 parametri : Indice, IdVertici, IdAdiacenze, Normale, TFlag, EFlag)
// la interpreto e imposto il vertice
if ( ! FromString( vsParams[0], nInd) ||
! FromString( vsParams[1], tT.nIdVert) ||
! FromString( vsParams[2], tT.nIdAdjac) ||
! FromString( vsParams[3], tT.vtN) ||
! FromString( vsParams[4], tT.nTFlag) ||
! FromString( vsParams[5], tT.nEFlag) ||
if ( ! ngeIn.ReadInt( nInd, ";") ||
! ngeIn.ReadInt( tT.nIdVert[0], ",") ||
! ngeIn.ReadInt( tT.nIdVert[1], ",") ||
! ngeIn.ReadInt( tT.nIdVert[2], ";") ||
! ngeIn.ReadInt( tT.nIdAdjac[0], ",") ||
! ngeIn.ReadInt( tT.nIdAdjac[1], ",") ||
! ngeIn.ReadInt( tT.nIdAdjac[2], ";") ||
! ngeIn.ReadVector( tT.vtN, ";") ||
! ngeIn.ReadInt( tT.nTFlag, ";") ||
! ngeIn.ReadInt( tT.nEFlag, ";", true) ||
! SetTriangle( nInd, tT))
return false ;
}