首页 > 解决方案 > 如何在 Objectarx C# 中将椭圆转换为折线

问题描述

目前我有一个创建椭圆的脚本,我试图添加调整线条粗细的能力。由于据我所知,您不能正常使用椭圆来执行此操作,因此我尝试使用 PELLIPSE 变量将其转换为折线。但是,即使使用变量设置,它似乎也没有转换过来。有没有更简单的方法可以解决这个问题,或者有可能解决这个问题?

当前椭圆代码:

 public override Entity getAcObj()
        {
            return
                new Ellipse(
                        new Point3d(Markup.XCoord, Markup.YCoord, 0),
                        Vector3d.ZAxis,
                        new Vector3d((Markup.Locations[0].XCoord - Markup.Locations[1].XCoord) / 2, -(Markup.Locations[2].YCoord - Markup.Locations[3].YCoord) / 2, 0),
                        (Math.Abs(Markup.Locations[0].YCoord - Markup.Locations[3].YCoord) / 2)
                            / (Math.Abs(Markup.Locations[0].XCoord - Markup.Locations[1].XCoord) / 2),
                        0,
                        360 * Math.Atan(1.0) / 45.0
                    )
                {
                    Layer = Layer
                };
        }

PELLIPSE 变量设置:

Application.SetSystemVariable("PELLIPSE", 1);

标签: c#autocadautodeskobjectarx

解决方案


PELLIPSE 系统变量仅作用于本机 ELLIPSE 命令。您可以将它与 Editor.Command() 方法结合使用,但仅适用于闭合椭圆。或者,您可以使用为 Ellipse 类型提供 ToPolyline() 扩展方法的GeometryExtensions 库。

var polyline = ellipse.ToPolyline();

推荐阅读