




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VBA 自动提取 CAD 图纸明细表及数据库管理的研究与实践(一) 来源 :原创 点击数:1122 评论 | 加入收藏 时 间:2009-12-30 11:00:52作 者:碧海摘 要:笔者认为:在企业信息化建设中,依靠软件商开发和购买大型管理软件是必要的,但不是唯一的。信息系统的开发和应用切忌一味搞“大而全”、 “高版本”,而应针对应用的具体对象灵活的采取不同的开发方式。需要强调的是:充分地调动和挖掘本企业信息技术人员的积极性和创造性,有效地组织他们去攻克解决企业信息化道路上的难题和开发实用型专业化软件工具显得尤其重要,这才是企业信息化建设的真正动力和技术支撑。遗憾的是这个问题也正是当前许多企业在信息技术开发工作中的不足之处。一切管理软件都是工具,工具不是万能的,关键还是人的创新精神和责任心。因此能否真正发挥软件的作用解决企业的实际问题,还有待于依靠企业领导、管理人员、信息技术人员的同心协力,鼎力相助。这种信息系统开发的模式也是企业特别是中小型企业信息化建设的一条可借鉴的有效途径。正 文:制造企业工程技术人员在利用 CAD 进行产品设计时产生大量的 DWG 文件,每一个 DWG 文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。在通常的管理中,各业务部门往往通过人工的方式从 CAD图纸或纸质图纸明细表中获取技术文件数据,再利用 WORD 或 EXCEL 进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单) ,按不同的用途也有的称之为物料消耗单、物料清单 BOM 等。这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。因此,采用自动提取 CAD 明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。AutoCAD 是 AutoDesk 公司开发的通用 CAD 工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。笔者以 AutoCAD2004 为背景,应用 VBA 开发工具和 Access 数据库技术成功地实现了自动提取 CAD 图纸明细表与进行数据库管理的研究目标并取得较好的实用效果。一、自动提取 AUTOCAD 图纸明细表工程技术图纸的右下角区域一般都布置着标题明细栏,记载着图形总体和明细的特征信息和基本技术要数,它是所有派生技术文件的信息源头和依据,CAD 图纸继承了这个惯例。我国国家技术标准 GB/T10609.12-1989 对图纸标题明细栏的形式、内容、尺寸都作了具体规定。虽然各企业图纸标题明细栏样式不尽相同,但大同小异,基本结构一致。标题栏记载着图形的外部信息,明细栏记载着图形内在的详细要素和彼此的关联(图一) 。 图一明细栏由若干明细行组成,明细行则由各栏目组合。自动提取 AUTOCAD 图纸明细表的信息其实质就是针对明细行对各栏目进行提取数据的操作。提取明细行数据的方法概括起来,通常有坐标定位法和块行取值法两种:1坐标定位法:即先点选起始明细行左下角坐标与末尾明细行右上角坐标所在的位置,确定提取数据的区域范围,对该区域范围内的所有实体对象进行逐一扫描,读出文字对象(TEXT 、MTEXT )的(X、Y)坐标属性和字符串属性。通过文字对应坐标值的分析确定该文字在明细表中的位置,实现自动提取数据的操作。这种方法对单图的 DWG 文件效果较好,但对多图的 DWG 文件和不规则的标题明细栏操作起来就很复杂且取数的精度也较难控制,实用效果不够理想,这种方法对以往标题栏未作规范要求的老图纸其作用显而易见。2块行取值法:即利用 AutoCAD 块行属性特征来提取明细栏的信息。在 AutoCad 内部对象模型 (AutoCad Object Model)以层次结构组织起来,顶层可编程的 Application 对象启动 AutoCAD 应用程序的一个实例,通过 Application 对象定位到其它对象;第 2 层是 Document 和 Preference 对象,Document 对象代表当前在AutoCAD 应用程序窗口中打开并操作的一个 AutoCAD 图形文件,Preference 对象对应于 Preference 对话框包含 AutoCAD 当前的配置信息;第 3 层是 Document 的集合对象,如 ModelSpace,PaperSpace,Blocks 对象等等,通过集合对象我们就可以访问当前图形中的所有实体。块行取值法主要使用集合中 Attribute 和 Block 两个对象。具体设计明细行时,没有格式限制,唯一要求就是必须使一个 Attribute 对象对应明细行中的一个栏目项,将对应明细行中所有栏目的 Attribute 对象组合在一起放入 Block 对象中,该 Block 对象就是用户定义的块行(明细行) 。将定义好的块行依次插入(复制)到图纸标题栏上方,组成图纸明细栏。其操作如下:绘图 块定义属性(图二、图三)修改 对象属性块属性管理器(图四、图五)(图二)(图三)(图四)(图五)(图六)Attribute 对象是具有交互功能的一种标签,含有 3 个配置项:Tag,Value 和 Prompt。Tag 项是该 Attribute 对象的标志符,即 Attribute 对象的名字。例如 Tag 设置为“件号”,表示该 Attribute 对应明细栏中的“件号”栏目。Value 项表示 Attribute 中包含的真实数值,如某个具体的件号值为“001”。在定义 Attribute 对象时,由于初始明细栏目中的具体内容不确定,则该属性一般暂不输入数据。待块行建立后其输入的数据就存储在 Attribute 对象中,这样通过程序访问 Attribute 对象的 Value 属性就可以获取其中的数据。Prompt 项表示 Attribute 的提示信息,引导用户完成数据输入操作。Block 对象是一个容器对象,该 Block 包含多个 Attribute 对象。在 AutoCAD 图形中插入明细行后,只要点击该行系统就会提示用户输入相应的值,并显示在图形标题明细栏中。在开发中要注意区分 Block 和 BlockRef(块引用对象) 、Attribute 和 AttributeRef(属性引用对象)对象。在 AutoCAD 图形中定义 Block 时,该 Block 对应 Block 对象。将定义好的 Block 插入到另一个图形中,就是基于 Block 的定义生成一个实例,该实例就是 BlockRef 对象;同样,在 AutoCAD 图形中定义 Attribute 时,该 Attribute 对应 Attribute 对象。将包含在 Block 中 Attribute 插入到另一个图形中,就是基于 Attribut e的定义生成实例,实例对应的就是 AttributeRef 对象。因此在从 AutoCAD 图形的明细栏中自动提取管理信息时,涉及到的两种对象是 BlockRef 和 AttributeRef 对象.将按上述方法定义好的规范明细栏插入到 AutoCAD 图形中后,通过 ActiveX Automation 技术就能将明细栏中的信息提取出来。在 Document 的集合对象中 Modelspace对象是一个特殊最大的 BLOCK,包含图纸中所有实体(图形对象) ,由于 BLOCK、Attribute 允许嵌套,因此为搜索当前实体中的属性信息提供了方便。基本算法上使用了递归调用扫描当前图纸中的所有实体,通过实体的 EntityType 属性判断该实体是否是 BlockRef对象,如果是,则判断该 BlockRef 对象中是否包含 AttributeRef 对象。如果包含则获取 AttributeRef 对象的列表。然后扫描此列表,通过 TagString 和 TextString 属性获取每个 AttributeRef 对象中的数据,并同步写入 ACCESS 数据库;当扫描结束时,明细栏中所有 AttributeRef 对象中包含的信息都被提取出来,自动在 ACCESS 数据库中即可形成初步的明细数据表。在 AUTOCAD 中自动提取明细表数据解决方案思路如(图七)所示:(图七)下一页Access 软件网 QQ 交流群 (群号:41208985 )-武汉 碧海欢迎您访问我的专栏:/blog/?userid=1051如果您没有注册这个网上社区,请单击下面的链接进行注册,与我在社区进行交流:/reg/reg.asp?userid=1051作者简介:【打印此文】 【关闭窗口】最新评论正 文:二、VBA 编程自动提取 CAD 图纸明细表及进行数据库管理的要点本研究采用 AutoCAD2004 设计图纸明细表,Access2003 数据库进行管理。系统设计可分为AutoCAD2004 二次开发和数据库管理两个组成部分,使用 VBA 编程工具开发系统。(一)AutoCAD2004 二次开发1建立自定义菜单:启动 CAD工具自定义编辑自定义文件当前菜单进入 ACAD 记事本编辑查找 POP11修改保存自定义菜单修改内容:*POP11*vba 应用ID_vba 应用 &vba 应用ID_提取图纸明细表 -&提取图纸明细表ID_保存为 Excel 表 &保存为 Excel 表CC_-vbarun m_excel.dtexcelID_保存为 Access 表 &保存为 Access 数据库CC_-vbarun m_access.dtaccess*POP12注释:*POP11-第 11 项*vba 应用 -别名ID_vba 应用 &vba 应用- 显示“vba 应用“菜单项ID_提取图纸明细表-& 提取图纸明细表- -表示有下级子菜单显示“提取图纸明细表“ID_保存为 Excel 表&保存到 Excel 表CC_-vbarun m_excel.dtexcel-显示“保存到 Excel 表“,并运行 ACAD 工程中的模块 m_excel 中的宏( 过程)dtexcel(打开图纸时操作菜单自动提取明细表到指定的 Excel 表)。ID_保存为 Access 表&保存为 Access 数据库CC_-vbarun m_access.dtaccess-显示“保存到 Access 表“,并运行 ACAD 工程中的模块 m_access 中的宏(过程)dtaccess (打开图纸时操作菜单自动提取明细表到指定的 Access 表)。将编辑后的 acad.dvb 文件 COPY 到 C:Program filesautocad 2004support目录中。2编制 VBA 提取图纸明细表数据程序:(1)提取数据到 Excel 表的程序要点(2)提取数据到 Access 表的程序要点(二)建立 ACCESS 数据库管理信息系统1建立数据库 MDB 应用文件:为了统一、集中、有效地管理数据,便于系统调试、更新和升级,将程序和数据分别存放在两个 MDB 文件中,本例自动提取的 CAD 明细表数据存放在 D:产品数据库。2设计信息管理系统:本系统在 ACCESS 2003 环境下应用 VBA 编程技术开发。设计信息管理系统时要着重考虑以下问题:明细表序号(件号)编码的设计明细表序号一方面反映图纸的顺序和相互关系,另一方面也是数据库管理中进行排序、分类、汇总的依据,因此序号的编码设计和处理尤为重要。在一般通常情况下图纸明细表中的序号(件号)常采用1999数字逐一递增的顺序编码。这种自然编码的优点是符合人的思维习惯、容易记忆、维护方便,但存在不能自动排序的缺点。例如:1、 1.1、2、2.1、10、10.1、99、100 按升序排列,其结果是:1、1.1、10、10.1、100、2、2.1、99这是因为在计算机内上述数字是按 ASCII 值排序的。这种不定长的编码方式给计算机查询、排序、分类、汇总等操作和制作报表带来很大麻烦,往往需要用手工的办法人为的加以调整,十分不便,工作效率也很低。因此系统采用了新的编码方法,即三位定长编码。图纸明细表序号(件号)采用三位编码逐级递增的方式例如:装配图 001002010099100999 一级序号组部件图 001001002001101001101099 二级序号零件图 001001001002001001101099001 三级序号上述编码在实际操作中并无需记忆,只需在原来序号上加零即可。实践证明这种定长逐级递增的编码方式对提取明细表的数据进行排序、分类、汇总操作和制作报表时带来极大的方便,不但大幅度提高系统自动化的能力,而且为应用数据库技术打下良好坚实的基础。通过程序可将图纸明细表中的三位编码自动转换还原成报表上习惯常用的编码。例如:装配图 001002010099100999转换为 121099100999组部件图 001001002001101001101099 转换为 1-12-1101-1101-99零件图 001001001002001001101099001 转换为 1-1-12-1-1101-99-1自动修改数据库表结构从 AUTOCAD 图纸明细表提取的数据保存在数据库表中只是解决了数据库数据源的问题,系统要完成数据逻辑的自动处理和满足功能模块运行、实现系统目标的需要还必须增加一些辅助字段,用以提高数据库管理信息系统的自动化程度。因此系统设计时要解决自动修改数据库表结构增加字段的技术性问题。例如:本系统需要在数据库表中自动增加“消耗用量”、 “物料分类” 等字段。如以下程序所示:理顺和规范 CAD 图纸明细表数据格式传统 CAD 图纸明细表内的数据在大多数情况下反映了设计者个人的理解和自定义,应用数据库管理时就存在一个规范数据格式的问题,否则计算机无法正常处理提取的数据。因此开发人员要设计一个规范的 CAD 图纸标题栏明细表,对表头各栏目给予明确的定义并对输入的格式提出具体的规定和要求,设计人员应统一引用图纸规范标题明细栏。图纸规范标题明细栏标题栏+ 明细栏其中:标题栏的格式内容与传统的格式内容一样,填写方法仍然采用单行文本方式;明细栏增加了型号规格一栏,将传统名称栏中的型号规格内容填写到此栏中。明细栏的填写方法如前所述采用增强属性编辑器(图六)输入。cad 制图时必须规范、正确地填写明细栏各栏的内容。例如:A.件号栏:采用三位编码逐级递增的方式即:装配图 001010099100999 一级件号组部件图 001001002001101001101099 二级件号零件图 001001001002001001101099001 三级件号系统具有编码识别转换功能,在明细栏制作和汇总时系统会自动将上述代码转换成习惯编码。例:1 板材 3 标准紧固件1-1 钢板 =2 3-1 螺栓 M10901-2 钢板 =3 3-2 螺栓 M101002 型材2-1 扁钢 5016 件号栏必须按图纸的层次逻辑关系编制代码,不允许空拦。B.图号或标准号栏:应准确使用图号,注意装配图、部件图、零件图之间的层次逻辑关系;按技术条件准确合理的选用技术标准。此栏可以是空栏。C.名称栏:仅填写物料的名称,此栏中不再填写物料的型号规格。原则上必须保证一种物料对应一个名称,属于原材料或标准件、基础件的物料其名称按对应技术标准中的名称填写。例:钢板、无缝钢管、扁钢、槽钢、等边角钢、不等边角钢、工字钢、平垫圈、弹簧垫圈、螺栓、螺母等以便于物料分类和查询,改变过去同一物料名称五花八门的混乱现象。 系统具备自动识别功能,输入名称更新后系统会自动定义物料分类字段:例如:名称:钢板 物料分类:板材 名称:扁钢 物料分类:型材名称:螺栓 物料分类:标准紧固件 名称:法兰物料分类:管道件名称栏不允许空拦。D.型号规格栏:应正确表达物料型号规格的含义,规范书写型号规格的格式。例如钢材形象符在实际使用中受中西文及取字方式的影响比较混乱,所有在图纸明细表中不再使用,但必须在名称栏内按设计手册的材料名称填写清楚。例如:名称:钢板 型号规格:=10(希腊小写字母 及等号与数字连用,表示板材厚度)名称:槽钢 型号规格:25b名称:螺栓 型号规格:M1660名称:扁钢 型号规格:5016 (宽、数学乘号、厚)。名称:槽钢 型号规格:25b (槽钢型号)表示,不要用形象字符如: 【等。名称:不等边角钢 型号规格:50324 (长边 短边边厚)表示,不要用形象字符例:L、 等。名称:无缝钢管 型号规格:385 (希腊小写字母 、外径、数学乘号、壁厚)。名称:工字钢 型号规格:25b (工字钢型号)表示,不要用形象字符例: 等。名称:圆钢 型号规格:40 (希腊小写字母 、外径)表示。名称:螺栓 型号规格:M20100 (大写 M、外径、数学乘号、长度)名称:活接螺栓 型号规格:M20100 (大写 M、外径、数学乘号、长度)名称:细牙螺栓 型号规格:M101 (大写 M、外径、数学乘号、螺距)长度 L=在备注栏填写。原则上按技术标准书写,型号规格栏允许空拦。 E.数量栏 :整数用阿拉伯数字表示,小数用阿拉伯数字加英文状态下”.” 表示。例:名称:钢板 型号规格:=8 数量:101.8 KG 名称:扁钢 型号规格: 5016 数量:10 件名称:圆钢 型号规格:40 数量:100 KG数量栏数据必须唯一,不允许出现两个以上数据,不允许有非计算字符存在(如:/ * ( )等),数量栏不允许空拦。 例:以下数量的表述格式是错误的名称:钢板 型号规格:=8 数量:101.8/ 109.8 KG 名称:扁钢 型号规格: 5016 数量:各 10 件名称:圆钢 型号规格:40 数量:(100) KGF.材料栏:保留过去图纸材料栏的书写方式。本栏反映了物料结构性质、材质、性能级别、热处理、特殊工艺等例:结构性质:部装、部件、组件材质:Q235-A 、Q235-B、65Mn性能级别:4.8 级、8.8 级、200HV 等系统已作了部份规范,有待进一步完善和扩充,操作者也可在技术标准中自行选用,材料栏允许空拦。G.单重栏:整数用阿拉伯数字表示,小数用阿拉伯数字加英文状态下”.” 表示。例:名称:钢板 型号规格:=8 单重:101.8 KG 名称:扁钢 型号规格: 5016 单重:10 KG名称:圆钢 型号规格: 40 单重:100 KG单重栏数据必须唯一,不允许出现两个以上数据,不允许有非计算字符存在,单重栏允许空拦。 例:以下单重的表述格式是错误的名称:钢板 型号规格: =8 单重:101.8/ 109.8 KG 名称:扁钢 型号规格: 5016 单重:各 10 KG 名称:圆钢 型号规格: 40 单重:(100) KGH. 总重栏:整数用阿拉伯数字表示,小数用阿拉伯数字加英文状态下”.” 表示。例:名称:钢板 型号规格:=8 总重:101.8 KG 名称:扁钢 型号规格: 5016 总重:100 KG名称:圆钢 型号规格:40 总重:2000 KG总重栏数据必须唯一,不允许出现两个以上数据,不允许有非计算字符存在,总重栏允许空拦。 例:以下总重的表述格式是错误的。名称:钢板 型号规格:=8 总重:101.8/ 109.8 KG 名称:扁钢 型号规格: 5016 总重:各 10 KG 名称:圆钢 型号规格:40 总重:(100) KG名称:组件 型号规格: 总重: / I.备注栏:在此栏中表达需要简单说明的事项或在其他栏无法表达的内容。例:名称:钢板 型号规格:=16 总重:955 KG 备注:上板按 2000 板宽 名称:扁钢 型号规格: 5016 总重:100 KG 备注:L=568 8PCS 名称:圆钢 型号规格:40 总重:52 KG 备注:拉杆 L=2921 8PCS 名称:钢管 型号规格:323 总重:2 KG 备注:接管 L=180 2PCS名称:钢管 型号规格:29910 总重:20.7 KG 备注:内筒体 L=200备注:外协(配套标准件) 备注栏允许空拦。 开发人员在程序设计中要注意用空格处理空拦的 NULL 值,否则会引起取数程序中断,造成取数不完全的结果。采用人性化的设计思路和方法技巧数据库管理功能模块应简明实用,采用人性化的设计思路尽可能的把需要记忆和重复操作的事情交给计算机去做。系统的输入、查询、编辑应有联想功能,既考虑计算机程序的结构化又设法尊重人的工作习惯,两者巧妙地结合,在程序设计的技巧上采取一些有效措施,完全可以做到小软件解决大问题。例如在系统中内嵌输入联动、指定位置插入、习惯编码转换、金属材料重量随机计算器、结构树、数据库自动压缩等程序。优化和规范 CAD 图纸明细表取数及工艺文件(简称工单 )的业务流程CAD 图纸明细表取数及工艺文件制作涉及各项业务和多个部门,因此设计开发时必须从系统的角度全面的考虑问题,以最短的路径、最完善的功能、最可行的布局来安排业务流程。参考例证如下:三、结束语笔者已经成功的完成了自动提取 CAD 明细表与数据库管理信息系统的研究与实践。从 CAD 提取明细表后其数据一方面进入 EXCEL,使用 EXCEL 手工制作工艺文件;另一方面可自动进入数据库系统按照程序制作工艺文件。经测试:在 CPU2.8G 内存 1G 的电脑上提取一套
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职高考对口升学(理论考试)真题卷【生物与化工大类】模拟练习
- IMGN388-Antibody-生命科学试剂-MCE
- Human-TNFSF8-mRNA-生命科学试剂-MCE
- 2025年芜湖安徽工程大学高层次人才招聘60人模拟试卷及一套答案详解
- Golgi-laurdan-生命科学试剂-MCE
- 广平县安全培训课件
- 2025春季海南五指山市校园招聘教师15人模拟试卷附答案详解(模拟题)
- 2025年南京鼓楼医院集团安庆市石化医院招聘19人模拟试卷及答案详解(考点梳理)
- 2025内蒙古自治区农牧业科学院招聘48人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年中心供应室项目发展计划
- 2025-2026学年北师大版(2024)小学数学三年级上册《综合实践:校园里的八个方向》教学设计
- GB/T 46238-2025淡水水下搜救机器人通用技术条件
- 创造性思维训练题库及答案
- 2025版施工合同主体变更与工程竣工结算协议
- 2025年医院麻醉科服务优化计划
- 选矿技术基础知识培训课件
- 校车安全管理操作规范
- 2025-2026学年苏科版(2024)初中物理九年级上册教学计划及进度表
- 劳技鉴别织物课件
- 2025年北京市天文知识竞赛(小学组)历年参考题库含答案详解(5卷)
- 热压罐安全操作规程
评论
0/150
提交评论