AutoCAD二次开发学习文档

本文档详细介绍了AutoCAD的ActiveX Automation技术,包括AutoCAD ActiveX的基本特点、命令用户化、AutoMation开发技术基础,以及创建二维对象、编辑对象、图层和颜色管理等操作。通过ActiveX,开发者可以实现对AutoCAD的程序化控制,方便与其他Windows应用程序共享数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AutoCAD的ActiveX自动操作的英文全称是AutoCAD ActiveX Automation,ActiveX是微软制定的一种实现程序间通信、调用的软件复用规范,它提供了一种控制AutoCAD的机制。
Automation技术允许一个应用程序操纵在另一个应用程序中实现的对象。从而可以被操纵。操纵程序被称为客户,而被操纵程序称为服务器,被操纵的对象是ActiveX对象

什么是AutoCAD ActiveX

AutoCAD ActiveX,即是AutoCAD ActiveX Automation,提供了一种程序化的机制来操纵AutoCAD,这种操作既可以是在AutoCAD内部,也可以是来自AutoCAD外部的。因此,当提及AutoCAD ActiveX的时候,不是一种特定的语言,而是一种方法,一种操作。
在这里插入图片描述
执行一个AutoCAD ActiveX接口有两个优点:

  1. 程序化地访问AutoCAD图形,对于更多的编程环境是开放的,在ActiveX自动化之前,不受开发语言的限制;
  2. 与其他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.ModelSpace

line = 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()

创建二维对象

图形对象创建于ModelSpace集合、PaperSpace集合或Block对象中。

import win32com.client
AcadApp = win32com.client.Dispatch("AutoCAD.Application.19")
ActiveDocument = AcadApp.ActiveDocument
ModelSpace = ActiveDocument.ModelSpace
Utility = ActiveDocument.Utility
Documents = AcadApp.Documents

def vtPnt(x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值