如题
Shape元素中只能含直线段,不能含有弧段。如果直线段和弧段都有的话,就不是Shape了,而是ComplexShape。您创建出ComplexShape也能接受对吗?
我找到ComplexShapeElement的一个AddComponentElement(Element componentEeh)方法,如果要实现我题目里的要求,是不是要根据元素类型分类使用这个方法?因为比如LineString、Arc等可以直接作为参数传入,但是像圆(EllipseElement)就要先提取出Arc、像复杂线串就要循环提取里面的子元素再传入等等?
在C# Interop编程模型中有一个方法叫做AssembleComplexStringsAndShapes,该函数的功能极其强大,能自动考察传入的各个元素的连接关系,给我们自己连接成一个链。如果是封闭的,就成为一个ComplexShape了。
可惜新的C# .NET下没有找到对应函数,您需要切换到Interop那一套编程。
巴燕 史 said:Ellipse能转换成ComplexShapeElement吗?
这个做不到,需要你自己编程将Ellipse生成一个360°的Arc,再去创建ComplexShape。顺便问一下,为何都要统一成ComplexShape呢?
Answer Verified By: 巴燕 史
因为其实我最终想实现的功能是,用户选择一个任意形状的封闭线状元素(有可能是线串、有可能是复杂线串、有可能是单纯的一个圆),之后程序把选择的元素拉伸成一定厚度的实体。
那只需要这个profile为封闭元素即可。Ellipse、Shape和ComplexShape均可。如果已经是Ellipse和Shape了,则不需要做任何多余的动作。
付老师,我尝试很久都失败了,能不能贴一段沿某方向拉伸各种封闭线条(包括弧、圆等)成实体的代码啊?
在您的新帖中已经贴了。