+ Allow to get clean copy of a shape from Python

This commit is contained in:
wmayer
2014-07-30 12:21:22 +02:00
parent a252471625
commit 7294271c0c
2 changed files with 34 additions and 0 deletions

View File

@@ -172,6 +172,31 @@ PyObject* TopoShapePy::copy(PyObject *args)
return cpy;
}
PyObject* TopoShapePy::cleaned(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return NULL;
const TopoDS_Shape& shape = this->getTopoShapePtr()->_Shape;
PyTypeObject* type = this->GetType();
PyObject* cpy = 0;
// let the type object decide
if (type->tp_new)
cpy = type->tp_new(type, this, 0);
if (!cpy) {
PyErr_SetString(PyExc_TypeError, "failed to create copy of shape");
return 0;
}
if (!shape.IsNull()) {
BRepBuilderAPI_Copy c(shape);
const TopoDS_Shape& copiedShape = c.Shape();
BRepTools::Clean(copiedShape); // remove triangulation
static_cast<TopoShapePy*>(cpy)->getTopoShapePtr()->_Shape = c.Shape();
}
return cpy;
}
PyObject* TopoShapePy::replaceShape(PyObject *args)
{
PyObject *l;