Hi:欢迎来到中国论文网     

所有论文科目分类

中国论文网 > 免费论文 > 计算机论文 > 计算机软件 >

简析基于AutoCAD-VBA 的图层切换工具设计

作者:2016-12-06 16:20文章来源:未知
  1 概述
  AutoCAD(Autodesk Computer Aided Design)是一款用于二维绘图、详细绘制、设计文档和基本三维设计的自动计算机辅助设计软件。AutoCAD 绘图功能强大,但在处理表格、数据等方面有局限性。可以通过对AutoCAD 的二次开发,简化绘图过程,避免重复性工作,充分发挥其快速、准确的优势。Visual Basic for Applications(VBA)是Visual Basic 的一种宏语言,可以通过VBA 编程操作CAD的绘图对象。
  在AutoCAD 中,切换图层的操作很不便捷,特别是当图形中包含多个图层的时候,每次都要通过打开图层列表,去选择要切换的图层。虽然有人开发了根据创建对象的当前类型自动切换图层的程序,但是其具有明显缺陷性。如在建筑制图中,由于建筑绘图中直线会用来表示多种对象,需要放置在很多图层中,这样的情况编写的程序就不适用。作者在使用中分析得到,切换图层除了打开列表不方便,搜索目标图层也不便捷,因为图层列表是固定不变的,而不是按照用户使用的频繁程序而排列。
  2 编程思路
  文章所创建的切换图层程序正是针对上述问题,在文本框中显示当前图层的名称,列表中显示了当前图形中所有的图层。程序设计思路是在设置当前图层后对列表的排序操作。设置当前图层后,将列表中指定的图层名称移到第一位,在原来位置之前的所有元素向后退一位,其他元素位置保持不变。列表的排序方法为:当前图层、上一次的当前图层、再上一次的当前图层,依此类推。列表能够明确地显示出当前所有图层,省去了打开下拉列表的时间,图层的排序保证了可以容易地选择频繁使用的图层。
  3 设计分析
  (1)在【VBA 管理器】对话框中,创建一个新工程。并在这个工程中创建用户窗体。
  (2)在窗体的初始化事件中,需要读取图形中图层名称,添加到列表框中,并且调整控件的状态,其程序代码为:
  Private Sub UserForm_Initialize()
  Dim objLayer As AcadLayer
  Dim I As Integer
  For Each objLayer In ThisDrawing.Layers
  lstLayers .AddItem objLayer.Name,i
  i=i +1
  Next
  lstLayers.ListIndex = 0
  txtCurLayer.Enabled = False
  End Sub
  (3)【仅显示当前图层】复选框允许用户在指定当前图层时关闭其他图层,如果用户单击该复选框取消选中状态,则显示所有图层,其实现代码为:
  If chcShow.Value = True Then
  For Each objLayer In ThisDrawing.Layers
  If objLayer.Name <> txtCurLayer.Text Then
  objLayer.LayerOn = False
  Else
  objLayer.LayerOn = True
  End If
  Next
  ElseIf chcShow.Value = False Then
  For Each objLayer In ThisDrawing.Layers
  objLayer.LayerOn = True
  Next
  End If
  End Sub
  (4)图层列表框的双击事件中,包含了设置当前图层以及排序列表框内容的代码,其实现代码为:
  Private Sub lstLayers_DblClick (ByVal Cancel As MSForms.Return-
  Boolean)
  txtCurLayer.Text = lstLayers.Text
  Dim objLayer As AcadLayer
  For Each objLayer In ThisDrawing.Layers
  If objLayer.Name = txtCurLayer.Text Then
  ThisDrawing.ActiveLayer = objLayer
  Exit For
  End If
  NextD
  im strTemp As String
  Dim index As Integer
  Dim i As Integer
  index = lstLayers.ListIndex
  strTemp = lstLayers.Text
  For i = 0 To index - 1
  lstLayers.List (index - i) = lstLayers.List (index - i -
  1)
  Next
  lstLayers.List(0) = strTemp
  lstLayers.ListIndex = 0
  4 实例效果
  在VBA 集成开发环境中,按下F5 键,在AutoCAD 主应用程序窗口中执行当前的程序。在图层列表中双击【轴线】选项,该图层就会被设置为当前图层,在文本框中显示“轴线”,帮助用户判断当前图层中的对象,击选中【仅显示当前图层】复选框,图形窗口中其他图层就会被关闭,界面如图1 所示:
  5 总结与提高
  本程序在AutoCAD2010/2014环境下能够稳定正常运行,工作中应用效果良好。与通过菜单、命令操作话框中直接输入各种参数相比,图层切换程序的使用明显的节省了频繁操作图层的时间,在绘图和设计过程中非常实用。
 

最近相关

中国论文网

最新更新

热门推荐

[人文社科]英语广告语的特点与翻译原则
这是一篇关于英语广告语的特点与翻译原则的文章,掌握广告语的语言特点和翻译原则将有助于目标语读者了解产品功能,诠释...[全文]
[人文社科]基于跨文化的旅游英语翻译原则
这是一篇关于基于跨文化的旅游英语翻译原则的文章,跨文化视角下的旅游英语翻译,我们应尝试从读者的主观性理解以及本地...[全文]
[人文社科]中国传统节日中秋节的英译
这是一篇关于中国传统节日中秋节的英译的文章,中国传统文化的翻译,是随着时代变化而随之变化的。传统节日的中英翻译...[全文]
[人文社科]高职英语翻译教学中的问题与提升措施
这是一篇关于高职英语翻译教学中的问题与提升措施的文章,为了提升英语翻译教学的有效性,教师要不断地提升自身的综合素...[全文]
[理工论文]在现代城市建设中测绘工程中的作用
这是一篇关于在现代城市建设中测绘工程中的作用的文章,要需不断对测绘技术、测绘设备进行研究开发,不断革新,只有这样...[全文]
[理工论文]农业综合水利项目建设管理问题与解决措施
这是一篇关于农业综合水利项目建设管理问题与解决措施的文章,一定要提高设计人员对水利工程项目建设规划设计的重视度...[全文]

热门标签