From 20bcce1544db8f7684507c6aa10b2d5276f067d3 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 25 Feb 2021 12:39:50 +0100 Subject: [PATCH 1/2] TD: [skip ci] implement DrawView::recompute to handle all OCC exception types --- src/Mod/TechDraw/App/DrawView.cpp | 13 +++++++++++++ src/Mod/TechDraw/App/DrawView.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/Mod/TechDraw/App/DrawView.cpp b/src/Mod/TechDraw/App/DrawView.cpp index 827a2cc1da..e6eea03205 100644 --- a/src/Mod/TechDraw/App/DrawView.cpp +++ b/src/Mod/TechDraw/App/DrawView.cpp @@ -93,6 +93,19 @@ DrawView::~DrawView() { } +App::DocumentObjectExecReturn *DrawView::recompute(void) +{ + try { + return App::DocumentObject::recompute(); + } + catch (Standard_Failure& e) { + App::DocumentObjectExecReturn* ret = new App::DocumentObjectExecReturn(e.GetMessageString()); + if (ret->Why.empty()) + ret->Why = "Unknown OCC exception"; + return ret; + } +} + App::DocumentObjectExecReturn *DrawView::execute(void) { // Base::Console().Message("DV::execute() - %s touched: %d\n", getNameInDocument(), isTouched()); diff --git a/src/Mod/TechDraw/App/DrawView.h b/src/Mod/TechDraw/App/DrawView.h index 170ad493ab..1768e06f8d 100644 --- a/src/Mod/TechDraw/App/DrawView.h +++ b/src/Mod/TechDraw/App/DrawView.h @@ -66,6 +66,7 @@ public: /** @name methods override Feature */ //@{ /// recalculate the Feature + virtual App::DocumentObjectExecReturn *recompute() override; virtual App::DocumentObjectExecReturn *execute(void) override; virtual void onDocumentRestored() override; virtual short mustExecute() const override; From 7900a069c2822a141851e9416104d4961551f427 Mon Sep 17 00:00:00 2001 From: Aapo Date: Wed, 24 Feb 2021 21:56:39 +0200 Subject: [PATCH 2/2] [TD] DrawViewPart.cpp: Fix a crash when user sets the PropertyVector Direction to zero. --- src/Mod/TechDraw/App/DrawViewPart.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 3c1aeea98c..658b194c04 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -335,6 +335,13 @@ short DrawViewPart::mustExecute() const void DrawViewPart::onChanged(const App::Property* prop) { + // If the user has set PropertyVector Direction to zero, set it along the default value instead (Front View). + // Otherwise bad things will happen because there'll be a normalization for direction calculations later. + Base::Vector3d dir = Direction.getValue(); + if (DrawUtil::fpCompare(dir.Length(), 0.0)) { + Direction.setValue(Base::Vector3d(0.0, -1.0, 0.0)); + } + DrawView::onChanged(prop); //TODO: when scale changes, any Dimensions for this View sb recalculated. DVD should pick this up subject to topological naming issues.