AutoCAD .Net EntityJig – Jig Circle by Center and Radius
来源:互联网 发布:淘宝店铺怎么看退货率 编辑:程序博客网 时间:2024/05/21 07:00
本实例展示使用 EntityJig 技术,动态交互模式创建圆。
翻译自: AutoCAD .NET: EntityJig – Jig Circle by Center and Radius
using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.EditorInput;[CommandMethod("JigCircle")]public static void JigCircle(){ Document doc = Application.DocumentManager.MdiActiveDocument; if (CircleJigger.Jig()) { doc.Editor.WriteMessage("\nSuccess\n"); } else { doc.Editor.WriteMessage("\nFailure\n"); }}public class CircleJigger : EntityJig{ private Circle _circle; public int step = 1; private Point3d _center = new Point3d(); private double _radius = 0.0001; public CircleJigger(Circle circle) : base(circle) { _circle = circle; _circle.Center = _center; _circle.Radius = _radius; } protected override bool Update() { switch (step) { case 1: _circle.Center = _center; break; case 2: _circle.Radius = _radius; break; default: return false; } return true; } protected override SamplerStatus Sampler(JigPrompts prompts) { switch (step) { case 1: JigPromptPointOptions prOptions1 = new JigPromptPointOptions("\n圆心:"); PromptPointResult prResult1 = prompts.AcquirePoint(prOptions1); if (prResult1.Status == PromptStatus.Cancel) return SamplerStatus.Cancel; if (prResult1.Value.Equals(_center)) { return SamplerStatus.NoChange; } else { _center = prResult1.Value; return SamplerStatus.OK; } case 2: JigPromptDistanceOptions prOptions2 = new JigPromptDistanceOptions("\n半径:"); prOptions2.BasePoint = _center; PromptDoubleResult prResult2 = prompts.AcquireDistance(prOptions2); if (prResult2.Status == PromptStatus.Cancel) return SamplerStatus.Cancel; if (prResult2.Value.Equals(_radius)) { return SamplerStatus.NoChange; } else { if (prResult2.Value < 0.0001) { return SamplerStatus.NoChange; } else { _radius = prResult2.Value; return SamplerStatus.OK; } } default: break; } return SamplerStatus.OK; } public static bool Jig() { try { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Circle circle = new Circle(); CircleJigger jigger = new CircleJigger(circle); PromptResult pr; do { pr = doc.Editor.Drag(jigger); jigger.step++; } while (pr.Status != PromptStatus.Cancel && jigger.step <= 2); if (pr.Status != PromptStatus.Cancel) { using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject( bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; btr.AppendEntity(jigger.Entity); tr.AddNewlyCreatedDBObject(jigger.Entity, true); tr.Commit(); } } else { return false; } return true; } catch { return false; } }}
阅读全文
0 0
- AutoCAD .Net EntityJig – Jig Circle by Center and Radius
- AutoCAD .Net EntityJig – Jig Line by Start and End Points
- AutoCAD .NET: EntityJig – Dynamic Dimension and Line Jig
- AutoCAD .Net EntityJig – Dynamic Dimension and Line Jig
- AutoCAD .Net 创建圆Circle
- Creating a multileader in AutoCAD using a jig from .NET
- JIG(即时绘图)-直线即时绘图-EntityJig(单实体即时绘图)
- Accessing the AutoCAD objects referred to by fields using .NET
- ???Finding the Radius for an Inserted Circle
- Previewing and plotting a single sheet in AutoCAD using .NET
- Previewing and plotting multiple sheets in AutoCAD using .NET
- TACACS+ and RADIUS Comparison
- HDU-Rectangle and Circle
- Point and Circle
- auto CAD 二次开发 c#.net 之JIG画多段线(polyline)
- AutoCAD.NET:第一章 AutoCAD.NET二次开发概述
- 定义一个Circle类,有数据成员Radius(半径)
- Finding the Radius for an Inserted Circle 笛卡尔定理
- 【智能零售】60页实地调研报告诉你,零售老板从哪里打响逆袭第一枪?
- 【共享经济】披着共享经济外衣的租赁经济
- CentOS之DNS服务器安装-yellowcong
- UVA
- 符号没有值的错误消息
- AutoCAD .Net EntityJig – Jig Circle by Center and Radius
- JS——JQuery表单对象选择器
- IntelliJ Idea 常用快捷键列表
- 数据结构之LinkedList的简单实现
- 【财富空间】奇点大学创始人彼得·戴曼迪斯:为什么说我们的世界正在走向富足
- 了解c++设计模式
- C++学习手记
- Intel SGX运行时出现“Error code is 0x4001”的解决方法
- 冈萨雷斯数字图像处理学习7:图像分割 基于区域的分割分水岭