CADVBA初级教程(全)
autocad vba初级教程.doc
Autocad VBA初级教程(第一课:入门)第一课:入门1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好V BA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
CADVBA初级教程(全)
第一课:入门1.为什么要写这个教程市面上ACAD VBA 的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是AutocadVBA?VBA 是Visual Basicfor Applic ation s 的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VB A 就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
3、VBA 有多难?相信大家都知道Basi c 是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CA D 世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Al t+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 ThisDr awing.ModelS pace.AddCir cle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
Autocad VBA初级教程(8 图层操作)
Autocad VBA初级教程 (第八课图层操作)作者:普天同庆 | 阅读次数:1086 转自:CAD世界网-论坛时间:2005年5月30日15:41先简单介绍两条命令:1、这条语句可以建立图层:yers.Add("新建图层")在括号中填写图层的名称。
2、设置为当前的图层ThisDrawing.ActiveLayer=图层对象注意,等号右边的变量不能用图层名称,必须使用一个有效的图层变量以下一些属性在图层比较常用:LayerOn 打开关闭Freeze 冻结Lock锁定Color 颜色Linetype 线型看一个例题:1、先在已有的图层中寻找一个名为“新建图层”的图层2、如果找到这个图层,显示该图层的信息,并提示用户是否需要设置为当前图层,如果用户确认,则设置为当前图层。
3、如果图层没有找到,新建一个名为“新建图层”的图层,设置为黄色,HIDDEN线型,并把这个图层设置为当前图层Sub mylay()Dim lay0 As AcadLayer '定义作为图层的变量Dim lay1 As AcadLayerfindlay = 0 '寻找图层的结果的变量,0没有找到,1找到For Each lay0 In yers '在所有的图层中进行循环If = "新建图层" Then '如果找到图层名findlay = 1 '把变量改为1标志着图层已经找到msgstr = + "已经存在" + vbCrLfmsgstr = msgstr + "图层状态:" + IIf(yerOn = True, "打开", "关闭") + vbCrLfmsgstr = msgstr + "图层" + IIf(lay0.Freeze = True, "已经", "没有") + "冻结" + vbCrLfmsgstr = msgstr + "图层" + IIf(lay0.Lock = True, "已经", "没有") + "锁定" + vbCrLfmsgstr = msgstr + "图层颜色号:" + CStr(lay0.Color) + vbCrLfmsgstr = msgstr + "图层线型:" + lay0.Linetype + vbCrLfmsgstr = msgstr + "图层线宽:" + CStr(lay0.Lineweight) + vbCrLfmsgstr = msgstr + "打印开关" + IIf(lay0.Plottable = False, "关闭", "打开") + vbCrLf + vbCrLfmsgstr = msgstr + "是否设置为当前图层?"If MsgBox(msgstr, 1) = 1 Then '如果用户点击确定If Not yerOn Then yerOn = True '打开ThisDrawing.ActiveLayer = lay0 '把当前图层设为已经存在的图层 End IfExit For '结束寻找End IfNext lay0If findlay = 0 Then '没有找到图层Set lay1 = yers.Add("新建图层") '增加一个名为“临时图层”的图层 lay1.Color = 2 '图层设置为黄色ltfind = 0 '找到线型的标志,0没有找到,1找到For Each entry In ThisDrawing.Linetypes '在现有的线型中进行循环 If StrComp(, "HIDDEN") = 0 Then '如果线型名为"HIDDEN"ltfind = 1 '标志为已找到线型Exit For '退出循环End IfNext entry '结束循环If ltfind = 0 Then '没有找到线型ThisDrawing.Linetypes.Load "HIDDEN", "acadiso.lin" '加载线型End Iflay1.Linetype = "HIDDEN" '设置线型ThisDrawing.ActiveLayer = lay1 '将当前图层设置为新建图层End IfEnd Sub在寻找图时时我们用到for each……next 语句它的语法是这样的:For Each 变量 In 数组或集合对象……exit for……next 变量它的作用是在数组或集合对象中进行循环,每循环一次,变量就成为数组或集合对象中的一个元素。
AutocadVBA初级教程第十三课块操作-Read
Autocad VBA初级教程第十三课块操作作者:普天同庆文章来源:本站原创点击数:1411 更新时间:2006-7-11定义块方法:Set blocksobj=ThisDrawing.Blocks.Add(基点, 块名)把选择集加入块中的方法:ThisDrawing.CopyObjects(选择集,块)插入块方法:ThisDrawing.ModelSpace.InsertBlock(插入点,块名, X轴比例,Y轴比例,Z轴比例, 旋转角度)画块属性方法:ThisDrawing.ModelSpace.AddAttribute(文字高度,模式,提示字符, 插入点, 显示字符,默认值)一共有五种模式,在输入时会有提示,其中最常用的是“acAttributeModeNormal”普通模式下面的例题是利用属性块画足球场的阵型图。
程序画出一个球员块,然后把块写到用户指定位置,球员号码由程序自动递增,把球员姓名改为用户输入值。
画足球场请参阅上一课内容。
7.插入块,修改球衣号码属性、球员姓名属性以下是源码,附有详细的注释,如果有疑问,建议用变量跟踪法研究一下。
Sub team()Dim playerlay As AcadLayer '定义球员图层Dim playerblock As AcadBlock '定义块变量Dim arcc(0 To 2) As Double '圆弧圆心Dim linep1(0 To 2) As Double '线条端点1Dim linep2(0 To 2) As Double '线条端点2Dim pline(0 To 20) As Double '定义队服右侧多段线7个顶点Dim basep(0 To 2) As Double '块基点Dim playernumberpoint(0 To 2) As Double '块属性插入点Dim mytxt As AcadTextStyle '定义mytxt变量为文本样式Dim blockRef As AcadBlockReference '定义块属性变量Dim Attr3 As Variant '插入块属性变量Set playerblock = ThisDrawing.Blocks.Add(basep, "球员") '定义一个"球员"的块arcc(0) = 0arcc(1) = 430Call playerblock.AddArc(arcc, 50, ThisDrawing.Utility.AngleToReal(180, 0), 0) '画弧并加入块中pline(0) = 0pline(1) = 20Set mytxt = ThisDrawing.TextStyles.Add("mytxt") '添加mytxt样式mytxt.fontFile = "c:\windows\fonts\simfang.ttf" '设置字体文件为仿宋体ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxtplayernumberpoint(0) = 0 '块属性位置playernumberpoint(1) = 200Set attr1 = ThisDrawing.ModelSpace.AddAttribute(100, acAttributeModeNormal, "号码", playernumberpoint, "X", 0) '画块属性attr1.Alignment = 7 '居中attr1.TextAlignmentPoint = playernumberpoint '重定义对齐点Set attr2 = ThisDrawing.ModelSpace.AddAttribute(100, acAttributeModeNormal, "姓名", playernumberpoint, "???", 0) '画块属性attr2.Alignment = 7 '居中Dim objCollection(0 To 3) As Object '创建选择集Set objCollection(0) = line1 '线条1加入选择集Set objCollection(1) = line2 '线条2加入选择集Set objCollection(2) = attr1 '属性1加入选择集Set objCollection(3) = attr2 '属性2加入选择集Call ThisDrawing.CopyObjects(objCollection, playerblock) '把选择集加入块中For Each element In objCollection '在选择集中进行循环用与中小企业共同成长。
autocad vba初级教程 (强烈推荐)
Autocad VBA初级教程 (第二课编程基础)Autocad VBA初级教程 (第三课编程基础二)Autocad VBA初级教程 (第四课程序的调试和保存) Autocad VBA初级教程 (第五课画函数曲线)Autocad VBA初级教程 (第六课数据类型的转换) Autocad VBA初级教程 (第七课写文字)Autocad VBA初级教程 (第八课:图层操作)Autocad VBA初级教程 (第九课:创建选择集) 18 Autocad VBA初级教程 (第十课:画多段线和样条线) 20 Autocad VBA初级教程 (第十一课:动画基础) 23 Autocad VBA初级教程 (第十二课:参数化设计基础) 26Autocad VBA初级教程(第一课:入门)1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
3、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CAD 世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
AutoCAD VBA工程及VBA交互开发环境教程
目录第一章VBA入门 (1)1.1了解嵌入和全局VBA工程 (1)1.2用VBA管理器组织工程 (1)1.3处理宏 (3)1.4用VBA IDE编辑工程 (4)1.5更多的信息 (9)1.6回顾AutoCAD VBA 工程术语 (9)1.7回顾AutoCAD VBA 命令 (10)第二章理解ActiveX自动操作基础 (10)2.2访问对象层次 (14)2.3通过集合对象操作 (15)2.4理解属性和方法 (17)2.5理解父对象 (17)2.6定位类型库 (17)2.7在数据库中返回第一个图元 (17)2.8在方法和属性中使用变体 (18)2.9使用其它程序语言 (19)第三章控制AutoCAD环境 (22)3.2设定AutoCAD参数 (24)3.3控制应用程序窗口 (24)3.4控制图形窗口 (25)3.5重置活动对象 (32)3.6设定和返回系统变量 (33)3.7精确制图 (33)3.8提示用户输入 (38)3.9访问AutoCAD命令行 (41)3.10工作于无打开文档状态 (41)3.11输入其它文件格式 (41)3.12输出到其它文件格式 (42)第四章创建和编辑AutoCAD图元 (43)4.1创建对象 (43)4.2编辑对象 (50)4.3使用图层、颜色和线型 (71)4.4添加文本到图形中 (81)第五章标注与公差 (95)5.1标注的概念 (95)5.2创建标注 (97)5.3编辑标注 (101)5.4利用标注样式 (102)5.5在模型空间和图纸空间中标注 (105)5.6创建引线及注解 (105)5.7创建形位公差 (107)第六章定义菜单和工具栏 (108)6.1理解MenuBar和MenuGroups集合 (109)6.2加载菜单组 (110)6.3改变菜单条 (111)6.4创建和编辑下拉菜单和快捷菜单 (113)6.5建立并编辑工具栏 (119)6.6建立宏 (125)6.7对菜单项和工具栏项增加状态栏帮助 (128)6.8在右键菜单中增加条目 (129)第七章使用事件 (130)7.1了解AutoCAD中的事件 (130)7.2编写事件处理器的方法 (131)7.3处理应用程序级事件 (132)7.4处理文档级事件 (134)7.5处理对象级事件 (136)第八章在三维空间下工作 (138)8.1指定三维坐标 (138)8.2定义用户坐标系统 (140)8.3坐标转换 (141)8.4建立三维对象 (143)8.5在三维中编辑 (147)8.6编辑三维实体 (150)第九章定义布局及打印 (153)9.1了解模型空间和图纸空间 (153)9.2了解布局 (153)9.3了解视口 (155)9.4打印图纸 (161)第十章-高级绘图与组织技术 (163)10.1使用光栅图像 (163)10.2使用块和属性 (167)第一章VBA入门本章将为你介绍AutoCAD VBA工程及VBA交互开发环境(VBA IDE)。
Autocad_VBA初级教程.doc
Autocad VBA初级教程(第一课:入门)第一课:入门1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
3、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CA D世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
CAD-VBA代码
CAD-VBA代码一、基本操作 (1)1、块操作 (1)1.1、定义块方法: (1)1.2、把选择集加入块中的方法 (1)1.3、插入块方法: (1)1.4、画块属性方法 (1)1.5、编程思路: (1)2、画直线 (单段线) (3)3、画多段线 (4)3.1、修改出线点的位置 (4)4、画圆 (4)5、获取鼠标指定的坐标点 (4)6、旋转 (4)7.插入文字(单选) (5)(1)、左边对齐: (5)(2)、中间对齐: (5)(3)、右边对齐 (5)8.插入文字(多行) (5)9、画圆弧 (6)10、画图椭圆 (6)11、CAD打开读取数据 (6)12、绘制圆弧 (6)二、CAD VBA程序答 (7)1. VBA写的宏,可否编译成象ARX一样的程序,经加载后,在命令行打入命令后就可运行 (7)2. VB中可以生成可执行文件,而在VBA中却不行 (7)5.有时文字是从别的图中复制-粘贴的,如果不打破的话,能否直接得到文字内容. (8)GetSubEntity 方法 (8)6. 想必河伯对Excel/ActiveX有研究, 能否请教如何获得Excel文件最后一行的信息? .8可以用CurrentRegion属性计算最后一行 (8)7. 如何调用vba命令对多义线进行fit(拟合)处理 (9)8. 块属性值编辑 (9)9.如何用程序控制对象捕捉 (10)10. 如何从VBA到VB? (10)11.IntersectWith 方法 (10)12.绘制多边形并显示多边形顶点坐标 (10)13.Private Sub AcadDocument_BeginDoubleClick(ByVal pPoint As Variant) (11)14. 现有Handpoint = acadApp.ActiveDocument.Utility.GetPoint(, "请输入套料的插入点")(12)希望用户在捕捉点或输入点坐标动作时,如何避免用户因其他操作如缩放、PAN引起的系统报错 (12)15.在VBA中如何传送一个参数给Vlisp? (12)17.我想知道vb中的那个函数或者对象的方法可以代替在cad中按esc键取消命令 (12)18点击菜单项就在该菜单上打对号是怎么实现的? (13)20请问版主,如何实时获得当前光标的X,y,z坐标值,如同状态栏上显示坐标值13 21可以设置图块中的块属性值,如内 (13) 22我的选择集中有Block和PLine,我想能使用该函数 (14)23我的机器里装有cad14和cad2000,用vb写了一个程序调用cad,如何让程序每次都调用cad2000呢? (14)24我只是想判断一下 (14)25SendCommand "_line" 没有返回值,怎么知道是否添加了line (15)26为什么修改文字的对方正式后辩证文字会移回到零点? (15)27删除块前,应先删除块的引用,怎样查找块的引用?(VBA)(15)28使用ADO的方法如何存取ACCESS数据库? (15)30如何将类似".5"数值改为"0.5"显示 (16)31请问,如何将图上所有的数字(成千上万个数值)减去同一个常数? (17)34 把选择的对象放大几倍,VBA怎么实现? (20)35怎样提取图形的视图左下角、右上角和图形左下角,右上角的坐标? (20)1. 怎么查找某一个group是否存在?- (21)3. 在编程中,我遇到以下问题: (21)5. Sheets("检测报告").Select (22)6. 请问如何让form.hide后form.show时能保持form先前移动后的位置? (22)9怎样计算一个多边形的中心点? (23)10如何返回在命令行中输入的字符,是指在没有按下回车和空格下(24)11当我插入块时,鼠标的click_point为两个图块的公共插入点,即同时插入两个块24 12如何把168.235642度分解成度,分,秒?我没有办法判别小数点? (24)13. 请问在VBA中怎么使一个选择集只选中模型空间中可见图元?(25)14. windows安装了几个打印机,如何用vb指定打印机。
CADVBA初级教程(全)
第一课:入门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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
2010autocad 的 microsoft vba
在2010版AutoCAD中,Microsoft VBA(Visual Basic for Applications)是一种用于编写和自定义宏和脚本的编程语言。
VBA可以与AutoCAD的对象模型进行交互,从而允许用户通过编程来操作和控制AutoCAD的功能。
要使用Microsoft VBA进行AutoCAD编程,可以按照以下步骤:
1. 打开AutoCAD 2010软件。
2. 在工具栏上找到“工具”菜单,点击打开。
3. 在弹出的“选项”对话框中,选择“系统”选项卡。
4. 在“系统”选项卡下方的“支持路径”部分,点击“启用宏”复选框。
5. 点击“VBA项目”按钮,以打开VBA编辑器。
6. 在VBA编辑器中,可以编写和编辑VBA代码,然后将其应用于AutoCAD。
使用Microsoft VBA编写AutoCAD宏或脚本时,您可以使用VBA的语法和功能来操作和控制AutoCAD的各个方面,包括绘图、修改对象、执行命令等。
您还可以利用AutoCAD的对象模型来访问和操作AutoCAD的对象和属性。
请注意,Microsoft VBA在最新版本的AutoCAD中可能已被取代或不再提供支持。
如果您使用的是较新的AutoCAD版本,请查阅相关文档以确定可用的编程选项和语言。
1。
Autocad二次开发vba教程第三课
Autocad二次开发vba教程第三课第三课编程基础二有一位叫自然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两个变量。
AutocadVBA初级教学文章(第九课创建选择集)
AutocadVBA初级教学⽂章(第九课创建选择集)1.在创建对象的同时可以直接引⽤.以前的例程中已经做过多次了,现在复习⼀下,看例程:先随机画300个圆,在画圆时直接引⽤,然后再把这些圆根本⼤⼩修改颜⾊.Sub c300()Dim myselect(0 To 300) As AcadEntity '定义选择集数组Dim pp(0 To 2) As Double '圆⼼坐标For i = 0 To 300 '循环300次pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0 '设置圆⼼坐标Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1) '画不同⼤⼩的圆Next iFor i = 1 To 300If myselect(i).Radius > 10 Then '判断圆的直径是否⼤于10myselect(i).color = Int(255 * Rnd + 1) '⼤圆颜⾊改为随机数Elsemyselect(i).color = 0 '⼩圆改为⽩⾊End IfNext iZoomExtents '缩放到显⽰全部对象End Subpp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0这⼀⾏实际上应该是三条语句,⽤三⾏合并为⼀⾏,⽤冒号分开rnd是随机数函数,它的数值为0-1之间的⼩数,3000*rnd得到的数值就是在0-3000之间的随机数Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1) 这条语句的作⽤是以pp点坐标为圆⼼,画⼀个圆,半径是1-30之间的随机数,赋值给myselect选择集.提标⽤户在屏幕中选取选择语句这样写:Set sset = ThisDrawing.SelectionSets.Add("ss1"),其中”ss1”是⼀个选择集名称,这个参数可以随意写⼀个,注意不要重复就可以了. 下⾯的例程是让⽤户选择对象,然后把选中的对象改为绿⾊,最后把选择集删除Sub mysel()Dim sset As AcadSelectionSet '定义选择集对象Dim element As AcadEntity '定义选择集中的元素对象Set sset = ThisDrawing.SelectionSets.Add("ss1") '新建⼀个选择集sset.SelectOnScreen '提⽰⽤户选择For Each element In sset '在选择集中进⾏循环element.color = acGreen '改为绿⾊Nextsset.Delete '删除选择集End Sub3.选择全部对象⽤select⽅法,参数为acSelectionSetAll ,看例程,这个程序选择全部对象,显⽰选中的对象,并计算对象数. Sub allsel()Dim sel1 As AcadSelectionSet '定义选择集对象Set sel1 = ThisDrawing.SelectionSets.Add("s") '新建⼀个选择集Call sel1.Select(acSelectionSetAll) '全部选中sel1.Highlight (True) '显⽰选择的对象sco= sel1.Count '计算选择集中的对象数MsgBox "选中对象数:" & CStr(sco) '显⽰对话框End Sub3.运⽤select⽅法上⾯的例题已经运⽤了select⽅法,下⾯讲⼀下select的5种选择⽅式:1:择全部对象(acselectionsetall)2.选择上次创建的对象(acselectionsetlast)3.选择上次选择的对象(acselectionsetprevious)4.选择矩形窗⼝内对象(acselectionsetwindow)5.选择矩形窗⼝内以及与边界相交的对象(acselectionsetcrossing)还是看代码来学习.其中选择语句是:Call sel1.Select(Mode, p1, p2)Mode已经定义为5,也就是选择矩形窗⼝内以及与边界相交的对象,p1和p2是两个点坐标,Sub selnew()Dim sel1 As AcadSelectionSet '定义选择集对象Dim p1(0 To 2) As Double '坐标1Dim p2(0 To 2) As Double '坐标2p1(0) = 0: p1(1) = 0: p1(2) = 0 '设置坐标1p2(0) = 300: p2(1) = 300: p2(2) = 0 '设置坐标1Mode = 5 '把选择模式存⼊mode变量中Set sel1 = ThisDrawing.SelectionSets.Add("sel3") '新建⼀个选择集Call sel1.Select(Mode, p1, p2) '选择对象sel1.Highlight (ture) '显⽰已选中的对象End SubCAD VBA过滤器、选择集分享我看到过这个问题有好⼏次了,当时只是把代码发给了个⼈,现在把这些代码贴出来,建⽴⼀个专题,加以⾃⼰的理解进⾏说明,希望能对⼤家在⼯作中遇到选择集和过滤器问题有所帮助以供⼤家使⽤。
CADVBA初级教程(全全)
第一课:入门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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
acad vba 编译
acad vba 编译
如果你想在 AutoCAD 中使用 VBA (Visual Basic for Applications) 编译代码,你可以按照以下步骤进行:
1. 打开 AutoCAD:首先,你需要打开 AutoCAD 软件。
2. 打开 VBA 编辑器:在 AutoCAD 中,你可以通过按下 `Alt` + `F11` 来打开 VBA 编辑器。
3. 创建或打开模块:在 VBA 编辑器中,你可以看到一个项目浏览器。
在这里,你可以右键点击你的项目名称,然后选择 "插入" -> "模块"。
你也可以打开一个已经存在的模块。
4. 编写代码:在新模块的代码窗口中,你可以开始编写你的 VBA 代码。
例如:
```vba
Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
```
5. 编译代码:在你完成代码编写后,你可以按`F5` 来编译和运行你的代码。
如果你的代码有任何错误,VBA 编辑器会告诉你错误的位置和原因。
6. 使用宏:如果你想在 AutoCAD 中运行你的 VBA 宏,你可以按 `Alt` +
`F8` 来打开 "宏" 对话框。
在这里,你可以选择并运行你的宏。
7. 保存和关闭:当你完成所有的操作后,记得保存你的 VBA 项目并关闭VBA 编辑器。
以上就是在 AutoCAD 中使用 VBA 编译代码的基本步骤。
如果你在编写或
运行代码时遇到任何问题,你可以查阅 AutoCAD 的官方文档或寻求在线帮助。
CAD-vba开发手册范本
VBA开发人员手册:高化奎爱华勘测工程第一章:VBA入门本章将为你介绍AutoCAD VBA工程及VBA交互开发环境(VBA IDE)。
尽管大部分VBA环境在行为上都是相似的,但AutoCAD VBA IDE还是有些独有的特性。
在AutoCAD中还有些相关的命令可以用于装载工程、运行工程,或打开VBA IDE环境。
本章将概要介绍VBA工程、VBA命令和VBA IDE的使用。
本章具体容如下:了解嵌入和全局VBA工程、用VBA管理器组织工程、处理宏、用VBA IDE编辑工程、更多的信息、回顾AutoCAD VBA 工程术语、回顾AutoCAD VBA 命令第一节:了解嵌入和全局VBA工程AutoCAD VBA 工程是代码模块、类模块和窗体的集合,它们组合起来以执行给予的功能。
工程可保存在AutoCAD图形中,或作为独立的文件保存。
嵌入工程是保存在AutoCAD图形中。
当包含有这些工程的图形中AutoCAD打开时,他们可以自动地装载,这种方法可以很方便地分发工程给用户。
嵌入工程也有它的极限,它不能打开或关闭AutoCAD图形,那是由于他们的函数只存在于工程所在的文档中。
使用嵌入工程不需要在运行程序之前查找并装载工程文件。
举个含有嵌入工程的图形的例子,当图形打开时,一个时间日志被触发。
通过这样一个宏的应用可以登记并记录用户在该图形上所花费的时间。
这时用户不必去记住在打开图形之前装载工程,这就是自动操作的一个很好的例子。
全局工程保存在独立的文件中,它更加通用,因为他们能在AutoCAD图形中运行,也能打开、关闭AutoCAD图形,但它在图形打开时不能自动装载。
用户必须知道他们所需要的宏包含在哪个工程文件中。
然而,全局工程非常容易与其它使用者共享,它可以将通用的宏做为很好的库而存在。
举个例子,你保存在一个工程文件中的宏是有关多个图形的材料清单。
这个宏可以在工作周期的末期由管理员运行,这样就可以收集到所有图形的信息。
CADVBA初级教程(全)
第一课:入门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也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
VB和VBA开发CAD的知识
VB和VBA开发CAD的知识VB和VBA开发CAD的知识1、如何在VB 中连接AutoCAD。
启动VB ,引用AutoCAD 类型库。
操作步骤:从“工程”菜单中选择“引用”选项,启动“引用”对话框。
在“引用”对话框中,选择AutoCAD 类型库,然后单击“确定”。
定义模块级变量AutoCAD 应用程序(acadApp) 和当前的文档(acadDoc)。
如果AutoCAD 正在运行,使用GetObject 函数将检索AutoCAD Application 对象。
如果AutoCAD 没有运行,使用CreateObject 函数试图创建一个AutoCAD Application 对象。
如果创建成功,会启动AutoCAD;如果失败,则会发生错误。
同时运行多个AutoCAD 任务时,GetObject 函数会返回Windows 运行对象表中的第一个AutoCAD 实例。
要显示AutoCAD 图形窗口,需要将AutoCAD 应用程序的Visible 特性设置为TRUE。
使用acadDoc 变量引用当前的AutoCAD 图形。
示例:Dim acadApp As AcadApplicationDim acadDoc as AcadDocumentSub ConnectToAcad()On Error Resume NextSet acadApp = GetObject(, "AutoCAD.Application")If Err ThenErr.ClearSet acadApp = CreateObject("AutoCAD.Application")If Err Then EndEnd IfacadApp.V isible = TrueSet acadDoc = acadApp.ActiveDocumentEnd Sub2、如何使VB 开发的程序不依赖于AutoCAD 的版本。
AutocadvbA初级教程(13)块操作
Autocad vbA初级教程(13) 块操作定义块方法:Set blocksobj=ThisDrawing.Blocks.Add(基点, 块名)把选择集加入块中的方法:ThisDrawing.CopyObjects(选择集,块)插入块方法:0ThisDrawing.ModelSpace.InsertBlock(插入点,块名, X轴比例,Y轴比例,Z轴比例, 旋转角度)画块属性方法:ThisDrawing.ModelSpace.AddAttribute(文字高度,模式,提示字符, 插入点, 显示字符,默认值)一共有五种模式,在输入时会有提示,其中最常用的是“acAttributeModeNormal”普通模式编程思路:1.定义一个空块2.在块中画一段弧(球服衣领)3.画多段线,镜像画出球衣4.画块属性,由于块属性默认的对齐方式是左对齐,而球员号码应该居中,所以必须把块的对齐属性改为居中。
但是当这个属性更改时块属性对齐点会自动归零,所以不得不再次更改对齐点属性5.把多段线和属性复制到块中6.提示用户点选球员位置和姓名7.插入块,修改球衣号码属性、球员姓名属性以下是源码,附有详细的注释,如果有疑问,建议用变量跟踪法研究一下。
Sub team()Dim playerlay As AcadLayer '定义球员图层Dim playerblock As AcadBlock '定义块变量Dim arcc(0 To 2) As Double '圆弧圆心Dim linep1(0 To 2) As Double '线条端点1Dim linep2(0 To 2) As Double '线条端点2Dim pline(0 To 20) As Double '定义队服右侧多段线7个顶点Dim basep(0 To 2) As Double '块基点00Dim playernumberpoint(0 To 2) As Double '块属性插入点Dim mytxt As AcadTextStyle '定义mytxt变量为文本样式Dim blockRef As AcadBlockReference '定义块属性变量Dim Attr3 As V ariant '插入块属性变量Set playerblock = ThisDrawing.Blocks.Add(basep, "球员") '定义一个"球员"的块arcc(0) = 0arcc(1) = 430Call playerblock.AddArc(arcc, 50, ThisDrawing.Utility.AngleToReal(180, 0), 0) '画弧并加入块中0pline(0) = 0pline(1) = 20pline(3) = 1000pline(4) = 20pline(6) = 100pline(7) = 250pline(9) = 125pline(10) = 2070pline(12) = 212pline(13) = 257pline(15) = 112pline(16) = 4300pline(18) = 50pline(19) = 430Set line1 = ThisDrawing.ModelSpace.AddPolyline(pline) '画队服右侧多段线linep2(1) = 1 '镜像轴第二点位于Y轴上任一点Set line2 = line1.Mirror(linep1, linep2) '镜像获得另一半多段线Dim p(0 To 2) As Double '定义坐标变量0 0Set mytxt = ThisDrawing.TextStyles.Add("mytxt") '添加mytxt样式mytxt.fontFile = "c:\windows\fonts\simfang.ttf" '设置字体文件为仿宋体ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxtplayernumberpoint(0) = 0 '块属性位置playernumberpoint(1) = 2000Set attr1 = ThisDrawing.ModelSpace.AddAttribute(100, acAttributeModeNormal, "号码", playernumberpoint, "X", 0) '画块属性0attr1.Alignment = 7 '居中attr1.TextAlignmentPoint = playernumberpoint '重定义对齐点Set attr2 = ThisDrawing.ModelSpace.AddAttribute(100, acAttributeModeNormal, "姓名", playernumberpoint, "", 0) '画块属性attr2.Alignment = 7 '居中Dim objCollection(0 To 3) As Object '创建选择集Set objCollection(0) = line1 '线条1加入选择集Set objCollection(1) = line2 '线条2加入选择集Set objCollection(2) = attr1 '属性1加入选择集0Set objCollection(3) = attr2 '属性2加入选择集Call ThisDrawing.CopyObjects(objCollection, playerblock) '把选择集加入块中For Each element In objCollection '在选择集中进行循环element.Delete '删除线条和属性(此操作并不影响已创建的块)NextSet playerlay = yers.Add("球员") '新建图层playerlay.color = 2 '为黄色ThisDrawing.ActiveLayer = playerlay '将当前图层设置为球员图层Dim p1 As V ariant '块插入点位置For i = 1 To 11 '插入块pstring = CStr(i) & "号球员位置:"p1 = ThisDrawing.Utility.GetPoint(, pstring) '点选球员位置坐标nstring = ThisDrawing.Utility.GetString(30, "球员姓名:")Set blockRef = ThisDrawing.ModelSpace.InsertBlock(p1, "球员", 1, 1, 1, 0) '插入块 Attr3 = blockRef.GetAttributes '获取块属性Attr3(0).TextString = CStr(i) '赋值球员号码Attr3(1).TextString = nstring '赋值球员姓名NextEnd Sub。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 个Autocad VBA 初级教程(第三课编程基础二)有一位叫自然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) '画直线画直线方法也是很常用的,它的两个参数是点坐标变量本课到此结束,请做思考题:连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出同心圆,其半径为1-5Autocad VBA 初级教程(第四课程序的调试和保存) 人非圣贤,孰能无过,初学者在编写复杂程序时往往会出现一些意想不到的错误,所以程序的调试显得尤为重要,随着学习的深入,以后我们需要经常进行程序调试。
事实上,对于那些资深程序员来说,调试程序也是一项不可或缺的重要工作。