[V8i MDL]提取mesh边界的问题

上图中,左侧为一mesh元素,中间为利用MS提取边界命令提取出来的边界(正常),最右侧为利用代码提取出的边界(未封闭),提取方法如下:

	int						pNumIndexPerFace=1;	
	EmbeddedIntArray*		pIndices=jmdlEmbeddedIntArray_grab();
	EmbeddedDPoint3dArray*	pXYZ=jmdlEmbeddedDPoint3dArray_grab();
	EmbeddedDPoint3dArray*	pEdgeXYZArray=jmdlEmbeddedDPoint3dArray_grab();

	mdlMesh_getPolyfaceArrays(ppResultDescr,pIndices,pXYZ,&pNumIndexPerFace,NULL);
	mdlMesh_filterMultiplyDrawnEdgesExt(pIndices,1,TRUE,TRUE);
	mdlMesh_edgeCoordinates(pEdgeXYZArray,pIndices,pXYZ,1,TRUE);

	int			count=jmdlEmbeddedIntArray_getCount(pIndices);
	DPoint3d	*tmpPoint=new DPoint3d[count];
	for(int i=0;i<count;i++)
	{
		jmdlEmbeddedDPoint3dArray_getDPoint3d(pEdgeXYZArray,&tmpPoint[i],i);
	}

	mdlLineString_create(&el,NULL,tmpPoint,count);

利用代码提取的线串除了没有封闭以外,还在多个位置出现交叉,见下图。

请问:

1、出现这种情况的原因是什么,是否与直接利用点建立线串有关系?

2、英文论坛提供了以下解决方案,是否能解决问题?请问第4条如何操作,看意思是将每个边缘建立一直线,再组合成复杂链,但是mdlMesh_edgeCoordinates提取出的pEdgeXYZArray中边缘线的起始点和终点是如何分布的,如何分辨各个边缘线的起始点和终点?