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.hqwc.cn/news/449707.html

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

相关文章

网络空间测绘在安全领域的应用(上)

近年来,网络空间测绘已经跻身为网络通信技术、网络空间安全、地理学等多学科融合的前沿领域。 该领域聚焦于构建网络空间信息的“全息地图”,致力于建立面向全球网络的实时观测、准确采样、映射和预测的强大基础设施。 通过采用网络探测、数据采集、信…

Docker搭建MySQL8主从复制

之前文章我们了解了面试官:说一说Binlog是怎么实现的,这里我们用Docker搭建主从复制环境。 docker安装主从MySQL 这里我们使用MySQL8.0.32版本: 主库配置 master.cnf //基础配置 [client] port3306 socket/var/run/mysqld/mysql.sock [m…

HTMLCSS JavaScript 基础

HTML复杂建立骨架。 CSS复杂装修。 JS负责定义行为和交互。 示例功能&#xff0c;点击按钮&#xff0c;数量增加&#xff0c;图片交互显示。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"…

C++结构体拷贝时发生的vector iterators incompatible等崩溃情况

文章目录 结构体拷贝时的容器异常崩溃结构体拷贝崩溃的另一种情况结构体拷贝时的容器异常崩溃 自定义一个结构体 struct MMM{int a;std::vector<int> b; }在拷贝时发生异常 代码是 MMM m = mi

Pytest测试用例参数化

pytest.mark.parametrize(参数名1,参数名2...参数n, [(参数名1_data1,参数名2_data1...参数名n_data1),(参数名1_data2,参数名2_data2...参数名n_data2)]) 场景&#xff1a; 定义一个登录函数test_login,传入参数为name,password&#xff0c;需要用多个账号去测试登录功能 # …

【笔记】Android 常用编译模块和输出产物路径

模块&产物路径 具体编译到软件的路径要看编译规则的分区&#xff0c;代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…

【奶奶看了都会】《幻兽帕鲁》云服务器部署教程

在帕鲁的世界&#xff0c;你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活&#xff0c;也可以为你在工厂工作。你也可以将它们进行售卖&#xff0c;或肢解后食用。 《幻兽帕鲁》官…

关于Ubuntu下docker-mysql:ERROR 2002报错

报错场景&#xff1a; mysql容器创建好后登录mysql时即使密码正确也是报出下方提示&#xff1a; 原因是在创建mysql容器在创建时本地目录缺失&#xff0c; 先去自建一个目录&#xff0c;例如&#xff1a; /opt/my_sql 正确完整目录如下&#xff1a; docker run --namemys…

oracle19C 密码包含特殊字符@ 导致ORA-12154

oracle 19C 密码包含特殊字符 出现登录失败&#xff0c;针对此问题一次说个明白 ORA-12154: TNS:could not resolve the connect identifier specified Oracle 19c之前密码是可以包含特殊字符&#xff0c;但是如果包含特殊字符需要双引号 比如oracle11g 正常 如果密码包含特殊…

Scrum敏捷开发企业培训-敏捷研发管理

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程&#xff0c;面向研发管理者、项目经理、产品经理、研发团队等&#xff0c;旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

RK3568平台 安卓hal3适配usb camera

一.RK安卓hal3 camera框架 Camera hal3 在 android 框架中所处的位置如上图&#xff0c; 对上&#xff0c;主要实现 Framework 一整套 API 接口&#xff0c;响应其 控制命令&#xff0c;返回数据与控制参数结果。 对下&#xff0c; 主要是通 V4l2 框架实现与 kernel 的交互。3a…

(十二)springboot实战——SSE服务推送事件案例实现

前言 SSE&#xff08;Server-Sent Events&#xff0c;服务器推送事件&#xff09;是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流&#xff0c;而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功…