c#cad 创建-圆(二)

运行环境 vs2022 c# cad2016  调试成功

一、代码说明

这段代码是一个AutoCAD插件,用于在模型空间中创建一个圆形。

首先,我们需要定义一个命令类CreateCircleCommand,并在命名空间CreateCircleInCad中声明。

在CreateCircleCommand类中,我们使用了CommandMethod特性,将该方法定义为一个命令。命令的名称为"CreateCircle"。

在CreateCircleCommand方法中,我们首先通过Application.DocumentManager.MdiActiveDocument获取当前文档,然后通过doc.Database获取数据库对象,通过doc.Editor获取编辑器对象。

接着,我们通过数据库的事务管理器创建一个事务,并通过事务来打开块表(BlockTable)。然后,通过块表的ModelSpace获取模型空间的块表记录(BlockTableRecord)。

接下来,我们定义了一个Point3d对象作为圆心位置,坐标为(0,0,0),以及一个double类型变量作为圆的半径,半径为5。

接着,我们使用事务来操作模型空间。首先,我们创建了一个Circle对象,并将其添加到模型空间的块表记录中。然后,通过事务的AddNewlyCreatedDBObject方法将该对象从事务中添加到数据库中。

最后,我们使用编辑器对象的WriteMessage方法来输出一条信息,表示圆已被创建。

总体来说,这段代码的作用是在AutoCAD模型空间中创建一个半径为5的圆。

二、完整代码

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

[assembly: CommandClass(typeof(CreateCircleInCad.CreateCircleCommand))]

namespace CreateCircleInCad
{
    public class CreateCircleCommand
    {
        [CommandMethod("CreateCircle")]
        public void CreateCircleCommand()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;
            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;
            Point3d centerPoint = new Point3d(0, 0, 0); // 圆心位置
            double radius = 5; // 圆的半径
            using (tr)
            {
                // 创建圆形对象并添加到模型空间中
                Circle circle = new Circle(centerPoint, radius);
                btr.AppendEntity(circle);
                tr.AddNewlyCreatedDBObject(circle, true);
                ed.WriteMessage("\n圆已创建!");
            }
        }
    }
}

//感谢大家的点赞,收藏,转发,关注   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP协议以及UDP(超详细,看这一篇就够了)

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录专栏:TCP/IP协议以及UDP(超详细,看这一篇就够了) 🎉欢迎大家点赞👍评论📝收藏⭐文章 TCP/IP协议以及UDP(超详细,看这一篇就够了 前提概括接收端和发送端客户…

004集—二调数据库标注分子分母模式及统计净面积——arcgis

二调数据库中分子分母标注方法为&#xff1a; 表达式如下&#xff1a; "<und>"& [TBBH] &"</und>" &vbnewline& [DLBM] "<und>"&[DLBM]&"</und>" &vbnewline& [DLMC] &quo…

IT行业有哪些证书含金量高呢?

目录 引言&#xff1a; 一、 计算机网络类证书 二、 数据库管理类证书 三、 安全与信息技术管理类证书 四、 编程与开发类证书 五、 数据科学与人工智能类证书 六、结论&#xff1a; 悟已往之不谏&#xff0c;知来者犹可追 …

从一到无穷大 #23 《流计算系统图解》书评

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言内容总结 引言 春节假期回到家里断然是不会有看纸质书的时间的。造化弄人&#…

Redis核心技术与实战【学习笔记】 - 20.Redis原子操作及并发访问

概述 使用 Redis 时&#xff0c;不可避免地会遇到并发访问的问题&#xff0c;比如说如果多个用户同时下单&#xff0c;就会对缓存在 Redis 中的商品库存并发更新。一旦有了并发写操作&#xff0c;数据就会被修改&#xff0c;如果我们没有对并发写请求做好控制&#xff0c;就可…

【计算机网络】计算机网络复习资料(期末)

复习要点 一、填空题 1.计算机网络的两个重要基本特点 连通性、共享 2&#xff0e;计算机中的端口号类型 两类端口号 { 服务器端 { 熟知端口号&#xff08;系统端口号&#xff09;数值为0~1023 登记端口号&#xff0c;1024~49151 } 客户端使用的端口号&#xff1a;短…

Mac如何安装python?

一、问题 Mac如何安装python&#xff1f; 二、解决 1、系统自带python Mac系统均自带Python环境&#xff0c;用户在终端输入“python3”命令就可以运行&#xff0c;如图所示 2、官网下载 Download Python | Python.org &#xff08;1&#xff09;在Download下找到macOS &am…

Android Studio中打开文件管理器

文章目录 一、前言二、操作步骤 一、前言 在Android Studio中有时候需要查看手机的文件目录或者复制文件&#xff0c;但是有时候文件管理器找不到在哪&#xff0c;这里记录该操作流程 二、操作步骤 第一步: 第二步: 第三步:

Mysql——更新数据

注&#xff1a;文章参考&#xff1a; MySQL 更新数据 不同条件(批量)更新不同值_update批量更新同一列不同值-CSDN博客文章浏览阅读2w次&#xff0c;点赞20次&#xff0c;收藏70次。一般在更新时会遇到以下场景&#xff1a;1.全部更新&#xff1b;2.根据条件更新字段中的某部分…

flutter使用webview_flutter在安卓和ios上打开网页

webview_flutter仓库地址&#xff1a;webview_flutter | Flutter package github地址&#xff1a;https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter 要打开非https协议的网页&#xff0c;需要在安卓平台上添加权限&#xff1a;andro…

JAVA设计模式之原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

Java图形化界面编程—— 基本组件和对话框 笔记

2.5 AWT中常用组件 2.5.1 基本组件 组件名功能ButtonButtonCanvas用于绘图的画布Checkbox复选框组件&#xff08;也可当做单选框组件使用&#xff09;CheckboxGroup选项组&#xff0c;用于将多个Checkbox 组件组合成一组&#xff0c; 一组 Checkbox 组件将只有一个可以 被选中…

Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区养老服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区养老服务平台&#xff0c;采用M&#xff08;model&…

Vue 条件渲染 双向绑定

https://www.dedao.cn/ebook/reader?id5lZOKpMGr9mgdOvYa6Ej75XRo1NML3jx810k8ZVzb2nqPpDxBeJlK4AyQ8RPQv2z v-if实现条件渲染的功能。v-model实现双向数据传输。 v-model用来进行双向绑定&#xff0c;当输入框中的文字变化时&#xff0c;其会将变化同步到绑定的变量上&#…

华为机考入门python3--(9)牛客9-提取不重复的整数

分类&#xff1a;列表 知识点&#xff1a; 从右往左遍历每一个字符 my_str[::-1] 题目来自【牛客】 def reverse_unique(n): # 将输入的整数转换为字符串&#xff0c;这样可以从右向左遍历每一位 str_n str(n) # 创建一个空列表来保存不重复的数字 unique_digits []…

ChatGPT高效提问—prompt常见用法(续篇六)

ChatGPT高效提问—prompt常见用法&#xff08;续篇六&#xff09; 1.1 控制输出 ​ 控制输出是一种先进的自然语言处理技术&#xff0c;其能够在AI模型生成文本的过程中实现更高级别的控制。通过提供特定的输入&#xff0c;如模板、特定词语或约束性条件&#xff0c;从而精准…

【QT学习十四】 文件目录操作

目录 一、概述 二、详解 1. QFile QFile 类中的一些静态方法&#xff1a; 使用示例&#xff1a; 注意事项&#xff1a; 2. QDir 成员函数 使用实例&#xff1a; 注意事项&#xff1a; 3. QFileInfo 成员函数 使用实例 4. QTemporaryFile 成员函数 使用实例 注…

Redis(三)主从架构、Redis哨兵架构、Redis集群方案对比、Redis高可用集群搭建、Redis高可用集群之水平扩展

转自 极客时间 Redis主从架构 redis主从架构搭建&#xff0c;配置从节点步骤&#xff1a; 1、复制一份redis.conf文件2、将相关配置修改为如下值&#xff1a; port 6380 pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件 logfile "6380.log" …

C语言每日一题(50)二叉树的最大深度

力扣104 二叉树的最大深度 题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; …

嵌入式学习之Linux入门篇笔记——15,Linux编写第一个自己的命令

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 1.什么是命令&#xff1f; 命令就是可执行程序。 比如 ls -a…