Toponaming/Part: Fix all getBaseTopoShape calls. Tests and missing code.

This commit is contained in:
bgbsww
2024-04-25 16:54:14 -04:00
committed by Chris Hennes
parent bff1efd665
commit fa8f29aed4
19 changed files with 791 additions and 49 deletions

View File

@@ -893,12 +893,34 @@ private:
App::Document *pcDoc = App::GetApplication().getActiveDocument();
if (!pcDoc)
pcDoc = App::GetApplication().newDocument();
#ifndef FC_USE_TNP_FIX
TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObj);
Part::Feature *pcFeature = static_cast<Part::Feature*>(pcDoc->addObject("Part::Feature", name));
// copy the data
pcFeature->Shape.setValue(pShape->getTopoShapePtr()->getShape());
pcDoc->recompute();
return Py::asObject(pcFeature->getPyObject());
#else
App::Document *pcSrcDoc = nullptr;
TopoShape shape;
if (PyObject_TypeCheck(pcObj, &TopoShapePy::Type))
shape = *static_cast<TopoShapePy*>(pcObj)->getTopoShapePtr();
else if (PyObject_TypeCheck(pcObj, &GeometryPy::Type))
shape = static_cast<GeometryPy*>(pcObj)->getGeometryPtr()->toShape();
else if (PyObject_TypeCheck(pcObj, &App::DocumentObjectPy::Type)) {
auto obj = static_cast<App::DocumentObjectPy*>(pcObj)->getDocumentObjectPtr();
pcSrcDoc = obj->getDocument();
shape = Feature::getTopoShape(obj);
}
else
throw Py::TypeError("Expects argument of type DocumentObject, Shape, or Geometry");
Part::Feature *pcFeature = static_cast<Part::Feature*>(pcDoc->addObject("Part::Feature", name));
// copy the data
pcFeature->Shape.setValue(shape);
pcFeature->purgeTouched();
return Py::asObject(pcFeature->getPyObject());
#endif
}
Py::Object getFacets(const Py::Tuple& args)
{