X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_Tools.cpp;h=e5bc7a30829b394cd07d8a7159c7a814285b77b0;hb=b73fb7468bea81901dbeed8e229d742f788ec282;hp=32d60c7805dcf49a17c1585c610ce841c1bbf259;hpb=a94fc319f2aa64b43c9a73b5ff7063923648faec;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_Tools.cpp b/src/XGUI/XGUI_Tools.cpp index 32d60c780..e5bc7a308 100644 --- a/src/XGUI/XGUI_Tools.cpp +++ b/src/XGUI/XGUI_Tools.cpp @@ -39,6 +39,9 @@ #include #include +#include + +#include #include #include @@ -169,9 +172,66 @@ bool canRename(const ObjectPtr& theObject, const QString& theName) XGUI_Workshop* workshop(ModuleBase_IWorkshop* theWorkshop) { XGUI_ModuleConnector* aConnector = dynamic_cast(theWorkshop); - if (aConnector) - return aConnector->workshop(); - return 0; + return aConnector ? aConnector->workshop() : 0; +} + + +//******************************************************************** +QString generateName(const ModuleBase_ViewerPrsPtr& thePrs) +{ + if (!thePrs.get() || !thePrs->object().get()) + return "Undefined"; + + GeomShapePtr aContext; + ObjectPtr anObject = thePrs->object(); + ResultPtr aResult = std::dynamic_pointer_cast(anObject); + if (aResult.get()) + aContext = aResult->shape(); + else { + // TODO if there is this case + } + + QString aName = anObject->data()->name().c_str(); + if (aContext.get()) { + GeomShapePtr aSubShape(new GeomAPI_Shape()); + TopoDS_Shape aShape = ModuleBase_Tools::getSelectedShape(thePrs); + aSubShape->setImpl(new TopoDS_Shape(aShape)); + if (!aSubShape->isEqual(aContext)) { + QString aTypeName; + switch (aShape.ShapeType()) { + case TopAbs_COMPOUND: + aTypeName = "compound"; + break; + case TopAbs_COMPSOLID: + aTypeName = "compsolid"; + break; + case TopAbs_SOLID: + aTypeName = "solid"; + break; + case TopAbs_SHELL: + aTypeName = "shell"; + break; + case TopAbs_FACE: + aTypeName = "face"; + break; + case TopAbs_WIRE: + aTypeName = "wire"; + break; + case TopAbs_EDGE: + aTypeName = "edge"; + break; + case TopAbs_VERTEX: + aTypeName = "vertex"; + break; + case TopAbs_SHAPE: + aTypeName = "shape"; + break; + } + int aId = GeomAlgoAPI_CompoundBuilder::id(aContext, aSubShape); + aName += QString("/%1_%2").arg(aTypeName).arg(aId); + } + } + return aName; } }