From c21888af6c4c19d5642af649bd41610d87dc2b88 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 12 May 2016 19:03:23 +0200 Subject: [PATCH] + issue #0002542: Part.Wire.makeoffset() doesn't handle circles correctly. --- src/Mod/Part/App/TopoShapeFacePyImp.cpp | 6 ++++++ src/Mod/Part/App/TopoShapeWirePyImp.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/Mod/Part/App/TopoShapeFacePyImp.cpp b/src/Mod/Part/App/TopoShapeFacePyImp.cpp index f5b16712f..7b8d17262 100644 --- a/src/Mod/Part/App/TopoShapeFacePyImp.cpp +++ b/src/Mod/Part/App/TopoShapeFacePyImp.cpp @@ -27,6 +27,7 @@ # include # include # include +# include # include # include # include @@ -254,6 +255,11 @@ PyObject* TopoShapeFacePy::makeOffset(PyObject *args) if (!PyArg_ParseTuple(args, "d",&dist)) return 0; const TopoDS_Face& f = TopoDS::Face(getTopoShapePtr()->_Shape); + BRepBuilderAPI_FindPlane findPlane(f); + if (!findPlane.Found()) { + PyErr_SetString(PartExceptionOCCError, "No planar face"); + return 0; + } BRepOffsetAPI_MakeOffset mkOffset(f); mkOffset.Perform(dist); diff --git a/src/Mod/Part/App/TopoShapeWirePyImp.cpp b/src/Mod/Part/App/TopoShapeWirePyImp.cpp index 40354e58a..bc79dae0c 100644 --- a/src/Mod/Part/App/TopoShapeWirePyImp.cpp +++ b/src/Mod/Part/App/TopoShapeWirePyImp.cpp @@ -26,6 +26,7 @@ # include # include # include +# include # include # include # include @@ -225,6 +226,11 @@ PyObject* TopoShapeWirePy::makeOffset(PyObject *args) if (!PyArg_ParseTuple(args, "d",&dist)) return 0; const TopoDS_Wire& w = TopoDS::Wire(getTopoShapePtr()->_Shape); + BRepBuilderAPI_FindPlane findPlane(w); + if (!findPlane.Found()) { + PyErr_SetString(PartExceptionOCCError, "No planar wire"); + return 0; + } BRepOffsetAPI_MakeOffset mkOffset(w); mkOffset.Perform(dist);