news 2026/6/10 0:28:50

直接画圆或输入半径(关键字和选择状态并列)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
直接画圆或输入半径(关键字和选择状态并列)

if (pointResult.Status == PromptStatus.Keyword)
else if (pointResult.Status == PromptStatus.OK)
{
// 用户直接指定了点,使用默认半径画圆
CreateCircle(db, ed, pointResult.Value, radius);
}
else
{
// 用户取消
return;
}

public static void DrawCircleWithDirectOption() { // 获取当前文档和编辑器 Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; try { double radius = 100.0; // 默认半径 bool radiusSpecified = false; // 第一步:提示用户指定圆心点或输入关键字R // 这里的关键是使用 PromptPointOptions,它允许用户直接点选或输入关键字 PromptPointOptions pointOptions = new PromptPointOptions("\n指定圆心点或 [半径(R)]: "); pointOptions.Keywords.Add("R"); pointOptions.AppendKeywordsToMessage = true; // 这里设置 AllowNone 为 true,允许用户直接按Enter键 // 但我们的需求是直接点选或输入R,所以不需要AllowNone PromptPointResult pointResult = ed.GetPoint(pointOptions); if (pointResult.Status == PromptStatus.Keyword) { // 用户输入了关键字 "R" if (pointResult.StringResult == "R") { // 提示用户输入半径值 PromptDoubleOptions radiusOptions = new PromptDoubleOptions("\n请输入半径值: "); radiusOptions.AllowZero = false; // 不允许零值 radiusOptions.AllowNegative = false; // 不允许负值 radiusOptions.DefaultValue = 100.0; // 默认值100 PromptDoubleResult radiusResult = ed.GetDouble(radiusOptions); if (radiusResult.Status != PromptStatus.OK) return; // 用户取消或输入错误 radius = radiusResult.Value; radiusSpecified = true; // 再次提示用户指定圆心点 PromptPointOptions centerOptions = new PromptPointOptions("\n指定圆心点: "); PromptPointResult centerResult = ed.GetPoint(centerOptions); if (centerResult.Status != PromptStatus.OK) return; CreateCircle(db, ed, centerResult.Value, radius); } } else if (pointResult.Status == PromptStatus.OK) { // 用户直接指定了点,使用默认半径画圆 CreateCircle(db, ed, pointResult.Value, radius); } else { // 用户取消 return; } } catch (System.Exception ex) { ed.WriteMessage($"\n错误: {ex.Message}"); } } /// <summary> /// 创建圆的辅助方法 /// </summary> private static void CreateCircle(Database db, Editor ed, Point3d center, double radius) { 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; // 创建圆 Circle circle = new Circle(center, Vector3d.ZAxis, radius); // 将圆添加到模型空间 btr.AppendEntity(circle); tr.AddNewlyCreatedDBObject(circle, true); // 提交事务 tr.Commit(); // 显示提示信息 ed.WriteMessage($"\n已创建圆:圆心({center.X:F2}, {center.Y:F2}),半径={radius:F2}"); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 15:40:45

无线网络仿真:6G网络仿真_(10).6G与5G网络仿真对比

6G与5G网络仿真对比 在无线网络技术的发展过程中&#xff0c;5G网络的仿真和测试已经积累了大量的经验和工具。然而&#xff0c;随着6G技术的提出和发展&#xff0c;仿真技术也面临着新的挑战和机遇。本节将详细对比6G与5G网络仿真在原理、工具、性能指标和应用场景等方面的不同…

作者头像 李华
网站建设 2026/6/9 20:04:25

交通仿真软件:SUMO_(19).交通仿真中的大数据处理技术

交通仿真中的大数据处理技术 在交通仿真软件中&#xff0c;大数据处理技术是实现高效、准确仿真结果的关键。随着城市交通系统的复杂性和数据量的不断增加&#xff0c;如何有效地处理和利用这些数据成为了交通仿真领域的一个重要课题。本节将详细介绍如何在交通仿真软件中应用大…

作者头像 李华
网站建设 2026/6/5 9:20:18

Salesforce推出全新升级版Slackbot智能体

Salesforce公司今日正式发布了其大幅增强版的Slackbot人工智能助手&#xff0c;该助手内置于Slack平台中。该公司在去年10月举办的Dreamforce 2025大会上首次展示了这一升级版本。原版Slackbot主要专注于显示通知等相对简单的任务。新版本大幅扩展了该工具可以自动化的使用场景…

作者头像 李华
网站建设 2026/6/4 20:19:48

AI大模型30个核心术语详解,从小白到入门

文章按照AI产品的四层架构&#xff08;基座层、模型层、应用层、用户层&#xff09;详细解释了30个AI领域的重要术语。基座层涵盖算法、算力、数据相关概念&#xff1b;模型层介绍AI核心能力载体&#xff1b;应用层展示AI落地场景&#xff1b;用户层关注AI与用户交互。这些术语…

作者头像 李华
网站建设 2026/6/8 22:43:11

vrrp实例script和 real_server中的HTTP_GET健康检查区别,使用场景总结

Keepalived核心健康检查&#xff1a;VRRP Script & HTTP_GET 在Keepalived高可用集群部署中&#xff0c;健康检查是保障服务连续性的核心机制。其中VRRP实例的script脚本检查与real_server的HTTP_GET检查是最常用的两种方式。 一、核心差异&#xff1a;从检测对象到作用机制…

作者头像 李华
网站建设 2026/6/5 19:43:42

Vue3:泛型类型声明 vs 运行时选项声明 语法对比

Vue 3 提供了两种 props 声明方式&#xff1a;泛型类型声明和运行时选项声明。泛型类型声明&#xff08;defineProps<{prop:Type}>()&#xff09;在编译时进行类型检查&#xff0c;完全支持 TypeScript&#xff0c;适合新项目和追求类型安全的场景。运行时选项声明&#…

作者头像 李华