#include "DriverUNV_W_SMDS_Mesh.h"
#include "SMDS_Mesh.hxx"
+#include "SMESHDS_GroupBase.hxx"
+#include "SMESH_Group.hxx"
#include "SMDS_QuadraticEdge.hxx"
#include "SMDS_QuadraticFaceOfNodes.hxx"
#include "UNV2411_Structure.hxx"
#include "UNV2412_Structure.hxx"
+#include "UNV2417_Structure.hxx"
#include "UNV_Utilities.hxx"
using namespace std;
}
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){
INFOS("Follow exception was cought:\n\t"<<exc.what());
#define _INCLUDE_DRIVERUNV_W_SMDS_MESH
#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
{
public:
virtual Status Perform();
+
+ void SetGroups(const TGroupsMap& theGroupsMap) { myGroupsMap = theGroupsMap; }
+
+ private:
+ TGroupsMap myGroupsMap;
};
#include "UNV2417_Structure.hxx"
#include "UNV_Utilities.hxx"
+#include <fstream>
+#include <iomanip>
+
using namespace std;
using namespace UNV;
using namespace UNV2417;
#endif
-static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435"};
-#define NBGROUP 5
+static string _group_labels[] = {"2417", "2429", "2430", "2432", "2435", "2452"};
+#define NBGROUP 6
-//static string _label_dataset = "2435";
+static string _label_dataset = "2429";
void UNV2417::Read(std::ifstream& in_stream, TDataSet& theDataSet)
{
int aElType;
int aElId;
int aNum;
- for(int j=0; j < n_nodes; j++){
+ for(int j=0; j < n_nodes; j++){
in_stream>>aElType;
in_stream>>aElId;
- if (myGroupLabel.compare("2435") == 0) {
+ if ((myGroupLabel.compare("2435") == 0) || (myGroupLabel.compare("2452") == 0)) {
in_stream>>aTmp;
in_stream>>aTmp;
}
}
}
+
+
+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";
+}
void Read(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);
};
#include "DriverUNV_R_SMDS_Mesh.h"
#include "DriverUNV_W_SMDS_Mesh.h"
+#include "SMESH_Group.hxx"
using namespace std;
myWriter.SetFile(string(file));
myWriter.SetMesh(_myMeshDS);
myWriter.SetMeshId(_idDoc);
+ myWriter.SetGroups(_mapGroup);
myWriter.Perform();
}