From 38fd061716c627db590b314f166e3377b08f2d97 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Tue, 15 Oct 2019 12:54:28 +0800 Subject: [PATCH 1/3] PartDesign: fix Body getSubObject() --- src/Mod/PartDesign/App/Body.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Mod/PartDesign/App/Body.cpp b/src/Mod/PartDesign/App/Body.cpp index b62e285f3f..448f558546 100644 --- a/src/Mod/PartDesign/App/Body.cpp +++ b/src/Mod/PartDesign/App/Body.cpp @@ -510,6 +510,16 @@ std::vector Body::getSubObjects(int reason) const { App::DocumentObject *Body::getSubObject(const char *subname, PyObject **pyObj, Base::Matrix4D *pmat, bool transform, int depth) const { +#if 1 + return Part::BodyBase::getSubObject(subname,pyObj,pmat,transform,depth); +#else + // The following code returns Body shape only if there is at least one + // child visible in the body (when show through, not show tip). The + // original intention is to sync visual to shape returned by + // Part.getShape() when the body is included in some other group. But this + // interfere with direct modeling using body shape. Therefore it is + // disabled here. + if(!pyObj || showTip || (subname && !Data::ComplexGeoData::isMappedElement(subname) && strchr(subname,'.'))) return Part::BodyBase::getSubObject(subname,pyObj,pmat,transform,depth); @@ -525,6 +535,7 @@ App::DocumentObject *Body::getSubObject(const char *subname, if(pmat && transform) *pmat *= Placement.getValue().toMatrix(); return const_cast(this); +#endif } void Body::onDocumentRestored() From d83f8bc2da148dcfdf39617f52ccc01d3a9af61e Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 16 Oct 2019 16:52:06 -0300 Subject: [PATCH 2/3] AddonManager: Fixed bug in non-git update --- src/Mod/AddonManager/addonmanager_workers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index 5ef8233fc1..dd7ac37c18 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -407,7 +407,7 @@ class ShowWorker(QtCore.QThread): else: message = "" + translate("AddonsInstaller", "This addon is already installed.") + "
" message += desc + '

Addon repository: ' + self.repos[self.idx][1] + '' - message += '
' + translate("AddonInstaller","Installed location")+": "+ FreeCAD.getUserAppDataDir() + os.sep + "Mod" + os.sep + repo[0] + message += '
' + translate("AddonInstaller","Installed location")+": "+ FreeCAD.getUserAppDataDir() + os.sep + "Mod" + os.sep + self.repos[self.idx][0] self.repos[self.idx][2] = 2 # mark as already installed AND already checked for updates self.addon_repos.emit(self.repos) elif self.repos[self.idx][2] == 2: From 31ced049d99cf8849b21a90e3cf97abaf592cb44 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 17 Oct 2019 00:22:39 +0200 Subject: [PATCH 3/3] abort hyperbola creation when angles are NaN --- src/Mod/Sketcher/Gui/CommandCreateGeo.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 40051ff20f..be0adda009 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -3770,6 +3770,12 @@ public: double endAngle = atanh( (((endPoint.y-centerPoint.y)*cos(phi)-(endPoint.x-centerPoint.x)*sin(phi))*a) / (((endPoint.x-centerPoint.x)*cos(phi)+(endPoint.y-centerPoint.y)*sin(phi))*b) ); + if (boost::math::isnan(startAngle) || boost::math::isnan(endAngle)) { + sketchgui->purgeHandler(); + Base::Console().Error("Cannot create arc of hyperbola from invalid angles, try again!\n"); + return false; + } + bool isOriginalArcCCW=true;