C# CAD2016获取数据操作BlockTableRecord、Polyline、DBObject

一、数据操作说明

//DBObject 基础类
DBObject dbObj = (DBObject)tr.GetObject(outerId, OpenMode.ForRead);
//Polyline 线段类
Polyline outerPolyline = (Polyline)tr.GetObject(outerId, OpenMode.ForRead);
//BlockTableRecord 块表类
BlockTableRecord modelSpace = (BlockTableRecord)tr.GetObject(ObjectId.FromName(BlockTableRecord.ModelSpace), OpenMode.ForWrite);
  • tr 是一个 Transaction 对象,代表了对AutoCAD数据库的操作事务。所有对数据库中对象的读取或修改操作都应在事务的上下文中进行。

  • GetObject() 是 Transaction 类的一个方法,它接收两个参数:

    • id 是一个 ObjectId 类型的对象,表示数据库中的一个特定图元对象的唯一标识符。
    • OpenMode.ForRead 指定了打开该对象的方式为只读模式,这意味着你只能访问对象的数据但不能修改它们。
  • as Entity 是C#中的类型转换运算符,它尝试将从 GetObject() 方法返回的对象转换为 Entity 类型。Entity 是AutoCAD .NET API中的一个基类,所有具体的图元对象(如直线、圆、块参照等)都继承自这个类。

  • BlockTableRecord:块表记录。
  • DBObject:所有数据库对象的基类,包括实体(如直线、圆、文字等)、图层、线型、视图等。
  • BlockReference:块参照对象,表示插入到绘图中的块实例。
  • Layer:图层对象,包含图层属性信息。
  • LineCircleText 等具体的几何图形实体类。

二、类型转换方法

ObjectId outerId = ...; // 获取某个对象的ObjectId
DBObject dbObj = (DBObject)tr.GetObject(outerId, OpenMode.ForRead);// 判断并转换为具体类型
if (dbObj is BlockTableRecord)
{BlockTableRecord btr = (BlockTableRecord)dbObj;// 对块表记录进行操作...
}
else if (dbObj is Entity)
{Entity ent = (Entity)dbObj;// 对实体对象进行操作...
}

三、数据类型 

Entity 类及其众多子类:AcDbBlockReference:块参照
AcDbCircle:圆
AcDbLine:直线
AcDbPolyline:多段线
AcDb3dPolyline:三维多段线
AcDbArc:圆弧
AcDbEllipse:椭圆
AcDbText:文字
AcDbMText:多重行文本
AcDbDimension:尺寸标注
AcDbHatch:填充图案
AcDbLeader:引线标注
AcDbPoint:点
AcDbShape:预定义图形形状
等等
非实体对象:AcDbBlockTableRecord:块表记录
AcDbLayerTableRecord:图层表记录
AcDbTextStyleTableRecord:文字样式表记录
AcDbLinetypeTableRecord:线型表记录
AcDbViewTableRecord:视图表记录
AcDbUCSTableRecord:用户坐标系(UCS)表记录
AcDbViewportTableRecord:视口表记录
AcDbDictionary:字典对象
AcDbDictionaryWithDefault:带默认值的字典对象
等等
其他特殊或高级对象类型:AcDbXrefRecord:外部参照记录
AcDbRegAppTableRecord:注册应用程序表记录
AcDbPlotSettings:打印设置
AcDbLayout:布局(图纸空间)
AcDbRasterImage:光栅图像
AcDbUnderlayDefinition:底图定义
等等
上述列举并未穷尽所有可能的对象类型,但涵盖了AutoCAD中最常见和基础的对象。在实际开发中,根据需求可能会用到更多特定类型的对象。

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

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

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

相关文章

微信小程序(四十四)鉴权组件插槽-登入检测

注释很详细,直接上代码 新增内容: 1.鉴权组件插槽的用法 2.登入检测示范 源码: app.json {"usingComponents": {"auth":"/components/auth/auth"} }app.js App({globalData:{//定义全局变量isLoad:false} })…

windows10|音视频剪辑|FFMPEG录屏和网络推流源初步的生成

前言: FFMPEG的功能强大是毋庸置疑的,那么录屏的需求大家在某些时候大家可能是非常需要的,例如,现有的项目需要演示,因此录制一段演示视频;亦或者做内容分发直播的,比如游戏主播,需…

ubuntu22.04@laptop OpenCV Get Started: 007_color_spaces

ubuntu22.04laptop OpenCV Get Started: 007_color_spaces 1. 源由2. 颜色空间2.1 RGB颜色空间2.2 LAB颜色空间2.3 YCrCb颜色空间2.4 HSV颜色空间 3 代码工程结构3.1 C应用Demo3.2 Python应用Demo 4. 重点分析4.1 interactive_color_detect4.2 interactive_color_segment4.3 da…

ICCV 2023 | 8篇论文看扩散模型diffusion用于图像检测任务:动作检测、目标检测、异常检测、deepfake检测...

1、动作检测 DiffTAD: Temporal Action Detection with Proposal Denoising Diffusion 基于扩散方法提出一种新的时序动作检测(TAD)算法,简称DiffTAD。以随机时序proposals作为输入,可以在未修剪的长视频中准确生成动作proposals。…

Nginx实战:安装搭建

目录 前言 一、yum安装 二、编译安装 1.下载安装包 2.解压 3.生成makefile文件 4.编译 5.安装执行 6.执行命令软连接 7.Nginx命令 前言 nginx的安装有两种方式: 1、yum安装:安装快速,但是无法在安装的时候带上想要的第三方包 2、…

跟廖雪峰老师学习Git(持续更新)

Git简介 创建版本库 第一步,创建一个新目录 第二步,通过git init变成Git可以管理的仓库 把文件添加到文本库,不要使用Windows自带的记事本! 我用的是VS code 创建readme.txt 放入库中 commit可以一次提交很多文件&#xff0…

第8集《佛说四十二章经》

请大家打开讲议第九面,第十二章、举难劝修。 佛陀在这一章共举出二十种困难事情,以劝勉我们修学。一般人的生命没有目标,一天过一天,做事遇到困难就放弃了。这段经文的难是有主动的正面意义,所谓的难能可贵&#xff1…

wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

文章目录 前言一、使用gstreamer 获取 pattern 图片二、代码实例1. pattern 图片作为纹理数据源的代码实例1.1 基于opengles2.0 接口的 egl_wayland_texture2_1.c1.2 基于opengles3.0 接口的 egl_wayland_texture3_1.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3…

【Linux】线程概念和线程控制

线程概念 一、理解线程1. Linux中的线程2. 重新定义线程和进程3. 进程地址空间之页表4. 线程和进程切换5. 线程的优点6. 线程的缺点7. 线程异常8. 线程用途9. 线程和进程 二、线程控制1. pthread 线程库(1)pthread_create()(2)pth…

键盘重映射禁用 CtrlAltDel 键的利弊

目录 前言 一、Scancode Map 的规范 二、禁用 CtrlAltDel 的方法及其缺陷 三、编程实现和测试 3.1 C 实现的简易修改工具 3.2 C# 实现的窗口工具 四、总结 本文属于原创文章,转载请注明出处: https://blog.csdn.net/qq_59075481/article/details…

Bitcoin Bridge:治愈还是诅咒?

1. 引言 主要参考: Bitcoin Bridges: Cure or Curse? 2. 为何需关注Bitcoin bridge? 当前的Bitcoin bridge,其所谓bridge,实际是deposit: 在其它链上的BTC情况为: 尽管当前约有43.7万枚BTC在其它链上…

基于Spring Boot的美容院管理系统设计与实现,计算机毕业设计(带源码+论文)

源码获取地址: 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1757434902285987841