From 71c2daf85eb0d838bd6a9d78129b61f32b727f77 Mon Sep 17 00:00:00 2001 From: rnc Date: Mon, 3 Jun 2013 14:42:41 +0000 Subject: [PATCH] Hexotic size maps first working prototype (script only) --- src/DriverGMF/DriverGMF_Write.cxx | 101 +++++++++++++++++++----------- src/DriverGMF/DriverGMF_Write.hxx | 11 ++-- 2 files changed, 72 insertions(+), 40 deletions(-) diff --git a/src/DriverGMF/DriverGMF_Write.cxx b/src/DriverGMF/DriverGMF_Write.cxx index f0e2dc3f8..36b94df47 100644 --- a/src/DriverGMF/DriverGMF_Write.cxx +++ b/src/DriverGMF/DriverGMF_Write.cxx @@ -340,45 +340,76 @@ Driver_Mesh::Status DriverGMF_Write::Perform() return DRS_OK; } -void DriverGMF_Write::AddSizeMapSection(int meshID, int nbControlPoints) -{ +// void DriverGMF_Write::AddSizeMapSection(int meshID, int nbControlPoints) +// { +// // const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; +// // int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); +// int TypTab[] = {GmfSca}; +// GmfSetKwd(meshID, GmfSolAtVertices, nbControlPoints, 1, TypTab); +// // GmfCloseMesh(meshID); +// // return DRS_OK; +// } +// +// void DriverGMF_Write::AppendSize(int meshID, double size) +// { +// // const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; +// // int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); +// // int nbPoints = GmfStatKwd( meshID, GmfSolAtVertices); +// // GmfSetKwd( meshID, GmfSolAtVertices, nbPoints+1, 1, 1 ); +// double ValTab[] = {size}; +// GmfSetLin( meshID, GmfSolAtVertices, ValTab); +// // return DRS_OK; +// } +// +// int DriverGMF_Write::NbVerticesInFile() +// { +// int dim, version; +// // open the file +// int meshID = GmfOpenMesh( myFile.c_str(), GmfRead, &version, &dim ); +// int nbVertices = GmfStatKwd( meshID, GmfVertices); +// return nbVertices; +// } +// +// int DriverGMF_Write::OpenFileToWrite() +// { // const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; // int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); - int TypTab[] = {GmfSca}; - GmfSetKwd(meshID, GmfSolAtVertices, nbControlPoints, 1, TypTab); -// GmfCloseMesh(meshID); -// return DRS_OK; -} - -void DriverGMF_Write::AppendSize(int meshID, double size) -{ -// const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; -// int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); -// int nbPoints = GmfStatKwd( meshID, GmfSolAtVertices); -// GmfSetKwd( meshID, GmfSolAtVertices, nbPoints+1, 1, 1 ); - double ValTab[] = {size}; - GmfSetLin( meshID, GmfSolAtVertices, ValTab); -// return DRS_OK; -} - -int DriverGMF_Write::NbVerticesInFile() -{ - int dim, version; - // open the file - int meshID = GmfOpenMesh( myFile.c_str(), GmfRead, &version, &dim ); - int nbVertices = GmfStatKwd( meshID, GmfVertices); - return nbVertices; -} - -int DriverGMF_Write::OpenFileToWrite() +// return meshID; +// } +// +// void DriverGMF_Write::CloseFile( int meshID ) +// { +// GmfCloseMesh( meshID ); +// } + +void DriverGMF_Write::WriteSizeMapFromMesh( double size ) { + // Open file const int dim = 3, version = sizeof(long) == 4 ? 2 : 3; - int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); - return meshID; -} - -void DriverGMF_Write::CloseFile( int meshID ) -{ + int meshID = GmfOpenMesh( myFile.c_str(), GmfWrite, version, dim ); + + // Vertices Keyword + int iN = 0, nbNodes = myMesh->NbNodes(); + GmfSetKwd( meshID, GmfVertices, nbNodes ); + double xyz[3]; + SMDS_NodeIteratorPtr nodeIt = myMesh->nodesIterator(); + while ( nodeIt->more() ) + { + const SMDS_MeshNode* n = nodeIt->next(); + n->GetXYZ( xyz ); + GmfSetLin( meshID, GmfVertices, xyz[0], xyz[1], xyz[2], n->getshapeId() ); + } + + // solAtVertices Keyword + int TypTab[] = {GmfSca}; + GmfSetKwd(meshID, GmfSolAtVertices, nbNodes, 1, TypTab); + for ( int i=1; i<= nbNodes; i++) + { + double ValTab[] = {size}; + GmfSetLin( meshID, GmfSolAtVertices, ValTab); + } + + // Close File GmfCloseMesh( meshID ); } diff --git a/src/DriverGMF/DriverGMF_Write.hxx b/src/DriverGMF/DriverGMF_Write.hxx index e01f6b03a..35d845a43 100644 --- a/src/DriverGMF/DriverGMF_Write.hxx +++ b/src/DriverGMF/DriverGMF_Write.hxx @@ -49,11 +49,12 @@ public: } virtual Status Perform(); - void AddSizeMapSection( int meshID, int nbControlPoints ); - void AppendSize( int meshID, double size ); - int NbVerticesInFile(); - int OpenFileToWrite(); - void CloseFile( int ); + void WriteSizeMapFromMesh( double size ); +// void AddSizeMapSection( int meshID, int nbControlPoints ); +// void AppendSize( int meshID, double size ); +// int NbVerticesInFile(); +// int OpenFileToWrite(); +// void CloseFile( int ); private: -- 2.39.2