AutoCAD .Net 创建圆Circle
来源:互联网 发布:剑3成女捏脸数据 编辑:程序博客网 时间:2024/05/21 11:08
以下代码展示:
往模型空间中添加一个圆。圆心为(100, 100, 0),半径为20,圆所在平面为XOY平面。
设置圆的图层、颜色、线型、线宽请参考文章AutoCAD .Net 创建直线Line
using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.Colors;[CommandMethod("NewCircle")]public static void NewCircle(){ Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { //------------------------------- // 获取模型空间 //------------------------------- BlockTable blockTbl = tr.GetObject( db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord modelSpace = tr.GetObject( blockTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; //------------------------------- // 创建圆 //------------------------------- Circle circle = new Circle(); circle.Center = new Point3d(100, 100, 0); circle.Normal = new Vector3d(0, 0, 1); circle.Radius = 20; //------------------------------- // 添加到模型空间并提交到数据库 //------------------------------- modelSpace.AppendEntity(circle); tr.AddNewlyCreatedDBObject(circle, true); tr.Commit(); }}
Circle.Normal 指定圆所在平面的法向量。
AutoCAD .Net API 中没有提供求过3点圆的方法。
附上在2维平面内求过三点圆的方法
/// <summary>/// 求过平面3点的圆/// (x1, y1) --- 点1/// (x2, y2) --- 点2/// (x3, y3) --- 点3/// (cx, cy) --- 求出的圆心坐标/// radius --- 求出的圆心半径/// 返回值:/// 存在则返回true/// 不存在则返回false/// </summary>public static bool CircleFrom3Points( double x1, double y1, double x2, double y2, double x3, double y3, out double cx, out double cy, out double radius){ double a = x1 - x2; double b = y1 - y2; double c = x1 - x3; double d = y1 - y3; double e = ((x1 * x1 - x2 * x2) + (y1 * y1 - y2 * y2)) / 2.0; double f = ((x1 * x1 - x3 * x3) + (y1 * y1 - y3 * y3)) / 2.0; double det = b * c - a * d; if (Math.Abs(det) < 1e-5) { cx = 0; cy = 0; radius = 0; return false; } else { cx = -(d * e - b * f) / det; cy = -(a * f - c * e) / det; radius = Math.Sqrt( (x1 - cx) * (x1 - cx) + (y1 - cy) * (y1 - cy)); return true; }}
阅读全文
0 0
- AutoCAD .Net 创建圆Circle
- AutoCAD.NET创建对象之绘制圆
- AutoCAD .Net EntityJig – Jig Circle by Center and Radius
- AutoCAD .Net 创建直线Line
- AutoCAD .Net 创建多段线Polyline
- AutoCAD .Net 创建圆弧Arc
- AutoCAD .Net 创建椭圆Ellipse
- AutoCAD .Net 创建点Point
- AutoCAD .Net 创建填充Hatch
- AutoCAD .Net 创建线性标注
- AutoCAD .Net 创建对齐标注
- AutoCAD.NET创建对象之绘制直线
- AutoCAD.NET创建对象之绘制圆弧
- AutoCAD .Net 用代码创建菜单
- AutoCAD .Net 创建Ribbon界面(一)
- AutoCAD .Net 创建Ribbon界面(二)
- 用.NET创建并且覆盖AutoCAD的标注样式
- 用.Net在AutoCAD中创建包含文字的线型
- 考题篇(5.4) NSE4 07. 基础 IPsec VPN ❀ 飞塔 (Fortinet) 网络安全专家
- 使用plsql导出数据库表中数据
- 用户输入的字符串中空格的替换
- Jupyter notebook教程
- 日志系统
- AutoCAD .Net 创建圆Circle
- [MySQL] CentOS7 yum安装mysql5.5/5.6并初始化
- 树莓派3下有VC程序设计的例子
- malloc()和free()
- C语言88年乱码大赛经典作品完全解析
- 大小写字母的转换
- 安装Redis
- MarkDown数学公式的详解
- Mac 更改jdk环境变量