CAD二次开发(10)-单行文字的添加+图形修改

news2024/11/24 14:31:05

1. 单行文字的添加

第一步: 首先在CAD中新增中文样式
输入ST命令:
在这里插入图片描述
第二步:代码开发

 /// <summary>
        /// 添加文本信息
        /// </summary>
        [CommandMethod("AddText")]
        public void AddText()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var docDatabase = doc.Database;
            using (var trans = docDatabase.TransactionManager.StartTransaction())
            {
                //打开块表
                TextStyleTable textStyleTable = (TextStyleTable)trans.GetObject(docDatabase.TextStyleTableId, OpenMode.ForRead);
                var objectId = textStyleTable["chinese"];
                DBText text = new DBText
                {
                    TextString = "wuk测试添加单行文本",
                    //文本坐标
                    Position   = new Point3d(500,500,0),
                    Height = 500,
                    //宽度因子
                    WidthFactor = 0.8,
                    TextStyleId = objectId
                };
                docDatabase.AddEnityToModelSpace(text);
                trans.Commit();
            }
        }

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

2. 修改和克隆图形

 /// <summary>
        /// 添加文本信息
        /// </summary>
        [CommandMethod("EditEntity")]
        public void EditEntity()
        {
            
            var doc = Application.DocumentManager.MdiActiveDocument;
            var docDatabase = doc.Database;
            var selectEntity = Selected.selectEntities()[0];
            if (selectEntity is Circle)
            {
                using (var trans = docDatabase.TransactionManager.StartTransaction())
                {
                    //修改对象
                    Circle circle = (Circle)selectEntity.ObjectId.GetObject(OpenMode.ForWrite);
                    circle.Radius = 600;
                    circle.Color = Color.FromRgb(255, 0, 0);
                    trans.Commit();
                }  
            }

            // 克隆对象,原对象不变
            if (selectEntity is Circle myCircle)
            {
                var circle = myCircle.Clone() as Circle;
                if (circle != null)
                {
                    circle.Radius = 500;
                    circle.Color = Color.FromRgb(255, 0, 0);
                    //修改坐标
                    circle.Center = new Point3d(100, 100, 100);
                    docDatabase.AddEnityToModelSpace(circle);
                }
            }
        }

图示结果:
在这里插入图片描述

3. 图形形变

/// <summary>
        /// 图形形变
        /// </summary>
        [CommandMethod("EditEntityTest")]
        public void EditEntityTest()
        {
            
            var doc = Application.DocumentManager.MdiActiveDocument;
            var docDatabase = doc.Database;
            var selectEntity = Selected.selectEntities()[0];
            using (var trans = docDatabase.TransactionManager.StartTransaction())
            {
                //修改对象
                Entity  entity = (Entity)selectEntity.ObjectId.GetObject(OpenMode.ForWrite);
                Matrix3d matrix3d;
                //平移
                // matrix3d = Matrix3d.Displacement(new Vector3d(200,200,0));
                // entity.TransformBy(matrix3d);
                
                // //旋转 参数1:旋转角度 2:旋转轴心(负则反方向顺时针) 3:旋转中心
                // matrix3d = Matrix3d.Rotation(Math.PI/6,Vector3d.ZAxis,Point3d.Origin);
                
                // //缩放 参数1:缩放比例 2:缩放中心
                // matrix3d = Matrix3d.Scaling(2,new Point3d(50,50,0));
                // 镜像 两种方式
                matrix3d = Matrix3d.Mirroring(new Plane(Point3d.Origin,new Point3d(0,1,0),new Point3d(0,0,1)));
                matrix3d = Matrix3d.Mirroring(new Line3d(Point3d.Origin, new Point3d(0, 1, 0)));
                entity.TransformBy(matrix3d);
                trans.Commit();
            } 
            
        }

旋转
在这里插入图片描述

4. 块参照

/// <summary>
        /// 图形形变
        /// </summary>
        [CommandMethod("EditEntityTest1")]
        public void EditEntityTest1()
        {
            
            var doc = Application.DocumentManager.MdiActiveDocument;
            var docDatabase = doc.Database;
            var block = Selected.selectEntities()[0];
            if (block is BlockReference blockReference)
            {
                using (var trans = docDatabase.TransactionManager.StartTransaction())
                {
                    // String name = blockReference.BlockName;
                    // var ro = blockReference.Rotation;
                    // var factors = blockReference.ScaleFactors;
                    // var position = blockReference.Position;
                    
                    //修改块参照数据
                    BlockReference blockR = (BlockReference)block.ObjectId.GetObject(OpenMode.ForWrite);
                    blockR.Rotation = Math.PI / 6;
                    blockR.ScaleFactors = new Scale3d(2, 2, 2);
                    
                    trans.Commit();
                } 
            }
            
            
        }

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

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

相关文章

分析医药零售数据该用哪个BI数据可视化工具?

数据是企业决策的重要依据&#xff0c;可以用于现代企业大数据可视化分析的BI工具有很多&#xff0c;各有各擅长的领域。那么哪个BI数据可视化工具分析医药零售数据又好又快&#xff1f; 做医药零售数据分析首推奥威BI数据可视化工具&#xff01; 奥威BI数据可视化工具做医药…

c++实现二叉搜索树(下)

好久不见啊&#xff0c;baby们&#xff0c;小吉我又回归了&#xff0c;发完这一篇小吉将会有两周时间不会更新blog了&#xff08;sorry&#xff09;&#xff0c;在小吉没有发blog的日子里大家也要好好学习数据结构与算法哦&#xff0c;还有就是别忘了小吉我❤️  这篇博客是二…

新火种AI|Sora发布半年之后,AI视频生成领域风云再起

作者&#xff1a;一号 编辑&#xff1a;美美 AI视频最近有些疯狂&#xff0c;Sora可能要着急了。 自OpenAI的Sora发布以来&#xff0c;AI视频生成技术便成为了科技界的热门话题。尽管Sora以其卓越的性能赢得了广泛关注&#xff0c;但其迟迟未能面向公众开放&#xff0c;让人…

计算机网络——传输层重要协议(TCP、UDP)

一、常见名词解释 IP地址&#xff1a;IP地址主要用于标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址&#xff0c;即IP地址用于定位主机的网络地址&#xff1b; IP地址是一个32位的二进制数&#xff0c;通常被分割为4个 8位⼆进制数&#xff08;也就是…

C++之std::type_identity

目录 1.简介 2.C20的std::type_identity 3.使用 type_identity 3.1.阻止参数推导 3.1.1.模板参数推导过程中的隐式类型转换 3.1.2.强制显式实例化 3.2.阻止推断指引 3.3.类型保持 3.4.满足一些稀奇古怪的语法 4.示例 5.总结 1.简介 std::type_identity 是 C17 引入的…

运算放大器共模抑制比(CMRR)

目录 运算放大器共模抑制比(CMRR) 三运放共模抑制比电路 运算放大器共模抑制比(CMRR) 如果信号均等施加至运算放大器的两个输入端&#xff0c;使差分输入电压不受影响&#xff0c;则输出也不应受影响。实际上&#xff0c;共模电压的变化会引起输出变化。运算放大器共模抑制比…

鸿蒙实现金刚区效果

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 所谓“金刚区"是位于APP功能入口的导航区域&#xff0c;通常以“图标文字”的宫格导航的形式出现。之所以叫“金刚区”&#xff0c;是因为该区域会随着业务目标的改变&#xff0c;展示不同的功能图标&#xff…

SpringMVC—RequestMapping注解

一、RequestMapping注解 RequestMapping注解&#xff1a;是Spring MVC框架中的一个控制器映射注解&#xff0c;用于将请求映射到相应的处理方法上&#xff0c;具体来说&#xff0c;他可以将指定URL的请求绑定到一个特定的方法或类上&#xff0c;从而实现对请求的处理和响应。 …

充电学习—7、BC1.2 PD协议

BC1.2&#xff08;battery charging&#xff09;充电端口识别机制&#xff1a; SDP、CDP、DCP 1、VBUS detect&#xff1a;vbus检测 PD&#xff08;portable device&#xff0c;便携式设备&#xff09;中有个检测VBUS是否有效的电路&#xff0c;电路有个参考值&#xff0c;高…

高级算法复习指南

自用 如果帮到了你就点个关注和赞吧&#xff01; 1.算法知识回顾 求两个不全为0的非负整数m和n的最大公约数 数据结构回顾 数组 连续内存分配、静态大小、类型一致、索引访问、访问时间相同、边界检查 多维数组&#xff1a;数组的数组&#xff0c;可以是连续的&#xff0c…

不重新安装Anaconda找回不见的Anaconda Prompt

找回Anaconda Prompt只需三步 系统&#xff1a;win11 x641.cd Anaconda的安装目录2. Anaconda Prompt又回来了 系统&#xff1a;win11 x64 1.cd Anaconda的安装目录 winR 输入cmd 进入命令行&#xff0c;进入到Anaconda的安装目录 eg&#xff1a;我的Anaconda安装在&#xff…

Ptrade和QMT的区别,怎么获取合适的量化交易软件?

​Ptrade和QMT的适用人群 交易活跃用户 量化爱好者已经专业量化投资者 高净值个人或机构 Ptrade和QMT的区别 回测和交易频率 Ptrade回测和交易只支持分钟级和日线级别的频率&#xff0c;而QMT支持tick级、分钟级、5分钟级、10分钟级、日线、周线、月线等。 使用QMT进行回…

GDB调试相关教程

GDB调试相关教程 相关参考链接 https://wizardforcel.gitbooks.io/100-gdb-tips/content/set-step-mode-on.htmlhttps://wizardforcel.gitbooks.io/100-gdb-tips/content/set-step-mode-on.html 设置程序运行参数 命令set args 10 20 30 40 使用show args显示设置好的运行参…

线性稳压器LDO的基础知识

一、什么是线性稳压器? 线性稳压器的工作原理是&#xff1a;采用一个压控电流源以强制在稳压器输出端上产生一个固定电压。控制电路连续监视&#xff08;检测&#xff09;输出电压&#xff0c;并调节电流源&#xff08;根据负载的需求&#xff09;以把输出电压保持在期望的数值…

(微服务实战)聚合支付系统商户线上聚合收银台接口设计

1 概述 聚合支付收款分为线上和线下业务场景&#xff0c;本文中的商户收银台接口设计主要是指线上业务场景&#xff0c;线下业务场景聚合收款方式后续会进行单独设计和分析。 主流的线上支付渠道有微信支付&#xff0c;支付宝支付&#xff0c;云闪付。这三种支付渠道都有各自…

JupyterLab使用指南(五):JupyterLab的 扩展

1. 什么是JupyterLab的扩展 JupyterLab 扩展&#xff08;Extension&#xff09;是一种插件机制&#xff0c;用于增强 JupyterLab 的功能。通过安装扩展&#xff0c;用户可以添加新的功能、改进现有功能&#xff0c;甚至自定义界面和工作流。扩展可以覆盖各种用途&#xff0c;从…

零售门店收银系统源码

智慧新零售系统是一套线下线上一体化的收银系统。致力于给零售门店提供『多样化线下收银』、『ERP进销存』、『o2o小程序商城』、『精细化会员管理』、『丰富营销插件』等一体化行业解决方案&#xff01; 一、多样化线下收银 1.聚合收款码 ①适用商户&#xff1a;小微门店&am…

QT day4(对话框 事件机制)

1&#xff1a;思维导图 2&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->setupUi(this);//去除头部this->setWindowFlag(Qt::Frameles…

【docker 如何自定义镜像】

查看容器列表 首先是查看容器&#xff1a;在命令台中键入 docker ps -a 命令&#xff0c;得到如下界面。 从容器创建一个新镜像 接着&#xff0c;dockers commit 容器名 要保存成的镜像名&#xff1a;版本名&#xff08;若没有 &#xff1a;版本名 则直接默认为latest&#x…