利用Access数据库实现AutoCAD系统电气元件管理

类别:编程语言 点击:0 评论:0 推荐:

利用Access数据库实现AutoCAD系统电气元件管理

     来源: 电源世界     



南京市江宁区105信箱技术科 李田科
Li TianKe
摘 要:介绍了一种在AutoCAD 2002环境下,利用VBA开发应用程序,在AutoCAD电气原理图中,自动提取电气元件图块的属性,生成Access数据库,形成电气元件明细表的方法,它可以大大提高管理电气元件工作效率。
关键词:数据库 AutoCAD 图块 Access 图块的属性 VBA
Abstract: A method using the VBA to develop the application procedure under the AutoCAD environment, automatically collect the attribute of the electricity pieces block, form the list, build the Access Database, is introduced. It can increase the work efficiency.
Keywords: Database AutoCAD Block Access Attribute VBA
[中图分类号] TP274 [文献标识码] B 文章编号 1606-5123(2003)-01-0048-04
1 概述
近年来,AutoCAD已普遍应用在电气设计中,设计人员在享受AutoCAD所带来便利的同时,经常遇到如何在大量图纸快速、准确统计电气元件的问题,特别是一个复杂的电气系统含有大量电气元件。当电气原理图设计完成后,要打印每页图纸,依靠人工统计每页图纸的电气元件来填写数据库,工作量大且易出差错,设备在安装时,发现漏报或多报电气元件问题,给企业带来不必要的损失,设计人员为此苦恼。如果能自动用一个数据库对电气元件进行管理,无疑对电气元件管理非常有益。本文中介绍的方法是:先为每个电气元件建立图块,在绘制电气系统原理图时,电气元件以图块的方式插入,然后利用VBA开发应用程序访问电气系统原理图,自动提取电气元件图块的属性信息,自动生成Access数据库。采用Access数据库是因为AutoCAD与它兼容性最好, 设计人员对Access数据库比较熟悉,从而避免人为差错,提高效率。

2 设计和制作电气元件Access数据库
为了管理方便,必须根据所需统计的电气元件的信息,合理设计电气元件数据库结构,我公司经常用的电气元件性能和规格参数如表1所示,由4个字段组成。
表1 电气元件数据库结构
字段名称 代号 名称 型号 生产厂家
字段类型 文本 文本 文本 文本

3 建立电气元件图块库
为了实现电气元件数据库的自动生成,首先为每个电气元件建立带属性的图块,从而形成一个电气元件图块库。
以制作接近开关图块及其属性为例,建立电气元件图块库的具体步骤如下:
(1) 先绘制每个电气元件国标图形,图1为接近开关图形。
(2) 用ATTDEF指令定义每个电气元件属性,如图2所示定义接近开关名称属性,其他属性(型号、生产厂家)采用与图2一样方法定义,注意在定义接近开关代号属性时,因为每个电气元件代号属性是唯一的,所以在插入图块时,要根据“请输入代号”的提示输入正确代号属性,属性结构对应的数据结构如表2所示。
表2 电气元件属性结构对应的数据结构
标记(T) 提示(P) 值(L)
代号 请输入代号
名称 接近开关
型号 BIL-Q06-AN6X2
生产厂家 TURCK公司
(3) 用BLOCK指令定义每个电气元件图块,图块包括步骤(1)绘制的图形,步骤(2)绘制的图形属性结构,定义接近开关图块如图3所示。
(4) 要编辑电气元件图块属性时,先用EXPLODE指令,将图块炸开,再用DDEDIT指令来修改相应属性,重复上述步骤(3)来完成编辑图块的任务。
同样,按照上述步骤(1)~(3)建立其他所有电气元件图块,如按钮、停锁按钮、行程开关等图块,形成电气元件库。

4 编写VBA应用程序
利用VBA的可视化编程技术,可以方便地建立电气元件Access数据库。构建数据库的思路是:先建立新数据库,在电气系统原理图中,自动查找电气元件图块的属性信息,把每个电气元件的属性作为记录写入数据库。
在AutoCAD 2002环境下,允许VBA开发者通过ODBC对象连接到数据库(如Visual Fox,Access,SQL等)、本文连接Access表、构造Access类型数据库,这样维护数据库方便,也为以后进一步开发及管理数据库创造有利条件。
Sub list()
Dim work As Workspace
Dim new As Database
Dim elem As Object
Dim rs As Recordset
Dim RowNum As Integer
Set work = DBEngine.Workspaces(0)
Dim dbs As Database
Dim tdfNew As TableDef
Dim tdf As TableDef
Dim dbsname As String
Dim array1 As Variant
Dim array2 As Variant ‘声明所需的变量及类型
dbsname = “D:\材料表.mdb”
‘声明Access数据库写到哪一个文件
On Error Resume Next
Set dbs = work.CreateDatabase(dbsname, _
dbLangGeneral)
If Err Then
Kill (dbsname)
‘发现要写入的Access数据库文件已存在就将其删除
Set dbs = work.CreateDatabase(dbsname, _
dbLangGeneral)
End If
Set tdfNew = dbs.CreateTableDef
(“电气 _材料明细表”)
‘建立一个名为电气材料明细表的表
RowNum = 0
Dim Header As Boolean
Header = False
For Each elem In ThisDrawing.ModelSpace
‘在CAD模型空间,查找所有图形对象
With elem
If StrComp(.EntityName,_
“AcDbBlockReference”, 1) = 0 Then
If .HasAttributes Then
array1 = .GetAttributes
array2 = .GetConstantAttributes
‘设置array1指向图形对象的属性
‘设置array2指向图形对象的固定属性
For Count = LBound(array2) To _
UBound(array2)
If Header = False Then
If StrComp(array2(Count).EntityName, _
“AcDbAttributeDefinition”, 1) = 0 Then
tdfNew.Fields.AppendtdfNew._
CreateField(array2(Count).TagString, dbText)
End If
‘读出属性值读出,作为Access数据库表的标题
End If
Next Count
For Count = LBound(array1) To _
UBound(array1)
If Header = False Then
If StrComp(array1(Count).EntityName, _
“AcDbAttribute”, 1) = 0 Then
tdfNew.Fields.Append tdfNew. _
CreateField(array1(Count).TagString, dbText)
End If
End If
Next Count
If Header = False Then
dbs.TableDefs.Append tdfNew
Set rs = dbs.OpenRecordset
(“电气材料 _明细表”, dbOpenTable) ‘打开记录
End If
RowNum = RowNum + 1
rs.AddNew ‘增加一笔新记录
For Count = LBound(array2) _
To UBound(array2)
rs(Count).Value = array2(Count).TextString
Next Count ‘读固定属性值
For Count = LBound(array1) To _
UBound(array1)
rs(UBound(array2) + Count + 1).Value = _
array1(Count).TextString
Next Count ‘读输入属性值
rs.Update ‘增加新记录修改结束
Header = True
End If
End If
End With
Next elem
rs. Close ‘关闭记录,释放资源
dbs.Close ‘关闭数据库,释放资源
End Sub
完成上述VBA开发应用程序,用户绘制好原理图后,就可以在AutoCAD 2002环境下,调用上述程序实现数据库自动生成。图4为PLC输入电气原理图,图5为调用该程序生成对应图4自动生成Access数据库。该程序已在AutoCAD 2002,Access2000环境下调试成功。注意:如果执行有问题,进入AutoCAD 2002环境VBA编辑器中,打开“工具”菜单,选择“引用”选项,确认DAO 3.6 Object Library 要引用,因为在程序中应用Workspace语法。另外,为了保护软件知识产权问题,可以给VBA程序加密,设置编辑密码,这样没经授权,别人无法查看程序原代码。
这个Access数据库将是未来重点维护的数据库,在此数据库基础上,再设计一个交谈式程序,笔者利用VB6.0的ActiveX Date Objects(ActiveX数据对象,ADO),借助ADO,VB6.0可以访问任何关系型数据库(包括Access数据库),来对电气材料进行统计、查询、分析等方法,生成新的Access数据库与工厂PDM(Product Data Management,即产品数据管理)数据连接已成功,以后再讨论这方面的内容。由于CAD技术突飞猛进发展,愈来愈多要求图纸与数据库的结合,加入分析功能,以获得更高效益,为企业PDM创造条件。

5 结论
电气设计采用CAD技术,是提高产品设计质量,缩短设计周期的必由之路,特别是系列产品的设计若能和计算机辅助管理结合起来,更是事半功倍。本文中利用VBA开发应用程序,在AutoCAD电气原理图中,自动生成Access数据库的方法,简单易行,不需要复杂编程,可以大大提高工作效率。通过建立数据库,可以方便地解决查询和统计繁琐且容易产生出错的问题。采用AutoCAD和Access数据库结合起来进行材料管理,为企业数字化管理创造条件,既省事省力,又提高材料管理的准确性,具有较大的工程使用价值。

本文地址:http://com.8s8s.com/it/it26781.htm