[ORD C#]EllipseElement不能转成LinearElement

肖老师,符老师好:

程序实现沿各种线型放置共享单元。思路是拾取到线后进行判断,然后转为LinearElement,调用其GetPointAtDistanceOffset(double distance,double offset)函数获取投影点。

protected override bool OnDataButton(Bentley.DgnPlatformNET.DgnButtonEvent ev)
        {
            HitPath hit = DoLocate(ev, true, 1);
            if (null == hit)
                return false;

            Element element = hit.GetCursorElement();
            if (null == element)
            {
                System.Windows.Forms.MessageBox.Show("Please Choose Line Elements!");
                return false;
            }
    
            if (null == element.ParentElement)
            {
                if (element.ElementType == MSElementType.BsplineCurve)
                {
                    BSplineCurveElement bscElement = element as BSplineCurveElement;
                    CurveVector curveVector = bscElement.GetCurveVector();
                    linear = LinearElement.CreateFromCurveVector(curveVector, true);
                }
                else if (element.ElementType == MSElementType.LineString)
                {
                    LineStringElement lineStrElem = element as LineStringElement;
                    CurveVector curveVector = lineStrElem.GetCurveVector();
                    linear = LinearElement.CreateFromCurveVector(curveVector, true);
                }
                else if (element.ElementType == MSElementType.Line)
                {
                    LineElement line = element as LineElement;
                    CurveVector curveVector = line.GetCurveVector();
                    linear = LinearElement.CreateFromCurveVector(curveVector, true);
                }
                else if (element.ElementType == MSElementType.Ellipse)
                {
                    EllipseElement elpsElement = element as EllipseElement;
                    CurveVector curveVector = elpsElement.GetCurveVector();
                    
                    linear = LinearElement.CreateFromCurveVector(curveVector, false);
                }
                else if (element.ElementType == MSElementType.Arc)
                {
                    ArcElement arcElement = element as ArcElement;
                    CurveVector curveVector = arcElement.GetCurveVector();
                    linear = LinearElement.CreateFromCurveVector(curveVector, true);
                }
                else if (element.ElementType == MSElementType.ComplexString)
                {
                    ComplexStringElement complexStrElem = element as ComplexStringElement;
                    CurveVector cv = complexStrElem.GetCurveVector();
                    linear = LinearElement.CreateFromCurveVector(cv, true);
                }
            }
        }
        
        

以上为代码片段,主要是应用LinearElement.CreateFromCurveVector()方法实现MS线类型转为LinearElement。

在程序调试中,选取圆时,linear = LinearElement.CreateFromCurveVector(curveVector, false)中获取到的linear = null.而其他类型线元素可以转成功。

请问EllipseElement是否能采用以上方法转成LinearElement对象?是否有更优的方法呢?

另外我看肖老师说LinearElement永远是米作为单位,上述代码片段在进行转化前,如何进行单位转换?

谢谢两位老师!