AutoCAD .NET 层次结构介绍

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.mzph.cn/news/665309.shtml

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

相关文章

centos 7 部署若依前后端分离项目

目录 一、新建数据库 二、修改需求配置 1.修改数据库连接 2.修改Redis连接信息 3.文件路径 4.日志存储路径调整 三、编译后端项目 四、编译前端项目 1.上传项目 2.安装依赖 3.构建生产环境 五、项目部署 1.创建目录 2.后端文件上传 3. 前端文件上传 六、服务启…

第二证券:苹果Vision Pro出货在即 固态电池产业化前景渐明

sion Pro即将于2月2日正式在美国商场开始交给,苹果美国官网释出了Vision Pro的详细参数,与发布会介绍根本一致,依靠总计12个摄像头、5种传感器、职业顶尖的单眼4K分辨率Micro-OLED显示屏、M2与R1芯片,完成了当时商场上独一无二的沉…

有关使用Lombok@Builder注解构建对象返回为空

目录 问题 原因 解决方案 问题 使用lombokBuilder注解构建对象返回结果为空 原因 Builder注解底层调用setter等方法赋值,你如果没加Data注解就赋值不上,idea也不会错误警示,运行也不会抛出异常,这个平时不注意漏掉这个点还真…

SpanDB: A Fast, Cost-Effective LSM-tree Based KV Store on Hybrid Storage——论文泛读

FAST 2021 Paper 论文阅读笔记整理 问题 键值(KV)存储支持许多关键的应用和服务。它们在内存中执行快速处理,但通常受到I/O性能的限制。最近出现的高速NVMe SSD推动了新KV系统设计,以利用其低延迟和高带宽。 挑战 当前基于LSM…

ANN(MLP) 三种预测

目录 介绍: 一、Mlp for binary classification 数据: 模型: 预测: 二、Mlp for Multiclass Classification 数据: 模型: 预测: 三、MLP for Regression 数据: 模型&a…

中科大计网学习记录笔记(五):协议层次和服务模型

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

《最新出炉》系列入门篇-Python+Playwright自动化测试-10-标签页操作(tab)

1.简介 标签操作其实也是基于浏览器上下文(BrowserContext)进行操作的,而且宏哥在之前的BrowserContext也有提到过,但是有的童鞋或者小伙伴还是不清楚怎么操作,或者思路有点模糊,因此今天单独来对其进行讲…

苹果的ipad可能会缓存vue项目的数据或者pinia数据

如果你发现开发的vue项目在ipad上出现了异常,比如数据出现NaN的情况,或者computed计算属性没生效,或者pinia里面的数据没生效,可能就是ipad浏览器safari缓存了数据导致的,只需要清空safari里面缓存的数据就可以了&…

RT-Thread线程管理(使用篇)

layout: post title: “RT-Thread线程管理” date: 2024-1-26 15:39:08 0800 tags: RT-Thread 线程管理(使用篇) 之后会做源码分析 线程是任务的载体,是RTT中最基本的调度单位。 线程执行时的运行环境称为上下文,具体来说就是各个变量和数据&#xff0c…

Kotlin-集成SpringBoot+MyBatis+代码生成器

目录 一、相关版本 二、Maven因引入相关依赖 三、SpringBoot配置文件 四、代码生成工具 五、实现用户服务模块案例 1、Controller 2、Service 3、Entity 4、Mapper 5、接口测试 一、相关版本 工具版本Idea2022.3.2Springboot2.7.12MyBatis3.5.3.1MySQL8.0.28JDK1.8 …

Python详细教程

一、Python简历 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解…

MySQL原理(五)事务

一、介绍: 1、介绍: 在计算机术语中,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。 2、事务的4大特性 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性…

LaTeX表格:合并单元格、文字旋转90度并居中

在LaTeX表格中,如何使用\multirow合并单元格,并将单元格中的文字旋转九十度,并且居中呢? 首先引入graphicx、multirow和array包: \usepackage{graphicx} \usepackage{multirow} \usepackage{booktabs}然后定义一种新…

DoubleEnsemble:基于样本重加权和特征选择的金融数据分析方法

现代机器学习模型(如深度神经网络和梯度提升决策树)由于其提取复杂非线性模式的优越能力,在金融市场预测中越来越受欢迎。然而,由于金融数据集的信噪比非常低,并且是非平稳的,复杂的模型往往很容易过拟合。…

「递归算法」:Pow(x,n)

一、题目 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000示例 2: 输入:x 2.10000, n 3 输出:9…

使用Arcgis对欧洲雷达高分辨率降水数据重投影

当前需要使用欧洲高分辨雷达降水数据,但是这个数据的投影问题非常头疼。实际的投影应该长这样(https://gist.github.com/kmuehlbauer/645e42a53b30752230c08c20a9c964f9?permalink_comment_id2954366https://gist.github.com/kmuehlbauer/645e42a53b307…

深入了解 Ansible:全面掌握自动化 IT 环境的利器

本文以详尽的篇幅介绍了 Ansible 的方方面面,旨在帮助读者从入门到精通。无论您是初学者还是有一定经验的 Ansible 用户,都可以在本文中找到对应的内容,加深对 Ansible 的理解和应用。愿本文能成为您在 Ansible 自动化旅程中的良师益友&#…

故障诊断 | 一文解决,LSTM长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

[基础IO]文件描述符{重定向/perror/磁盘结构/inode/软硬链接}

文章目录 1. 再识重定向2.浅谈perror()3.初始文件系统4.软硬链接 1. 再识重定向 图解./sf > file.txt 2>&1 1中内容拷贝给2 使得2指向file 再学一个 把file的内容传给cat cat拿到后再给file2 2.浅谈perror() open()接口调用失败返回-1,并且错误码errno被适当的设置,…

虚拟机Windows Server 2016 安装 MySQL8

目录 一、下载MySQL8 1.下载地址: 2.创建my.ini文件 二、安装步骤 第一步:命令窗口 第二步:切换目录 第三步:安装服务 第四步:生成临时密码 第五步:启动服务 第六步: 修改密码 三…