AutoCAD二次开发实用教程第12章 使用ActiveX
- 格式:ppt
- 大小:348.50 KB
- 文档页数:38
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 developmentAutoCAD在铁路工程设计领域中应用广泛,为了提高工程设计效率,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 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。
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的二次开发(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环境下交互设定路径的麻烦。
第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所示。
二次开发培训教程目录第一章AutoCAD基础 (5)一、AutoCAD绘图基本知识 (5)1、软件功能区 (5)2、基本绘图命令 (6)3、图块、图组操作命令 (6)4、设计中心 (6)5、系统变量 (7)第二章DWG文件结构 (7)2.1.总体结构 (7)2.2 数据库中的容器对象 (8)2.2.1 BlockTable(块表) ,BlockTableRecord(块表记录) (8)2.2.2DimStyleTable(标注样式表),DimStyleTableRecord(标注样式表记录) (9)2.2.3LayerTable(层表),LayerTableRecord(层表记录) (9)2.2.4LinetypeTable(线型表),LinetypeTableRecord(线型表记录) (9)2.2.5RegAppTable(应用程序注册表),RegAppTableRecord(应用程序注册表记录)92.2.6TextStyleTable(文字样式表),TextStyleTableRecord(文字样式表记录) (9)2.2.7UCSTable(用户坐标系表),UCSTableRecord(用户坐标系表记录) (10)2.2.8ViewportTable(视口表),ViewportTableRecord(视口表记录) (10)2.2.9ViewTable(视图表),ViewTableRecord(视图表记录) (10)2.2.10DBDictionary(词典) (10)第三章.net二次开发基础知识 (11)3.1 运行机制 (11)3.2常用命名空间与库 (11)3.2.1Acdbmgd.dll (11)3.2.3AcCui.dll (12)3.2.4AdWindows.dll (12)3.2.5acdbmgdbrep.dll (12)3.2.6COM组件AutoCAD/ObjectDBX Common X.0 Type Library (13)3.2.7COM组件AutoCAD xxx Type Library (13)3.3常用类/结构 (13)3.3.1 Application 应用程序(参见2.1) (13)3.3.2 Document 文档(参见2.1) (13)3.3.3 Database 数据库(参见2.1) (13)3.3.4 Transaction 事务 (13)3.3.5 DBObject 数据库对象 (14)3.3.6 Editor 编辑器 (14)3.3.6 BlockTable(块表) ,BlockTableRecord(块表记录) 请参见2.2.1 (14)3.3.7 DBDictionary(词典) 请参见2.2.10 (14)3.3.8 Xrecord 扩展记录 (15)3.3.9 Entity 实体 (15)3.3.10 ObjectId 对象ID (15)第四章第一个CAD程序 (15)第五章CAD实体基本操作 (18)5.1 常用实体操作 (18)5.1.1概述 (18)5.1.2打开关闭实体 (18)5.1.3 创建实体 (19)5.1.5 删除实体 (19)5.2 应用实例 (19)第六章符号表基本操作 (20)6.1数据库/文档的概念(参见2.1) (20)6.1.1 操作当前文档 (20)6.1.2 后台打开文档 (20)6.2.1 九大符号表(详细说明请参见2.2) (21)6.2.2符号表常用操作 (21)6.3、模型空间和图纸空间 (23)6.3.1、模型空间 (23)6.3.2、图纸空间 (23)6.4 块,块记录,块引用 (23)6.4.1 概念 (23)6.4.2 创建块/块引用 (24)6.5应用实例 (24)第七章模态/非模态对话框 (24)7.1、为什么要用非模态对话框 (24)7.2 在CAD中使用模态和非模态对话框 (25)7.2.1.显示模态对话框 (25)7.2.2.显示非模态对话框 (25)7.3 应用实例: (25)第八章扩展实体数据,扩展记录,对象词典 (26)8.1扩展实体数据 (26)8.1.1、扩展数据是什么 (26)8.1.2、在CAD中看到扩展数据的方法 (26)8.1.3、注册应用表(RegAppTable) (26)8.1.4、添加扩展数据 (27)8.1.5. 删除扩展数据 (27)8.1.6、读取扩展数据 (27)8.2 扩展记录 (28)8.3词典 (28)8.3.1 概念参见2.1.10 (28)8.3.2 命名对象词典的使用: (29)8.3.3 对象扩展词典的使用。
应用ActiveX技术进行AutoCAD二次开发应用ActiveX技术进行AutoCAD二次开发于亚东1Autodesk公司的AutoCAD软件广泛地应用于设计领域。
AutoCAD作为强大而专业的工程绘图软件,近几年在工程地质制图方面也得到了广泛应用,如钻孔柱状图、剖面图等。
但由于CAD本身的原因以及地质图件的特殊性,完全依赖CAD而不借助第三方软件或对CAD进行二次开发,实现地质图件的计算机化也是一件非常困难的事情。
好在CAD是一个灵活而又开放的系统,它提供了许多开放式的接口,允许用户通过这些接口对CAD进行二次开发,以满足不同用户的需要。
在当前AutoCAD系统中,最常见的开发用具是AutoLisp、VisualLisp、ADS和ARX,但Lisp处理数据库能力差,编制界面困难,而ARX和ADS是基于C++语言的开发环境,要求相对较高。
幸运的是,在AutoCAD R14以后的版本中,Autodesk公司在AutoCAD中加入了ActiveX自动化服务功能(ActiveX Automation server capabilities),使得用户可以通过可视化编程工具,如Visual Basic(以下简称VB)对AutoCAD进行二次开发,不但提高了工作效率,也满足了不同专业的需要。
本文简略地说明AutoCAD中的ActiveX对象模型结构及对模型对象的编程引用。
1 AutoCAD中的ActiveX对象模型AutoCAD ActiveX提供了一种机制,或者说是一种方法,可以供开发者通过编程手段来操纵AutoCAD。
ActiveX 是由一系列的对象,按一定的层次结构组成的,每一个对象都代表了AutoCAD中的一个明确的功能。
每一个对象本身包含着自己的属性和方法,通过方法可以实现对象的一些操作,如控制CAD的启动,打开一个文档,一条直线的生成。
而属性则是对象自己本身所具有的一些性质,如一个文本对象,它的属性有文本的高度,宽度、文本的颜色,所在层等。
第三章AutoCAD使用及二次开发第一节计算机图形学概要计算机图形学是关于计算机图形技术的学科。
它主要研究构造模型并利用计算机及其图形设备生成、处理、存储、输入与输出图形的有关原理、算法和技术,在工程领域有广泛的应用,因此学习和掌握计算机图形技术对于工程技术人员来讲,具有十分重要的现实意义。
计算机图形学是CAD领域的理论基础,涉及的内容广泛,这里我们主要介绍基本概念及有关的一些算法,它们包括曲线、曲面的设计以及几何造型技术等。
一、坐标变换坐标变换是图形处理的一种手段。
对于不同类型的形体、图形和图纸,在不同的处理阶段需要采用不同的坐标系,以提高图形处理的效率和便于用户的理解。
下面介绍一些与坐标变换有关的概念。
1.坐标系在图形处理过程中涉及到多种不同的坐标系,但概括起来可以把坐标系分成两大类:一类是面向系统的,例如绘图机和图形显示器等图形设备坐标系以及语言环境设置的窗口等,它主要用于实现绘图定位;另一类是面向用户的,例如图形坐标系、自然坐标系等,它用于分析图形自身的关系、建立数学模型以及采集数据。
2.齐次坐标在数学上,齐次坐标是空间位置矢量的一种表示方法。
一个n维位置矢量,在普通坐标下表示为[x1,x2,…,x n],它的齐次坐标表示在齐次坐标下将矢量表示成n+1维空间位置矢量[hx1,hx2,hx3,…,hx n,h],h为比例因子。
当h=1时,空间位置矢量为[x1,x2,…,x n,1],并称为其次坐标的规格化形式,在图形变换中一般采用这种规格化形式,此时在数值上齐次坐标与普通坐标相等。
这种n+1维向量表示一个n维向量的坐标表示方法称为齐次坐标表示法。
二、曲线、曲面的设计公路设计中处理的图形,按其形状可分为两大类。
第一类是规则形状的图形,通常由平面、二次曲面等组成,例如桥涵的蹲台、基础等结构图。
这类图形一般采用常规的三面视图的方法来表示。
第二类是自由形状的图形,通常由自由型曲线和曲面构成,例如地面就属于这类图形。
ActiveX技术在AutoCAD二次开发中的应用
赖惠芬;鲁绪芝
【期刊名称】《宁夏工程技术》
【年(卷),期】2003(002)002
【摘要】对AutocAD进行二次开发的手段很多,如
AutoLisp,ObjectARX,ADS,DXF等.自AutocAD R14版本开始,AutocAD中新增了ActiveX Automation技术.阐述了用Visual Basic 6.0作为编程工具,从编程的角度,使用ActiveX技术和应用面向对象方法进行AutoCAD二次开发的方法,对通过ActiveX部件实现计算程序与绘图程序的肾密结合,完成应用程序与AutocAD 间的直接通信的有关问题进行了分析研究,为VB编程人员开发Auto-CAD提供了一个有利的工具.
【总页数】3页(P150-151,160)
【作者】赖惠芬;鲁绪芝
【作者单位】宁夏大学机械工程系,宁夏,银川,750021;重庆广播电视大学,重
庆,630000
【正文语种】中文
【中图分类】TP391
【相关文献】
1.应用ActiveX技术进行AutoCAD二次开发 [J], 韩青峰;吴声松
2.ActiveX技术在AutoCAD二次开发中的应用 [J], 陈春明;霍海波
3.Matlab ActiveX技术在“数字信号处理”教学中的应用 [J], 王雪飞;王昌盛;马月红
4.ActiveX技术在LabWindows/CVI中的应用 [J], 杨玫;刘瑜;张燕红
5.ActiveX技术在自主测评系统中的应用 [J], 罗亚玲
因版权原因,仅展示原文概要,查看原文内容请购买。
AutoCAD的二次开发浅谈AutoCAD的二次开发林学与园林学院 06园林傅欣蕾摘要:通过对AutoCAD软件发展史的概述,从中归纳出CAD的总体发展趋势。
从当今各行业所需的CAD专业化功能,提出对其进行二次开发的意义及具体实施步骤。
关键词:AutoCAD 发展史二次开发专业化功能1.AutoCAD的发展简史:1.1、第一次CAD技术革命—曲面造型系统60年代出现的三维CAD系统只是极为简单的线框式系统。
这种初期的线框造型系统不能有效表达几体数据间的拓扑关系。
进入70年代,随着贝赛尔算法促使人们用计算机处理由线及曲面问题变得可行。
1.2、第二次CAD技术革命—实体造型技术1979年世界上第一个完全基于实体造型技术的大型CAD软件发布。
由于实体造型技术能够精确表达零件的全部属性,在理论上有助于统一CAD、CAE、CAM的模型表达,给设计带来了惊人的方便性。
1.3、第三次CAD技术革命—参数化技术1.4、第四次CAD技术革命—变量化技术成功运用参数化技术之后,开发人员发现了参数化技术尚有许多不足之外。
首先,“全尺寸约束”这一硬性规定就干忧和制约着设计者创造力及想象力的发挥。
再者,如在设计中关键形体的拓扑关系发生改变,失去了某些约束特征也会造成系统数据混乱。
1993年全新体系结构的I-DEAS Master Series软件问世,它第一次将变量化付诸实践。
变量化技术既保持了参数化技术的原有优点,同时又克服了它的不足之处。
无疑,变量化技术成就了SDRC,也驱动了CAD发展的第四次技术革命。
1.5、CAD的发展方向任何一种软件都是有缺陷而非完美无瑕的。
AutoCAD这一软件也是一样,只有在不断的发展中,找到自己的不足力求弥补,才能趋向臻化,达到一种完美。
纵观CAD的发展史,我们可以大略地看出该软件是朝着“人工智能化”、“专业应用化”等方向发展的。
而实现这样的发展方向的最佳手段就是通过对CAD的二次开发。
第一课:入门1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
3、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定”第四步:在Sub c100()和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行”Sub c100()Dim cc(0 To 2) As Double '声明坐标变量cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0For i = 1 To 1000 Step 10 '开始循环Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。