【C# MSCE】ComplexString子元素数量的疑问

老师们,您好,遇到一个问题百思不得其解,创建了一条复杂链,通过MS的Property面板查看,其有6条子元素,但通过代码去获取,有8条。以下是代码截图及相关的测试文件,请老师们解惑。

更奇怪的是,我把这条复杂链打散后,全选,发现只有6个子元素,然后连接起来,再用代码获取,也只有6个。想不清楚是为什么。

Parents Reply Children
  • 针对您的这个图形我写了如下测试例子来分析原因:

    private static void CurveVectorCountTest()
            {
                DgnModel model = Session.Instance.GetActiveDgnModel();
                ComplexStringElement cse = model.FindElementById((ElementId)36730L) as ComplexStringElement;
                int cnt = cse.GetCurveVector().Count;
                MessageCenter.Instance.ShowInfoMessage("cnt=" + cnt.ToString(), null, false);
                int i = 0;
                foreach (CurvePrimitive cp in cse.GetCurveVector())
                {
                    double length;
                    cp.Length(out length);
                    DPoint3d start, end;
                    cp.GetStartEnd(out start, out end);
                    string msg = "[" + i.ToString() + "]" + cp.GetCurvePrimitiveType().ToString() + ", Len=" + length.ToString();
                    msg += ",start=(" + start.X + "," + start.Y + "), end=(" + end.X + "," + end.Y + ")";
                    MessageCenter.Instance.ShowInfoMessage(msg, null, false);
                    i++;
                }
            }

    输出结果如下:

    不难看出,红框中两条线分别是从头到尾又从尾到头了。MS的分析工具可能是对这种非法情况给过滤了。



    Answer Verified By: cao li