第二章 AutoCAD ActiveX Automation概述
AutoCAD的ActiveX自动操作的英文全称是AutoCAD ActiveX Automation,ActiveX是微软制定的一种实现程序间通信、调用的软件复用规范,它提供了一种控制AutoCAD的机制。
Automation技术允许一个应用程序操纵在另一个应用程序中实现的对象。从而可以被操纵。操纵程序被称为客户,而被操纵程序称为服务器,被操纵的对象是ActiveX对象
什么是AutoCAD ActiveX
AutoCAD ActiveX,即是AutoCAD ActiveX Automation,提供了一种程序化的机制来操纵AutoCAD,这种操作既可以是在AutoCAD内部,也可以是来自AutoCAD外部的。因此,当提及AutoCAD ActiveX的时候,不是一种特定的语言,而是一种方法,一种操作。
执行一个AutoCAD ActiveX接口有两个优点:
- 程序化地访问AutoCAD图形,对于更多的编程环境是开放的,在ActiveX自动化之前,不受开发语言的限制;
- 与其他Windows应用程序共享数据,变得非常简单;
AutoCAD ActiveX Automation
AutoCAD ActiveX基本特点
AutoCAD的二次开发途径主要有两个
- 文件开发
文件开发是指根据用户的具体开发需要,按照AutoCAD提供的方法和文件格式,通过编辑AutoCAD系统所支持的文本文件,或建立同种类型新的文本文件,来开发AutoCAD; - 程序开发
AutoCAD API,通过编写程序来实现对AutoCAD开发的方法;
AutoCAD ActiveX命令
命令的用户化
程序参数文件(ACAD.PGP)的结构与功能。AutoCAD程序参数文件(ACAD.PGP)是一个文本文件,用于存放AutoCAD定义的命令。这个文件分为两个部分:
- 第一部分定义外部命令;
- 第二部分定义命令别名;
“;”引导注释;
在ACAD.PGP中定义AutoCAD的外部命令
外部命令的具体格式:
定义命令别名和缩写
命令别名向的定义格式如下:
AutoCAD ActiveX AutoMation开发技术基础
一个应用程序支持的对象、方法和属性通常在应用的类型库中定义。类型库是一个文件或文件的一部分,它描述一个或多个对象,但不存储对象,而是存储对象的接口描述。
AutoCAD的所有对象组成一个层状结构。最高层是Application对象,其他对象都是Application对象的子类。为了得到一个特定的对象,必须从Application对象对子对象遍历,直到找到该特定的对象。在AutoCAD ActiveX界面中有许多不同类型的对象:
- 图形对象,如线、弧、文本和标注都是对象;
- 样式设置,如线性和标注样式均为对象;
- 组织结构,如图层、组合和图块也是对象;
- 图形显示,如视图和视口都是对象;
- 图形和AutoCAD应用程序本身也是对象;
Application对象
Application对象,即应用程序对象,是AutoCAD ActiveX自动操作对象模型的根对象。Application对象也有许多属性和方法:
- ActiveDocument属性,返回当前AutoCAD正在进行编辑的图形;
- Preferences属性,返回Preferences对象,用于AutoCAD的设置;
Document对象
Document对象,即文档对象,是AutoCAD当前编辑的图形,它可以存取所有的AutoCAD图形与非图形对象。ModelSpace和PaperSpace属性可存取图形对象,而非图形对象可以通过DimStyles、Layers、LineTypes、TestStyles、ViewPorts和Views等存取。
Collection对象
AutoCAD组合大部分的对象在集合中,尽管这些集合包含不同类型的数据;
图形对象和非图形对象
- 图形对象
也被称为实体,是图形的可见对象。可以使用ModelSpace和PaperSpace的Add[EntityName]方法产生一个新的图形对象,如AddLine。图形对象的编辑可以通过图形对象自身的方法实现,如Offset、Copy等; - 非图形对象
非图形对象是指图形中的不可见对象,包括DimStyles、Layers、LineTypes、TestStyles、ViewPorts和Views和SelectionSet等。
Preferences、Plot和Utility对象
参数选择:Preferences
打印出图:Plot
实用工具:Utility
访问对象层次
使用python访问AutoCAD的内部对象时,需要通过对应用程序的链接;
import win32com.client
AcadApp = win32com.client.Dispatch("AutoCAD.Application.19")
上面的代码就创建了外部程序与AutoCAD的链接,在链接到AutoCAD的应用程序之后,返回一个Application对象,可以通过下面的这行代码指向AutoCAD中的活动文档;
ActiveDocument = AcadApp.ActiveDocument
如果我们想要在模型空间绘制一个实体,则需要获得AutoCAD的模型空间;
ModelSpace = ActiveDocument.ModelSpace
下面我们实现在模型空间中绘制一条直线:
import win32com.client
AcadApp = win32com.client.Dispatch("AutoCAD.Application.19")
ActiveDocument = AcadApp.ActiveDocument
ModelSpace = ActiveDocument.ModelSpaceline = ModelSpace.AddLine(startpoint, endpoint)
上面的这段代码展示了一个应用层次:
Application>>>ActiveDocument>>>ModelSpace>>>AddLine
集合对象操作
名称 | 含义 |
---|---|
文档(Documents)集合 | 包含所有在当前AutoCAD进程打开的文档 |
模型空间(ModelSpace)集合 | 包含在模型空间中的所有图形对象(图元) |
图纸空间(PaperSpace)集合 | 包含在活动图纸空间布局中的所有图形对象(图元) |
图块(Block)集合 | 包含在指定图块定义中的所有图元 |
图块(Blocks)集合 | 包含在图形中的所有图块 |
字典(Dictionaries)集合 | 包含在图形中的所有字典 |
标注样式(DimStyles)集合 | 包含在图形中的所有标注样式 |
组合(Groups)集合 | 包含在图形中的所有组合 |
超级链接(Hyperlinks)集合 | 包含提供图元的所有超级链接 |
图层(Layers)集合 | 包含在图形中的所有图层 |
布局(Layouts)集合 | 包含在图形中的所有布局 |
线型(LineTypes)集合 | 包含在图形中的所有线型 |
菜单条(MenuBar)集合 | 包含当前显示于AutoCAD的所有菜单 |
菜单组(MenuGroups)集合 | 包含当前装载到AutoCAD中的所有菜单和工具拦 |
注册应用程序(RegisteredApplication)集合 | 包含在图形中的所有注册的应用程序 |
选择集(SelectionSets)集合 | 包含在图形中的所有选择集 |
字型(TextStyles)集合 | 包含在图形中的所有文字样式 |
UCSs集合 | 包含在图形中的所有用户坐标系统(UCS) |
视图(Views)集合 | 包含在图形中所有的视图 |
视口(Viewports)集合 | 包含在图形中的所有视口 |
访问集合
大多数集合对象是通过文档对象来访问的。文档对象包含每个集合对象的属性。下面以创建一个图层集合为例
import win32com.client
AcadApp = win32com.client.Dispatch("AutoCAD.Application.19")
ActiveDocument = AcadApp.ActiveDocument
layer = ActiveDocument.Layers
上面代码获得了当前的图层集合,并将图层集合命名为“layer”,我们想要在图层集合中,添加一个新的图层,需要使用Add方法:
new_layer = layer.Add("HIT_Layer")
在集合对象中循环
选择集合对象中的一个指定成员,使用Item(项目)方法。Item方法需要一个标识符。
删除集合对象中的成员
删除指定的成员,可使用所找到成员对象的Delete方法。
acad.ActiveDocument.SelectionSets.Item("SS1").Delete()
第二章 AutoCAD ActiveX Automation概述相关推荐
- 计算机控制zos,第二章zOS操作系统的功能概述2.1zOS的内存管理.PDF
第二章zOS操作系统的功能概述2.1zOS的内存管理.PDF 第二章 z/OS 操作系统的功能概述 2.1 z/OS 的内存管理 与其它平台不同的是,主机系统里,storage 指的是内存的概念,而不 ...
- 简述微型计算机组成概述,第二章微型计算机的组成概述.pptx
第二章微型计算机的组成概述 第二章 微型计算机的组成;学习指导;2.1 冯·诺依曼结构计算机的工作原理; 约翰.冯诺依曼(John VonNouma,1903-1957),美籍匈牙利人,1903年12 ...
- 第二章 BIRT设计器概述及本地化支持
转载自:https://blog.csdn.net/z1012890225/article/details/37815863 2.1 BIRT设计器概述 2.1.1 基本概念 数据源:数据的来源,或提 ...
- 第二章大数据技术概述
大数据技术的产生 海量数据的产生: 来自大人群互联网 来自大量传感器机械 科学研究及行业多结构专业数据 大数据的基本概念 大数据的定义:无法在一定时间内用常规软件工具对其内容进行抓捕.管理和处理的数据 ...
- 太原理工 Web程序设计基础 学某通 (第二章 web前端开发概述)
2.5 随堂测试已完成 1[单选题] 在下列选项中,不属于Web前端开发任务的是( ). A. 页面布局 B. 页面交互 C. 通信协议 D. 页面特效 我的答案:C 2[单选题] HTML5是 ...
- 第二章 大数据技术概述
大数据基本概念 数据是各种符号如字符.数字等.声音.图片动画.视频多媒体,数据也是原始事实.要保证其原始性和真实性,后期加工才有意义.信息是人们为了某种需求而对原始数据加工重组后形成的有意义.有用途的 ...
- autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...
- 基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...
- 《Java Web程序设计任务教程》简要复盘:第二章 JavaWeb概述
<Java Web程序设计任务教程>简要复盘:第二章 JavaWeb概述 第二章:Java Web概述 XML基础 XML概述 XML语法 HTTP协议 1.HTTP概述 HTTP介绍 W ...
最新文章
- [python]自问自答:python -m参数? (转)
- html首页 slider图片切换效果,jQuery插件Slider Revolution实现响应动画滑动图片切换效果...
- 宝塔 面板 放行端口
- 微课|中学生可以这样学Python(8.4节):递归算法例题讲解3
- 5、Fiddler如何捕获HTTPS会话
- 人脸对齐(十九)--Regressing a 3D Face Shape from a Single Image
- Android-7.0-Nuplayer概述
- python线程池超过最大数量_讨论一下Python线程池大小设置?
- window下使用tail -f查看tomcat日志
- 大数据驱动教育变革,产教融合呈现新高度——数据科学与大数据技术教育分论坛顺利召开...
- android excel在线制作教程,Excel手机表格制作软件
- iPhone中国移动收不到彩信,设置方法?
- chemdraw如何改中文_如何修改ChemDraw的默认输出格式
- 【Java异常】Variable used in lambda expression should be final or effectively final
- SpringCloud 之 注册中心
- ps怎么调19号画笔_【精品】ps19号笔刷如何设置?19号笔刷的设置技巧!
- 某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工
- Linux PXE无盘工作站
- 对比MIUI7和Flyme4.5 期待神秘的Flyme5
- 云服务器ECS使用记录-1. 介绍
热门文章
- 关于CSS(你所不知道的小秘密)
- 如何评估投资性房地产预计未来现金流量的性能,备考
- 海德汉AELC281/AELC211/AELC291F/AELB382C/LB302ID315420-04/03 445断线报警和针脚定义
- xp系统打开itunes显示服务器失败,xp系统读取不了itunes library.itl文件如何解决
- 一个方便的内存单位转换工具
- lin通讯从节点同步间隔场_基于LIN节点的车载防盗报警设计与实现
- java扑克牌类游戏下载_【参考源码】Java入门第三季 7-1 简易扑克牌游戏
- win10,Anaconda2,Python2.7.14下rar,unrar安装成功!“LookupError: Couldn‘t find path to unrar library”错误消失
- Python学习教程:成语查询工具 - 数据获取
- 外包员工就活该被区别对待么?