欢迎加我的QQ群:193522571,一起来讨论、交流!

AutoCAD.Net/C#.Net QQ群:193522571 绘制椭圆及椭圆弧

这个椭圆好坑。

复制代码
        /// <summary>
        /// 绘制椭圆及椭圆弧,注意当dX>dY时以X轴正方向为起始角,当dX<dY时以Y轴正方向为起始角
        /// </summary>
        /// <param name="db"></param>
        /// <param name="pt">椭圆中心点</param>
        /// <param name="dX">X轴轴长</param>
        /// <param name="dY">Y轴轴长</param>
        /// <param name="dStartAng">起始角(当dX>dY时以X轴正方向为起始角,当dX<dY时以Y轴正方向为起始角)</param>
        /// <param name="dEndAng">终止角(当dX>dY时以X轴正方向为起始角,当dX<dY时以Y轴正方向为起始角,注意方向为逆时针)</param>
        /// <returns></returns>
        public static ObjectId DrawEllipse(this Database db, Point3d pt,
                 double dX, double dY, double dStartAng = 0, double dEndAng = 360)
        {
            double dAngStart = dStartAng.DegreeToRadian();
            double dAngEnd = dEndAng.DegreeToRadian();

            //这个有点坑,长轴短轴要搞清楚
            Vector3d majorAxis = dX > dY ? new Vector3d(dX, 0, 0) : new Vector3d(0, dY, 0);
            //这个radio要弄清楚,必须小于1,不然就会出问题
            Ellipse ellipseArc = new Ellipse(pt, Vector3d.ZAxis, majorAxis, dX > dY ? dY / dX : dX / dY, dAngStart, dAngEnd);

            return db.AddToCurrentSpace(ellipseArc);
        }
复制代码

 

posted @   swtool  阅读(216)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2014-07-06 使用Qt.2——Qt Creator
2014-07-06 如何让窗体大小随着控件的大小变化而变化
欢迎加我的QQ群:193522571,一起来讨论、交流!
点击右上角即可分享
微信分享提示