X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPlugins%2FMEDReader%2FIO%2FvtkExtractGroup.cxx;h=785ff9e54b33b0cdd2ffc6e04b305fec8fb2e67e;hb=73bc90915c1efba1405629537963f6db66987065;hp=c2d3b1551df11a91544e6174a7d43a7029e88835;hpb=d170abf6cb7fa44827057ce004760d1ef45d9f2d;p=modules%2Fparavis.git diff --git a/src/Plugins/MEDReader/IO/vtkExtractGroup.cxx b/src/Plugins/MEDReader/IO/vtkExtractGroup.cxx index c2d3b155..785ff9e5 100644 --- a/src/Plugins/MEDReader/IO/vtkExtractGroup.cxx +++ b/src/Plugins/MEDReader/IO/vtkExtractGroup.cxx @@ -3,7 +3,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -58,8 +58,6 @@ vtkStandardNewMacro(vtkExtractGroup); -vtkCxxSetObjectMacro(vtkExtractGroup, SIL, vtkMutableDirectedGraph); - /////////////////// class ExtractGroupStatus @@ -111,6 +109,7 @@ class vtkExtractGroup::vtkExtractGroupInternal public: void loadFrom(vtkMutableDirectedGraph *sil); int getNumberOfEntries() const; + const char *getMeshName() const; const char *getKeyOfEntry(int i) const; bool getStatusOfEntryStr(const char *entry) const; void setStatusOfEntryStr(const char *entry, bool status); @@ -125,6 +124,7 @@ private: private: std::vector _groups; std::vector _fams; + std::string _mesh_name; }; const char ExtractGroupGrp::START[]="GRP_"; @@ -180,6 +180,11 @@ bool vtkExtractGroup::vtkExtractGroupInternal::IsInformationOK(vtkInformation *i return false; } +const char *vtkExtractGroup::vtkExtractGroupInternal::getMeshName() const +{ + return this->_mesh_name.c_str(); +} + void vtkExtractGroup::vtkExtractGroupInternal::loadFrom(vtkMutableDirectedGraph *sil) { std::vector oldGrps(_groups); _groups.clear(); @@ -207,6 +212,7 @@ void vtkExtractGroup::vtkExtractGroupInternal::loadFrom(vtkMutableDirectedGraph { vtkIdType id1(it0->Next()); std::string meshName((const char *)verticesNames2->GetValue(id1)); + this->_mesh_name=meshName; vtkAdjacentVertexIterator *it1(vtkAdjacentVertexIterator::New()); sil->GetAdjacentVertices(id1,it1); vtkIdType idZeGrps(it1->Next());//zeGroups @@ -419,6 +425,7 @@ void vtkExtractGroup::SetInsideOut(int val) int vtkExtractGroup::RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) { + vtkUnstructuredGridAlgorithm::RequestInformation(request,inputVector,outputVector); try { //std::cerr << "########################################## vtkExtractGroup::RequestInformation ##########################################" << std::endl; @@ -453,6 +460,16 @@ int vtkExtractGroup::RequestInformation(vtkInformation *request, vtkInformationV return 1; } +/*! + * Do not use vtkCxxSetObjectMacro macro because input mdg comes from an already managed in the pipeline just a ref on it. + */ +void vtkExtractGroup::SetSIL(vtkMutableDirectedGraph *mdg) +{ + if(this->SIL==mdg) + return ; + this->SIL=mdg; +} + template vtkDataSet *FilterFamilies(vtkDataSet *input, const std::set& idsToKeep, bool insideOut, const char *arrNameOfFamilyField, const char *associationForThreshold, bool& catchAll, bool& catchSmth) @@ -604,7 +621,7 @@ int vtkExtractGroup::RequestData(vtkInformation *request, vtkInformationVector * } else { - vtkDataSet *tryOnNode(FilterFamilies(tryOnCell,idsToKeep,this->InsideOut, + vtkDataSet *tryOnNode(FilterFamilies(input,idsToKeep,this->InsideOut, MEDFileFieldRepresentationLeavesArrays::FAMILY_ID_NODE_NAME,"vtkDataObject::FIELD_ASSOCIATION_POINTS",catchAll,catchSmth)); if(tryOnNode) { @@ -671,3 +688,8 @@ void vtkExtractGroup::SetGroupsFlagsStatus(const char *name, int status) this->Modified(); //this->Internal->printMySelf(std::cerr); } + +const char *vtkExtractGroup::GetMeshName() +{ + return this->Internal->getMeshName(); +}