mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-29 10:50:34 +05:00
Export UNV groups
This commit is contained in:
parent
82871fddd8
commit
ef7bb39238
@ -22,6 +22,8 @@
|
|||||||
#include "DriverUNV_W_SMDS_Mesh.h"
|
#include "DriverUNV_W_SMDS_Mesh.h"
|
||||||
|
|
||||||
#include "SMDS_Mesh.hxx"
|
#include "SMDS_Mesh.hxx"
|
||||||
|
#include "SMESHDS_GroupBase.hxx"
|
||||||
|
#include "SMESH_Group.hxx"
|
||||||
#include "SMDS_QuadraticEdge.hxx"
|
#include "SMDS_QuadraticEdge.hxx"
|
||||||
#include "SMDS_QuadraticFaceOfNodes.hxx"
|
#include "SMDS_QuadraticFaceOfNodes.hxx"
|
||||||
|
|
||||||
@ -29,6 +31,7 @@
|
|||||||
|
|
||||||
#include "UNV2411_Structure.hxx"
|
#include "UNV2411_Structure.hxx"
|
||||||
#include "UNV2412_Structure.hxx"
|
#include "UNV2412_Structure.hxx"
|
||||||
|
#include "UNV2417_Structure.hxx"
|
||||||
#include "UNV_Utilities.hxx"
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -221,6 +224,39 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
|
|||||||
}
|
}
|
||||||
UNV2412::Write(out_stream,aDataSet2412);
|
UNV2412::Write(out_stream,aDataSet2412);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
using namespace UNV2417;
|
||||||
|
TDataSet aDataSet2417;
|
||||||
|
for ( TGroupsMap::iterator it = myGroupsMap.begin(); it != myGroupsMap.end(); it++ ) {
|
||||||
|
SMESH_Group* aGroup = it->second;
|
||||||
|
SMESHDS_GroupBase* aGroupDS = aGroup->GetGroupDS();
|
||||||
|
if ( aGroupDS ) {
|
||||||
|
TRecord aRec;
|
||||||
|
aRec.GroupName = aGroup->GetName();
|
||||||
|
int i;
|
||||||
|
SMDS_ElemIteratorPtr aIter = aGroupDS->GetElements();
|
||||||
|
if (aGroupDS->GetType() == SMDSAbs_Node) {
|
||||||
|
aRec.NodeList.resize(aGroupDS->Extent());
|
||||||
|
i = 0;
|
||||||
|
while (aIter->more()) {
|
||||||
|
const SMDS_MeshElement* aElem = aIter->next();
|
||||||
|
aRec.NodeList[i] = aElem->GetID();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
aRec.ElementList.resize(aGroupDS->Extent());
|
||||||
|
i = 0;
|
||||||
|
while (aIter->more()) {
|
||||||
|
const SMDS_MeshElement* aElem = aIter->next();
|
||||||
|
aRec.ElementList[i] = aElem->GetID();
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aDataSet2417.insert(TDataSet::value_type(aGroupDS->GetID(), aRec));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UNV2417::Write(out_stream,aDataSet2417);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch(const std::exception& exc){
|
catch(const std::exception& exc){
|
||||||
INFOS("Follow exception was cought:\n\t"<<exc.what());
|
INFOS("Follow exception was cought:\n\t"<<exc.what());
|
||||||
|
@ -21,11 +21,21 @@
|
|||||||
#define _INCLUDE_DRIVERUNV_W_SMDS_MESH
|
#define _INCLUDE_DRIVERUNV_W_SMDS_MESH
|
||||||
|
|
||||||
#include "Driver_SMDS_Mesh.h"
|
#include "Driver_SMDS_Mesh.h"
|
||||||
|
#include "SMESH_Group.hxx"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
|
||||||
|
typedef std::map<int, SMESH_Group*> TGroupsMap;
|
||||||
|
|
||||||
class DriverUNV_W_SMDS_Mesh: public Driver_SMDS_Mesh
|
class DriverUNV_W_SMDS_Mesh: public Driver_SMDS_Mesh
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual Status Perform();
|
virtual Status Perform();
|
||||||
|
|
||||||
|
void SetGroups(const TGroupsMap& theGroupsMap) { myGroupsMap = theGroupsMap; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
TGroupsMap myGroupsMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
#include "UNV2417_Structure.hxx"
|
#include "UNV2417_Structure.hxx"
|
||||||
#include "UNV_Utilities.hxx"
|
#include "UNV_Utilities.hxx"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace UNV;
|
using namespace UNV;
|
||||||
using namespace UNV2417;
|
using namespace UNV2417;
|
||||||
@ -12,10 +15,10 @@ static int MYDEBUG = 0;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435"};
|
static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435", "2452"};
|
||||||
#define NBGROUP 5
|
#define NBGROUP 6
|
||||||
|
|
||||||
//static string _label_dataset = "2435";
|
static string _label_dataset = "2429";
|
||||||
|
|
||||||
void UNV2417::Read(std::ifstream& in_stream, TDataSet& theDataSet)
|
void UNV2417::Read(std::ifstream& in_stream, TDataSet& theDataSet)
|
||||||
{
|
{
|
||||||
@ -72,10 +75,10 @@ void UNV2417::ReadGroup(const std::string& myGroupLabel, std::ifstream& in_strea
|
|||||||
int aElType;
|
int aElType;
|
||||||
int aElId;
|
int aElId;
|
||||||
int aNum;
|
int aNum;
|
||||||
for(int j=0; j < n_nodes; j++){
|
for(int j=0; j < n_nodes; j++){
|
||||||
in_stream>>aElType;
|
in_stream>>aElType;
|
||||||
in_stream>>aElId;
|
in_stream>>aElId;
|
||||||
if (myGroupLabel.compare("2435") == 0) {
|
if ((myGroupLabel.compare("2435") == 0) || (myGroupLabel.compare("2452") == 0)) {
|
||||||
in_stream>>aTmp;
|
in_stream>>aTmp;
|
||||||
in_stream>>aTmp;
|
in_stream>>aTmp;
|
||||||
}
|
}
|
||||||
@ -96,3 +99,62 @@ void UNV2417::ReadGroup(const std::string& myGroupLabel, std::ifstream& in_strea
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UNV2417::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
|
||||||
|
{
|
||||||
|
if(!out_stream.good())
|
||||||
|
EXCEPTION(runtime_error,"ERROR: Output file not good.");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write beginning of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
out_stream<<" "<<_label_dataset<<"\n";
|
||||||
|
|
||||||
|
TDataSet::const_iterator anIter = theDataSet.begin();
|
||||||
|
for(; anIter != theDataSet.end(); anIter++){
|
||||||
|
const TGroupId& aLabel = anIter->first;
|
||||||
|
const TRecord& aRec = anIter->second;
|
||||||
|
int aNbNodes = aRec.NodeList.size();
|
||||||
|
int aNbElements = aRec.ElementList.size();
|
||||||
|
int aNbRecords = aNbNodes + aNbElements;
|
||||||
|
|
||||||
|
out_stream<<std::setw(10)<<aLabel; /* group ID */
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<0;
|
||||||
|
out_stream<<std::setw(10)<<aNbRecords<<std::endl;
|
||||||
|
|
||||||
|
out_stream<<aRec.GroupName<<std::endl;
|
||||||
|
int aRow = 0;
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < aNbNodes; i++) {
|
||||||
|
if (aRow == 4) {
|
||||||
|
out_stream<<std::endl;
|
||||||
|
aRow = 0;
|
||||||
|
}
|
||||||
|
out_stream<<std::setw(10)<<7;
|
||||||
|
out_stream<<std::setw(10)<<aRec.NodeList[i];
|
||||||
|
aRow++;
|
||||||
|
}
|
||||||
|
for (i = 0; i < aNbElements; i++) {
|
||||||
|
if (aRow == 4) {
|
||||||
|
out_stream<<std::endl;
|
||||||
|
aRow = 0;
|
||||||
|
}
|
||||||
|
out_stream<<std::setw(10)<<8;
|
||||||
|
out_stream<<std::setw(10)<<aRec.ElementList[i];
|
||||||
|
aRow++;
|
||||||
|
}
|
||||||
|
out_stream<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write end of dataset
|
||||||
|
*/
|
||||||
|
out_stream<<" -1\n";
|
||||||
|
}
|
||||||
|
@ -41,6 +41,8 @@ namespace UNV2417{
|
|||||||
|
|
||||||
void Read(std::ifstream& in_stream, TDataSet& theDataSet);
|
void Read(std::ifstream& in_stream, TDataSet& theDataSet);
|
||||||
void ReadGroup(const std::string& myGroupLabel, std::ifstream& in_stream, TDataSet& theDataSet);
|
void ReadGroup(const std::string& myGroupLabel, std::ifstream& in_stream, TDataSet& theDataSet);
|
||||||
|
|
||||||
|
void Write(std::ofstream& out_stream, const TDataSet& theDataSet);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "DriverUNV_R_SMDS_Mesh.h"
|
#include "DriverUNV_R_SMDS_Mesh.h"
|
||||||
#include "DriverUNV_W_SMDS_Mesh.h"
|
#include "DriverUNV_W_SMDS_Mesh.h"
|
||||||
|
#include "SMESH_Group.hxx"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -948,6 +948,7 @@ void SMESH_Mesh::ExportUNV(const char *file) throw(SALOME_Exception)
|
|||||||
myWriter.SetFile(string(file));
|
myWriter.SetFile(string(file));
|
||||||
myWriter.SetMesh(_myMeshDS);
|
myWriter.SetMesh(_myMeshDS);
|
||||||
myWriter.SetMeshId(_idDoc);
|
myWriter.SetMeshId(_idDoc);
|
||||||
|
myWriter.SetGroups(_mapGroup);
|
||||||
myWriter.Perform();
|
myWriter.Perform();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user