From c2e0c86d9362b9b3c45f402d47435593c6726558 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 28 Feb 2023 18:52:43 +0100 Subject: [PATCH] Utils: New Function to retrieve the VisualLayerId --- src/Mod/Sketcher/Gui/Utils.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Mod/Sketcher/Gui/Utils.h b/src/Mod/Sketcher/Gui/Utils.h index 3544af19a6..6e3ae1d83d 100644 --- a/src/Mod/Sketcher/Gui/Utils.h +++ b/src/Mod/Sketcher/Gui/Utils.h @@ -29,6 +29,7 @@ #include #include "AutoConstraint.h" +#include "ViewProviderSketchGeometryExtension.h" namespace App { @@ -156,5 +157,23 @@ auto toPointerVector(const std::vector> & vector) { return vp; } +/** returns the visual layer id (not the one of the GeometryFacade, but the index to PropertyVisualLayerList) from a geometry or GeometryFacade. + * NOTE: If the geometry or geometryfacade does not have a corresponding ViewProviderSketchGeometryExtension, the default layer (layer 0) is returned. + * */ +template +auto getSafeGeomLayerId(T geom) +{ + int layerId = 0; + + if(geom->hasExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId())) { + auto vpext = std::static_pointer_cast( + geom->getExtension(SketcherGui::ViewProviderSketchGeometryExtension::getClassTypeId()).lock()); + + layerId = vpext->getVisualLayerId(); + } + + return layerId; +} + #endif // SKETCHERGUI_Recompute_H