基于VBA编程的AUTOCAD软件二次开发举例

合集下载

AutoCAD 2014 二次开发 VBA 基础与实例

AutoCAD 2014 二次开发 VBA 基础与实例

AutoCAD 2014 二次开发VBA 基础与实例第一集AutoCAD二次开发介绍第二集AutoCAD VBA创建直线1我们在用VBA在AutoCAD 中完成预期的操作时,需要调用VBA提供的类或方法。

这就要求我们了解vba的基本语法结构。

其实vba和vb的语法结构基本相同,如果学习过vb程序设计语言的话,那么对vba的语言结构就不会陌生,如果没有学过那么,我会逐步给大家来讲解vba的语法结构。

其实如果没有学过vb 语言,就直接学习vba也没有问题。

当然我们也不提倡为了学习vba而去学习vb 程序设计语言,因为没有必要,直接学习vba发而不会受到vb的影响,他们毕竟还是有一些差别的。

我们先来看一个简单的应用:Vba语法讲解:Dim ps As Variant '定义变量类型,在vba中使用变量前一定要先定义Dim pt1(0 To 2) As Double Dim pt2(2) As Double 两种定义数组的方法CAD中的点可以用数组来表示,数组中的三个值分别为x、y、z第三集AutoCAD VBA创建直线2上面的过程可以在模型空间内画出一条指定起点和终点的直线,但是如果指定的不是起点和终点,那该怎么办呢,我们可以通过相关的函数将其转换成起点和终点的形式,也可以自定义函数来实现相应的操作。

我们看到了上面过程的最后一个表达式很长,自定义函数可减少这种代码的书写,当然,如果你是初学AutoCAD VBA编程的话,我建议还是尽量多些这些长的代码,因为他可以帮助你理解AutoCAD VBA中各种对象和方法以至属性之间的关系。

那么过程和函数之间有什么区别呢?我们用关键字Sub定义的一段代码为过程,而用关键字Function定义的一段代码为函数,过程和函数都可实现一定的功能或者操作。

过程没有返回值,而函数可以有返回值,这样就可将一长段代码其中的部分功能用函数封装起来。

这样做的好处是,使得代码的可读性更强,代码看起来更简练,同时如果多个功能代码都有相同的部分,则可以减少书写的次数。

利用VBA对AutoCAD二次开发在矿山测量中的应用

利用VBA对AutoCAD二次开发在矿山测量中的应用

利用VBA对AutoCAD二次开发在矿山测量中的应用摘要:本文通过对AutoCAD绘图软件、二次开发语言VBA的介绍,以及分析矿山测量在制图时对AutoCAD的需求,阐述利用VBA对AutoCAD二次开发在矿山测量中的应用。

关键词:AutoCAD;VBA;二次开发;矿山测量1关于AutoCAD、VBA1.1介绍AutoCAD、VBAAutoCAD(Auto Computer Aided Design)是美国Autodesk公司首次于1982年研究开发的计算机辅助设计软件,是目前国际上应用最流行的绘图工具,功能全面,操作稳定,普适性强,广泛用于二维绘图、详细绘制,深受各行各业设计者和工程技术人员的喜爱。

与此同时,高普适性也对应着AutoCAD另一大特点:开放的结构体系。

这种开放体系,使得不同行业、专业根据自身的特点能够对其进行Autodesk二次开发,可以说AutoCAD的普适性为其二次开发提供了必要条件,从而也弥补了其专业针对性能不强的弱点。

从AutoCAD R14.01版开始,Autodesk在AutoCAD中加入了VBA(Visual Basic for Applications),作为AutoCAD的一种二次开发工具。

VBA是一种完全面向对象体系结构的编程语言,是Visual Basic的一种宏语言,与VB有着相似的语言结构和开发环境。

在VBA中,AutoCAD通过AetiveX提供了一个沟通外部世界的机制,使得AutoCAD通过不同的编程语言和环境进行二次开发。

可见,VBA是通过ActiveX接口建立与AutoCAD对象之间的联系,在AutoCAD和Visual Basic之间搭建起起了一座桥梁,将其完美的融合在一起,创造出符合用户要求的程序,形成新的功能性强、灵活性高的软件。

1.2利用VBA对AutoCAD进行二次开发的优点VBA与其他AutoCAD二次开发技术相比,优点有很多:VB语言基础广泛。

基于VBA的AutoCAD二次开发在图纸明细表中的应用

基于VBA的AutoCAD二次开发在图纸明细表中的应用
时 间 而 且 不 能保 证 10 准 确 。 0% 成 块 , 方 便 程 序 调 用 插 入 。 明 细 表 表
解 决 上 述 问 题 成 为 构 建 应 用 项 制 作 成 属 性 块 , 程 序 调 用 插 入 时 , 程 序 的 关 键 , 应 用 程 序 设 计 的 基 根 据 用户 输 入 的表 项 内容 ,程 序 自动
关键 词 : 总装 图 ; 明细 表 ;A t C D u o A ;二 次 丌 发 ;V A B
O引 言
图 纸 文 件 中 总 装 图 是 产 品 必 不 可
多 条 表 项 时 , 需 要 手 工 调 整 表 项 位 置 F r p i a o )、O e t R 等 , o A pl c ti n bj c A X 并 重 新 编 辑 表 项 的 序 号 值 : 3 明 细 ) 利 用 这 些 开 发 工 具 用 户 可 以方 便 地 自
间 , 而 且 易 出 错 。A t C D 于 T g 建 uo A 中 ., J 装 图 中 引 用 了 子 部 件 , 子 部 件 同样 有
述 的手 工 操 作 完 成 的 种 种 不 足 之 处 。
明 细 表 的 一 般 方 法 是 表 项 采 用 属 性 块
生成 ,指 引线采 用L a e 命令 生成 , edr
对 象 的 关 键 不 是 如 何 创 建 、 编 辑 对 象 表 头 、 明 细 表 表 项 等 对 象 。 指 引 线 由 及 其 后 处 理 , 问题 的关 键 在 于 : 1 明 点 、 直 线 或 圆 单 行 文 字 等 组 成 , ) 、 用 札 + D + 细 表 对 象 创 建 后 如 何 存 储 在 图 形 文 件 户 选 择 点 后 由程 序 自动 生 成 , 生 成 后

基于VBA编程的AUTOCAD软件二次开发举例

基于VBA编程的AUTOCAD软件二次开发举例

基于VBA编程的AUTOCAD软件二次开发举例
王龙; 韩旺; 郑志华
【期刊名称】《《湖南农机》》
【年(卷),期】2011(038)005
【摘要】AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。

文章介绍了AUTOCAD软件中VBA的程序开发的特点,并以绘制螺栓为例来简要说明VBA编程的主要过程和要点,阐述了二次开发在AUTOCAD标准件模块化中的实用价值。

【总页数】2页(P55-56)
【作者】王龙; 韩旺; 郑志华
【作者单位】中国地质大学机电学院湖北武汉430074
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.初中写作教材“二次开发”的具体构想举例——基于苏教版的研究 [J], 孙静
2.AutoCAD软件的尺寸标注中二次开发技术的应用 [J], 梁焕;吴鸣宇
3.AUTOCAD软件二次开发Hatch命令的实现--基于ObjectArx的开发 [J], 杨舟
4.AutoCAD软件在园林设计二次开发中的应用 [J], 杨光明
5.VBA编程二次开发技术在施工企业责任成本分析中的设计理念 [J], 刘震;李星海
因版权原因,仅展示原文概要,查看原文内容请购买。

AutoCAD2000VBA二次开发方法

AutoCAD2000VBA二次开发方法

A u toCAD 2000VBA 二次开发方法白海清Κ彭玉海;陕西工学院机电系Κ陕西汉中723003ΓD evelopm en t of A u toCAD U sed VBABA I Ha i q i ng ΚPENG Y u ha i;D epartm en t of M echan ical &E lectrical ΚShanx i In stitu te of T echno logy ΚH anzhong 723003ΚCh ina Γ 摘要Π介绍了在A u toCAD 2000下利用VBA 二次开发的方法、技巧和关键技术Κ并通过联轴器的参数化绘图详细阐述了利用VBA 实现参数化设计的步骤及关键技术Λ关键词ΠA u toCAD Μ二次开发ΜVBA中图分类号ΠT P 311.52文献标识码ΠB文章编号Π1001-2257;2002Γ02-0065-03Abstract ΠT h is p ap er in troduces a ob ject o ri 2en ted developm en t too l of A u toCAD 2000based on VBA Κand exp atiates the key techno logy and step of developm en t u sed VBA by an app licati on exam 2p le to draw the w o rk ing draw ing of coup ling .Key words ΠA u toCAD Μdevelopm en t ΜVBA收稿日期Π2001-11-190 引言对A u toCAD 的二次开发可以通过A ctiveX 来实现ΚA ctiveX 是微软公司提出的一个基于COM ;com ponen t ob ject m odel Γ的技术标准Λ应用A u to 2CAD A ctiveX 技术Κ用户可以利用VB 、VBA 等外部或内部程序来操作A u toCAD 暴露的对象Λ在A u toCAD 2000中Κ几乎对外暴露了所有对象Κ包括图形实体对象;如直线、圆ΓΚ样式设置对象;如线型、文本样式ΓΚ组织结构对象;如层、块ΓΚ图形显示对象;如视图、视图区Γ以及菜单、工具栏等Κ也就是说用户可以操作几乎所有的A u toCAD 对象ΛVBA ;visual basic fo r app licati on Γ由V isualB asic 派生而来Κ现在已经成为M icro soft 产品的标准语言Λ与VB 一样ΚVBA 是面向对象的程序设计语言Κ它继承了VB 语法简单、功能强大的特点Κ同时Κ由于VBA 可与主程序在同一内存空间内运行Κ大大提高了运行速度Κ并具有一定的:智能Φ功能Λ在A u toCAD 2000中Κ已经集成功能强大、易学易用的VBA 5.0程序开发环境Κ且提供了高质量的用户化编程能力Λ1 VBA 开发方法及关键技术1.1 AutoCAD ActiveX 对象的使用任何一个具有明确内涵的事物均可以称之为对象Κ如A u toCAD 应用程序Κ图形文件以及图形内的任何实体都是一种对象Κ对象是用类定义的Λ1.1.1 A u toCAD 2000对象模型A u toCAD 2000应用程序公开的对象很多Κ每个对象都代表了A u toCAD 应用程序的一部分Λ图形实体对象Π如直线;line ΓΚ圆;circle Γ等Μ样式设置对象Π如线型;linetyp e Γ等Μ组织结构对象Π如层;layer ΓΚ块;b lock Γ等Μ图形显示对象Π如视图;view ΓΚ视图区;view po rt Γ等Λ这些对象按照从属关系Κ有层次地组织在一起Κ就形成了A u toCAD 2000对象模型Λ1.1.2 对象的访问;引用ΓVBA 访问A u toCAD 2000对象的原则是按照对象模型进行访问ΛVBA 提供了一个特殊的对象—T h is D raw ing Κ它是A u toCAD VBA 的一个术语Κ代表当前打开的A u toCAD 图形文件Λ例ΠD i m M yline A s A cadL ine 9定义应用直线的变量Set M yline =T h is D raw ing .M odelSp ace .Item ;0Γ9应用这个直线;假设该直线是第1个实体Γ1.2 实体对象的创建与编辑在创建实体对象之前Κ要确定实体将放于何处Κ即是模型空间、图纸空间Κ还是存放在块中Λ不论在哪个对象中创建实体Κ都要先引用这个对象Λ・56・=机械与电子Ι2002;2Γ1.2.1 创建基本实体用A ddEn titynam e形式的方法Κ即:创建;A ddΓΦ+:实体名字;En tityN am eΓΦΛ例如下面语句在模型空间创建一个圆Κ圆心为;0Κ0Κ0ΓΚ半径为10ΛD i m cp;0To2ΓA s Doub lecp;0Γ=0Πcp;1Γ=0Πcp;2Γ=0Call T h is D raw ing.M odelSp ace.A ddC ircle;cpΚ10#Γ1.2.2 实体对象的编辑实体编辑是VBA编辑中最常用的操作Κ这些编辑操作包括复制、移动、删除等Λ同样Κ在编辑对象前必须对其引用Λ例Π将模型空间的第一个实体进行复制ΛD i m M yO b ject A s O b jectD i m retO b ject A s V arian tSet M yO b ject=T h is D raw ing.M odelSp ace;0ΓretO b ject=T h is D raw ing.Cop yO b jects;M y2 O b jectΓ1.3 工具栏和菜单的定制1.3.1 创建和编辑菜单A u toCAD A ctiveX可以定制两种类型的菜单Π下拉菜单和快捷菜单Λ创建一个下拉菜单是用A dd 方法将一个新的菜单对象添加到菜单集合中Λ例ΠD i m cu rr M enuGroup A s A cad M enuGroup 9定义菜单组对象变量Set cu rr M enuGroup=T h is D raw ing.A pp lica2 ti on.M enuGroup s.Item;0Γ 9对变量赋值D i m newM enu A s A cadPop upM enuSet newM enu=cu rr M enuGroup.M enu s.A dd ;:联轴器ΦΓ 9创建新菜单:联轴器Φ1.3.2 工具栏的创建与编辑通过A u toCAD A ctiveX技术Κ用户同样可以创建和编辑工具栏Λ用A dd方法可以向工具栏集合中添加新的工具栏Λ例Π创建一个名为:Coup lingΦ的工具栏ΠD i m cu rr M enuGroup A s A cad M enuGroupSet cu rr M enuGroup=T h is D raw ing.A pp lica2 ti on.M enuGroup s.Item;0ΓD i m new Too l B ar A s A cadToo l B arSet new Too l B ar=cu rr M enuGroup.Too l B ars.A dd;:Coup lingΦΓ以上是A u toCAD二次开发时用到的主要方法和技术Λ2 应用实例使用A u toCAD2000VBA二次开发技术Κ实现通用机械零件联轴器的参数化绘制Λ绘制时先创建一个块Κ在块中绘制联轴器Κ并使其可以随意拖动和定位Λ加载后在A u toCAD:绘制Φ菜单下增加一下拉菜单项:联轴器ΦΚ快捷菜单中增加菜单项:联轴器ΦΚ工具栏上增加一工具栏Λ2.1 设计窗体界面在A u toCAD命令行键入:VBA I D EΦ进入VBA 综合开发环境Κ在:插入Φ菜单下选择:添加用户窗体ΦΚ系统将显示一个空白窗体和控件工具箱Λ用户根据自己的愿望进行窗体设计Λ笔者开发的联轴器绘制窗体如图1所示Λ图1 联轴器绘制窗体2.2 编写程序代码按照VBA的编程方法为每一个对象编写相应代码Κ实现所要求的界面和联轴器的参数化绘制Λ这里仅介绍在A u toCAD的:绘图Φ菜单添加下拉菜单项:联轴器Φ的程序代码ΛPub lic Sub addm enu;O p ti onal a A s B yteΓ O n E rro r R esum e N ex t D i m oA cad A s A cadA pp licati on Set oA cad=T h is D raw ing.A pp licati on D i m oPop up A s A cadPop upM enu D i m oSubPop up A s A cadPop upM enu Item Fo r Each oPop up In oA cad.M enuB ar ‘tagstring is no t localized so u se it to locate the m enu D i m op enm acro A s String op enm acro=Ch r;3Γ+Ch r;3Γ+Ch r ;95Γ+:-vbarunΦ+Ch r;32Γ+:coup lingΦ+Ch r ;32Γ・66・=机械与电子Ι2002;2Γ If oPop up.T agString="I D M nD raw" T hen Set oSubPop up=oPop up.A dd M enu2 Item;0Κ"联轴器;&ZΓ"Κop enm acroΓ End IfN ex tEnd Sub3 结束语用内嵌VBA二次开发A u toCAD2000的方法简单、编程容易Κ并且运行速度较快ΛVBA具有如下特点Πa.VBA能够使A u toCAD与其它应用程序直接共享数据Λb.在VBA综合开发环境中Κ可以通过拖动图标的方法Κ简单而可视化地建立用户界面Λ用户可以使用A u toCAD工具栏Κ也可以使用标准VBA界面工具创建新的工具栏Λc.VBA的语言代码完全继承了VB的特征Κ编程语言简单Λd.具有开放式的对象模型Κ用户可以按照自己的愿望编程或定制A u toCAD2000软件Λe.具有良好的运行速度ΛVBA是一个内嵌式的控制器Κ共享A u toCAD的内存空间Κ其运行速度比其它开发方式;如AD S、L ispΓ要提高许多Λ利用VBA二次开发的技术Κ工程设计人员可以定制A u toCADΚ把用到的标准件象联轴器的参数化绘制一样Κ全部实现自动选取Κ因而大大地提高了设计效率Λ参考文献Π[1] 李晓明Κ等.A u toCAD2000使用与开发指南[M].北京Π国防工业出版社Κ2000.[2] 张国宝.A u toCAD2000VBA开发技术[M].北京Π清华大学出版社Κ2000.[3] 徐 灏.机械设计手册4;第二版Γ[M].北京Π机械工业出版社Κ2000.[4] D ietm ar R udo lph.A u toCAD2000对象开发从入门到精通[M].曾 琦Κ等译.北京Π电子工业出版社Κ2000.作者简介Π白海清 ;1970—ΓΚ男Κ陕西省榆林市人Κ机械设计制造及其自动化教研室主任Κ主要从事先进制造技术及机电一体化技术的研究ΛM A ST ER K系列可编程控制器在牧草打捆机上的应用 牧草打捆机一般是由液压系统来实现作业的Κ即先将料槽里已经称量好重量的牧草推入打捆机压缩箱内Κ封箱;上盖油缸前进ΓΜ然后主压油缸推动活塞在压缩箱内前进挤压牧草Κ达到设定位置挤压动作停止Μ再由推出油缸将草捆横向推出压缩箱Μ接下来3个油缸按前进顺序的逆顺序退回原位Κ即完成了一个工作循环Λ国内绝大多数打捆机的电气控制为手工控制Κ即由操作工人按工作顺序点动一系列按扭来完成打捆机的基本动作Λ这种操作不仅浪费人力、动作精度不好保证Κ而且极易出错Κ工作效率低Λ为使打捆机在正常工作时能够实现全自动化Κ提高工作效率和精度Κ我们在设计打捆机时Κ考虑到产品的造价和实际工作需要Κ把装料进压缩箱这一动作设计由人工来完成Κ从封箱开始到回位共6个动作为自动循环Λ电气控制部分Κ将M K系列可编程控制器;PL CΓ作为控制核心Κ使打捆机可实现全自动控制、点动控制、手动顺序控制以及行程开关调整控制ΛM K系列可编程控制器;PL CΓ是L G公司的产品Κ该产品除具备PL C共有的可靠性高、柔性好、功能强大、使用方便、体积小、能耗低等特点外Κ还可识别梯形图程序Κ编程简便Κ可直接在个人计算机上用其附带软件进行编程、编好的程序可用232电缆由计算机的通信口直接传送进PL CΚ可用一些简单的触发开关代替实际的触发信号在计算机上模拟运行程序Κ调试、修改程序非常方便Λ由于PL C内部设有若干:软继电器ΦΚ因此Κ在输出电路里不需要给每个液压系统的电磁阀设置一个继电器Κ这样也大大简化了外电路的结构Κ给电气系统的检修带来了极大的方便Κ使整个电气系统的可靠性大大提高Λ经实际使用证明Κ将PL C用于国产打捆机控制系统效果良好Κ是一种方便可行的方法Λ;黑龙江八一农垦大学食品学院 李大鹏Γ・76・=机械与电子Ι2002;2Γ。

基于VBA的AUTOCAD二次开发及应用实例

基于VBA的AUTOCAD二次开发及应用实例

基于VBA的AutoCAD二次开发及应用实例时间:2011-10-0318:25:09来源:作者:1引言AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制图人员的绘图习惯,能够非常轻松地绘制出带有平面视图和三维渲染效果的工程图纸,是绘图人员的一个理想工具。

随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。

因而AutoCAD 不可能完全满足每个用户的具体而特定的要求。

设计人员希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。

AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。

VBA最早是建立在0ffice97中的标准宏语言,由于它在开发方面的易用性及具有的强大功能,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。

AutOdeSk公司自从Aut0CADRl4.0l版开始,内置了VBA开发工具。

新一代程序开发工具ViSual BaSic,不仅继承了面向对象方法的特性,同时具备可视化程序语言及程序产生器的概念。

VBA(visual Basic For Apphcation)是AutoCAD R12以后推出的一种新的编程环境,提供了以Visual Basic为基础的面向对象的开发特征及程序接口,能真正快速地访问AutOCAD图形数据库,能明显提高软件开发和维护的效率。

2VBA的技术特性2.1VBA开发AUTOCAD的技术特点VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案。

VBA被集成到AutoCAD中,VBA和AutoCAD中强大的Activex自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。

关于VB对AutoCAD二次开发学习笔记

关于VB对AutoCAD二次开发学习笔记

关于VB对AutoCAD二次开发学习笔记□By OYLS基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。

在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。

一、获取VB对AutoCAD的控制权:先定义变量acadApp,acadDoc:Public acadApp As AcadApplicationPublic acadDoc As AcadDocumentFunction boot_CAD() As BooleanOn Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err ThenMsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统"boot_CAD = FalseBtOK = FalseExit FunctionEnd IfEnd IfSet acadDoc = acadApp.ActiveDocumentacadApp.Visible = Trueboot_CAD = TrueEnd Function需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。

不然,以后的各种对CAD的操作将无法得以实现。

二、基本绘图思路:先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。

对象的属性特点我们可以事先通过CAD帮助文件查找得出。

VB对AutoCAD二次开发案例-编辑版-创建菜单栏

VB对AutoCAD二次开发案例-编辑版-创建菜单栏

VBA对AutoCAD二次开发开发背景因为公司电脑的layout设计部门人员不能将元器件转换为3D,故而每次需要结构工程师自行将元器件的2D图处理后导入三位软件进行3D绘制,在处理二维工程图时,出现很多小圆弧,小圆弧处于不同的层,依次删除小圆弧很繁琐造成工作效率低下。

故而通过创建一个菜单栏,将删除小圆弧的程序全部放入一个菜单之下,实现自动化操作操作的流程如下:连接AutoCAD→获取AutoCAD的菜单组链接→创建菜单→创建菜单项→将菜单显示到AutoCAD中→编辑圆弧删除程序。

详尽代码一、在VB中连接AutoCAD的。

在VBA中则可以跳过此步Application 对象是VB 应用程序与AutoCAD 之间链接的关键。

将Application 对象与AutoCAD 链接是为AutoCAD 二次开发应用程序的第一步工作。

当AutoCAD 运行时,GetObject 函数返回Application 对象,否则发生一个错误,这时Err对象的基础属性就会被赋值为一个非零值,可以利用一个错误陷井进行处理。

如果AutoCAD 没有运行,可以使用CreateObject 函数强迫AutoCAD 启动。

Dim myapp As ObjectOn Error Resume Nextmyapp.Visible = TrueIf Err <> 0 Thenmyapp.Visible = True End If注意: GetObject(, "AutoCAD.Application")里面的那个逗号的来源请仔细阅读VB 程序帮助里面的解释二、创建菜单(在VBA 环境下)代码如下: Public Sub menu()Dim my_菜单组 As AcadMenuGroupSet my_菜单组 = ThisDrawing.Application.MenuGroups.Item(0) Dim my_弹出式菜单 As AcadPopupMenuSet my_弹出式菜单 = my_菜单组.Menus.Add("乾康工具集")Dim my_弹出式菜单项 As AcadPopupMenuItem Dim openMacro As StringSet my_弹出式菜单项 = my_弹出式菜单.AddMenuItem(0, "删除圆及圆弧", "-VBARUN DEL_ACR + chr(13) ")my_菜单组.Menus.InsertMenuInMenuBar "乾康工具集", 6创建一个名为乾康工具集的新菜单End Sub-VBARUN DEL_ACR + chr(13) 在宏名称之前添加 -VBARUN 是因为从AutoCAD 工具栏或菜 单运行 VBA 宏。

VB对AutoCAD的二次开

VB对AutoCAD的二次开

实验VB对AutoCAD的二次开发一、实验目的了解CAD二次开发的几种形式,掌握VB对AutoCAD进行二次开发,实现参数化绘图的技巧。

二、实验要求1、了解AutoCAD二次开发的基本原理2、掌握运用VB开发界面的方法3、掌握运用VB调用AutoCAD库函数,完成相关功能的方法三、实验步骤1、建立AutoCAD和VB之间的连接启动VB,建立“标准exe”程序,选择菜单“工程”——“引用”,选择“AutoCAD 2004 Type Library”。

2、创建界面3、程序编码1)定义全局变量Dim AcadApp As AcadApplication 'AutoCAD应用程序变量Dim AcadDoc As AcadDocument 'AutoCAD文档变量2)引用AutoCAD应用程序Private Sub Command1_Click()On Error Resume NextIf Err ThenErr.ClearEnd IfSet AcadApp = New AcadApplicationIf Err ThenMsgBox Err.DescriptionExit SubEnd If'设置AutoCAD应用程序参数AcadApp.WindowTop = 0AcadApp.WindowLeft = 400AcadApp.Width = 600AcadApp.Height = 800AcadApp.Visible = TrueAcadApp.Documents.AddSet AcadDoc = AcadApp.ActiveDocumentAcadDoc.WindowState = acMaxCommand4.Enabled = TrueEnd Sub3)参数化绘图Private Sub Command4_Click()'设置新图层Dim layer1 As AcadLayerDim layer2 As AcadLayerSet layer0 = yers.Item(0)Set layer1 = yers.Add("粗实线层")Set layer2 = yers.Add("中心线层")layer1.Lineweight = acLnWt080 '粗实线的线宽layer1.Color = acWhitelayer2.Color = acRedAcadDoc.Linetypes.Load "centerx2", "acad.lin"layer2.Linetype = "centerx2"'输入原始参数Dim Center(0 To 2) As DoubleDim Vert(0 To 7) As DoubleDim L04 As DoubleDim L01 As DoubleDim b As DoubleDim r As Doubleb = Val(Text2.Text): r = Val(Text1.Text) / 2: L01 = r - Val(Text3.Text) L04 = Sqr(r * r - (b / 2) ^ 2)Center(0) = 100: Center(1) = 100: Center(2) = 0'画中心线AcadDoc.ActiveLayer = layer2Dim line1 As AcadLineDim line2 As AcadLine'定义两直线的端点Dim pl1s(0 To 2) As DoubleDim pl1e(0 To 2) As DoubleDim pl2s(0 To 2) As DoubleDim pl2e(0 To 2) As Doublepl1s(0) = Center(0) - r - 1.5: pl1s(1) = Center(1): pl1s(2) = 0pl1e(0) = Center(0) + r + 1.5: pl1e(1) = Center(1): pl1e(2) = 0pl2s(0) = Center(0): pl2s(1) = Center(1) + r + 1.5: pl2s(2) = 0pl2e(0) = Center(0): pl2e(1) = Center(1) - r - 1.5: pl2e(2) = 0Set line1 = AcadDoc.ModelSpace.AddLine(pl1s, pl1e)Set line2 = AcadDoc.ModelSpace.AddLine(pl2s, pl2e)'创建辅助的优化多段线AcadDoc.ActiveLayer = layer1'定义键槽直线端点Dim p1(0 To 2) As DoubleDim p2(0 To 2) As DoubleDim p3(0 To 2) As DoubleDim p4(0 To 2) As DoubleDim angVal As DoubleDim pLine1 As AcadLineDim pLine2 As AcadLineDim pLine3 As AcadLineDim pArc As AcadArcDim pi As Double '定义圆周率p1(0) = Center(0) - b / 2: p1(1) = Center(1) + L01: p1(2) = 0p2(0) = p1(0): p2(1) = Center(1) + L04: p2(2) = 0p3(0) = p1(0) + b: p3(1) = p1(1): p3(2) = 0p4(0) = p1(0) + b: p4(1) = p2(1): p4(2) = 0Set pLine1 = AcadDoc.ModelSpace.AddLine(p1, p2)Set pLine2 = AcadDoc.ModelSpace.AddLine(p1, p3)Set pLine3 = AcadDoc.ModelSpace.AddLine(p3, p4)angVal = Atn((b / 2) / L04)pi = 3.1415Set pArc = AcadDoc.ModelSpace.AddArc(Center, r, pi / 2 + angVal, 2 * pi + pi / 2 - angVal)AcadApp.ZoomExtentsAcadDoc.ActiveLayer = layer0End Sub'查询Private Sub CmdSeek_Click() Dim aVal As Integer 'A值 aVal = CInt(Text1.Text) Text2.Text = GetVal(aVal)End Sub。

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有多么友善。

1-AutoCAD VBA二次开发

1-AutoCAD VBA二次开发
Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double Dim LineObj as AcadLine startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0 endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0 Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
AutoCAD VBA的语法
控制语句(判断语句、循环语句……) if\else\end if for…next 函数(function) 过程(sub) 参数传递 地址传递(byref) 值传递(byval)
AutoCAD宏的定制与调用
VBA工程的建立与加载 Load、unload、embed 宏 run、edit、run into
AutoCAD二次开发
Visual Basic for Application 二次开发技术
VBA简介
Visual Basic for Applications(VBA)是一 种Visual Basic的一种宏语言,主要能用来扩 展Windows的应用程式功能。 VBA是VB语言的子集,是寄生于VB和应用程 序的版本 AutoCAD的VBA开发以VB 6.0的语法为基础
VBA的代码示例
7、数据单位转换
jd = ThisDrawing.Utility.AngleToReal(30, 0) ’30度转换为弧度
பைடு நூலகம்
VBA的代码示例
8、用户交互
Dim retVal As String retVal = ThisDrawing.Utility.GetString(1, vbCrLf & "Enter your name: ") Dim startPnt As Variant, endPnt As Variant Dim prompt1 As String, prompt2 As String prompt1 = vbCrLf & "Enter the start point of the line: " prompt2 = vbCrLf & "Enter the end point of the line: " startPnt = ThisDrawing.Utility.GetPoint(, prompt1) endPnt = ThisDrawing.Utility.GetPoint(startPnt, prompt2) ThisDrawing.ModelSpace.AddLine startPnt, endPnt ThisDrawing.Application.ZoomAll

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(\。

基于VBA的AutoCAD二次开发及其应用(1)

基于VBA的AutoCAD二次开发及其应用(1)
所 编 制 的 计 算 任 意 闭 合 图 形 面 积 的 宏 程 序以文件名 “calculatearea.dvb”保存在 AutoCAD2004 的 安 装 目 录 下 。
具体代码如下: Sub CalculateDefinedArea( ) Dim n As Long n=ThisDrawing.ModelSpace.Count Dim pt As Variant pt=ThisDrawing.Utility.GetPoin(t , "assain the inword point") ThisDrawing.SendCommand "hpbound" & vbCr & 0 & vbCr ThisDrawing.SendCommand "- boundary" & vbCr & p(t 0) & ", " & pt ( 1) & vbCr & vbCr Dim objpoly As AcadRegion If ThisDrawing.ModelSpace.Count > n Then Set objpoly=ThisDrawing.ModelSpace.Item( ThisDrawing.ModelSpace. Count- 1) MsgBox "所选图形的面积为: " & objpoly.Area objpoly.Delete Else MsgBox "没有找到封闭的图形! " End If End Sub 4 VBA 程序的发布
在保存好菜单文件后, 用户可以通过选择“工具”“| 自 定义”“| 菜单”来加载用户自定义的菜单。本文所加载的菜 单如图 1 所示。
首先点击该菜单, 然后在所要计算的任意闭合图形
的内部单击鼠标即可弹出如图 2 所示显示面积的对话
框。图 2 是计算的长半轴为 10, 短半轴为 5 的椭圆的面

基于VB的AutoCAD二次开发

基于VB的AutoCAD二次开发

基于VB的AutoCAD二次开发摘要:Visual Basic是当今世界上最流行的编程语言之一,CAD是目前使用最广泛的绘图软件,本文将在测绘领域,探讨基于Visual Basic对AutoCAD进行二次开发,对外业获取的数据内业进行自动绘图,提高工作效率。

关键词:Visual basic;AutoCAD;ActiveX;CAD二次开发1.引言在使用全站仪的外业测图,如果我们对采集的数据赋予遵循特定规则的简码,用成图软件导入外业数据,然后利用二次开发的软件完成自动绘图,更能提高作业效率。

本文将基于Visual Basic对AutoCAD二次开发一个自动绘图的程序。

2.需求分析需求分析:该程序可以实现“外业测图,内业自动绘图”的功能。

具体是通过导出外业数据,对数据进行读取、分析识别,然后实现在AutoCAD画布上展点,自动绘图。

3.程序的设计程序的设计包括界面和功能设计和数据格式的设计。

3.1界面和功能设计程序Frmbase窗体由一个菜单栏、一个状态栏、一个公共对话框组成。

该程序主窗体frmbase设计如图3.1所示。

图3.1 frmbase窗体设计效果图菜单栏“文件”菜单下有创建新图形文件、打开、保存图形文件、导入DXF文件、导出DXF和BMP文件、关闭图形文件和退出程序这些子菜单。

如图3.2所示。

图3.2 “文件”菜单及其子菜单菜单栏“绘图”菜单下有展点和自动绘图子菜单,而展点可以通过两种数据文件来读取数据,所以展点子菜单下还有两个子菜单。

如图3.3所示。

图3.3 “绘图”菜单及其子菜单3.2数据格式的设计数据格式的设计:文件后缀为*.dat或者*.xls。

第一列是点名,第二列是简码,第三列是AutoCAD中的Y坐标,也是测量坐标系中的X坐标,第四列是测量坐标系中的Y坐标,第五列是高程。

编码规则:以地物名字的中文拼音首字母进行命名,例如井盖的简码为“JG”,平房的简码为“pf”。

图上的地物都是由点状地物、线状地物和面状地物这三种的抽象。

基于VBA的AutoCAD二次开发

基于VBA的AutoCAD二次开发

定 义 菜单 了 ,通过 点击 菜单 运行a da es d ly r 来
实 现具 体程 序 功能 。
D m S S b . be t 定 义 二 级 i u u Me uAs jc n O
菜 单 D m h n tig 定义 宏命 令 i o g Sr As n
h ng o

S b n1 d Me utm 1 ” u Me tA d n l ,二级 菜 单名 A . e



h ng o


由 于S bman) A tC D 动 时 自动 u i( uo A 启 是 运 行 的 启 动 入 口 ,因 此 可 以用 来 加 载 菜 单 和工 具 栏 , 以及 其 他 必 要 在 启 动 时运 行 的 程 序 都 可 以放 在 此 代 码 段 。 比如 图 层 、线 型 、字体 等等 。
基于VB A的Auo AD ̄ 次开 发 tC _ .
饶玉田 莫 华娟 颜 利军
( 船 国 际技 术 中心 ) 广
摘 要 :本 文 主要介 绍 如何 对A t C D 行二 次开 发 ,并针 对广 船 国际实 际设 计应 uoA进 用举 例 介绍 。 关键词 :A t C DV A 二次 开发 实 际应用 u 0 A B
( e u S : TART ( ( O d f n :S UP ) C mma d n
集 成 开 发 环 境 的 语 言 。 由 于 A tC D uo A 2 1 或 以上 版本Auo A 官方 已经不 再 绑 00 tC D 定 安装VB A,因此需 要 安装 独立 的V A 言 B 语 环 境 ,否 则 系 统 自带 , 不 需 要 单 独 安 装

AUTOCAD利用VBA进行二次开发

AUTOCAD利用VBA进行二次开发

利用VBA对AUTOCAD进行二次开发实例——输入螺栓参数自动生成图形①打开AUTOCAD软件②依次点击工具l菜单,选择,Macro(A),click Visual Basic Editor(B)③打开 Microsoft Visual Basic Editor 窗口.and “公共的额”,之后点击“确定”,如下图所示:.⑤点击.点击:Command:输入螺钉长度完成绘制VBA原程序Public Sub liweiwei()Set acadapp = CreateObject("autocad.application") Dim lineObj As AcadLineDim pt1 As VariantDim d As DoubleDim l As DoubleDim pt2(0 To 2) As DoubleDim pt3(0 To 2) As DoubleDim pt4(0 To 2) As DoubleDim pt5(0 To 2) As DoubleDim pt6(0 To 2) As DoubleDim pt7(0 To 2) As DoubleDim pt8(0 To 2) As DoubleDim pt9(0 To 2) As DoubleDim pt10(0 To 2) As DoubleDim pt11(0 To 2) As DoubleDim pt12(0 To 2) As DoubleDim pt13(0 To 2) As DoubleDim pt14(0 To 2) As DoubleDim pt15(0 To 2) As DoubleDim pt16(0 To 2) As DoubleDim pt17(0 To 2) As DoubleDim pt18(0 To 2) As DoubleDim pt19(0 To 2) As DoubleDim pt20(0 To 2) As Doublept1 = ThisDrawing.Utility.GetPoint(, "输入第一角点")d = Val(InputBox("所绘制螺钉的直径:”) )l = Val(InputBox("所绘制螺钉的长度:"))pt2(0) = pt1(0) + 0.4 * d: pt2(1) = pt1(1): pt2(2) = pt1(2)pt3(0) = pt1(0) + 0.4 * d: pt3(1) = pt1(1) + 1.5 * d: pt3(2) = pt1(2)pt4(0) = pt1(0): pt4(1) = pt1(1) + 1.5 * d: pt4(2) = pt1(2)pt5(0) = pt1(0): pt5(1) = pt1(1) + 0.95 * d: pt5(2) = pt1(2)pt6(0) = pt1(0) + 0.2 * d: pt6(1) = pt1(1) + 0.95 * d: pt6(2) = pt1(2)pt7(0) = pt1(0) + 0.2 * d: pt7(1) = pt1(1) + 0.55 * d: pt7(2) = pt1(2)pt8(0) = pt1(0): pt8(1) = pt1(1) + 0.55 * d: pt8(2) = pt1(2)pt9(0) = pt1(0) + 0.4 * d: pt9(1) = pt1(1) + 1.25 * d: pt9(2) = pt1(2)pt10(0) = pt1(0) + 0.4 * d + l - 1: pt10(1) = pt1(1) + 1.25 * d: pt10(2) = pt1(2) pt11(0) = pt1(0) + 0.4 * d + l - 1: pt11(1) = pt1(1) + 0.25 * d: pt11(2) = pt1(2) pt12(0) = pt1(0) + 0.4 * d: pt12(1) = pt1(1) + 0.25 * d: pt12(2) = pt1(2)pt13(0) = pt1(0) + 0.4 * d: pt13(1) = pt1(1) + 1.25 * d - 1: pt13(2) = pt1(2)pt14(0) = pt1(0) + 0.4 * d + l: pt14(1) = pt1(1) + 1.25 * d - 1: pt14(2) = pt1(2) pt15(0) = pt1(0) + 0.4 * d + l: pt15(1) = pt1(1) + 0.25 * d + 1: pt15(2) = pt1(2) pt16(0) = pt1(0) + 0.4 * d: pt16(1) = pt1(1) + 0.25 * d + 1: pt16(2) = pt1(2)pt17(0) = pt1(0) + 0.4 * d +1:pt17(1) = pt1(1) + 1.25 * d: pt17(2) = pt1(2)pt18(0) = pt1(0) + 0.4 * d + 1 :pt18(1) = pt1(1) + 0.25 * d: pt18(2) = pt1(2)pt19(0) = pt1(0) - 5: pt19(1) = pt1(1) + 0.75 * d: pt19(2) = pt1(2)pt20(0) = pt1(0) + 0.4 * d + l + 5: pt20(1) = pt1(1) + 0.75 * d: pt20(2) = pt1(2) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt1, pt2)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt2, pt3)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt3, pt4)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt4, pt5)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt5, pt6)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt6, pt7)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt7, pt8)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt8, pt1)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt9, pt10)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt10, pt11)Set lineObj = ThisDrawing.ModelSpace.AddLine(pt11, pt12) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt13, pt14) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt14, pt15) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt15, pt16) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt10, pt14) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt11, pt15) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt17, pt18) Set lineObj = ThisDrawing.ModelSpace.AddLine(pt19, pt20)End Sub。

AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用

AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA进行二次开发在工程测量中的应用

AutoCAD中用VBA进行二次开发论文:AutoCAD中用VBA 进行二次开发在工程测量中的应用摘要:用VBA在AutoCAD平台上进行二次开发,创建非常好的应用程序,让那些绘制重复的测量绘图工作能自动执行,帮助我们自动地高效率地完成绘图任务。

笔者应用生产实用的二个例题来说明AutoCAD中用VBA进行二次开发在工程测量中的应用。

中图分类号:TP391.72文献标识码:A文章编号:1007-9416(2011)05-0119-021、AutoCAD与VBAAutoCAD是由Autodesk公司开发的工程绘图软件,是工程制图人员常用的绘图软件之一,功能十分强大,在测量工程领域广泛应用,AutoCAD除了具有强大的绘图功能,开放式体系结构也允许第三方开发者为它编写应用程序,显著增加了绘图工作效率。

VBA是Visual Basic for Applications的英文缩写,是由Microsoft创建的,它是一个功能强大的定制程序开发工具,用来自动执行任务的一个编程环境。

VBA为AutoCAD的二次开发提供类似Visual Basic(VB)语言所拥有的功能,引入了对象的程序设计环境,为开发者提供了用来创建图形用户界面(GUI)的可拖拉工具和用来与AutoCAD对象交互的编程语言。

工程技术人员绘制图形时,也许会重复地一遍遍地执行着相同的绘图任务。

如在地下管线测量任务时,一条街道上存在着具有各种不同属性的管线(通讯管线、军用光缆、上水管线、污水管线等),测量人员要用全站仪将成千上万的各种管线的特征点坐标测量出来,在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。

用手工在AutoCAD上连接这些特征点绘制成管线图,那是一项乏味的、重复的、极低效率的工作,而且会由于绘图人员的工作疲劳和疏忽产生错误。

如果我们的工程技术人员可以使用VBA在AutoCAD平台上进行二次开发,根据管线绘图任务定制应用程序,就可以帮助我们自动高效率地完成管线绘图任务。

VBA与AutoCAD的二次开发

VBA与AutoCAD的二次开发

2007 NO.15SCIENCE & TECHNOLOGY INFORMATIONI T 技 术1 AutoCAD与 VBAAutoCAD是由Autodesk公司开发的工程绘图软件,是CAD市场的主流产品,功能十分强大,它广泛应用于建筑、机械、测量等工程领域,是工程制图人员常用的绘图软件之一。

AutoCAD除了具有强大的绘图功能,它的开放式体系结构也允许第三方开发者为它编写应用程序,这又显著增加了它的工作效率,并使其市场占用率首屈一指,成为图形绘制的世界标准。

在AutoCAD 14版本中,Autodesk公司首次获得Microsoft公司的许可,在AutoCAD R14中使用VBA(即Visual Basic forApplication的简称),VBA是由Microsoft创建的,用来自动执行任务的一个编程环境。

它引入了对象的程序设计环境,为用户提供类似Visual Basic(VB)语言所拥有的功能,提供了一些用来创建图形用户界面(GUI)的可拖拉工具和用来与AutoCAD对象交互的编程语言。

2 使用AutoCAD VBA进行二次开发的好处工程技术人员绘制图形时,也许会一次一次重复地执行着相同的任务。

如在进行地下管线的综合普查的任务时,一条街道上存在着具有各种不同属性的管线(电力管线、燃气管线、下水管线、电信管线等),测量人员要将算以万计的管线特征点的坐标测量出来,并在AutoCAD上将这些具有相同属性的管线点连接起来绘制成综合管线图。

如果我们用手工绘制管线图,那不仅仅是一项重复的、乏味的、极低效率的工作,还会极易由于绘图人员的工作疲劳和疏忽产生错误。

此时,我们为什么不考虑让这些令人讨厌的工作能自动执行呢?幸好我们可以使用VBA语言在AutoCAD平台上进行二次开发,创建非常好的定制应用程序,帮助我们自动地高效率地完成绘图任务。

那么为什么要使用VBA呢?最简单的原因就是,VBA要比Lisp、C/C++等易学。

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)定义变量,通常定义为全局变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ke wo d VB y r ̄ A;AUT AD ; e o d d v lp n d lr OC s c n e eo me tmo u a

引言
At A uo D提 供的开放 式体系结构允许用户 和开发 者采用 C
tC D能容易地与其他 Widw 下的应用软件交互 。V A 对 oA nos B
Ab t a t h s p p r i to u e h TO s r c :T i a e n rd c s t e AU CAD s f F A p o r m h h r ce it f d v lp n f n o o t e VB r g a t e c a a trsi o e eo me to,a d t wa c d a b l a n e a l o b i f x l i h i r c s n h A p o r mmig p i t h s p p r e p u d h r w o t s a x mp e t r l e pa n t e man p o e s a d t e VB r g a ey n on s .T i a e x o n s t e s c n e e o me ti TOC d lr t e p a t a a u ft e sa d r . e o d d v l p n n AU AD mo u a h rc i lv l e o tn ad c h
40 7 ) 3 04 ( 中国地质大学 机 电学院 , 湖北 武汉

要 : uo A A t D提供 的开放 式体 系结构允许用 户和开发者采用高级 编程语言对其进行 扩充和修 改, C 能最大限度
地 满足 用户的特殊要求 , 更方便 、 范、 更规 更专业的实现设 计和绘 图 中的应用。文章介绍 了 A T C D软件 中 V A的 UOA B 程序 开发 的特 点 , 以绘制螺栓为例来 简要说 明 V A编程 的主要过程和要 点 , 并 B 阐述 了二次开发在 A T C D标准件 UOA
和绘 图中的应用 。V A最早是建立在 Of c7中的标 准宏 语 B fc9 i
种专业 用户程序设计语言 。
V A 中不 能像 V IP那 样 几 乎随 心所 欲 地使 用 A t— B LS uo
A 只能象 脚本 文件 的模式 。 以字 串方 式 向 A t A uC D o 言, 由于它在开发方面的易用性及具有 的强大 功能 , 多软 件 C D命令 , 许 命 令行发送 一串响应 ,这 个字 串的 内容也只好在 自己的程 序 开发商都将其嵌人 自己的应用 程序中 ,作为一种开发工具 提 供给用户使用 。
话框设计能 力 比 D L好得多 ,多 图档 环境下 的应 用程序也 C
比 V IP提供 了更 多的支持 。由于它 是使用 A t e LS cvX与 A . i u
t A o D交互 . C 程序设计 比较复 杂。 会成为与 V IP并列的另一 LS
高级 编程语 言对 其进行 扩充和修改 , 即二 次开发 , 能最 大限度 地满 足用户 的特殊要求 。 更方便 、 更规 范 、 专业 的实现设 计 更
中生成 和进行 数据转 换 。VB A最大 的缺憾是 不能充 分利 用
uo D强大 的数据库 , C 而只能依靠 自身 编程 实现 。V A 另 B 新一代程序 开发工具 Vsa B s , i l ai 不仅继承 了面 向对象 A t A u c 个 问题是不能 编译 , 源程序始终 以相 当容易接 近的方式 , 暴 方法的特性 . 同时具备 可视化 程序语言及程序产生器 的概念 。 露在最终用 户面前 , 用户误操作 , 易被 而使曾经正常 的应用程 V A f sa B s o pl ai ) A tC D R 2以 后 推 B Vi l ai F rA pi t n是 uo A 1 u c c o

出的一种新 的编程环境 。 提供 了以 V sa B s 为基础的面 向 i l ai u c
序 出错 , 甚至崩溃。
付 象的开发特性及程 宇接 口 , 能真正快速 地访 问 A tC D图 u A o
d v lp e t e eo m n
WAN G n , Lo g HAN n , Wa gZHENG h - u Z ih a
( ol eo eh n sa dEet n nomao ,hn n e i esi csWu a ,Hue 3 04 hn ) C l g f M c ai n l r i I r t n C ia U i r t o G oce e , h n e c co c f i v sy f n b i 0 7 ,C ia 4
模 块 化 中的 实 用价值 。 关 键 词 : B A T C D; 次 开发 V A; U O A 二
中图分类号 :P 1.2 T 31 5
文献标识码 : A
文章编号 :0 7 8 2 (0 1 0— 0 5 0 10 — 30 2 1 )5 0 5 — 2
Ba e n t s d o he VBA r g a p o r mm i g AUTOCAD o t r o e o d r n s fwa e f r s c n a y
第 3 8卷 第 5期 ・ 术 学
Vo No 5 l38




2011 年 5 月
M ay 2011
HUNAN AGRl CUL TURAL MACHI NER Y
基于 VB 编程 的 A OC A UT AD 软 件二次开发举例
王 龙, 韩 旺 , 志 华 郑
相关文档
最新文档