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; 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.