#include "StdMeshers_LengthFromEdges.hxx"
#include "StdMeshers_QuadranglePreference.hxx"
+#include <Precision.hxx>
#include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx>
{
MESSAGE("NETGENPlugin_NETGEN_2D_ONLY::NETGENPlugin_NETGEN_2D_ONLY");
_name = "NETGEN_2D_ONLY";
-
+
_shapeType = (1 << TopAbs_FACE);// 1 bit /shape type
_compatibleHypothesis.push_back("MaxElementArea");
StdMeshers_FaceSidePtr wire = wires[ iW ];
const vector<UVPtStruct>& uvPtVec = wire->GetUVPtStruct();
+ bool reverse = // 20526: [CEA] Disk meshing fails
+ ( wire->NbEdges() == 1 &&
+ geom.emap(geom.emap.FindIndex(wire->Edge(0))).Orientation() == TopAbs_REVERSED );
+
int firstPointID = ngMesh.GetNP() + 1;
int edgeID = 1, posID = -2;
for ( int i = 0; i < wire->NbSegments(); ++i ) // loop on segments
}
seg.epgeominfo[ iEnd ].edgenr = edgeID; // = geom.emap.FindIndex(edge);
}
+ // 20526: [CEA] Disk meshing fails
+ if (reverse)
+ {
+ swap (seg.p1, seg.p2);
+ swap (seg.epgeominfo[0].dist, seg.epgeominfo[1].dist);
+ swap (seg.epgeominfo[0].u, seg.epgeominfo[1].u);
+ swap (seg.epgeominfo[0].v, seg.epgeominfo[1].v);
+ }
ngMesh.AddSegment (seg);
// Generate surface mesh
// -------------------------
- char *optstr;
+ char *optstr = 0;
int startWith = MESHCONST_MESHSURFACE;
int endWith = MESHCONST_OPTSURFACE;
int err = 1;
return !err;
}
+