Measure: Resolve App::Link elements
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <Base/Interpreter.h>
|
||||
#include <Base/VectorPy.h>
|
||||
#include <App/Document.h>
|
||||
#include <App/Link.h>
|
||||
|
||||
#include "MeasureManager.h"
|
||||
|
||||
@@ -65,7 +66,12 @@ namespace App {
|
||||
MeasureHandler MeasureManager::getMeasureHandler(const App::MeasureSelectionItem& selectionItem) {
|
||||
auto objT = selectionItem.object;
|
||||
|
||||
// Resolve App::Link
|
||||
App::DocumentObject* sub = objT.getSubObject();
|
||||
if (sub->isDerivedFrom<App::Link>()) {
|
||||
auto link = static_cast<App::Link*>(sub);
|
||||
sub = link->getLinkedObject(true);
|
||||
}
|
||||
|
||||
const char* className = sub->getTypeId().getName();
|
||||
std::string mod = Base::Type::getModuleName(className);
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <App/PropertyStandard.h>
|
||||
#include <App/PropertyUnits.h>
|
||||
#include <App/FeaturePython.h>
|
||||
#include <App/Link.h>
|
||||
#include <Base/Quantity.h>
|
||||
#include <Base/Placement.h>
|
||||
#include <Base/Interpreter.h>
|
||||
@@ -108,7 +109,12 @@ public:
|
||||
|
||||
static Part::MeasureInfoPtr getMeasureInfo(App::SubObjectT& subObjT) {
|
||||
|
||||
// Resolve App::Link
|
||||
App::DocumentObject* sub = subObjT.getSubObject();
|
||||
if (sub->isDerivedFrom<App::Link>()) {
|
||||
auto link = static_cast<App::Link*>(sub);
|
||||
sub = link->getLinkedObject(true);
|
||||
}
|
||||
|
||||
// Get the Geometry handler based on the module
|
||||
const char* className = sub->getTypeId().getName();
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <App/Document.h>
|
||||
#include <App/DocumentObjectGroup.h>
|
||||
#include <App/Link.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/BitmapFactory.h>
|
||||
@@ -156,8 +157,14 @@ void TaskMeasure::update() {
|
||||
for(auto sel : Gui::Selection().getSelection()) {
|
||||
App::DocumentObject* ob = sel.pObject;
|
||||
App::DocumentObject* sub = ob->getSubObject(sel.SubName);
|
||||
std::string mod = Base::Type::getModuleName(sub->getTypeId().getName());
|
||||
|
||||
// Resolve App::Link
|
||||
if (sub->isDerivedFrom<App::Link>()) {
|
||||
auto link = static_cast<App::Link*>(sub);
|
||||
sub = link->getLinkedObject(true);
|
||||
}
|
||||
|
||||
std::string mod = Base::Type::getModuleName(sub->getTypeId().getName());
|
||||
if (!App::MeasureManager::hasMeasureHandler(mod.c_str())) {
|
||||
Base::Console().Message("No measure handler available for geometry of module: %s\n", mod);
|
||||
clearSelection();
|
||||
|
||||
Reference in New Issue
Block a user