fixes #0004426: [skip ci] Patch to add MinLength and MaxLenght to the Netgen options in the Python API (provided by thomasFreeCAD)

This commit is contained in:
wmayer
2020-09-12 19:34:41 +02:00
parent 89a2151a95
commit f681b86abd
2 changed files with 15 additions and 7 deletions

View File

@@ -116,7 +116,7 @@ public:
"currently):\n"
"\n"
" meshFromShape(Shape, Fineness, SecondOrder=0,\n"
" Optimize=1, AllowQuad=0)\n"
" Optimize=1, AllowQuad=0, MaxLength=0, MinLength=0)\n"
" meshFromShape(Shape, GrowthRate=0, SegPerEdge=0,\n"
" SegPerRadius=0, SecondOrder=0, Optimize=1,\n"
" AllowQuad=0)\n"
@@ -576,28 +576,30 @@ private:
}
#if defined (HAVE_NETGEN)
static char* kwds_fineness[] = {"Shape", "Fineness", "SecondOrder", "Optimize", "AllowQuad",NULL};
static char* kwds_fineness[] = {"Shape", "Fineness", "SecondOrder", "Optimize", "AllowQuad", "MinLength", "MaxLength", NULL};
PyErr_Clear();
int fineness=0, secondOrder=0, optimize=1, allowquad=0;
if (PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "O!i|iii", kwds_fineness,
if (PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "O!i|iiidd", kwds_fineness,
&(Part::TopoShapePy::Type), &shape, &fineness,
&secondOrder, &optimize, &allowquad)) {
&secondOrder, &optimize, &allowquad, &minLen, &maxLen)) {
MeshPart::Mesher mesher(static_cast<Part::TopoShapePy*>(shape)->getTopoShapePtr()->getShape());
mesher.setMethod(MeshPart::Mesher::Netgen);
mesher.setFineness(fineness);
mesher.setSecondOrder(secondOrder != 0);
mesher.setOptimize(optimize != 0);
mesher.setQuadAllowed(allowquad != 0);
mesher.setMinMaxLengths(minLen, maxLen);
return Py::asObject(new Mesh::MeshPy(mesher.createMesh()));
}
static char* kwds_user[] = {"Shape", "GrowthRate", "SegPerEdge", "SegPerRadius", "SecondOrder", "Optimize", "AllowQuad",NULL};
static char* kwds_user[] = {"Shape", "GrowthRate", "SegPerEdge", "SegPerRadius", "SecondOrder",
"Optimize", "AllowQuad", "MinLength", "MaxLength", NULL };
PyErr_Clear();
double growthRate=0, nbSegPerEdge=0, nbSegPerRadius=0;
if (PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "O!|dddiii", kwds_user,
if (PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "O!|dddiiidd", kwds_user,
&(Part::TopoShapePy::Type), &shape,
&growthRate, &nbSegPerEdge, &nbSegPerRadius,
&secondOrder, &optimize, &allowquad)) {
&secondOrder, &optimize, &allowquad, &minLen, &maxLen)) {
MeshPart::Mesher mesher(static_cast<Part::TopoShapePy*>(shape)->getTopoShapePtr()->getShape());
mesher.setMethod(MeshPart::Mesher::Netgen);
mesher.setGrowthRate(growthRate);
@@ -606,6 +608,7 @@ private:
mesher.setSecondOrder(secondOrder != 0);
mesher.setOptimize(optimize != 0);
mesher.setQuadAllowed(allowquad != 0);
mesher.setMinMaxLengths(minLen, maxLen);
return Py::asObject(new Mesh::MeshPy(mesher.createMesh()));
}
#endif