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二次开发是非常有效的技术手段。

cad二次开发教程

cad二次开发教程

cad二次开发教程
当办公软件无法满足特定需求时,我们通常需要进行CAD软件的二次开发。

CAD软件的二次开发可以帮助我们定制各种功能,以提高工作效率和满足特定需求。

以下是一个简单的CAD二次开发教程,让我们开始吧。

第一步:了解CAD软件的API
每个CAD软件都有自己的应用程序编程接口(API)。

通过研究CAD软件的API文档,我们可以了解到CAD软件提供的各种功能和接口。

第二步:编写代码
根据我们的需求,在CAD软件的API基础上编写代码。

我们可以使用各种编程语言,如C++,C#或Python。

编写的代码可以实现特定的功能,如自动绘制特定类型的图形,自动计算尺寸等等。

第三步:测试和调试
完成代码编写后,我们需要对其进行测试和调试。

通过在CAD软件中运行我们的代码,并观察其行为和效果,我们可以检查是否达到了我们的预期结果。

如果出现错误或异常,我们需要对代码进行调试,找出问题所在并进行修复。

第四步:部署和使用
在代码完全测试并修复所有错误后,我们可以将其部署到CAD软件中使用。

根据不同的CAD软件,部署方式可能会有所不同。

通常,我们需要将代码文件放置在特定的文件夹中,
并将其与CAD软件进行关联。

总结
CAD二次开发是为了满足特定需求而对CAD软件进行编程的过程。

通过了解CAD软件的API,编写代码,测试和调试,以及部署和使用,我们可以成功实现自定义功能和特定需求,提高工作效率。

希望以上教程对你有所帮助!。

AUTOCAD二次开发技术

AUTOCAD二次开发技术

AutoCAD二次开发技术AutoCAD作为一种通用计算机辅助设计软件,其二维图形设计功能非常强大,目前已广泛应用于机械、电子、电气、建筑、土木、服装等领域,深受国内外众多工程设计人员的喜爱,成为目前世界上应用最广的计算机辅助设计工具。

尽管如此,人们在使用过程中还是发现其存在较多的不足之处,如对于一些特殊曲线的绘制往往较为困难,而对于一些标准件、常用件,虽然从结构上看它们较为相似,但却难以采用AutoCAD提供的复制、镜像、旋转等命令来实现,而必须一笔划一笔划的绘制,显得费时费力。

AutoCAD是一种定位与全球各大领域和各类专业的通用微机CAD平台软件。

到目前为止,Autodesk公司已经相继推出了四代二次开发工具.AutoCAD的二次开发主要涉及以下内容:(1编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。

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

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

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

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

AutoCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。

它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。

AutoCAD第一版于1982年11月由AutoDESK公司推出,目前大家广泛使用的是AutoCAD2000或2002,最新版本是AutoCAD2004,其二次开发语言及工具也在不断地涌现语言本身不难,难点在对AutoCAD二次开发框架的掌握,其实AutoCAD文件可以当成一个数据库来理解,因此难点就是理解这个数据库的结构和编程方法。

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二次开发(VBA)就这么简单

autocad二次开发(VBA)就这么简单

autocad二次开发(VBA)就这么简单autocad二次开发(VBA)就这么简单运行autocad,创建一个新文件,Alt+F11(或者在菜单栏点“工具”→“宏”→“Visual Basic 编辑器”),在新出现的窗口菜单栏点“插入”→“模块”,输入下面的代码:Sub 我的第一个程序()Dim 直线1 As AcadLineDim 起点(0 TO 2) As DoubleDim 端点(0 TO 2) As Double起点(0) = 10起点(1) = 20端点(0) = 80端点(1) = 100Set 直线1 = ThisDrawing.ModelSpace.AddLine(起点, 端点)End Sub检查一下,确信没有问题后按F5回到autocad窗口,看见了吗?一条直线,起点坐标(10,20),端点坐标(80,100) 这个程序的第一行里,“SUB”和“()”是必须有的(人家微软就是这么规定的,我也没办法),“我的第一个程序”是这个程序的名字(如果你不喜欢也可以改个别的名字,我无所谓)。

第二行里,“Dim”是定义一个变量,“直线1”是要画的直线的名字(随便改,中英文都行),后面的英文必须有,意思是说:这是一条autocad直线。

第三行里,“起点(2)”是一个数组(因为我要用它给直线赋予起点,所以取了个直观的名字,又因为点的坐标是三维的,所以必须用能容纳三个数据的数组),后面的英文意思是“这个数据是双精度类型”。

第四行和第三行差不多,是用来给直线赋予端点的。

第五行和第六行是分别赋值给起点的x和y坐标(因为起点的z坐标是0,而定义这个数组的时候,默认数据就是(0,0,0),所以就不用管z坐标了)。

第七行、第八行赋值给端点x和y坐标。

第九行画直线,在“当前文件”的“模型空间”“画直线(按起点和端点)”。

第十行,完事了。

有的网友一看见英文,头就会变大。

别怕,如果你是用“复制/粘贴”把这段代码拷贝到VB编辑器里,就不会知道autocad有多么友善。

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二次开发的方法与实例

AutoCAD二次开发的方法与实例

AutoCAD二次开发的方法与实例AutoCAD是一款广泛应用的CAD软件,具有二次开发的能力。

AutoCAD二次开发是将AutoCAD的API和开发工具与其他软件的API和工具结合使用,并将AutoCAD的功能与其他应用程序的功能集成。

AutoCAD二次开发可以自动化绘制过程,节省时间和人力,提高生产率。

AutoCAD二次开发的方法:1.使用ObjectARX进行自定义编程ObjectARX是一种C ++编程接口,可用于开发自定义应用程序和高级命令。

ObjectARX可以让程序员使用全局变量、类和函数等等。

使用这些概念来创建与AutoCAD交互的自定义应用程序。

ObjectARX还提供了一些命令、选项和工具来帮助程序员将其自定义代码集成到AutoCAD中。

2.使用Visual Basic for Applications (VBA)进行自定义编程VBA是一种广泛使用的面向对象编程语言,是Microsoft Office的一部分。

通过在AutoCAD的VBA编辑器中编写代码,程序员可以创建自定义命令和功能,以满足其特定的绘图需求。

VBA还提供了一些内置函数和对象,使编程更加简单和直观。

3.使用.NET Framework进行自定义编程使用.NET Framework,程序员可以使用多种编程语言(如C#、、F#等)来编写与AutoCAD交互的应用程序。

通过将.NET程序集嵌入到AutoCAD中,程序员可以创建自定义工具栏、菜单和命令。

.NET Framework还提供了大量的功能和类库,使得开发更加高效和简单。

AutoCAD二次开发的实例:1. 使用VBA实现批量修改AutoCAD文件名Sub BatchRename()Dim sDir As StringDim sOldName As StringDim sNewName As StringDim sMessage As StringsDir = InputBox(\。

AutoCAD使用及二次开发

AutoCAD使用及二次开发
A t D R4升级 至 A t A 20 , 本 的 uo 1  ̄ u C DR 07 版 o
游戏兼容性非 常有用 , 因为此处我们 是应用
程序 , 所以此步骤不选 , 直接选下一步 ⑥测试程序步骤 , 接点下一步让 系统 直
升级带来 了诸多新功能和便 利, 但是 R 4这 1 ’ 个版本在很多的公 司仍然广泛应用 , 然而随 着 Wi d 系统 的不 断提升 , R 4带来 了 n鸺 d 给 1 _些兼容性 问题 , 下面就两个 比较 突出的实
丢失的 A X文件 , R 命令方可正常使用 。
名, 以上代码仅为格式刷命令的示例 , 其它命
令 问题 , 以如法炮 制在 第二步所写文件 中 可 加入相 应 的 代 码 , 果 需 要 可 到 ht: b g 如 t /i. p /o
c n nthoo o s . / a t 来下载加载全套的代码 。 d es b a ③此方法可以解决所有 C D版本的命令 A
琏 班趔 … 篾 罩曼 … _ 曼曼 P 一
且 旦
图2
此 问题 是 因为 At A u C D启 动 时 候 加 载 o A X插 件 不 完 整 造 成 的 , A t A 1 R 在 uo D R4到 C
②然后编写程序文件 , 对应上 面我们程 序文件的名称应该为 s oo o1 。 h bt . p a a s s oo o 1 这个文件里面的加载代码。 h bt .p a a s
s oo o1 即可 , h bt . p a a s 当然这个文件名你可 以随 便起 , 但是要与第一步中的 la 函数后面加 od
载 的文 件名 相 同 。 Ax a 是在 A t A rod l uo D中加 载 “ R 文件 C A X” 的代 码 , 引 号 范 围 内为 A X 文 件 的 文 件 双 R

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 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。

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.NET二次开发培训教程

AutoCAD.NET二次开发培训教程

二次开发培训教程目录第一章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二次开发技术的应用

A t ao 技术将 A t A u m tn o i u C D的各种功能封装在 A t A cvX对象中, o u C DA t e o i 使得应用程序可以通过 A . c te i X与 A t A v u C D进行通信 , o 并操纵 A t A u C D的许多功能. o
A te u m tn技术的完全面向对象化编程的特点 , cvXA t ao i o i 使其开发环境具备了强大的开发能力和简 单易用的优 良特点 , 开发工流行 的开发工具
来控制 和操纵 Auo AD. tC
在 V 中 调用 Auo AD,首 先应 通 过 “ 程 \ B tC 工 引用 ” ,在对 话 框 中选 择 “ tC 0 4Ty e i Auo AD 2 0 p L—
b ay ( 于 R1 rr ” 对 4是 Auo AD ObetLb ay , tC jc irr) 如果 没 有该 项 ,则在 \ rg a i s aa l c s t ( p o rmf ek cx 6 h .l 对 l b
彭 观 明
( 泰山学院 应用科学技术系, 山东 泰安 212 ) 70 1 [ 摘 要] 对 A t A u C D进行二次开发的手段很多, A t i ,b e R , D ,X o 如 u L pOj t X A S D F等. os eA 本文重点介绍
A t e uo ai 技 术及理论 , c vX A t t n i m o 阐述 了利用 V B连接 A t A u C D对 象并对其进行 操作的方法. o
0 导言
A te u m tn cvX A t ao 是建立在微软的 Cm oet b c M dlC M组件对象模型) i o i o pnn O j t oe( O e 上的技术标准 , 该标准允许通过暴露的对象 由一个 Wi o s n w 应用程序控制另一个 Wi o s d n w 应用程序. u C DA te d A t A cvX o i

AutoCAD使用及二次开发

AutoCAD使用及二次开发

第三章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维向量的坐标表示方法称为齐次坐标表示法。

二、曲线、曲面的设计公路设计中处理的图形,按其形状可分为两大类。

第一类是规则形状的图形,通常由平面、二次曲面等组成,例如桥涵的蹲台、基础等结构图。

这类图形一般采用常规的三面视图的方法来表示。

第二类是自由形状的图形,通常由自由型曲线和曲面构成,例如地面就属于这类图形。

Autocad二次开发

Autocad二次开发

可以用New 关键字、GetObject、GreateObject 函数,在VB 程序中直接访问AutoCAD 应用程序对象。

例如用下面语句直接引用应用程序对象:Dim Acadapp As ObjectSet Acadapp = GetObject(, "AutoCAD.Application.16")或者:Set Acadapp = GreateObject(, "AutoCAD.Application.16")下面语句利用应用程序对象的ActiveDocument 属性来访问对象:Dim Acaddoc As ObjectSet Acaddoc = AcadApp.ActiveDocument下面语句用文档对象的Modelspace 属性来访问模型空间实体集合(Modelspace):Dim Mospace As ObjectSet Mospace=AcadDoc Modelspace模型空间实体集合也提供了访问其成员(即所有在模型空间内的实体)的方法。

例如下面用Item 语句访问模型空间内的第2 个实体:Dim Ent As ObjectSet Ent=Mospace Item(1)VBA 程序和当前的AutoCAD 图形自动连接,可通过ThisDrawing 对象直接访问图形,而VB 和AutoCAD 之间通过COM 技术连接,VB 要通过访问AutoCAD 的根对象和文档对象来实现对AutoCAD 的访问,所以VB 代码要复杂一些。

VB 连接AutoCAD 步骤:(1)首先要引用AutoCAD Type Library,在VB 中选择“工程”→“引用”,在“引用”对话框中选择AutoCAD2004 Type Library 。

(和安装的AutoCAD 版本有关,如果自己电脑中安装的是AutoCAD2007,则选择的是AutoCAD2007 Type Library)(2)为AutoCAD 当前文档(acadDoc)定义变量,通常定义为全局变量。

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

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

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二次开发教程

第一课:入门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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。

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

12.6 AutoCAD实体名和VLA对象之间的转换
1.将AutoCAD实体名转换为VLA对象 2. 将VLA图形对象转换为AutoCAD实体名 (1)用带有vla-get前缀的函数 (2)用函数vlax-get-property获取任意ActiveX对 象的任意属性
12.7 修改图形对象的属性
该函数先检查是否已经加载了ActiveX函数,如 果已经加载,则该函数不做任何工作,如果尚未加载 ActiveX支持函数,vl-load-com函数将为AutoLISP 语言加载ActiveX以及其他Visual LISP扩展部分。
12.4 ActiveX对象访问
12.4.1 查看对象特性 查看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.5 在Visual LISP函数中使用ActiveX方法
12.5.2确定函数参数 确定了函数名,还需要进一步确定这个函数的参
数和数据类型,在“AutoCAD ActiveX and VBA references”中有使用ActiveX函数的详细信息。
12.5 在Visual LISP函数中使用ActiveX方法
第12章 使用ActiveX
ActiveX Automation是一种பைடு நூலகம்的方法,通过它 可以用编程的方式操作AutoCAD图形。
Visual BASIC C++
Java
MS Word VBA
Delphi
AutoCAD VBA
Excel VBA
AutoCAD ActiveX Objects
AtuoCAD Application Drawing.dwy
1. 获取AutoCAD应用程序 2. AutoCAD应用程序的属性和方法
12.3.2 应用程序对象以下的其他ActiveX对象
沿着AutoCAD对象模型层次图,应用程序对象 的ActiveDocument特性将把用户带到文档对象,它 代表当前AutoCAD图形。
文档对象有许多特性。对非图形对象(如图层、 线型和组等)的访问是由名称相近的特性(如Layers、 Linetype和Groups等)提供的。
12.2.1 对象属性
AutoCAD对象模型中的所有对象都有一个或多个特 性,我们把这些特性称为属性。属性用于描述对象。例 如,圆具有半径、面积、线型等属性,通过半径、面积、 线型等属性描述一个具体的圆。椭圆具有面积和线型属 性,虽然没有半径这个属性,但可以用其长轴和短轴的 比例来描述它。通过ActiveX函数访问AutoCAD数据时 必须知道特性名称。
指向此对象的变量,然后选择“视图”→“检验”命 令,或者单击“视图”工具栏中的“检验”按钮。
12.4 ActiveX对象访问
12.4.2 访问图形对象 1. 获取AutoCAD应用程序
2. AutoCAD应用程序的属性和方法
12.4 ActiveX对象访问
12.4.3 访问其他AutoCAD对象 获取AutoCAD应用程序这个根对象之后,沿着
对象是ActiveX应用程序的主要组成部分。例如,直线、圆 弧、多义线和圆等都被称为图形对象。但在使用ActiveX时,以 下AutoCAD本身及概念都被称为对象。 1. 样式设置对象,如线型(linetype)、文本样式(style)和尺寸 样式(dimstyle)等。 2. 组织结构对象,如图层(layer)和块(block)等。 3. 图形显示对象,如视图(view)和视口(viewport)。 4. 图形的模型空间(modelspace)和图纸空间(paperspace)。
1. 用带有vla-put-前缀的函数 这类函数的调用语法如下: (vla-put-property VLA图形对象 新的属性值) 2.用函数vlax-put-property修改ActiveX对象属性 函数vlax-put-property的调用格式如下: (vlax-put-property VLA图形对象 property 新的属 性值)参数property为符号或字符串,标志要修改的
12.2.2 对象方法
ActiveX对象也包括方法 ,它们是为特定类型的对象提 供的动作。某些方法可应用到大多数AutoCAD图形对象。
在Visual LISP中,ActiveX方法是用AutoLISP函数实现 的,在Visual LISP文档中,用户会看到许多关于ActiveX函数 的内容,但是应该清楚在ActiveX术语中,它们应被称为方法。
12.5.3 将Visual Basic环境下的语句改写为AutoLISP 表达式 1. 先分析Visual Basic环境下的语句: RetVal = object.AddLine(StartPoint,EndPoint) 2.采用AutoLISP表达式为: (setq myline(vla-addline myms (vlax-3d-point '(10 20)) (vlax-3d-point '(80 30))))
第12章 使用ActiveX
Visual LISP为AutoCAD提供了许多新的功能, 包括支持ActiveX对象的操作以及支持ActiveX与其 他程序的交互等。
ActiveX Automation技术使用户可以方便地使 用其他许多面向对象的高级语言来开发AutoCAD程 序,它的作用是面向对象的编程接口,程序可以据此 访问AutoCAD所有的绘图对象和非绘图对象。
AutoCAD对象模型图,就可以将其作为起点,逐级 访问它的下一级VLA对象。
12.4 ActiveX对象访问
12.4.4 使用检验工具了解AutoCAD对象的属性 1. 获取AutoCAD应用程序对象 2. AutoCAD应用程序对象 3. 活动文档的属性 4. 模型空间的属性 5. 直线的属性 6. 圆的属性
第12章 使用ActiveX
许多语言和环境都可以使用ActiveX编程界面, 如C++、Visual Basic、Java和Delphi等。在 AutoLISP中使用ActiveX对象,与其模型、属性和 方法和在其他编程环境中使用的ActiveX对象完全 相同。
12.1 在AutoLISP中使用ActiveX对象
12.5 在Visual LISP函数中使用ActiveX方法
12.5.4 转换数据类型为ActiveX型 实体类型是一种特殊的数据类型,实际上可以看
做是一种自定义的数据结构。可以含有不同类型的数 据,固定长度的字符串数据和用户定义的类型除外。 与数据一同存储的是数据类型的识别信息,这种自定 义的数据类型使得与ActiveX的数据交互可以很顺利, 因为它是基于多种程序设计语言都能够接受的数据结 构。
12.5 在Visual LISP函数中使用ActiveX方法
Visual LISP为AutoLISP提供了一系列操作ActiveX对 象的函数,这些函数可分为以下几种: 1)VLA-前缀的函数 2)VLA-Get前缀的函数 3)VLA-Put前缀的函数 4)VLAX-前缀的函数
12.5 在Visual LISP函数中使用ActiveX方法
属性。
12.8 确定方法或属性是否适用于特定对象
如果使用不适于指定对象的方法或属性,将会 导致程序出错,所以在不能确定属性或方法是否应用 到某个对象时,最好用vlax-method-application-p 函数或vlax-property-available-p函数测试一下对象, 如果方法或特性可用,则函数返回T,否则返回nil。 1.函数vlax-method-application-p 2.函数vlax-property-available-p
12.3.6 确定所需的Visual LISP函数
Visual LISP ActiveX函数实际上是提供了对ActiveX 方法的访问能力,如,在Visual LISP控制台提示下输入 下列AutoLISP语句: _$ (setq mycircle(vla-addCircle mSpace(vlax-3d-point '(3.0 3.0 0.0))2.0)) #<VLA-OBJECRT LAcadCircle03ad067c>
12.4 ActiveX对象访问
12.4.5 通过Help功能了解AutoCAD对象 1.在VLISP环境下,按功能键F1。 2.在随后显示的AutoCAD 2007Help:Developer 3.Documentation对话框的目录选项卡内双击 。 4.在展开的目录树上双击 。 5.在Objects目录下双击AutoCAD图形对象。
12.3.3 过程总结
实现的功能是用ActiveX Automation在AutoCAD图 形中画一个圆对象,函数调用序列如下所示:
(vl-load-com) (setq acadObject(vlax-get-acad-object)) (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))
相关文档
最新文档