c# cad2016选择封闭多段线获取多段线面积

在C#中,如果你想要通过AutoCAD .NET API来选择封闭多段线内部的其他闭合多段线并计算它们各自的面积,可以遵循以下基本步骤:

1、加载AutoCAD库: 确保你的C#项目引用了Autodesk.AutoCAD.Interop和Autodesk.AutoCAD.Interop.Common这两个库。

2、初始化AutoCAD应用: 创建一个AcadApplication类的对象实例以与AutoCAD应用程序交互。

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;//1获取当前激活的文档(活动文档)并将其赋给doc变量。
Document doc = Application.DocumentManager.MdiActiveDocument;
//2 将doc文档的数据库(Database)赋给db变量。
Database db = doc.Database;
//3 将doc文档的编辑器(Editor)赋给ed变量。
Editor ed = doc.Editor;

3、用户交互选择对象: 使用.SelectImplied()或者.GetSelectionSet()方法让用户选择封闭多段线内的闭合多段线。

PromptSelectionResult selRes = ed.SelectImplied("选择内部的闭合多段线...");if (selRes.Status == PromptStatus.OK)
{SelectionSet selectionSet = selRes.Value;
}

4、遍历选择集并计算面积: 对于选中的每一个多段线对象,获取其几何信息并计算面积。

foreach (ObjectId id in selectionSet.GetObjectIds())
{using (Polyline polyline = (Polyline)tr.GetObject(id, OpenMode.ForRead)){if (polyline.IsClosed && polyline.NumberOfVertices > 0){double area = polyline.Area;ed.WriteMessage($"多段线 {id} 的面积为: {area}");}}
}

5、确保在一个事务中进行操作: 在AutoCAD中执行任何数据库修改或查询操作之前,需要开启一个事务。

using (Transaction tr = db.TransactionManager.StartTransaction())
{// 上面的代码应该在这个事务作用域内
}// 不要忘记提交事务(如果有必要)
tr.Commit();

6、完整代码

 //获取面积[CommandMethod("GetArea")]public void GetArea(){//1获取当前激活的文档(活动文档)并将其赋给doc变量。Document doc = Application.DocumentManager.MdiActiveDocument;//2 将doc文档的数据库(Database)赋给db变量。Database db = doc.Database;//3 将doc文档的编辑器(Editor)赋给ed变量。Editor ed = doc.Editor;PromptSelectionResult selRes = ed.GetSelection(new SelectionFilter(new[] { new TypedValue((int)DxfCode.Start, "LWPOLYLINE")
}));if (selRes.Status == PromptStatus.OK){SelectionSet selectionSet = selRes.Value;using (Transaction tr = db.TransactionManager.StartTransaction()){foreach (ObjectId id in selectionSet.GetObjectIds()){using (Polyline polyline = (Polyline)tr.GetObject(id, OpenMode.ForRead)){if (polyline.Closed && polyline.NumberOfVertices > 0){double area = polyline.Area;ed.WriteMessage($"\n多段线 {id} 的面积为: {area.ToString("0.00")}");}}}tr.Commit();}}}

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

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

相关文章

Jmeter连接数据库报错Cannot load JDBC driver class‘com.mysql.jdbc.Driver’解决

问题产生: 我在用jmeter连接数据库查询我的接口是否添加数据成功时,结果树响应Cannot load JDBC driver class com.mysql.jdbc.Driver 产生原因: 1、连接数据库的用户密码等信息使用的变量我放在了下面,导致没有取到用户名密码IP等信息,导致连接失败 2、jmeter没有JDB…

《动手学深度学习(PyTorch版)》笔记4.7

Chapter4 Multilayer Perceptron 4.7 Forward/Backward Propagation and Computational Graphs 本节将通过一些基本的数学和计算图,深入探讨反向传播的细节。首先,我们将重点放在带权重衰减( L 2 L_2 L2​正则化)的单隐藏层多层…

opencv#33 边缘检测

边缘检测原理 图像的每一行每一列都可以看成是一个连续的信号经过离散后得到的数值,例如上图左侧给出的图像由黑色到白色的一个信号,也就是图像中某一行像素变化是由黑色逐渐到白色,我们将其对应在一个坐标轴中,将像素值的大小对应…

【Java基础】聊聊你不知道反射的那些事

在编程语言中,反射是一个绕不过的一个话题,反射、注解、动态代理是支撑框架运行的核心技术。 在Spring中,IOC利用反射实现,创建对象。AOP利用动态代理实现,实现切面编程,配置利用注解实现。所以继上一篇&am…

代码随想录算法训练营第32天 | 122.买卖股票的最佳时机II 55.跳跃游戏 45.跳跃游戏II

买卖股票的最佳时机II 贪心思路 要想使用贪心算法解决此问题,意识到利润是可分解的很关键。比如[1,2,3,4,5]这个输入,最大利润为第一天买入,第五天卖出。这等效于第一天买入,第二天卖出,第二天再买入。。。 prices[4]…

HCS-华为云Stack-FusionSphere

HCS-华为云Stack-FusionSphere FusionSphere是华为面向多行业客户推出的云操作系统解决方案。 FusionSphere基于开放的OpenStack架构,并针对企业云计算数据中心场景进行设计和优化,提供了强大的虚拟化功能和资源池管理能力、丰富的云基础服务组件和工具…

MYSQL基本查询(CURD:创建、读取、更新、删除)

文章目录 前言一、Create1.全列插入2.指定列插入3.插入否则更新4.替换 二、Retrieve1.SELECT列2.WHERE条件3.结果排序4.筛选分页结果 三、Update四、Delete1.删除数据2.截断表 五、插入查询结果六、聚合函数 前言 操作关系型数据库的编程语言,定义了一套操作关系型…

kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学

本次渗透测试将使用kali虚拟机(攻击机)对本机(靶机)进行入侵并监控屏幕 声明:本篇仅仅是将本机作为靶机的一次简易渗透测试,实际情况中基本不可能出现如此简单的木马骇入(往往在上传木马时就被防…

Android App开发-简单控件(4)——按钮触控和图像显示

3.4 按钮触控 本节介绍了按钮控件的常见用法,包括:如何设置大小写属性与点击属性,如何响应按钮的点击事件和长按事件,如何禁用按钮又该如何启用按钮,等等。 3.4.1 按钮控件Button 除了文本视图之外,按钮…

clickhouse 安装与入门(单节点安装)

1、简介 Clickhouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing)的列式存储数据库管理系统。写入快、查询快,支持sql向量化、并行和分布式查询;但是不支持事务,不支持二级索引等。由俄罗斯的Y…

5_机械臂运动学基础_矩阵

上次说的向量空间是为矩阵服务的。 1、学科回顾 从科技实践中来的数学问题无非分为两类:一类是线性问题,一类是非线性问题。线性问题是研究最久、理论最完善的;而非线性问题则可以在一定基础上转化为线性问题求解。 线性变换: 数域…

【jetson笔记】解决vscode远程调试qt.qpa.xcb: could not connect to display报错

配置x11转发 jetson远程安装x11转发 安装Xming Xming下载 安装完成后打开安装目录C:\Program Files (x86)\Xming 用记事本打开X0.hosts文件,添加jetson IP地址 后续IP改变需要重新修改配置文件 localhost 192.168.107.57打开Xlaunch Win菜单搜索Xlaundch打开 一…

openssl3.2 - 测试程序的学习 - test\acvp_test.c

文章目录 openssl3.2 - 测试程序的学习 - test\acvp_test.c概述笔记要单步学习的测试函数备注END openssl3.2 - 测试程序的学习 - test\acvp_test.c 概述 openssl3.2 - 测试程序的学习 将test*.c 收集起来后, 就不准备看makefile和make test的日志参考了. 按照收集的.c, 按照…

【java面试】常见问题(超详细)

目录 一、java常见问题JDK和JRE的区别是什么?Java中的String类是可变的还是不可变的?Java中的equals方法和hashCode方法有什么关系?Java中什么是重载【Overloading】?什么是覆盖【Overriding】?它们有什么区别&#xf…

【计算机网络】概述|分层体系结构|OSI参考模型|TCP/IP参考模型|网络协议、层次、接口

目录 一、思维导图 二、计算机网络概述 1.计算机网络定义、组成、功能 2.计算机网络分类 3.计算机网络发展历史 (1)计算机网络发展历史1:ARPANET->互联网 (2)计算机网络发展历史2:三级结构因特网 …

【JavaWeb】日程管理系统 添加过滤器登录校验 第三期

文章目录 过滤器控制登录校验创建过滤器类修改login原业务方法 总结 过滤器控制登录校验 未添加过滤器 可以直接访问 showShedule.html 需求说明: 未登录状态下不允许访问showShedule.html和SysScheduleController相关增删改处理,重定向到login.html,登录成功后可以自由访问 创…

RabbitMQ进阶篇【理解➕应用】

🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于RabbitMQ的相关操作吧 目录 🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 一.什么是交换机 1.概念释义 2.例…

web前端-------伪类和伪元素

但是,网页中一些特殊的样式,需要用到特殊的CSS选择器来设置。在CSS中,我们把这类选择器称为伪选择器。 伪选择器,分为伪类选择器和伪元素选择器两个大类。 伪类选择器,简称伪类;…

【贪吃蛇:C语言实现】

文章目录 前言1.了解Win32API相关知识1.1什么是Win32API1.2设置控制台的大小、名称1.3控制台上的光标1.4 GetStdHandle(获得控制台信息)1.5 SetConsoleCursorPosition(设置光标位置)1.6 GetConsoleCursorInfo(获得光标…

【DeepLearning-8】MobileViT模块配置

完整代码: import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) def conv_nxn_bn(inp, oup, kernal_size3, stride1):re…