明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3368|回复: 5

[连载]《VBA精彩实例教程》1.1 Hello,VBA

[复制链接]
发表于 2009-6-4 21:44:00 | 显示全部楼层 |阅读模式

1.1.1  实例说明
“Hello VBA”实例将通过一个简单实例,向读者展示开发AutoCAD VBA应用程序的一般过程,涉及到AutoCAD VBA工程项目的建立、调试和保存等。
运行该实例,会弹出一个询问是否在图形窗口中添加“Hello,VBA”文字的对话框,如果用户单击【是】按钮确认,就会在图形窗口中创建“Hello,VBA”的文字。
1.1.2  编程思路
实现在对话框中提示“Hello,VBA!”,可以直接使用VBA的内置函数MsgBox,按照其语法要求指定适当的参数即可。
在AutoCAD图形窗口中添加“Hello,VBA!”的文字,涉及到AutoCAD文字添加的方法,本例中使用了AddText方法,其语法格式为:
RetVal = object.AddText(TextString, InsertionPoint, Height)
本例中不需要返回值,因此在指定参数时不用括号。如果你对VB中使用函数的格式有什么疑问,请先阅读一本VB基础的图书。
1.1.3  步骤
(1)在AutoCAD 2004的环境中,选择【工具/宏/VBA管理器】菜单项,系统会弹出【VBA管理器】对话框。默认情况下,初次打开此对话框,工程列表中已经包含了一个工程。如果工程列表为空,单击【新建】按钮,就能在当前图形中新建一个名称为ACADProject的全局工程,如图1.1所示。

图1.1  新建工程
(2)在【工程】列表中选择ACADProject,单击【VBA管理器】中的【另存为】按钮,系统弹出【另存为】对话框。在对话框的保存位置下拉列表中指定工程文件的保存目录,如图1.2所示,然后单击【保存】按钮关闭【另存为】对话框。

图1.2  保存工程文件
(3)在【工程】列表中选择ACADProject,单击【Visual Basic编辑器】按钮,进入AutoCAD VBA的集成开发环境,如图1.3所示。在VBA IDE(集成开发环境)的左侧,分布着“工程资源管理器”和“属性窗口”,“工程资源管理器”中显示了当前打开的工程名称,以及该工程的文件结构。

图1.3  AutoCAD VBA集成开发环境
(4)在“工程资源管理器”中选择ThisDrawing,选择【视图/代码窗口】菜单项,或者直接双击ThisDrawing,系统会弹出如图1.4所示的代码窗口。当前的代码窗口没有任何的语句,后面就要为其添加适当的语句。

图1.4  代码窗口
(5)在VBA集成开发环境中,选择【插入/过程】菜单项,系统会弹出如图1.5所示的【添加过程】对话框。在【名称】文本框中,输入HelloVBA,【类型】为【子程序】,【范围】为【公共的】,单击【确定】按钮。

图1.5  添加子程序
(6)完成上一步骤的操作后,在ThisDrawing模块的代码中,就完成了HelloVBA子程序的定义,如图1.6所示。当然,目前这个子程序是空的,未实现任何功能。

图1.6  完成子程序的定义

提示:实际上,我一般不用这样的方法创建子程序,而是直接在代码区中添加这些代码。在代码窗口中输入“Public Sub HelloVBA”后按下Enter键,系统会自动补全剩下的代码。
(7)完成子程序的实现代码,首先系统弹出一个对话框,讯问用户是否要在图形窗口中添加文字,如果用户选择【是】,就在图形中添加文字对象。在HelloVBA子程序(宏)中添加下面的代码:
Public Sub HelloVBA()
    '定义点
    Dim pt(0 To 2) As Double
   
    '为点赋值
    pt(0) = 100
    pt(1) = 100
    pt(2) = 0
   
    '显示对话框,并添加文字
    Dim value As Integer
    value = MsgBox("Hello,VBA!" & vbNewLine & "是否在图形中添加?", vbYesNo, "获得用户选择")
    If value = 6 Then   '6代表vbYes
        ThisDrawing.ModelSpace.AddText "Hello,VBA!", pt, 10
        '放在thisDrawing模块中的代码,可以省略thisDrawing对象
        'ModelSpace.AddText "Hello,World!", pt, 10
    End If
   
End Sub
考虑到初学者,对程序进行下面的分析。
在VBA中,Dim关键字用来创建对象和数据的定义,数组pt(0 To 2)用来表示一个点的坐标,这在VBA中非常普遍。
MsgBox是VBA的一个内置函数,能够显示系统默认的消息对话框,其语法格式为:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
AddText函数是VBA中向图形中添加单行文字的一种方法,如果需要获得该函数的详细信息,可在该函数上单击鼠标左键,使光标在AddText中的任一个位置上闪烁,然后按下F1键,就可以弹出如图1.7所示的帮助窗口,这与VB 6.0的MSDN使用方法相同。


(8)此时代码的编写已经完成,单击“标准”工具栏上的“保存”按钮,将当前的工程保存在指定的位置。
1.1.4  实例效果
(1)在VBA集成开发环境中,按下F5键,系统会弹出【宏】对话框(如果当前仅使用了一个宏,则不会弹出该窗口,而是直接执行该宏),在其中选择名称为HelloVBA的宏,单击【运行】按钮,就能在AutoCAD主程序中运行。
(2)切换到AutoCAD主程序窗口中,出现如图1.8所示的对话框,正是提示“Hello,VBA!”的对话框。

图1.8  消息框
(3)单击消息框中的【是】按钮,程序会继续运行,并且在运行完毕之后返回VBA的开发窗口。在Windows任务栏上单击AutoCAD主程序的图标,回到主程序窗口,得到如图1.9所示的结果。

图1.9  程序运行结果
1.1.5  小结
HelloWorld是编程学习中一个非常经典的实例,其旨在以最为简洁的语言使读者了解开发的过程。读者需要通过这个事例掌握AutoCAD VBA编程的基本过程,为进一步的学习做好准备。
这里,要为大家澄清几个名词的含义:
全局工程:全局工程是相对于嵌入工程而言的,它是保存在硬盘上的一个独立文件,以DVB为扩展名。在AutoCAD运行的任何时候,都可以将全局工程加载到系统中,使用它完成包括打开、关闭图形在内的操作。一般的工程都采用这种方式保存。
嵌入工程:嵌入的工程保存在某一个AutoCAD图形文件中。当AutoCAD打开嵌入工程所在的文件时,该工程就会被自动加载,这种工程的缺点是不能打开或关闭AutoCAD图形,仅能对所在的图形文件进行操作。
宏:宏是一个公共的可执行子程序,每个工程中至少包含一个宏。在VBA中,宏在代码窗口中就是一个子程序。例如一个文字工具程序中可能包含文字替换、文字编辑、文字查找的功能,该工程就可以由文字的替换、编辑和查找三个宏组成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2009-6-4 22:53:00 | 显示全部楼层
沙发了,支持老大!!
发表于 2009-10-24 15:35:00 | 显示全部楼层

不错

Public Sub HELLO()         
    Dim insertionPoint As Variant
    insertionPoint = ThisDrawing.Utility.GetPoint(, vbCrLf & "请选择插入点:")

    Dim value As Integer
    value = MsgBox("Hello,VBA!" & vbNewLine & "是否在图形中添加?", vbYesNo, "获得用户选择")
    If value = 6 Then   

    ThisDrawing.ModelSpace.AddText "Hello,VBA!", insertsionPoint 100
        
    End If

ThisDrawing.SaveAs ("Hello.dwg") 
End Sub

这个例子我自己把其修改成这个样了

发表于 2010-6-9 17:03:00 | 显示全部楼层

很感谢分享,多谢了.

发表于 2010-6-12 10:15:00 | 显示全部楼层

三楼,有点小错 ThisDrawing.ModelSpace.AddText "Hello,VBA!", insertionPoint, 100

发表于 2010-6-13 15:32:00 | 显示全部楼层
感谢分享,多谢了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:35 , Processed in 0.187370 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表