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

news2024/11/30 10:53:29

一、数据操作说明

//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.coloradmin.cn/o/1447592.html

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

相关文章

Ubuntu Desktop - Screenshot (截图工具)

Ubuntu Desktop - Screenshot [截图工具] 1. Search your computer -> Screenshot -> Lock to Launcher2. gnome-screenshot3. System Settings -> Keyboard -> ShortcutsReferences 1. Search your computer -> Screenshot -> Lock to Launcher 2. gnome-s…

uniapp API文档地址 以及 HBuilder安装

uniapp API文档地址 以及 HBuilder安装 一、进入 当前网站 uni-app 官网 [uni-app](https://zh.uniapp.dcloud.io/quickstart-hx.html)二、点击截图下载文件 三、 进入 当前网站 (https://www.dcloud.io/hbuilderx.html) 浏览器会识别 也可以自行选择…

寒假学习记录11:grid布局

1. display:grid 2. grid-template-columns: 100px 100px 100px //指定每列的宽度 grid-template-rows: 100px 100px 100px //指定每行的宽度 3. column-gap: 24px //列间距 row-gap: 24px //行间距 gap: 24px //都设置 4.grid-template-areas用法 <!DO…

pythondjangomysql苏州一日游之可视化分析69216-计算机毕业设计项目选题推荐(附源码)

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对旅游服务等问题&#xff0c;对旅游服务进行…

浅析Linux追踪技术之ftrace:Event Tracing

文章目录 概述使用Event Tracing使用set_event接口使用enable接口 Event配置Event formatEvent Filtering过滤规则设置过滤器 Event TriggerTrigger语法 Trace marker相关参考 概述 Event Tracing&#xff08;事件追踪&#xff09;利用在内核代码中加入的各种Tracepoint&#…

2.第一个Electron程序

目录 一、前言二、基本运行结构三、代码详解四、打包 一、前言 原文以及系列文章后续请参考&#xff1a;第一个Electron程序 上一章我们完成了Electron的环境搭建&#xff0c;本章就开始详解如何使用Electron开发一个完整的Electron桌面端程序。 注意开发环境&#xff0c;个…

Ubuntu Desktop 删除文件

Ubuntu Desktop 删除文件 1. right mouse click on the file -> Move to Trash2. right mouse click on the file -> DeleteReferences 1. right mouse click on the file -> Move to Trash ​ 2. right mouse click on the file -> Delete ​​​ References …

【机器学习】数据清洗之处理异常点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

腾讯云4核8G服务器多少钱?646元一年零3个月

腾讯云服务器4核8G配置优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云百科txybk.com分…

【教程】C++语言基础学习笔记(九)——指针

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

js中事件循环的详解

文章目录 一、是什么二、宏任务与微任务微任务宏任务 三、async与awaitasyncawait 四、流程分析 一、是什么 首先&#xff0c;JavaScript是一门单线程的语言&#xff0c;意味着同一时间内只能做一件事&#xff0c;但是这并不意味着单线程就是阻塞&#xff0c;而实现单线程非阻…

爬虫——ajax和selenuim总结

为什么要写这个博客呢&#xff0c;这个代码前面其实都有&#xff0c;就是结束了。明天搞个qq登录&#xff0c;这个就结束了。 当然也会更新小说爬取&#xff0c;和百度翻译&#xff0c;百度小姐姐的爬取&#xff0c;的对比爬取。总结嘛&#xff01;&#xff01;&#xff01;加…

智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码) 源码设计 %%%% clear all clc SearchAgents_no=100; % Number of search ag

深入浅出解析指针:从概念到实践

在编程的世界中&#xff0c;指针是一个非常重要且强大的工具。无论你是初学者还是经验丰富的开发者&#xff0c;理解并熟练使用指针都将极大地提升你的编程能力。今天&#xff0c;我们就来一起探讨指针的奥秘。 一、指针的基本概念 首先&#xff0c;我们需要明白&#xff0c;…

C++进阶(十六)特殊类设计

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象三、…

从零开始:Linux下的Miniconda安装教程

&#x1f680;从零开始&#xff1a;Linux下的Miniconda安装教程&#x1f680; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;二、Miniconda简介&#xff1a;开启您的数据科学之旅的得力助手&#xff01; &#x1f333;&#x1f333;三、Lin…

【前沿技术杂谈:迁移学习】欧洲人工智能法案对人工智能开发者的意义 [2023 年 12 月更新]

【前沿技术杂谈&#xff1a;迁移学习】欧洲人工智能法案对人工智能开发者的意义 [2023 年 12 月更新&#xff3d; 定义、一般原则和禁止做法人工智能系统开发者基于风险的义务固定和通用人工智能开发人员&#xff08;第 3/28 条&#xff09;基础模型的提供者&#xff08;第 28b…

C++入门篇——类与对象重点解析(下篇)

1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date { public: Date(int year, int month, int day) {_year year;_month month;_day day; } private:int _year;int _m…

Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…