mesh segmentation algorithm for surfaces
This commit is contained in:
@@ -1759,7 +1759,7 @@ PyObject* MeshPy::getPlanarSegments(PyObject *args)
|
||||
return NULL;
|
||||
|
||||
Mesh::MeshObject* mesh = getMeshObjectPtr();
|
||||
std::vector<Mesh::Segment> segments = mesh->getSegmentsFromType
|
||||
std::vector<Mesh::Segment> segments = mesh->getSegmentsOfType
|
||||
(Mesh::MeshObject::PLANE, dev, minFacets);
|
||||
|
||||
Py::List s;
|
||||
@@ -1779,6 +1779,50 @@ PyObject* MeshPy::getPlanarSegments(PyObject *args)
|
||||
return Py::new_reference_to(s);
|
||||
}
|
||||
|
||||
PyObject* MeshPy::getSegmentsOfType(PyObject *args)
|
||||
{
|
||||
char* type;
|
||||
float dev;
|
||||
unsigned long minFacets=0;
|
||||
if (!PyArg_ParseTuple(args, "sf|k",&type,&dev,&minFacets))
|
||||
return NULL;
|
||||
|
||||
Mesh::MeshObject::GeometryType geoType;
|
||||
if (strcmp(type, "Plane") == 0) {
|
||||
geoType = Mesh::MeshObject::PLANE;
|
||||
}
|
||||
else if (strcmp(type, "Cylinder") == 0) {
|
||||
geoType = Mesh::MeshObject::CYLINDER;
|
||||
}
|
||||
else if (strcmp(type, "Sphere") == 0) {
|
||||
geoType = Mesh::MeshObject::SPHERE;
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_ValueError, "Unsupported surface type");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Mesh::MeshObject* mesh = getMeshObjectPtr();
|
||||
std::vector<Mesh::Segment> segments = mesh->getSegmentsOfType
|
||||
(geoType, dev, minFacets);
|
||||
|
||||
Py::List s;
|
||||
for (std::vector<Mesh::Segment>::iterator it = segments.begin(); it != segments.end(); ++it) {
|
||||
const std::vector<unsigned long>& segm = it->getIndices();
|
||||
Py::List ary;
|
||||
for (std::vector<unsigned long>::const_iterator jt = segm.begin(); jt != segm.end(); ++jt) {
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
ary.append(Py::Long((int)*jt));
|
||||
#else
|
||||
ary.append(Py::Int((int)*jt));
|
||||
#endif
|
||||
}
|
||||
s.append(ary);
|
||||
}
|
||||
|
||||
return Py::new_reference_to(s);
|
||||
}
|
||||
|
||||
PyObject* MeshPy::getSegmentsByCurvature(PyObject *args)
|
||||
{
|
||||
PyObject* l;
|
||||
|
||||
Reference in New Issue
Block a user