Autocad-VBA二次开发简易教程

合集下载

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定义的一段代码为函数,过程和函数都可实现一定的功能或者操作。

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

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

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

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,编写代码,测试和调试,以及部署和使用,我们可以成功实现自定义功能和特定需求,提高工作效率。

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

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Γ。

autoCAD二次开发第三讲 控件操作

autoCAD二次开发第三讲 控件操作

KeyAscii = 0'
End Select
3.3、循环语句
VBA提供两种不同风格的循环语句: • For … Next 语句 • Do … Loop 语句 循环结构适合处理过程相同、数据相关,但具 体值不同的问题。
4、循环语句一 For循环
For循环的一般格式:
For 循环变量=初值 To 终值 [Step 步长]
现。反之,则不尽然。
循环的嵌套
For循环和Do循环都可以嵌套,且可以互相嵌套。但必 须满足以下条件: • • 外循环必须完全包含内循环,不能交叉。 外循环变量与内循环变量不能同名。
例: i=1 : j=1 : s=0 : n=0 For i=1 to 3 For j=1 to 4 s= i *j : n=n+s Next Next
2-Vertical垂直滚动条、3-Both水平和垂直滚动条。
一、基本控件操作
(5)Locked: 是否可被编辑属性,False,表示为可编辑。
(6)PassWordChar属性
设置PasswordChar属性为了掩盖文本框中输入的字符。
该属性的设置只有在MultiLine设为 False才有效
一、基本控件操作
形式1:
Do [While | Until <条件> ] [语句块] [Exit Do] [语句块] Loop
形式2:
Do
[语句块] [Exit Do] [语句块] Loop [While |Until <条件>]
例:以下循环的执行次数是 _____。 k=0 do while k<=2 k=k+1 loop 例:以下循环的执行次数是 _____。 k=0 do until k<=2 k=k+1 loop

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

第三章 创建和编辑二维图形对象 一、VBA
Hale Waihona Puke 3.1 直线 Public Sub MacroDemo() Dim doc As AcadDocument Set doc = ThisDrawing.Application.Documents.Add() MsgBox "Hello,Welcome to Autocad VBA" Set doc = ThisDrawing.Application.Documents.Add() Dim ptstart(0 To 2) As Double Dim ptend(0 To 2) As Double ptstart(0) = 1: ptstart(1) = 1: ptstart(2) = 0 ptend(0) = 100: ptend(1) = 100: ptend(2) = 0 ThisDrawing.ModelSpace.AddLine ptstart, ptend End Sub
数据库程序
• Private Sub CommandButton1_Click() • Dim cn As ADODB.Connection • Dim Constr As String • Set cn = New ADODB.Connection • • cn.CursorLocation = adUseClient • cn.Provider = "Microdoft.Jet.OLEDB.4.0;" • Constr = "Data source=c:\db1.mdb" • • cn.Open • End Sub
3.2 圆 Dim ptCen(0 To 2) As Double ptCen(0) = 50: ptCen(1) = 50: ptCen(2) = 0 Set acaddoc = acadapp.ActiveDocument.ModelSpace.Ad dCircle(ptCen, 32)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

第二课编程基础本课主要任务是对上一课的例程进行详细分析下面是源码: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先看第一行和最后一行:Sub C100()……End SubC100是宏的名称,也叫过程名称,当用户执行C100时程序将运行sub和end sub之间的所有指令。

第二行:Dim cc(0 To 2) As Double '声明坐标变量后半段“'声明坐标变量”自动变为绿色字体,它是代码语句的注释,它不会影响程序运行,它的作用是告诉阅读者程序员的想法。

对于简单的程序,一般不需要写注释,如果要编写非常复杂的程序,最好要多加注释,越详细越好,对于程序员来说,这是一个好习惯。

电脑真正编译执行的是这条语句:Dim cc(0 To 2) As Double它的作用就是声明变量。

Dim是一条语句,可以理解为计算机指令。

它的语法:Dim变量名As 数据类型本例中变量名为CC,而括号中的0 to 2声明这个CC是一个数组,这个数组有三个元素:CC(0)、CC(1)、CC(2),如果改为CC(1 to 3),则三个元素是CC(1)、CC(2)、CC(3),有了这个数组,就可以把坐标数值放到这个变量之中。

Double是数据类型中的一种。

ACAD中一般需要定义坐标时就用这个数据类型。

在ACAD中数据类型的有很多,下面两个是比较常用的数据类型,初学者要有所理解。

Long(长整型),其范围从-2,147,483,648 到2,147,483,647。

Variant 它是那些没被显式声明为其他类型变量的数据类型,可以理解为一种通用的数据类型,这是最常用的。

下面三条语句cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0它们的作用是给CC变量的每一个元素赋,值其顺序是X、Y、Z坐标。

For i = 1 To 1000 Step 10 '开始循环……Next i '结束循环这两条语句的作用是循环运行指令,每循环一次,i值要增加10,当i加到1000时,结束循环。

i也是一个变量,虽然没有声明i变量,程序还是认可的,VB不是C语言,每用一个变量都要声明,不声明就会报错。

简单是简单了,这样做也有坏处,如果不小心打错了一个字母,程序不会报错,如果程序很长,那就会出现一些意想不到的错误。

step后面的数值就是每次循环时增加的数值,step后也可以用负值。

例如:For i =1000 To 1 Step -10很多情况下,后面可以不加step 10如:For i=1 to 100,它的作用是每循环一次i值就增加1Next i语句必须出现在需要结束循环的位置,不然程序没法运行。

下面看画圆命令:Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10)Call语句的作用是调用其他过程或者方法。

ThisDrawing.ModelSpace是指当前CAD文档的模型空间AddCircle是画圆方法Addcicle方法需要两个参数:圆心和半径CC就是圆心坐标,i*10就是圆的半径,本例中,这些圆的半径分别是10、110、210、310……本课到此结束,下面请完成一道思考题:1.以(4,2)为圆心,画5个同心圆,其半径为1-5回复| 推荐给朋友举报2楼2006-10-21 10:21回复2楼flapsesame 老马next--第三课编程基础二有一位叫自然9172的网友提出了下面的问题:绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入本课将讲解这个问题。

为了简化程序,这里用多条直线来代替多段线。

以下是源码:Sub myl()Dim p1 As Variant '申明端点坐标Dim p2 As Variantp1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值p1(2) = z '将Z坐标值赋予点坐标中On Error GoTo Err_Control '出错陷井Do '开始循环p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值p2(2) = z '将Z坐标值赋予点坐标中Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线p1 = p2 '将第二点的端点保存为下一条直线的第一个端点坐标LoopErr_Control:End Sub先谈一下本程序的设计思路:1、获取第一点坐标2、输入第一点Z坐标3、获取第二点坐标4、输入第二点Z坐标5、以第一、二点为端点,画直线6、下一条线的第一点=这条线的第二点7、回到第3步进行循环如果用户没有输入坐标或Z值,则程序结束。

首先看以下两条语句:p1 = ThisDrawing.Utility.GetPoint(, "输入点:") ‘获取点坐标……p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标这两条语句的作用是由用户输入点用鼠标选取点坐标,并把坐标值赋给p1、p2两个变量。

ThisDrawing.Utility.GetPoint()在ACAD中这是最常用的方法之一,它需要两个参数,在逗号前面的参数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,后一个端点跟随鼠标移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须保留。

逗号后面使用一串字符,程序在命令行显示这串字符,这不难理解。

VbCr通常代表一个回车符,而在这个语句中,它的作用是在命令行不显示“命令:”&的作用是连接字符。

举例:“爱我中华”&”抵制日货”&”从我做起”z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值由用户输入一个实数On Error GoTo Err_Control '出错陷井……Err_Control:On Error是出错陷井语句,在程序出错时将执行On Error 后面的语句GoTo Err_contorl 是程序跳转语句,它的作用是在程序中寻找Err_control:,并执行这一行后面的语句,本例中Err_Control:后就是结束宏,所以只要出现错误,程序中止。

Do '开始循环……Loop ‘结束循环这个循环就历害了,它会无休止地进行循环,好在本例中已经有了一个出错陷井,当用户输入回车时,由于程序没有得到点或坐标,程序出错,跳出循环,中止程序。

如果要人为控制跳出循环,可以在代码中用Exit Do语句跳出循环。

在For 变量和Next 变量之间如果要跳出循环,那么只要在循环体内加一个Exit for 就可以跳出循环,关于这方面的例程以后会讲到。

Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线画直线方法也是很常用的,它的两个参数是点坐标变量本课到此结束,请做思考题:连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出回复3楼2006-10-21 10:22回复3楼flapsesame 老马next--第四课程序的调试和保存人非圣贤,孰能无过,初学者在编写复杂程序时往往会出现一些意想不到的错误,所以程序的调试显得尤为重要,随着学习的深入,以后我们需要经常进行程序调试。

事实上,对于那些资深程序员来说,调试程序也是一项不可或缺的重要工作。

相关文档
最新文档