CAD二次开发(9)- CAD中对象的实时选择

1. 点的拾取

有时候我们需要在CAD画布上实时选取起始点和结束点,然后绘制出来一条直线。实现如下:

public void getPoint(){var doc = Application.DocumentManager.MdiActiveDocument;var editor = doc.Editor;var docDatabase = doc.Database;PromptPointOptions ppo = new PromptPointOptions("拾取线段起点:");//获取线段起点的输入PromptPointResult pointResult = editor.GetPoint(ppo);var start = pointResult.Value;//基点到光标的虚线标识ppo.BasePoint = start;ppo.UseBasePoint=true;ppo.UseDashedLine=true;//如果用户设置了起始节点,再让用户获取结束节点if (pointResult.Status == PromptStatus.OK){ppo.Message = "拾取线段终点:";pointResult = editor.GetPoint(ppo);var end = pointResult.Value;if (pointResult.Status == PromptStatus.OK){//方式一:绘制临时向量,并不存储到数据库中// editor.DrawVector(start,end,1,false);//方式二:提交到数据库docDatabase.AddEnityToModelSpace(new Line(start, end));}}}

AddEnityToModelSpace方法见我前面文章封装的工具类

效果如下:
在这里插入图片描述
在这里插入图片描述

2. 角度的拾取

 public void getAngle(){var editor = Application.DocumentManager.MdiActiveDocument.Editor;PromptAngleOptions pao = new PromptAngleOptions("拾取角度:");pao.AllowNone = false;pao.UseDashedLine = true;pao.UseAngleBase=false;PromptDoubleResult startAngle = editor.GetAngle(pao);if (startAngle.Status == PromptStatus.OK){editor.WriteMessage("\n角度:{0}", startAngle.Value);}}

最终效果:
在这里插入图片描述

3. 单个实体对象的拾取

public void getOneEntity(){var doc = Application.DocumentManager.MdiActiveDocument;Editor editor = doc.Editor;PromptEntityResult per = editor.GetEntity("\n拾取任意实体:");if (per.Status == PromptStatus.OK){var perObjectId = per.ObjectId;using (Transaction ts = doc.Database.TransactionManager.StartTransaction()){var entity = (Entity)ts.GetObject(perObjectId, OpenMode.ForRead,true);editor.WriteMessage("\n拾取实体对象:{0},类型:{1}", entity.ToString(),entity.GetType().FullName);ts.Commit();}}}

4. 特定实体对象的拾取

利用过滤器进行选择。

 public void getSpecificEntity(){var doc = Application.DocumentManager.MdiActiveDocument;Editor editor = doc.Editor;PromptEntityOptions peo = new PromptEntityOptions("\n拾取线条:");peo.SetRejectMessage("\n 选择的对象类型不是线条,请重新选择!");peo.AddAllowedClass(typeof(Line), true);PromptEntityResult per = editor.GetEntity(peo);if (per.Status == PromptStatus.OK){var perObjectId = per.ObjectId;using (Transaction ts = doc.Database.TransactionManager.StartTransaction()){var entity = (Entity)ts.GetObject(perObjectId, OpenMode.ForRead,true);editor.WriteMessage("\n拾取实体对象:{0},类型:{1}", entity.ToString(),entity.GetType().FullName);ts.Commit();}}}

5. 利用选择集拾取多个实体对象

/// <summary>/// 利用选择集选择多个实体对象/// </summary>[CommandMethod("selectEntities")]public void selectEntitiesTest(){List<Entity> entities = selectEntities();}public List<Entity> selectEntities(){var doc = Application.DocumentManager.MdiActiveDocument;Editor editor = doc.Editor;var docDatabase = doc.Database;SelectionSet selectionSet;//清空选择集var objectIds = new ObjectId[0];editor.SetImpliedSelection(objectIds);//请求从图形区域选择对象PromptSelectionResult psr = editor.GetSelection();if (psr.Status == PromptStatus.OK){selectionSet = psr.Value;var objectIdList = selectionSet.GetObjectIds().ToList();List<Entity> entities = new List<Entity>();using (Transaction tr = docDatabase.TransactionManager.StartTransaction()){foreach (var objectId in objectIdList){var entity = (Entity)objectId.GetObject(OpenMode.ForRead);entities.Add(entity);}tr.Commit();return entities;}}return null;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写操作系统

对喜欢操作系统的伙伴强推一门课程 从0开始实现了支持文件系统、任务切换和网络协议栈的操作系统。 具体见 &#xff1a;http://www.ziyuanwang.online/977.html

三星(中国)投资公司线上入职测评笔试邀请数字推理语言逻辑真题题库

三星&#xff08;中国&#xff09;有限公司北京分公司 邀请您参加 SHL线上笔试 具体安排如下&#xff1a; 笔试时间&#xff1a;周三 9:00 笔试时长&#xff1a;1.5h ~ 2h 笔试内容及要求&#xff1a;数字推理限时30min&#xff1b;语言逻辑限时30min&#xff1b;性格测试不…

Flink集群运行模式

我们了解了flink的一个集群的一个基础架构&#xff0c;包括里面核心的一些组件&#xff0c;比如说job manager&#xff0c;task manager等一些组件的一些主要的一些组成。本节课程开始我们学习flink的一个集群部署模式。首先我们来看一下flink集群部署模式究竟应该有哪一些种类…

重学java 72.正则表达式

人长大之后就在频繁地离别&#xff0c;相聚反而时日无多 —— 24.6.17 一、正则表达式的概念及演示 1.概述 正则表达式是一个具有特殊规则的字符串 2.作用&#xff1a;校验 3.String中有一个校验正则的方法&#xff1a; boolean matches(String regex) —— 校验字符串是否…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举&#xff1a; public class WareConstant {public enu…

嵌入式中间件_1.嵌入式中间件的定义及特点

1.嵌入式中间件的定义及特点 1.嵌入式中间件的定义 中间件&#xff08;Middleware&#xff09;属于可复用 软件的范畴。顾名思义&#xff0c;中间件处于操作系统软件与用户的应用软件的中间&#xff0c;在操作系统、网络和数据库之上&#xff0c;应用软件之下&#xff0c;其作…

Langchain-chatchat: Langchain基本概念

一、Langchain的chain是指的是什么&#xff1f; langchain字面意思是长长的链子&#xff0c;那么chains 链子具体指的是什么呢&#xff1f; 智普AI助手的回答如下&#xff1a; LangChain 中的 “chain” 是指链式操作或者序列化操作&#xff0c;它是一种将多个任务或操作按照…

【有用】docker在windows下使用详情

在Windows下安装和使用Docker可以按照以下步骤进行&#xff1a; 安装 Docker Desktop 系统要求 • Windows 10 64-bit: Pro, Enterprise, or Education (1607 Anniversary Update, Build 14393 or later) • Windows 11 64-bit: Pro, Enterprise, or Education • Windows 10 …

DPDK环境配置

DPDK环境配置 DPDK&#xff08;Data Plane Development Kit&#xff09;是一个开源的软件框架&#xff0c;最初由Intel开发&#xff0c;旨在提升数据包处理性能&#xff0c;尤其是在Intel架构的处理器上。它允许开发者在用户空间&#xff08;user space&#xff09;而不是传统…

Excel批量删除括号里内容,帮你轻松应对!

某次&#xff0c;刘小生从系统导出的人员信息中&#xff0c;“姓名”字段信息中包含了工号信息&#xff0c;需要将“原姓名”中的“工号、括号”信息删除&#xff0c;如果一个一个删除工作量很大&#xff0c;刘小生想到可以用“通配符*”批量替换&#xff0c;解放双手&#xff…

飞天茅台酒的惊魂五日

“电商百亿补贴修改发货规则”导致黄牛资金压力剧增&#xff0c;资金压力之下部分黄牛择低价甩卖&#xff0c;其他求货的酒行、大酒商则选择观望&#xff0c;价格下行压力最终扩散&#xff0c;造成整个回收市场踩踏&#xff0c;价格急速下跌。 不到半年时间&#xff0c;飞天茅台…

初学者必看的web前端开发学习路线,干货满满!

初学者必看的web前端开发学习路线,干货满满&#xff01; 随着互联网的深入发展,前端工程师这个岗位在市场上的需求&#xff0c;薪资也是很可观的。前端很火&#xff0c;想自学前端的人也很多。包括一些学生、上班族、以前的UI&#xff0c;java&#xff0c;或完全零基础&#xf…

免费无版权可商用资源|自媒体创业者、设计师、电商商家必备

1.前言 小伙伴们大家好&#xff0c;欢迎来到天夏Ai&#xff0c;这里专注于分享人工智能精品资源&#xff1a;Ai副业项目、Ai效率神器&#xff01;和你一起共享Ai信息&#xff0c;分享Ai副业项目资源&#xff0c;开启智能副业赚钱新时代&#xff01; 今天为大家分享免费无版权可…

Web 前端开发趋势

前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方式 虽然跟上前端生态系统的变化可能具有挑战性&#xff0c;但作为专业人士&#xff0c;保持技能的更新有助于我们开展工作。…

模块一:登录模块

模块一&#xff1a;登录模块 发送验证码 Controller层 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {return userService.sendCode(phone, session);}Service接口 publ…

PBC密码库安装及使用教程

文章目录 1.PBC库介绍2.PBC库安装3.PBC库使用4.相关API4.1 配对的初始化和释放4.2 元素的初始化和释放4.3 元素的赋值4.4 哈希4.5 元素的常用运算4.6 元素的幂运算4.7 元素的比较4.8 从群中随机选取一个元素&#xff08;常用&#xff09;4.9 配对的运算4.10 小结 5.Some exampl…

游戏心理学Day17

游戏评选中的心理因素 心理学博士杰米马迪根提出了影响年度最佳游戏评选的五大心理因素&#xff0c;这对参赛者和评委都颇具意义 认知偏差 许多年度游戏评选&#xff0c;比如最佳叉叉类游戏&#xff0c;最后总会有两个竞争者打成平局&#xff0c;这是游戏评审过程就变成了一…

代码随想录算法训练营第39天|● 62.不同路径 ●63. 不同路径 II

不同路径 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路径。 2.确定递推公式 …

RocketMQ源码学习笔记:NameServer启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、NameServer启动流程2.1、总结2.2、NamesrvController2.2.1、主要职责2.2.2、关键的成员变量2.2.3、核心代码2.2.4、值得注意的点 1、Overview NameServer主要就做三件事 Nam…

vue3的基本使用方法

【 vue3实例 】 【 0 】对象、方法和属性 对象&#xff08;Object&#xff09;&#xff1a; 对象是编程中的一个数据结构&#xff0c;它可以包含多种数据类型&#xff0c;包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…