From 7616153b3c31ace006169cdc2fdafab484498858 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 25 Sep 2020 16:00:01 +0200 Subject: [PATCH] Part: add method to add a wire (e.g. to create a hole) to a face --- src/Mod/Part/App/TopoShapeFacePy.xml | 5 ++++ src/Mod/Part/App/TopoShapeFacePyImp.cpp | 39 +++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/Mod/Part/App/TopoShapeFacePy.xml b/src/Mod/Part/App/TopoShapeFacePy.xml index 72d786e372..5faaf5236b 100644 --- a/src/Mod/Part/App/TopoShapeFacePy.xml +++ b/src/Mod/Part/App/TopoShapeFacePy.xml @@ -14,6 +14,11 @@ TopoShapeFace is the OpenCasCade topological face wrapper + + + Adds a wire to the face. + + Offset the face by a given amount. Returns Compound of Wires. Deprecated - use makeOffset2D instead. diff --git a/src/Mod/Part/App/TopoShapeFacePyImp.cpp b/src/Mod/Part/App/TopoShapeFacePyImp.cpp index 08d43c5220..7f4d02f790 100644 --- a/src/Mod/Part/App/TopoShapeFacePyImp.cpp +++ b/src/Mod/Part/App/TopoShapeFacePyImp.cpp @@ -374,6 +374,45 @@ int TopoShapeFacePy::PyInit(PyObject* args, PyObject* /*kwd*/) return -1; } +/*! + * \brief TopoShapeFacePy::addWire + * \code +circle = Part.Circle() +circle.Radius = 10 +wire = Part.Wire(circle.toShape()) +Part.show(wire) + +circle2 = Part.Circle() +circle2.Radius = 4 +wire2 = Part.Wire(circle2.toShape()) +Part.show(wire2) + +plane = Part.Plane() +face = plane.toShape() + +face.addWire(wire) +face.Area +Part.show(face) + +face.addWire(wire2.reversed()) +face.Area +Part.show(face) + * \endcode + */ +PyObject* TopoShapeFacePy::addWire(PyObject *args) +{ + PyObject* wire; + if (!PyArg_ParseTuple(args, "O!", &TopoShapeWirePy::Type, &wire)) + return nullptr; + + BRep_Builder aBuilder; + TopoDS_Face face = TopoDS::Face(getTopoShapePtr()->getShape()); + const TopoDS_Shape& shape = static_cast(wire)->getTopoShapePtr()->getShape(); + aBuilder.Add(face, shape); + getTopoShapePtr()->setShape(face); + Py_Return; +} + PyObject* TopoShapeFacePy::makeOffset(PyObject *args) { double dist;