【MS CE C#】通过ProcessCurveVector获取DEllipse3d mesh化错误

在CE里显示如左图,通过ElementGraphicsProcessor的ProcessCurveVector获取DEllipse3d ,然后通过PolyfaceConstruction mesh导入到three.js中显示如右图,圆弧显示有问题,这块是代码有问题吗?

代码如下:

public override BentleyStatus ProcessCurveVector(CurveVector curves, bool isFilled)
{
//if (!curves.IsClosedPath)
// return BentleyStatus.Success;


List<DEllipse3d> allArcs = new List<DEllipse3d>();
List<DPoint3d> allPoints = new List<DPoint3d>();
for (int a = 0; a < curves.Count(); a++)
{
CurvePrimitive curvePri = curves.GetAt(a);
MyTypes += curvePri.GetCurvePrimitiveType().ToString();
MyTypes += "\n";

IList<DPoint3d> points = new List<DPoint3d>();
if (curves.GetAt(a).TryGetLineString(points))
{
allPoints.AddRange(points);
}

DEllipse3d arc;
if (curves.GetAt(a).TryGetArc(out arc))
{
//allPoints.Add(arc.StartAngle);
allArcs.Add(arc);
}
}

FacetOptions facetOpt = GetFacetOptions();
facetOpt.SetCurveDefaultsDefaults();
PolyfaceConstruction polyface = new PolyfaceConstruction(facetOpt);
polyface.AddTriangulation(allPoints);
for( int i =0; i<allArcs.Count; i ++)
{
DEllipse3d arc = allArcs[i];
polyface.AddFullDisk(ref arc, 3);
}

PolyfaceHeader polyfaceHeader = polyface.GetClientMesh();
if (polyfaceHeader != null)
ExportFacets(polyfaceHeader);

return BentleyStatus.Success;
}

public override FacetOptions GetFacetOptions()
{
FacetOptions options = new FacetOptions();
//options.SetCurveDefaultsDefaults();

//options.ChordTolerance = 10000;
options.AngleTolerance = LevelOfDetail;
//options.MaxEdgeLength = 0.0f;

options.EdgeHiding = false;
options.MaxPerFace = 3;
options.CurvedSurfaceMaxPerFace = 3;
options.NormalsRequired = true;
options.ParamsRequired = true;

return options;
}

数据文件如下:

testarc.dgn