X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_GeomTool.cxx;h=8423f6d314083b7a514fdf993d29ea673841e2cb;hb=a95289fabbb6fbf6f32c06207422c65aafd5bd65;hp=7517677a5653c00d5b6629d706ff6dccfe76a6f7;hpb=fdfbecc502e984321f7e660d64e6031df35e26c2;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_GeomTool.cxx b/src/HYDROData/HYDROData_GeomTool.cxx index 7517677a..8423f6d3 100644 --- a/src/HYDROData/HYDROData_GeomTool.cxx +++ b/src/HYDROData/HYDROData_GeomTool.cxx @@ -23,6 +23,7 @@ #include #include +#include #ifdef WIN32 #pragma warning ( disable: 4251 ) @@ -31,11 +32,15 @@ #include #include +#include +#include + #ifdef WIN32 #pragma warning ( default: 4251 ) #endif #include +#include #include static int _argc = 0; @@ -155,6 +160,41 @@ GEOM::GEOM_Object_ptr HYDROData_GeomTool::publishShapeInGEOM( return aGeomObj._retn(); } + +GEOM::GEOM_Object_ptr HYDROData_GeomTool::ExplodeShapeInGEOMandPublish( GEOM::GEOM_Gen_var theGeomEngine, + SALOMEDS::Study_ptr theStudy, + const TopoDS_Shape& theShape, + const NCollection_IndexedDataMap& aFacesToNameModif, + const QString& theName, + QString& theGeomObjEntry) +{ + GEOM::GEOM_Object_ptr aGeomObj = HYDROData_GeomTool::publishShapeInGEOM( theGeomEngine, theStudy, theShape, theName, theGeomObjEntry ); + + GEOM::GEOM_IShapesOperations_var anExpOp = theGeomEngine->GetIShapesOperations( theStudy->StudyId() ); + GEOM::ListOfGO* aFc = anExpOp->MakeExplode(aGeomObj, TopAbs_FACE, false); + + TopTools_MapOfShape mapShape; + + TopExp_Explorer exp (theShape, TopAbs_FACE); + QVector Names; + for (; exp.More(); exp.Next()) + { + const TopoDS_Shape& csh = exp.Current(); + if (mapShape.Add(csh)) + { + //listShape.Append(csh); + QString Qstr = aFacesToNameModif.FindFromKey(csh); + Names.push_back(Qstr); + } + } + + for (size_t i = 0; i < aFc->length(); i++) + GEOMBase::PublishSubObject(aFc->operator[](i), Names[i]); + + return aGeomObj; +} + + GEOM::GEOM_Object_ptr HYDROData_GeomTool::createFaceInGEOM( GEOM::GEOM_Gen_var theGeomEngine, SALOMEDS::Study_ptr theStudy, const int theWidth,