AutoCAD .NET 层次结构介绍

news2024/11/15 5:29:13

AutoCAD .NET API 提供了一种面向对象的编程接口,通过它可以与AutoCAD进行深度集成和自定义功能开发。以下是基于.NET框架下AutoCAD对象层次结构的基本介绍:

  1. Autodesk.AutoCAD.ApplicationServices 命名空间

    • 根对象,代表运行中的AutoCAD应用程序实例。
    • 通过Autodesk.AutoCAD.ApplicationServices.Application类表示。
    • 提供对全局应用服务(如打开/关闭文档、获取系统变量等)以及DocumentManager、Editor等访问。
  2. DocumentManager 类:

    • 属于 Application 的一个属性或方法返回的对象。
    • 管理当前已打开的所有 Document 实例。
      • .Documents 属性:包含所有已打开文档的集合。
      • .MdiActiveDocument 或 .ActiveDocument:获取当前活动的 Document 对象
  3. Document 类(Autodesk.AutoCAD.ApplicationServices.Document):

    • 表示单个AutoCAD图形文件。
    • 内部包含一个 Database 对象。
      • .Database 属性:访问图形数据库。
      • .ModelSpace 和 .PaperSpace 属性:分别提供对模型空间和布局空间实体集的访问。
      • .Transactions 方法:用于开始、提交和回滚事务,在事务中执行数据库修改操作。
  4. Database 类(Autodesk.AutoCAD.DatabaseServices.Database):

    • 存储所有图形对象和定义的数据结构的核心容器。
    • 下属层次包括但不限于:
      • BlockTable 和 BlockTableRecord:块定义及其内容。
      • LayerTable:图层信息。
      • TextStyleTable:文字样式信息。
      • LinetypeTable:线型信息。
      • Dictionary 及其衍生类:存储命名对象和其他数据结构。
      • ObjectIdCollection 和 ObjectId:表示数据库中可寻址的对象标识符及集合。
      • Entity 类及其子类:构成图形的基础几何与非几何实体,如 LineCircleTextAttribute 等。
  5. Editor 类(Autodesk.AutoCAD.EditorServices.Editor):

    • 提供与用户交互相关的功能,例如:
      • 输入点坐标 (GetPointSetImpliedUserCoordinateSystem)
      • 选择图形对象 (SelectImpliedGetSelection)
      • 执行命令 (ExecuteCommand)
      • 显示消息 (WriteMessageWriteLine)
      • 图形视图操作 (ZoomExtentsRedrawAll)
  6. Graphics System Objects

    • 在AutoCAD .NET API中,Graphics System Objects(图形系统对象)指的是构成图纸内容的各种图形实体及其相关类。这些对象代表了用户在AutoCAD中创建和编辑的几何元素、非几何属性以及其他设计元素。以下是一些主要的Graphics System Objects类别:

    • Entity 类及子类:

      • Autodesk.AutoCAD.DatabaseServices.Entity 是所有图形实体的基类。
      • 子类包括但不限于:LineCircleArcPolylineTextBlockReference3dSolid, 等。
    • Table Objects

      • 包括用于组织图层、线型、文字样式、尺寸样式等信息的表结构。
      • 如 LayerTableLayerTableRecordLinetypeTableLinetypeTableRecordTextStyleTableTextStyleTableRecord 等。
    • Database-related Objects

      • Autodesk.AutoCAD.DatabaseServices.Database 表示整个图形数据库,包含所有的实体和其他数据结构。
      • ObjectId 和 ObjectIdCollection 用于标识和集合化数据库中的对象。
      • Transaction 提供对数据库进行原子操作的能力,如添加、修改或删除对象。
    • View and Display Objects

      • ViewportTable 和 ViewportTableRecord 与视口相关,控制各个布局视图的显示设置。
      • 虽然不是直接的Graphics System Objects,但它们影响着图形的视觉呈现。
    • Additional Design Elements

      • BlockTable 和 BlockTableRecord 用于定义和管理块(Block)。
      • AttributeDefinition 和 AttributeReference 用于处理块属性(Attributes)。
    • 通过访问和操作这些Graphics System Objects,开发者可以编写.NET代码来创建新的图形实体、修改现有实体、查询图形数据以及实现自定义绘图功能。

  7. Transactions

    • 在AutoCAD .NET API中,Transaction(事务)是一个核心概念,它用于确保对AutoCAD图形数据库进行的一系列更改是原子性的,并且可以作为一个整体成功完成或完全撤销。在编程环境下,当你需要修改AutoCAD图纸中的任何内容时,都应该在一个事务范围内进行操作。

      AutoCAD Transactions的特点:

    • 原子性

      • 一个事务内的所有编辑操作被视为一个不可分割的整体。这意味着要么所有的修改都被提交到数据库中,要么当发生错误时,所有的更改都会被回滚,恢复到事务开始前的状态。
    • 一致性

      • 通过使用事务,能够保证数据库从一个一致状态转换到另一个一致状态,即使在处理复杂逻辑和多个对象更新时也能保持数据的完整性。
    • 管理资源锁定

      • 在执行事务期间,AutoCAD会锁定相关的图形资源,以防止其他线程或外部进程在同一时间内修改相同的实体,从而避免数据冲突。
    • 事务处理

      • 开发者可以通过Document.Database.TransactionManager.StartTransaction()方法开始一个新的事务,在该事务内进行一系列编辑操作,然后调用.Commit()方法来提交事务,或者在出错时调用.Rollback()方法来撤销全部更改。
    • 嵌套事务支持

      • AutoCAD.NET API还支持嵌套事务,内部事务可以在外部事务开启的状态下创建,它们遵循特定的提交规则,确保即使在复杂的嵌套操作中也能正确地应用和撤销更改。
    • 简而言之,利用AutoCAD .NET API中的Transactions机制,开发人员可以编写可靠、安全的代码来控制对AutoCAD图形数据库的读写操作,确保在程序异常或其他问题出现时,不会导致图形文件损坏或数据不一致的情况。

简化的层级关系可以表示为:

Application
├── DocumentManager
│   ├── ActiveDocument (Document 1)
│   │   ├── Database
│   │   │   ├── BlockTable
│   │   │   ├── BlockTableRecord
│   │   │   ├── LayerTable
│   │   │   ├── TextStyleTable
│   │   │   ├── LinetypeTable
│   │   │   ├── Entity (基类) 
│   │   │   │   ├── Line
│   │   │   │   ├── Circle
│   │   │   │   ├── Text
│   │   │   │   ├── Attribute
│   │   │   │   └── ... (其他图形实体子类)
│   │   │   ├── Dictionary
│   │   │   ├── ObjectIdCollection
│   │   │   └── ...
│       ├── Window
│       ├── DocumentWindowCollection
│       │   ├── DocumentWindow 1
│       │   │   ├── Title
│       │   │   ├── ViewportTable
│       │   │   ├── ZoomToExtents()
│       │   │   └── ...

通过这个层次结构,开发者能够有效地利用.NET API来创建插件、定制工作流程、自动化任务,并且能够在设计过程中动态地读取、修改和生成AutoCAD图纸内容。 

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

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

相关文章

牛客寒假训练营H题

思路&#xff1a;找出所有m的子集&#xff0c;加到价值中&#xff0c;找出最大价值即可。 代码&#xff1a; void solve(){int n, m;cin >> n >> m;vector<pii>a(n 1);for(int i 1;i < n;i )cin >> a[i].first >> a[i].second;int ans 0…

Servlet(未完结~)

文章目录 前言1 Servlet简介2 Servlet初识2.1 Servlet开发流程2.2 配置欢迎页 3 Servlet案例开发!3.1 开发登录页3.2 开发后台Servlet3.3 配置Servlet 4 HttpServletRequest4.1 回顾http请求4.2 自定义servlet流程图4.3 HttpServletRequest4.4获取请求行信息4.5获取请求头信息4…

Oracle12c R2 ORA-12805 BUG导致生成巨大TRC文件问题处理

1、基础环境 操作系统&#xff1a;unix&solaris 11.3 数据库版本&#xff1a;oracle 12.2 CDB&PDB 数据库补丁信息 oracleQSSJJZDB2:~$ opatch lspatches 23333567; 27959048; 26187578;OCW Interim patch for 26187578 27674384;Database Apr 2018 Release Update :…

HarmonyOS--Stage模型

构建第一个ArkTS应用(Stage模型)-快速入门-入门 | 华为开发者联盟 (huawei.com) 鸿蒙开发两种模型 FA模型:早期使用,现在不主推。Stage模型:推荐HarmonyOS4和HarmonyOS NEXT版本开发从源码到编译到运行 @entry就是一个Ability类的一个模块。 编译期 源码中的所有Ability模…

常见API

文章目录 Math类1.1 概述1.2 常见方法 System类2.1 概述2.2 常见方法 Runtime3.1 概述3.2 常见方法 Object类4.1 概述4.2 常见方法 Objects类5.1 概述5.2 常见方法 BigInteger类6.1 引入6.2 概述6.3 常见方法6.4 底层存储方式&#xff1a; 7 BigDecimal类7.1 引入7.2 概述7.3 常…

《数据安全法》解读篇

《中华人民共和国数据安全法》 颁布时间&#xff1a;2021年6月10日实施时间&#xff1a;2021年9月1日《中华人民共和国数据安全法》整体架构图 数据安全的定义&#xff1a;是指通过采取必要措施&#xff0c;确保数据处于有效保护和合法利用的状态&#xff0c;以及具备保障持续…

STM32--USART串口(2)串口外设

一、USART简介 可配置数据位&#xff1a;不需要校验就是8位&#xff0c;需要校验就选9位&#xff1b; 停止位&#xff1a;决定了帧的间隔; STM32F103C8T6USART&#xff1a;USART1挂载在APB2总线上&#xff0c;USART2和USART3挂载在APB1总线上&#xff1b; 二、USART框图 TXE…

【数据分析】Excel中的常用函数公式总结

目录 0 引用方式0.1 相对引用0.2 绝对引用0.3 混合引用0.4 3D引用0.5 命名引用 1 基础函数1.1 加法、减法、乘法和除法1.2 平均数1.3 求和1.4 最大值和最小值 2 文本函数2.1 合并单元格内容2.2 查找2.3 替换 3 逻辑函数3.1 IF函数3.2 AND和OR函数3.3 IFERROR函数 4 统计函数4.1…

STM32 UART/USART与RTOS的多任务通信和同步机制设计

在STM32微控制器中&#xff0c;UART/USART与RTOS的多任务通信和同步机制设计可以通过操作系统提供的任务调度机制和各种同步原语&#xff08;例如信号量、邮箱、消息队列等&#xff09;来实现。在下面的解释中&#xff0c;我将介绍如何设计基于FreeRTOS的STM32多任务通信和同步…

【后端开发】正向代理与反向代理

正向代理 正向代理&#xff08;forward proxy&#xff09;&#xff1a;是一个位于客户端和目标服务器之间的服务器(代理服务器)&#xff0c;为了从目标服务器取得内容&#xff0c;客户端向代理服务器发送一个请求并指定目标&#xff0c;然后代理服务器向目标服务器转交请求并将…

Acwing第 141 场周赛

A题 签到模拟即可 B题 单独考虑每一个a[i]&#xff0c;如果i要是答案需要指针移动多少次&#xff0c;然后算完&#xff0c;排个序&#xff0c;指针移动最少的就是答案。 #include <bits/stdc.h> #define int long long #define rep(i,a,b) for(int i (a); i < (…

嵌入式学习第十八天

51单片机 51单片机是基于Intel的微处理器体系结构发展而来的。 主要由CPU、存储器、定时器/计数器、串行口等模块组成 优点&#xff1a;低功耗、低成本、高性能 开发工具&#xff1a; Keil uVision4&#xff08;支持汇编语言和C语言编程&#xff09; stc-isp-v6.92L&…

Ps:自动对齐图层

Ps菜单&#xff1a;编辑/自动对齐图层 Edit/Auto-Align Layers 自动对齐图层 Auto-Align Layers命令通过分析选中图层上的图像&#xff0c;识别出图像间的共同特征点&#xff08;如边缘、纹理或特定标记等&#xff09;&#xff0c;然后基于这些特征点变换&#xff08;移动、旋转…

030-安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计

030-安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计 #知识点&#xff1a; 1、NodeJS-开发环境&功能实现 2、NodeJS-安全漏洞&案例分析 3、NodeJS-开发指南&特有漏洞 演示案例&#xff1a; ➢环境搭建-NodeJS-解析安装&…

坚持刷题|二叉树的前、中、后序遍历(递归迭代)

文章目录 题目思考递归实现迭代实现前序遍历后序遍历中序遍历 在前、中、后序的迭代遍历中&#xff0c;为什么都采用栈来模拟递归&#xff0c;而非队列&#xff1f; Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天刷&…

[SWPUCTF 2021 新生赛]ez_unserialize

根据下面的user_agent和Disallow可以判断这个是在robots.txt 我们看的出来这是一个反序列化需要我们adminadmin passwdctf construct 构造方法&#xff0c;当一个对象被创建时调用此方法&#xff0c;不过unserialize()时却不会被调用 destruct 析构方法&#xff0c;PHP将在对象…

分别用JavaScript,Java,PHP,C++实现桶排序的算法(附带源码)

桶排序是计数排序的升级版。它利用了函数的映射关系&#xff0c;高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效&#xff0c;我们需要做到这两点&#xff1a; 在额外空间充足的情况下&#xff0c;尽量增大桶的数量使用的映射函数能够将输入的 N 个数据均匀的分…

MySQL数据库②_库和表的操作_增删查改_备份恢复

目录 1. 创建数据库 2. 字符集和校验规则 2.1 默认的字符集和校验规则 2.2 支持的字符集校验规则 2.3 校验规则对数据库的影响 3. 库的查看&#xff0c;修改&#xff0c;删除 3.1 查看数据库 3.2 修改数据库 3.3 删除数据库 4. 库的备份和恢复 4.1 备份数据库 4.2 …

在虚拟机上搭建CentOS环境并配置静态IP

在虚拟机上搭建CentOS环境并配置静态IP 在进行Linux系统的学习和实践时&#xff0c;搭建一个本地的CentOS环境是一个非常好的方式。本文将介绍如何使用虚拟机&#xff08;VM&#xff09;搭建CentOS环境&#xff0c;并配置静态IP&#xff0c;以便更好地进行网络管理和测试。 步…

Java开发工具 IntelliJ IDEA 2023中文

IntelliJ IDEA 2023是一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于多种编程语言&#xff0c;包括Java、Python、Kotlin等。它提供了许多特色功能&#xff0c;以提高开发效率和代码质量。 Java开发工具 IntelliJ IDEA 2023中文 以下是一些IntelliJ ID…