AutoCAD二次开发实用教程第12章 使用ActiveX

合集下载

基于ActiveX的AutoCAD二次开发在计算机联锁工程设计软件中的应用探讨

基于ActiveX的AutoCAD二次开发在计算机联锁工程设计软件中的应用探讨

86铁道勘测与设计RAILWAY SURVEY AND DESIGN2020(1)基于ActiveX的AutoCAD二次开发在计算机联锁工程设计软件中的应用探讨全宏宇(中铁第四勘察设计院集团有限公司通号处武汉430063)【摘要】简要介绍了基于C#和ActiveX的AutoCAD二次开发的方法,分析了计算机联锁室内工程设计图纸的需求,对计算机联锁工程软件开发中的几个关键技术进行了探讨。

【关键词]AutoCAD二次开发ActiveX C#计算机联锁软件开发The Development of Automatic Design Software of the Wayside Signaling Plane DiagramQUAN Hongyu(China Railway SIYUAN Survey and Design Group Co.,Ltd WuHan430063) [Abstract]The secondary development of AutoCAD based on C#and ActiveX was briefly introduced,the characteristics of computer interlocking indoor engineering design drawings were analyzed,and some essential approaches in the development of computer interlocking engineering design software are discussed.[Key words]AutoCAD secondary development;ActiveX;C#;Computer based interlocking,Software de­velopmentAutoCAD在铁路工程设计领域中应用广泛,为了提高工程设计效率,AutoCAD二次开发是非常有效的技术手段。

AutoCAD官方二次开发教程

AutoCAD官方二次开发教程

第 1章 Hello World: 工程的创建在这一章中,我们将不使用ObjectARX向导来创建一个新的工程。

我们将使用Visual Studio .NET来创建一个新的类库工程。

通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。

这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。

当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。

1) 启动Visual ,选择”文件>新建>工程”(File> New> Project)。

在新建工程对话框中选择工程类型为”Visual Basic 工程”,然后选择”类库”模板,在工程名字框中输入”Lab1”,然后选择工程存放的位置。

点击确定按钮来创建工程。

2) 在工程的Class1.vb文件中,一个公有类“Class1”已经被系统自动创建了。

接下来向这个类加入命令。

要加入命令,你必须使用AutoCAD .NET托管封装类。

这些托管封装类包含在两个托管模块中。

要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择”添加引用”。

在弹出的”添加引用”对话框中选择”浏览”。

在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为C:\Program Files\AutoCAD 2006\),在这个目录下找到“acdbmgd.dll”然后选择并打开它。

再一次选择”浏览”,在AutoCAD 2006的安装目录下找到“acmgd.dll”并打开它。

当这两个组件被加入后,请单击”添加引用” 对话框中的”确定”按钮。

正如它们的名字所表示的,acdbmgd.dll包含ObjectDBX 托管类,而acmgd.dll包含AutoCAD托管类。

3) 使用对象浏览器(Visual 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。

ActiveX技术在AutoCAD二次开发中的应用

ActiveX技术在AutoCAD二次开发中的应用
"55U 年 V 月 第6 卷 第 ! 期
三 门峡 职业 技术 学院学 报" 综合 版#
C+*F.-1 +I P-.,(.X&- E+1Y%($H.&$"3+,8F(H(.0&’( Z=&%&+.$
<-FL J"5 5U /+1L6 JW+L!
#$%&’() 技 术 在 #*%+3#4
二次开发中的应用
合#பைடு நூலகம்
’"; 使 用 )0+17)8 的 对 象 类 型 库 的 用 户 ! 可
以 用如 下两 种 法对 声明 的对象 变量 赋值 &
P(% +:;($%’-F&-:1( Q 3F(-%(9:;($% R’8F+ST4 (G !"
&;8/6*O 技术 在 &A8(’&P 二次 开发 中的 应用 :*8 (.T*;8631/3.)* U V*8(.T*;8 WX M38>532*Y X # M1(+LPYK 通 常 $ M1(+LP 参 数 是 正 在 创 建 对 象 的 完 全 限 定 类名 $ 该 参 数 的 语 法 为 % &3MM532*H(.T*;889M*’ 格式 $ 3MM532* 提供 该 对 象的 应 用 程序 的 名 称 $ (.T*;889M* 表 示 要 创 建 对 象 的 类 型 或 类 ( 如 % ) &A8(’&PH&;3B3MM)/;38/(5 * 虽 然 V*8Z.T*;8 函 数 也 能 用 于 赋 值 对 一 个 对
!"’ 图形 对象 21+$K0 3+11($%&+. 等 属 于图 形 对 象 ! 它 是 用 户

AutoCAD二次开发实用教程第12章 使用ActiveX

AutoCAD二次开发实用教程第12章 使用ActiveX
对象是ActiveX应用程序的主要组成部分。例如,直线、圆 弧、多义线和圆等都被称为图形对象。但在使用ActiveX时,以 下AutoCAD本身及概念都被称为对象。 1. 样式设置对象,如线型(linetype)、文本样式(style)和尺寸 样式(dimstyle)等。 2. 组织结构对象,如图层(layer)和块(block)等。 3. 图形显示对象,如视图(view)和视口(viewport)。
线型和组等)的访问是由名称相近的特性(如Layers、
Linetype和Groups等)提供的。
12.3.3 过程总结
实现的功能是用ActiveX Automation在AutoCAD图
形中画一个圆对象,函数调用序列如下所示:
(vl-load-com)
(setq acadObject(vlax-get-acad-object))
12.4 ActiveX对象访问
Application对象是AutoCAD对象模型中的基础, 从Application对象可以访问其他任何对象,或是被 访问对象的特性或方法。如果要在AutoLISP中使用 ActiveX函数,必须先调用vl-load-com函数来加载 所有的ActiveX函数。 该函数先检查是否已经加载了ActiveX函数,如 果已经加载,则该函数不做任何工作,如果尚未加载 ActiveX支持函数,vl-load-com函数将为AutoLISP 语言加载ActiveX以及其他Visual LISP扩展部分。
1. 获取AutoCAD应用程序
2. AutoCAD应用程序的属性和方法
12.3.2 应用程序对象以下的其他ActiveX对象
沿着AutoCAD对象模型层次图,应用程序对象
的ActiveDocument特性将把用户带到文档对象,它

cad二次开发教程

cad二次开发教程

cad二次开发教程CAD二次开发教程汇总选择AutoLISP还是VBA,我听到许多关于这样的问题。

AutoLISP与VBA有什么不同呢,我要学习怎样二次开发AutoCAD,但我不能确定先学哪一个工具。

哪一个工具更好呢, 简洁的回答是他们都好,你应当两者都学。

分析我的回答,你可以知道这不是最快的解决办法,但在你做出一个完整的决定前,一个完整的回答需要时间和更多的问题。

举个例子:你懂BASIC吗,如果你懂,那么VBA学起来会更快一些;如不懂BASIC,那么你学过其它的编程语言吗,如果你学的正好是FORTRAN或PASCAL的话,那也很好。

因为如果你已掌握了这两种语言,则VBA的学习将十分简单。

如果你一点儿也不懂程序设计语言,那么AutoLISP将会是适合你学习的语言。

如果你正好没有程序设计的知识和经验,那么在AutoCAD里你应当学习什么语言,这个问题很难回答。

这取决于你希望完成什么样的工作,每种语言都有其优点和缺点,AutoLISP擅长建立新命令和产生已有命令的连接。

VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。

AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方,除非你已真正懂得这些工具的好处,否则,很难回答你应该选择哪一个,但你应当知道你想完成什么和允许完成什么,因为它将引导你向正确的解决方法前进。

稍后,你会发现这一简洁的回答是恰当的,你将会学习两种语言,你要做的一些事,可以在AutoLISP中用十分简单的几行代码来解决。

另一方面,你会发现VBA提供了一些最简捷的应用程序解决方案。

例如,建立一个复杂的包括许多对话框的应用,AutoLISP支持对话框,但是不如VBA支持的程度强,同时,在AutoCAD中一个任务的情况下,VBA提供在对象级别上访问AutoCAD系统,但它对AutoCAD 的一些基本命令的支持性并不是很好,而AutoLISP在这一点上却做的很好。

AutoCAD二次开发_官方PPT文档

AutoCAD二次开发_官方PPT文档

梁晓冬
培训目标
AutoCAD
培训内容主要是

Raptor
ObjectARX基础知识 如何使用 ObjectARX 如何在以后的实际工作中独立的获取相关资源和帮助
不是

如何使用 C++ 对所有的ObjectARX API做完整的讲述
© 2008 Autodesk
4
Autodesk 系列产品开发培训教程
如何得到ObjectARX
AutoCAD
Raptor
SDK(
Software Development Kits)
免费下载

Autodesk 网站

/objectarx

ADN 网站,检索ObjectARX


13
AutoCAD 的API和IDE
AutoCAD

API
ObjectARX
COM
Raptor
Automation (VB, Java, Delphi, etc.)
AutoLISP
.NET
托管 API

IDE
Visual
Visual
LISP
Basic, Applications Edition (VBA)
16
AutoCAD API 性能比较
S.0.58 API Performance
100.00 90.00 80.00 70.00
Seconds
60.00 50.00 40.00 30.00 20.00 10.00 0.00
Total Create 1000 2dPolylines Add XData to 1000 Entities Update 1000 Circles Create 1000 lines

autocad的二次开发

autocad的二次开发

autocad的二次开发(1)编写各种用户自定义函数并形成假设干LISP、ARX、VLX或ADS文件,以及一些DCL文件。

(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。

(3)在系统的ACAD、LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。

(4)通过系统对话框设置某些路径。

这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。

为此笔者用VC++开发了一套自动安装程序,使原本需要【五】六分钟的人工操作在十几秒内即可自动完成。

【一】基本思路整个安装程序遵循以下思路:1〕首先获得所在机器AutoCAD2000系统的安装路径;2〕寻找菜单文件AutoCAD2000\\support\\acaD、mnu,打开文件并将要添加的内容加至末尾;3〕寻找LISP文件AutoCAD2000\\support\\acad2000doC、lsp,打开文件并将要添加的内容加至末尾;4〕创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;5〕给出信息框,告知安装成功,如有问题那么告知安装失败。

需要指出的是,在添入acad2000doC、lsp的内容中须有如下语句:〔command“_menu”〔strcat〔getvar”menuname”〕”、mnu”〕〕,目的是为了强制执行菜单文件装入命令,将改动后的acaD、mnu文件编译后装入。

另外,在添入acad2000doC、lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。

AutoCAD二次开发[VBA]

AutoCAD二次开发[VBA]

第14 章 VBA开发在采矿CAD绘图中的应用AutoCAD在不但提供了强大的绘图功能,同时也提供了一个功能强大的集成开以工具——Microsoft Visual Basic for Applications(VBA)。

VBA是一个AutoCAD应用集成开发环境,它提供了高质量的用户化编程能力,能够使AutoCAD数据与其它VBA应用程序,VBA 的加入扩展了AutoCAD集成用户化工具的能力,它集成了AutoLISP,Visual LISP和ObjectARX API等工具。

这样,就为用户访问AutoCAD软件的多种技术框架提供了新的选择和新的开放机会,可以按用户所需求的工作方式开发应用程序。

VBA开发环境是一个可视化开发环境。

使用VBA可以通过拖拽图标的方法,简单而可视化地建立用户界面。

可以使用AutoCAD工具栏,也可以使用标准VBA界面工具创建新的工具栏。

AutoCAD软件中的ActiveX Automation对象模型十分有用。

Autodesk开放了每一个AutoCAD对象模型,这些对象模型显示了每一个对象的方法和属性,并能够依用户的愿望去编程或用户化AutoCAD软件。

学习本章内容最好具有Visual Basic6.0基础(主要是相关控件的使用方法与Basic 语言语法结构知识),如没有相关基础知识,可在学习本章之前参考相关书籍或在学习本章内容过程中同步使用相关参考书。

通过本章的学习,应了解和掌握以下内容: 了解VBA。

了解AutoCAD对象模型。

掌握绘制AutoCAD图形对象方法。

掌握编辑图形对象方法。

掌握绘制文字方法。

掌握标注方法。

掌握创建块与插入块。

14.1 VBA基础14.1.1VBA管理器在当前AutoCAD进程中加载的所有VBA工程都可以用“VBA管理器”对话框来管理。

这是一个AutoCAD的管理工具,可以使用它来加载、卸载、保存、新建、嵌入和提取VBA工程。

“VBA管理器”对话框如图14-1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

必须知道特性名称。
12.2.2 对象方法
ActiveX对象也包括方法 ,它们是为特定类型的对象提
供的动作。某些方法可应用到大多数AutoCAD图形对象。
在Visual LISP中,ActiveX方法是用AutoLISP函数实现
的,在Visual LISP文档中,用户会看到许多关于ActiveX函数
第12章 使用ActiveX
许多语言和环境都可以使用ActiveX编程界面,
如C++、Visual Basic、Java和Delphi等。在
AutoLISP中使用ActiveX对象,与其模型、属性和
方法和在其他编程环境中使用的ActiveX对象完全
相同。
12.1 在AutoLISP中使用ActiveX对象
线型和组等)的访问是由名称相近的特性(如Layers、
Linetype和Groups等)提供的。
12.3.3 过程总结
实现的功能是用ActiveX Automation在AutoCAD图
形中画一个圆对象,函数调用序列如下所示:
(vl-load-com)
(setq acadObject(vlax-get-acad-object))
12.3 访问AutoCAD对象
通过Document对象的Application特性可以访 问Application对象。在对象层次结构中, Application对象位于Document对象的上方。 如果要AutoLISP中使用ActiveX函数,用户必 须先加载支持代码来使这些函数可用。
12.3.1 访问AutoCAD应用程序
4. 图形的模型空间(modelspace)和图纸空间(paperspace)。
12.2 AutoCAD对象模型
AutoCAD对象是通过分层方式来组织的,应用程序
(Application)对象为根对象。这种分层结构的视图被归
结为对象模型。Application对象还提供指向AutoCAD图 形(通过Documents集合)、AutoCAD菜单和工具栏 (通过 MenuBa 和MenuGroup 集合)以及 VBA IDE (通过VBE特性)的链接。
的内容,但是应该清楚在ActiveX术语中,它们应被称为方法。
12.2.3 对象集合
AutoCAD通过集合将所有对象进行分类。虽然这些集
合包含了不同类型的数据,但是可以使用相似的技术来处理
它们。每一个集合都提供了向其中添加对象的方法。大多数 集合是通过 Add 方法完成的。但添加图元对象通常使用名为 Add<图元名> 的方法。例如,要添加直线,请使用 AddLine 方法。
1. 获取AutoCAD应用程序
2. AutoCAD应用程序的属性和方法
12.3.2 应用程序对象以下的其他ActiveX对象
沿着AutoCAD对象模型层次图,应用程序对象
的ActiveDocument特性将把用户带到文档对象,它
代表当前AutoCAD图形。
文档对象有许多特性。对非图形对象(如图层、
第12章 使用ActiveX
Visual LISP为AutoCAD提供了许多新的功能, 包括支持ActiveX对象的操作以及支持ActiveX与其 他程序的交互等。 ActiveX Automation技术使用户可以方便地使 用其他许多面向对象的高级语言来开发AutoCAD程 序,它的作用是面向对象的编程接口,程序可以据此 访问AutoCAD所有的绘图对象和非绘图对象。
12.3.4 编程技巧
在编程中应避免反复调用AutoCAD应用程序、
活动文档和模型空间对象,因为它们降低程序的运行
速度,在编写程序时,用户应该让自己的应用程序一
次获取这些对象,然后在整个应用程序中都引用所获
取的对象指针。
ቤተ መጻሕፍቲ ባይዱ
12.3.5 在Visual LISP函数中使用 ActiveX
为访问ActiveX对象,Visual LISP给AutoLISP语言增 加了一些函数。 1. vla-函数和每个ActiveX方法相对应,可用这些函 数调用ActiveX方法(如vla-addCircle调用 addCircle方法)。 2. vla-get-函数和每个特性相对应,可获取ActiveX 特性的值(如vla-get-Color获取对象的Color特性)。 3. vla-put-函数和每个特性相对应,可设置ActiveX 特性的值(如vla- put –Color获取对象的Color特 性)。
第12章 使用ActiveX
ActiveX Automation是一种新的方法,通过它 可以用编程的方式操作AutoCAD图形。
Visual BASIC C++ Delphi Java MS Word VBA
Excel VBA AutoCAD VBA
AutoCAD ActiveX Objects
AtuoCAD Application Drawing.dwy
对象是ActiveX应用程序的主要组成部分。例如,直线、圆 弧、多义线和圆等都被称为图形对象。但在使用ActiveX时,以 下AutoCAD本身及概念都被称为对象。 1. 样式设置对象,如线型(linetype)、文本样式(style)和尺寸 样式(dimstyle)等。 2. 组织结构对象,如图层(layer)和块(block)等。 3. 图形显示对象,如视图(view)和视口(viewport)。
12.2.1 对象属性
AutoCAD对象模型中的所有对象都有一个或多个特
性,我们把这些特性称为属性。属性用于描述对象。例
如,圆具有半径、面积、线型等属性,通过半径、面积、 线型等属性描述一个具体的圆。椭圆具有面积和线型属 性,虽然没有半径这个属性,但可以用其长轴和短轴的 比例来描述它。通过ActiveX函数访问AutoCAD数据时
(setq acadDocument(vla-get-ActiveDocument acadObject)) (setq mSpace(vla-get-ModelSpace acadDocument)) (setq mycircle(vla-acadCircle mSpace(vlax-3d-point '(3.0 3.0 0.0))2.0))
相关文档
最新文档