Part: add functions to return the number of nodes and triangles of a tessellation

This commit is contained in:
wmayer
2023-04-11 12:32:34 +02:00
committed by wwmayer
parent 88ee605dd1
commit 122ab14d92
4 changed files with 66 additions and 0 deletions

View File

@@ -347,6 +347,11 @@ Part.show(s)
</UserDocu>
</Documentation>
</Methode>
<Methode Name="countNodes" Const="true">
<Documentation>
<UserDocu>Returns the number of nodes of the 3D polygon of the edge.</UserDocu>
</Documentation>
</Methode>
<Methode Name="split" Const="true">
<Documentation>
<UserDocu>Splits the edge at the given parameter values and builds a wire out of it

View File

@@ -630,6 +630,23 @@ PyObject* TopoShapeEdgePy::discretize(PyObject *args, PyObject *kwds)
return nullptr;
}
PyObject* TopoShapeEdgePy::countNodes(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return nullptr;
const TopoDS_Shape& shape = this->getTopoShapePtr()->getShape();
TopoDS_Edge aEdge = TopoDS::Edge(shape);
TopLoc_Location aLoc;
const Handle(Poly_Polygon3D)& aPoly = BRep_Tool::Polygon3D(aEdge, aLoc);
int count = 0;
if (!aPoly.IsNull()) {
count = aPoly->NbNodes();
}
return Py::new_reference_to(Py::Long(count));
}
PyObject* TopoShapeEdgePy::split(PyObject *args)
{
PyObject* float_or_list;

View File

@@ -107,6 +107,16 @@ validate()
</UserDocu>
</Documentation>
</Methode>
<Methode Name="countNodes" Const="true">
<Documentation>
<UserDocu>Returns the number of nodes of the triangulation.</UserDocu>
</Documentation>
</Methode>
<Methode Name="countTriangles" Const="true">
<Documentation>
<UserDocu>Returns the number of triangles of the triangulation.</UserDocu>
</Documentation>
</Methode>
<Methode Name="curveOnSurface" Const="true">
<Documentation>
<UserDocu>Returns the curve associated to the edge in the parametric space of the face.

View File

@@ -757,6 +757,40 @@ PyObject* TopoShapeFacePy::validate(PyObject *args)
}
}
PyObject* TopoShapeFacePy::countNodes(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return nullptr;
const TopoDS_Shape& shape = this->getTopoShapePtr()->getShape();
TopoDS_Face aFace = TopoDS::Face(shape);
TopLoc_Location aLoc;
const Handle(Poly_Triangulation)& aTriangulation = BRep_Tool::Triangulation(aFace, aLoc);
int count = 0;
if (!aTriangulation.IsNull()) {
count = aTriangulation->NbNodes();
}
return Py::new_reference_to(Py::Long(count));
}
PyObject* TopoShapeFacePy::countTriangles(PyObject *args)
{
if (!PyArg_ParseTuple(args, ""))
return nullptr;
const TopoDS_Shape& shape = this->getTopoShapePtr()->getShape();
TopoDS_Face aFace = TopoDS::Face(shape);
TopLoc_Location aLoc;
const Handle(Poly_Triangulation)& aTriangulation = BRep_Tool::Triangulation(aFace, aLoc);
int count = 0;
if (!aTriangulation.IsNull()) {
count = aTriangulation->NbTriangles();
}
return Py::new_reference_to(Py::Long(count));
}
PyObject* TopoShapeFacePy::curveOnSurface(PyObject *args)
{
PyObject* e;