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图纸内容。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模板简要介绍,C++读书笔记

2014年2月3日 内容整理自《程序设计教程: 用C语言编程 第三版》 陈家骏 郑滔 --------------------------------------------------------------------------------------------------------------------------------- (一)函数模板 1…

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

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

(java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~

目录 冒泡排序(BubbleSort): 代码详解: 冒泡排序的优化: 选择排序(SelectSort): 代码详解: 插入排序(InsertSort): 代码详解: 希尔排序(ShellSort): 法一…

深度学习图像分类相关概念简析+个人举例1(ANN相关概念与计算)

(1)神经网络:英文全称Artificial Neural Network,简称为ANN。 神经网络是一种模仿人脑神经元结构和功能的人工智能模型。它由多个神经元(也称节点、单元)组成,每个神经元通过计算输入和权重的线…

从零开始复现GPT2(六):生成代码的实现

源码地址:https://gitee.com/guojialiang2023/gpt2 GPT2 模型文本生成配置生成框架文本生成类实现文本生成代码 模型 文本生成 配置 class GenerateConfig(object):def __init__(self,seq_len: int,nucleus_prob: float,use_gpu: bool):self.seq_len seq_lenself…

【C/C++ 10】扫雷小游戏

一、题目 写一个扫雷小游戏,每次输入一个坐标,若该处是地雷,则游戏失败,若该处不是地雷,则显示周围地雷数量,若扫除全部非地雷区域,则扫雷成功。 二、算法 设置两张地图(二维数组&…

手把手教你开发Python桌面应用-PyQt6图书管理系统-主界面UI设计实现

锋哥原创的PyQt6图书管理系统视频教程: PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

移远(Quectel)物联网通信解决方案

一、方案简介 无线通信模块是具备无线通信的电路模块,它能通过无线连接传输数据,能识别分析主控制器发来的命令,控制节点设备的工作,或者向主控制器发送当前节点设备的工作状态。 市面上常用的无线通信模组包括蓝牙模组、WLAN模…

2024年【上海市安全员B证】最新解析及上海市安全员B证复审考试

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员B证最新解析根据新上海市安全员B证考试大纲要求,安全生产模拟考试一点通将上海市安全员B证模拟考试试题进行汇编,组成一套上海市安全员B证全真模拟考试试题,学员可通过…

算法练习-二叉树的节点个数【完全/普通二叉树】(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

ubuntu22.04 安装部署01:禁用内核更新

一、前言 ubunut22.04系统安装以后,内核更新会导致各种各样的问题,因此锁定初始安装环境特别重要,下面介绍如何锁定内核更新。 二、操作方法 2.1 查看可用内核 dpkg --list | grep linux-image dpkg --list | grep linux-headers dpkg --…

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

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

Python中使用Opencv-python库绘制直线、矩形、圆、文本

Python中使用Opencv-python库绘制直线、矩形、圆、文字 在Python中使用Opencv-python绘制直线、矩形、圆、文本非常简单,分别使用到line、rectangle、circle、putText这几个函数,具体可以参考https://docs.opencv.org/4.9.0/d6/d6e/group__imgproc__dra…

如何部署Node.js服务并实现无公网ip远程访问本地项目【内网穿透】

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【C++】类与对象(三)—运算符重载|const成员函数|取地址及const取地址操作符重载

前言 运算符重载,自增自减运算符重载,const成员函数,取地址及const取地址操作符重载 文章目录 一、运算符重载自增和自减运算符重载 二、const 成员函数三、取地址及const取地址操作符重载(了解即可) 一、运算符重载 运…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市,编号从 1 1 1 到 n n n,城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制,简称限重。 现在有 q q q 辆货车在运输货物&#x…

Unity Meta Quest MR 开发(三):Scene API 配置+实现虚拟与现实之间的碰撞

文章目录 📕教程说明📕 Scene 配置⭐开启场景理解功能和应用访问空间数据的权限⭐OVRSceneManager⭐制作 Plane Prefab 和 Volume Prefab⭐运行场景⭐添加透视材质 📕虚拟与现实物体的碰撞(弹球 Demo)📕Mes…

【JavaSE篇】——继承

目录 🎓继承 ✅为什么需要继承 ✅继承概念 ✅继承的语法 ✅父类成员访问 🚩子类中访问父类的成员变量 1. 子类和父类不存在同名成员变量的情况 2. 子类和父类成员变量同名 🚩子类中访问父类的成员方法 1. 成员方法名字不同 2. 成员…

MyBatis常见面试题汇总

说一下MyBatis执行流程? MyBatis是一款优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接等的过程,MyBatis的执行流程如下: 加载配…

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和…