PyObject* MeshPy::writeInventor(PyObject *args) { float creaseangle=0.0f; if (!PyArg_ParseTuple(args, "|f",&creaseangle)) return NULL; MeshObject* mesh = getMeshObjectPtr(); const MeshCore::MeshFacetArray& faces = mesh->getKernel().GetFacets(); std::vector<int> indices; std::vector<Base::Vector3f> coords; coords.reserve(mesh->countPoints()); for (MeshObject::const_point_iterator it = mesh->points_begin(); it != mesh->points_end(); ++it) coords.push_back(Base::Vector3f((float)it->x,(float)it->y,(float)it->z)); indices.reserve(4*faces.size()); for (MeshCore::MeshFacetArray::_TConstIterator it = faces.begin(); it != faces.end(); ++it) { indices.push_back(it->_aulPoints[0]); indices.push_back(it->_aulPoints[1]); indices.push_back(it->_aulPoints[2]); indices.push_back(-1); } std::stringstream result; Base::InventorBuilder builder(result); builder.addIndexedFaceSet(coords, indices, creaseangle); builder.close(); return Py::new_reference_to(Py::String(result.str())); }
Py::List MeshPy::getPoints(void) const { Py::List PointList; unsigned int Index=0; MeshObject* mesh = getMeshObjectPtr(); for (MeshObject::const_point_iterator it = mesh->points_begin(); it != mesh->points_end(); ++it) { PointList.append(Py::Object(new MeshPointPy(new MeshPoint(*it,getMeshObjectPtr(),Index++)), true)); } return PointList; }