Autocad二次开发教程

上传人:lcm****801 文档编号:45557231 上传时间:2018-06-17 格式:DOCX 页数:21 大小:44.42KB
返回 下载 相关 举报
Autocad二次开发教程_第1页
第1页 / 共21页
Autocad二次开发教程_第2页
第2页 / 共21页
Autocad二次开发教程_第3页
第3页 / 共21页
Autocad二次开发教程_第4页
第4页 / 共21页
Autocad二次开发教程_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Autocad二次开发教程》由会员分享,可在线阅读,更多相关《Autocad二次开发教程(21页珍藏版)》请在金锄头文库上搜索。

1、第一课:入门第一课:入门1.为什么要写这个教程市面上 ACAD VBA 的书不多,它的帮助是英文版的,很多人看不懂。其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。2.什么是 Autocad VBA?VBA 是 Visual Basic for Applications 的英文缩写,它是一个功能强大的开发工具,学好 VBA 可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用 ACAD 命令不可能完成的,只要学好 VBA 就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。3、VBA 有多难?相信大家都知道 Basic 是的含义。应该承认,我的水平

2、还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。4、怎样学习 VBA?介绍大家一个学习公式:信心+恒心=开心。仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。本教程将陆续发布在 CAD 世界论坛上,您不需要付费就可以学习。本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键 Alt+F8,出现宏窗口第三步:在宏名称中填写 C100

3、,点“创建”、“确定”第四步:在 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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。第二课第二课 编程基础编程基础

4、本课主要任务是对上一课的例程进行详细分析下面是源码: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

5、 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),如果改

6、为 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

7、变量的每一个元素赋,值其顺序是 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 很多

8、情况下,后面可以不加 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本课到此结束,

9、下面请完成一道思考题:1.以(4,2)为圆心,画 5 个同心圆,其半径为 1-5第三课第三课 编程基础二编程基础二有一位叫自然 9172 的网友提出了下面的问题:绘制三维多段线时 X、Y 值在屏幕上用鼠标选取,Z 值用键盘输入本课将讲解这个问题。为了简化程序,这里用多条直线来代替多段线。以下是源码:Sub myl()Dim p1 As Variant 申明端点坐标Dim p2 As Variantp1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标z = ThisDrawing.Utility.GetReal(“Z 坐标:“) 用户输入 Z 坐标值

10、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先

11、谈一下本程序的设计思路:1、获取第一点坐标2、输入第一点 Z 坐标3、获取第二点坐标4、输入第二点 Z 坐标5、以第一、二点为端点,画直线6、下一条线的第一点=这条线的第二点7、回到第 3 步进行循环如果用户没有输入坐标或 Z 值,则程序结束。首先看以下两条语句:p1 = ThisDrawing.Utility.GetPoint(, “输入点:“) 获取点坐标p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & “输入下一点:“) 获取下一个点的坐标这两条语句的作用是由用户输入点用鼠标选取点坐标,并把坐标值赋给 p1、p2 两个变量。ThisDrawing.

12、Utility.GetPoint()在 ACAD 中这是最常用的方法之一,它需要两个参数,在逗号前面的参数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,后一个端点跟随鼠标移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须保留。逗号后面使用一串字符,程序在命令行显示这串字符,这不难理解。VbCr 通常代表一个回车符,而在这个语句中,它的作用是在命令行不显示“命令:”&的作用是连接字符。举例:“爱我中华 ”&”抵制日货 ”&”从我做起”z = ThisDrawing.Utility.GetReal(“Z 坐标:“) 用户输入 Z 坐标值由用户输入一个实数

13、On Error GoTo Err_Control 出错陷井Err_Control:On Error 是出错陷井语句,在程序出错时将执行 On Error 后面的语句GoTo Err_contorl 是程序跳转语句,它的作用是在程序中寻找 Err_control:,并执行这一行后面的语句,本例中 Err_Control:后就是结束宏,所以只要出现错误,程序中止。Do 开始循环Loop 结束循环这个循环就历害了,它会无休止地进行循环,好在本例中已经有了一个出错陷井,当用户输入回车时,由于程序没有得到点或坐标,程序出错,跳出循环,中止程序。如果要人为控制跳出循环,可以在代码中用 Exit Do 语

14、句跳出循环。在 For 变量 和 Next 变量之间如果要跳出循环,那么只要在循环体内加一个 Exit for 就可以跳出循环,关于这方面的例程以后会讲到。Call ThisDrawing.ModelSpace.AddLine(p1, p2) 画直线画直线方法也是很常用的,它的两个参数是点坐标变量本课到此结束,请做思考题:连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出第四课第四课 程序的调试和保存程序的调试和保存人非圣贤,孰能无过,初学者在编写复杂程序时往往会出现一些意想不到的错误,所以程序的调试显得尤为重要,随着学习的深入,以后我们需要经常进行程序调试。事实上,对

15、于那些资深程序员来说,调试程序也是一项不可或缺的重要工作。首先,在程序输入阶段,应该充分利用 VBA 编辑器的智能功能。当你在写代码时,输入一些字母后,编辑器可以自动列出合适的语句、对象、函数供你选择,可以用上下键选择,然后按 TAB 键(它位于“Q”键左边)确认。当输入一个回车符后程序会自动对这条语句进行分析,如果出现错误就会提示。我们经常碰到的麻烦是程序的运行结果和预计的不一样,一般我会这样做:首先要想一想可能是哪一个变量有问题,然后去监视这个变量(或表达式),在程序合适的位置设置断点,这样可以使程序停下来看一看这个变量有没有按照我的设想在变化。下面我举一个简单的例子,先看源代码:sub

16、test()for i=2 to 4 step 0.6next iend sub这是一个非常简单的循环,每一次循环 i 便会增加 0.6,当循环 3 次后 i 值就变为 4.4,但问题是每一次循环时 i 值变为多少?第一步:在菜单中选“调试”“添加监视”,在表达试中填“i”,点击确定,这时你会看到临视窗口中会多一行。第二步:把光标移到代码窗口中的“next i”行,按一下“F9”,于是每当程序运行到这里时就会暂停了。好,一切就绪,请按 F5 执行程序,在监视窗口中 C 值立刻变为 2,再按 F5 继续,C 值为 2.6,再按几次 F5,直到程序结束,这样我们就成功监视了 C 值的变化。第三步:在 next i 行再按一次 F9,清除断点。监视的表达式的右键菜单选择“删除监视”。另外,还可以用“逐语句”、“逐过程”、“运行到光标处”等方法进行调试,这些都在调试菜单中,操作比较简单,请读者自行领悟。到目前为止,我们所做的工程都是“嵌入式工程”,它只是嵌入在当前的 Autocad 图形文件中, 以后

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号