说明:本篇内容由SudoMe根据AutoCAD官方开发文档整理修改而来,如有内容表述不准确或理解错误的,请及时反馈。
AutoCAD开发环境简述
AutoCAD开发环境是在AutoCAD开发过程中可以创建窗体、编辑代码、引用库、调试运行项目的地方,基于VB语法结构的主要有两个。
- VBA交互开发环境(VBE)
VBE依附于开发软件本身,AutoCAD的VBA模块在安装后即可使用,可以通过AutoCAD功能区的“管理”选项卡→“应用程序”面板→“Visual Basic 编辑器”或在AutoCAD命令行,输入VBAIDE命令打开,可生成在AutoCAD中加载的dvb格式的代码文件。 - VB集成开发环境(VB6.0)
独立的开发软件,界面基本与VBE类似,开发前必须要引入相应的库,才能使用软件的对象,可以开发独立的EXE软件。
重要的视图窗口
它跟常用的软件一样,都有菜单栏、工具栏以及各种窗口,在这里面尤其重要的三个窗口是工程资源管理器窗口、属性窗口、代码窗口,如果找不到对应的窗口,可以在视图中选择。
工程资源管理器
这是管理项目组件地方,默认情况下,它默认包含了Thisdrawing对象,在这里添加我们可以添加“窗体”、“模块”和“类模块”对象。
引用参考:使用项目资源管理器 (VBA) | Microsoft Learn
项目组件如下:
组件 | 描述 |
---|---|
Thisdrawing对象(VBE) | 表示VBA代码将访问的文档。对于AutoCAD VBA项目,ThisDrawing表示当前的AutoCAD图形。 |
窗体 | 用于项目而构建的自定义对话框。 |
标准模块 | 代码模块组件包含通用的过程和函数。标准模块也称为代码模块,或简称为模块。 |
类模块 | 类模块组件包含您自己的所有对象,这些对象被定义为类。 |
注意:可以导入窗体、模块或类模块。窗体以FRM文件导入,模块以BAS文件导入,类模块以CLS文件导入。如果导入的组件同名,导入会自动添加编号。
属性窗口
可以设置对象的属性值。
引用参考:使用属性窗口 (VBA) | Microsoft Learn
代码窗口
编写代码的地方,在代码窗口可以选择对象及触发的事件。代码是由一系列的指令和操作组成的,在VBA中一段代码用sub过程或function过程表示,常用的就是sub 过程名()....end sub
。
引用参考:(VBA) 创建过程 | Microsoft Learn
引用参考:代码窗口 | Microsoft Learn
引用类库与项目
引用第三方库和项目的方法如下:
- 从“工具(VBE)/工程(VB6.0)”菜单中,单击“引用”。
- 在“引用”对话框中,单击“浏览”。
- 在“添加引用”对话框中,选择要引用的类库/项目文件,然后单击“打开”。
- 单击“确定”按钮以完成引用添加。
引用参考:(VBA) 设置对类型库的引用 | Microsoft Learn
项目与项目文件命名(VBE)
项目名称在VBA IDE的“属性”窗口中设置。
注意:默认项目名称:ACADProject;默认项目文件名:Project.dvb
VBA IDE重命名项目方法:
- 在VBA IDE的“工程资源管理器”窗口中,选择要更改的项目。
- 右键单击该项目,然后单击“<工程名称>属性”。
- 在“<工程名称>-工程属性”对话框的“工程名称”文本框中,编辑项目的名称。单击“确定”。
VBA IDE重命名项目文件方法:
- 在VBA IDE中,单击“文件”菜单→“保存”。
- 在“另存为”对话框中,输入项目文件的新名称和位置。单击保存。
窗体组件
项目窗体
窗体可以为应用程序创建自定义对话框,一般用于提供信息、获取信息或控制应用程序。
模式窗体与无模式窗体
用户窗体可以是模式的,也可以是无模式的。窗体的ShowModal属性确定它是模式还是无模式的。在AutoCAD VBA中将对话框定义为模式时,用户必须先响应该对话框,然后才能继续应用程序的其他部分。在通过Hide或Unload方法关闭模式对话框之前,不会执行后续代码。无模式窗体允许窗体在用户交互时保持显示状态,类似于浮动调色板。
注意:模式窗体显示时禁用应用程序中的其他窗体,但其他应用程序不会禁用。
创建窗体的方法如下:
- 打开“工程资料管理器”窗口,然后选择项目。
- 从“插入”菜单中,单击“用户窗体”。将创建窗体并将添加到项目中。
创建无模式窗体的方法如下:
- 打开“项目”窗口,然后选择项目。
- 从“插入”菜单中,选择“用户窗体”,并将“显示模式”属性更改为“False”。
- 将AcFocusCtrl (AcFocusCtrl.dll) 添加到“工具箱”中,然后将控件拖到窗体上。AcFocusCtrl在用户交互期间将焦点保持在窗体上。
关于显示和隐藏窗体
必须先显示用户窗体,然后才能使用,然后在不再需要它时隐藏它。显示窗体是通过Show方法完成的。
默认情况下,创建的窗体是模式窗体,因此在显示窗体时,用户将无法直接与AutoCAD交互。要允许用户访问AutoCAD图形,使用Hide方法隐藏窗体,允许用户对AutoCAD进行有限访问。
以下示例显示名为“UserForm1”的窗体:
Public Sub MyApplication()
UserForm1.Show
End Sub
子过程现在可以作为宏从VBARUN命令或AutoCAD用户界面调用。
以下示例隐藏名为“UserForm1”的窗体:
Public Sub MyAppHide()
UserForm1.Hide
End Sub
关于加载和卸载窗体
若要加载窗体但不显示它,使用Load方法。然后,使用Show方法可使窗体可见。如果调用Show方法并且尚未加载窗体,则将自动加载它。
卸载窗体会从内存中删除该窗体,并回收与该窗体关联的所有内存。当窗体不再使用且想要回收内存时,可以卸载窗体。隐藏方法不执行卸载。应用程序结束且窗体尚未卸载时,将自动卸载窗体。
窗体显示、隐藏、加载、卸载方法比较如下:
方法 | 描述 |
---|---|
Show | 显示窗体。如果窗体尚未加载,则会自动加载。 |
Hide | 隐藏窗体。窗体不会从内存中卸载。 |
Load | 将窗体加载到内存中但不显示它。 |
Unload | 从内存中卸载窗体。这可以从Unload方法中显式完成,也可以在应用程序终止时自动完成。 |
窗体控件
在窗体上创建控件需要控件工具箱,在工具箱中选定控件拖拽放置到窗体上即可。
常见操作
-
控件大小设置
单击选择控件,选择边框上夹点,将夹点拖动到新位置,控件的大小将调整到该位置。若要移动或调整多个控件,按住Shift键同时选择控件。 -
控件格式设置
“格式”菜单上有设置控件格式的功能,可以设置控件的对齐格式,使用Shift可以一次选择多个控件。 -
控件属性设置
“属性”控制控件的各种特征,例如控件的大小、形状、颜色、标签和默认值。 -
控件添加代码
双击“窗体”窗口中的控件可添加代码。“代码”窗口打开后,会创建默认事件的子过程,也可以从“代码”窗口右上角的事件下拉列表中选择其他事件。
常用控件
命令按钮(CommandButton)
- Caption:标题。
- Picture、 DownPicture、 DisabledPicture:分别代表正常、按下、不可用状态时显示的图片。
文本框(TextBox)
- MultiLine:确定控件是否能够接受和显示多行文本。
- PasswordChar:返回或设置一个值,该值指示输入的字符或占位符在文本框控件中是否要显示出来,返回或设置用作占位符。
注意:如果MultiLine属性被设为True,那么设置PasswordChar属性将不起作用。
Private Sub Text1_LostFocus()
If Val(Me.Text1.Text) <= 0 Or Val(Me.Text1.Text) > 20 Then
Me.Text1.Text = ""
Me.Text1.SetFocus
MsgBox("请输入1到20的数字")
End If
End Sub
标签(Lable)
用来显示标题或说明性的文字。常用属性是Caption,默认属性也是Caption,因此可以用省略的写法,比如Label1 = "VB程序设计开始"
。
复选框(CheckBox)
- Value:确定复选框控件的状态。0为没有选中,默认值;1为已选中;2为不可用。
以下示例为复选框控制文本框中文字是否为斜体字和加下划线。
Private Sub Form_Load()
Me.Text1.Text = "复选框控件应用"
Me.Text1.Font.Size = 12
Me.Text1.Font.Bold = True
Me.Check1.Caption = "斜体字"
Me.Check2.Caption = "加下划线"
End Sub
Private Sub Check1_Click()
If Me.Check1.Value = 1 Then
Me.Text1.Font.Italic = True
Else
Me.Text1.Font.Italic = False
End If
End Sub
Private Sub Check2_Click()
If Me.Check2.Value = 1 Then
Me.Text1.Font.Underline = True
Else
Me.Text1.Font.Underline = False
End If
End Sub
单选按钮(OptionButton)
- Value:确定单选按钮控件的状态。True表示已选择,False表示未选择,为默认值。
注意:选择一个单选按钮时,同组中的其他单选按钮控件自动无效。
引用参考:创建一组 OptionButton 控件 | Microsoft Learn
Private Sub Form_Load()
Me.Text1.Text = "单选框控件应用"
Me.Option1.Caption = "8号字"
Me.Option2.Caption = "15号字"
End Sub
Private Sub Option1_Click()
Me.Text1.Font.Size = 8
End Sub
Private Sub Option2_Click()
Me.Text1.Font.Size = 15
End Sub
组合框(ComboBox)
- Style:指示控件的显示类型和行为,只能在属性窗口设置。0,下拉式组合框,可以在列表中选择或文本框中输入,为默认值;1,简单组合框,不能下拉;2,下拉式列表框,只能下拉选择。
- AddItem方法:将项目添加到ComboBox控件中。
- RemoveItem方法:从ComboBox控件中删除一项。
- Clear方法:清除ComboBox控件中的所有项目。
列表框(ListBox)
- Style:指示控件的显示类型和行为,只能在属性窗口设置。0,标准式,为默认值;1,复选框式,可以选择多项。
定时器(Timer)
定时器控件可以使程序自动地间隔一段时间执行一次代码。该控件在运行时不在窗体上出现,一个窗体可以同时应用多个定时器控件。
- Interval:(最重要)确定每次发生Timer事件的时间间隔,单位为毫秒,默认值为0。
注意:Timer控件没有方法,只有Timer事件。只要Timer的Enabled属性设置为True,且Interval大于0,则Timer事件以Interval属性指定的时间间隔发生。
Private Sub Form_Load()
Me.Timer1.Interval = 1000
Me.Command1.Caption = "显示系统时间"
Me.Command2.Caption = "停 止"
End Sub
Private Sub Timer1_Timer()
Me.Text1.Text = Time
End Sub
Private Sub Command1_Click()
Me.Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Me.Timer1.Enabled = False
End Sub
公共对话框(CommonDialog)
公共对话框控件是ActiveX控件(Microsoft Common Dialog Control 6.0),提供一组标准的Windows对话框,比如打开和保存文件、设置打印选项、选择颜色和字体、显示帮助等操作,对话框控件用6种方法提供不同类型的对话框样式。
方法 | 对话框类型 |
---|---|
ShowOpen | 打开对话框 |
ShowSave | 另存为对话框 |
ShowColor | 颜色对话框 |
ShowFont | 字体对话框 |
ShowPrinter | 打印或打印选项对话框 |
ShowHelp | 调用Windows帮助引擎 |
- 公共属性
- DialogTitle:返回或设置该对话框标题栏所显示的字符串,比如另存为对话框默认标题为另存为。
- 打开、另存为对话框
- FileName:返回或设置所选文件的路径和文件名。
- InitDir:为打开或另存为对话框指定初始的目录,如果此属性没有指定,则使用当前目录。比如:
Me.CommonDialog1.InitDir = App.Path
。 - Filter:返回或设置在对话框的类型列表框中所显示的过滤器。语法为“提示信息|*.扩展名”,若有多种文件,使用管道(|)符号将其隔开。比如:
CommonDialog1.Filter ="文本文件(*.txt)|*.txt|图形文件(*.bmp;*.ico)|*.bmp;*.ico|所有文件(*.*)|*.*"
。 - DefaultExt:当没有指定扩展名时,自动给该文件添加指定的扩展名。
以下代码为打开对话框简单示例:
Private Sub Command1_Click()
On Error Resume Next
With Me.CommonDialog1
.DialogTitle = "打开图形文件"
.Filter = "图形文件(*.bmp;*.ico)|*.bmp;*.ico|所有文件(*.*)|*.*"
.InitDir = "C:\我的应用程序"
.ShowOpen
End With
Me.Text1.Text = CommonDialog1.FileName
Me.Picture1.Picture = LoadPicture(Me.CommonDialog1.FileName)
End Sub
注意:在打开或另存为对话框中选择一个文件,并不能将该文件打开或保存,它仅用来返回或设置用户在对话框中选择的路径和文件名。
- 颜色对话框
Private Sub Command1_Click()
Me.CommonDialog1.Flags = cdlCCFullOpen
Me.CommonDialog1.ShowColor
Me.Circle(2000,2000),500,Me.CommonDialog1.Color
End Sub
- 字体对话框
- FontName:字体名称。
- FontSize:字体大小。
- FontBold:值为True时选择粗体。
- FontItalic:值为True时选择斜体。
- FontStrikethru:值为True时选择删除线。
- FontUnderline:值为True时选择下划线。
- Color:字体颜色。要使用此值,必须将 Flags 属性设置为cdlCFEffects。
- 打印或打印选项对话框
- Copies:打印份数。
- FromPage:打印的起始页。
- ToPage:打印的结束页。
- hDC:选定打印机的设备句柄。