当前位置: 首页 > news >正文

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

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.lryc.cn/news/375987.html

相关文章:

  • 【SpringBoot集成Spring Security】
  • docker部署dm数据库
  • Shell中执行.sh文件的常见方式
  • 超分辨率重建——2022冠军RLFN网络推理测试(详细图文教程)
  • 国际荐酒师香港协会受邀参加2024年美国独立日庆祝活动
  • (微服务实战)聚合支付系统商户线上聚合收银台接口设计
  • 【漏洞复现】CRMEB开源电商系统 /api/products SQL注入漏洞(CVE-2024-36837)
  • 摄像头图像矫正的表格生成方法
  • 【Arc gis】Arc gis出现ERROR 999999问题的解决办法
  • 优化 Flutter 应用开发:探索 ViewModel 的威力
  • Android开发系列(四)Jetpack Compose之Button
  • Java17 --- RabbitMQ之插件使用
  • 6.18总结
  • 【ARM Cache 及 MMU 系列文章 1.4 -- 如何判断 L3 Cache 是否实现?】
  • 打印mybatis的sql日志
  • QT day4(对话框 事件机制)
  • 序列化与反序列化漏洞实例
  • 6、while循环 - 习题解析
  • ReentrantLock可重入锁
  • 如何秒杀系统架构设计
  • 深度神经网络——什么是降维?
  • SpringMVC—RequestMapping注解
  • Java线程池基本概念
  • 智能车联网安全发展形势、挑战
  • AWS概述
  • MySQL常见面试题自测
  • c语言回顾-函数递归
  • 消息队列-RabbitMQ-延时队列实现
  • 【热门开源项目推荐】满足不同程序员的需求与关注点
  • 一文理清GO语言日志库实现开发项目中的日志功能(rotatelogs/zap分析)