AutoCAD .NET API 提供了一种面向对象的编程接口,通过它可以与AutoCAD进行深度集成和自定义功能开发。以下是基于.NET框架下AutoCAD对象层次结构的基本介绍:
-
Autodesk.AutoCAD.ApplicationServices 命名空间
- 根对象,代表运行中的AutoCAD应用程序实例。
- 通过
Autodesk.AutoCAD.ApplicationServices.Application
类表示。 - 提供对全局应用服务(如打开/关闭文档、获取系统变量等)以及DocumentManager、Editor等访问。
-
DocumentManager 类:
- 属于
Application
的一个属性或方法返回的对象。 - 管理当前已打开的所有
Document
实例。.Documents
属性:包含所有已打开文档的集合。.MdiActiveDocument
或.ActiveDocument
:获取当前活动的Document
对象
- 属于
-
Document 类(
Autodesk.AutoCAD.ApplicationServices.Document
):- 表示单个AutoCAD图形文件。
- 内部包含一个
Database
对象。.Database
属性:访问图形数据库。.ModelSpace
和.PaperSpace
属性:分别提供对模型空间和布局空间实体集的访问。.Transactions
方法:用于开始、提交和回滚事务,在事务中执行数据库修改操作。
-
Database 类(
Autodesk.AutoCAD.DatabaseServices.Database
):- 存储所有图形对象和定义的数据结构的核心容器。
- 下属层次包括但不限于:
BlockTable
和BlockTableRecord
:块定义及其内容。LayerTable
:图层信息。TextStyleTable
:文字样式信息。LinetypeTable
:线型信息。Dictionary
及其衍生类:存储命名对象和其他数据结构。ObjectIdCollection
和ObjectId
:表示数据库中可寻址的对象标识符及集合。Entity
类及其子类:构成图形的基础几何与非几何实体,如Line
、Circle
、Text
、Attribute
等。
-
Editor 类(
Autodesk.AutoCAD.EditorServices.Editor
):- 提供与用户交互相关的功能,例如:
- 输入点坐标 (
GetPoint
,SetImpliedUserCoordinateSystem
) - 选择图形对象 (
SelectImplied
,GetSelection
) - 执行命令 (
ExecuteCommand
) - 显示消息 (
WriteMessage
,WriteLine
) - 图形视图操作 (
ZoomExtents
,RedrawAll
)
- 输入点坐标 (
- 提供与用户交互相关的功能,例如:
-
Graphics System Objects:
-
在AutoCAD .NET API中,Graphics System Objects(图形系统对象)指的是构成图纸内容的各种图形实体及其相关类。这些对象代表了用户在AutoCAD中创建和编辑的几何元素、非几何属性以及其他设计元素。以下是一些主要的Graphics System Objects类别:
-
Entity 类及子类:
Autodesk.AutoCAD.DatabaseServices.Entity
是所有图形实体的基类。- 子类包括但不限于:
Line
,Circle
,Arc
,Polyline
,Text
,BlockReference
,3dSolid
, 等。
-
Table Objects:
- 包括用于组织图层、线型、文字样式、尺寸样式等信息的表结构。
- 如
LayerTable
,LayerTableRecord
,LinetypeTable
,LinetypeTableRecord
,TextStyleTable
,TextStyleTableRecord
等。
-
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代码来创建新的图形实体、修改现有实体、查询图形数据以及实现自定义绘图功能。
-
-
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图纸内容。