diff --git a/src/Mod/Measure/App/MeasureBase.cpp b/src/Mod/Measure/App/MeasureBase.cpp index 10bfb64f55..0a6fb205c9 100644 --- a/src/Mod/Measure/App/MeasureBase.cpp +++ b/src/Mod/Measure/App/MeasureBase.cpp @@ -209,6 +209,18 @@ PROPERTY_SOURCE_TEMPLATE(Measure::MeasurePython, Measure::MeasureBase) template<> const char* Measure::MeasurePython::getViewProviderName(void) const { + std::string objName = this->getNameInDocument(); + + // check object's name, this is brute-forceish way to determine + // VP name for COM, but at this point python assignments haven't + // been run, so we have no way to determine that easily + if (objName.starts_with("Center_of_mass") + + || objName.find("CenterOfMass") != std::string::npos + || objName.find("centerofmass") != std::string::npos) { + return "MeasureGui::ViewProviderMeasureCOM"; + } + return "MeasureGui::ViewProviderMeasure"; } template<> diff --git a/src/Mod/Measure/Gui/AppMeasureGui.cpp b/src/Mod/Measure/Gui/AppMeasureGui.cpp index e282e00f9c..65f77deb8e 100644 --- a/src/Mod/Measure/Gui/AppMeasureGui.cpp +++ b/src/Mod/Measure/Gui/AppMeasureGui.cpp @@ -101,6 +101,7 @@ PyMOD_INIT_FUNC(MeasureGui) MeasureGui::ViewProviderMeasureLength ::init(); MeasureGui::ViewProviderMeasurePosition ::init(); MeasureGui::ViewProviderMeasureRadius ::init(); + MeasureGui::ViewProviderMeasureCOM ::init(); // clang-format on // register preferences pages diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp index c66580701a..45e60e815c 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp @@ -733,3 +733,4 @@ PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureArea, MeasureGui::ViewProviderMea PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureLength, MeasureGui::ViewProviderMeasure) PROPERTY_SOURCE(MeasureGui::ViewProviderMeasurePosition, MeasureGui::ViewProviderMeasure) PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureRadius, MeasureGui::ViewProviderMeasure) +PROPERTY_SOURCE(MeasureGui::ViewProviderMeasureCOM, MeasureGui::ViewProviderMeasure) diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h index f101068577..499908274c 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.h +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.h @@ -241,6 +241,17 @@ public: } }; +class ViewProviderMeasureCOM: public ViewProviderMeasure +{ + PROPERTY_HEADER(MeasureGui::ViewProviderMeasureCOM); + +public: + ViewProviderMeasureCOM() + { + sPixmap = "Measurement-CenterOfMass"; + } +}; + } // namespace MeasureGui