X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_GeomTool.cxx;h=8423f6d314083b7a514fdf993d29ea673841e2cb;hb=a95289fabbb6fbf6f32c06207422c65aafd5bd65;hp=037306f3534424718fed8c96e4d5d0a5d14f3572;hpb=557f5f91d30a5fae83a018a79eeb445c8c51ec3d;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_GeomTool.cxx b/src/HYDROData/HYDROData_GeomTool.cxx index 037306f3..8423f6d3 100644 --- a/src/HYDROData/HYDROData_GeomTool.cxx +++ b/src/HYDROData/HYDROData_GeomTool.cxx @@ -23,11 +23,24 @@ #include #include +#include + +#ifdef WIN32 + #pragma warning ( disable: 4251 ) +#endif #include #include +#include +#include + +#ifdef WIN32 + #pragma warning ( default: 4251 ) +#endif + #include +#include #include static int _argc = 0; @@ -147,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,