分散机厂家
免费服务热线

Free service

hotline

010-00000000
分散机厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

三维CAD与BOM管理系统的接口研究座人

发布时间:2021-10-29 09:31:56 阅读: 来源:分散机厂家

三维CAD与BOM管理系统的接口研究

引言

随着制造业对CAD技术的广泛应用,相应地CAD设计信息也越来越庞大,对这些设计信息的管理成为迫切的任务。目前流行的BOM(Bill Of Material)管理为企业的这种信息管理提供了很好的解决方案。CAD与BOM管理系统间的信息传递和反馈是解决问题的前提条件。

1 BOM管理简介

BOM是产品结构的关系表述,而BOM管理是产品数据组织与管理的一种形式,它以数据库为底层支持,以BOM表为其组织核心,把定义最终产品的所有工程数据和文档联系起来,实现产品数据的组织、管理和控制,并在一定目标或规则约束下,向用户或应用系统提供产品结构不同视图的描述。

2 BOM接口的开发

BOM接口是在CAD支撑软件的基础上进行二次开发,实现CAD与BOM管理系统信息集成的软件模块。主要包含两方面的功能,首先是BOM管理系统与CAD软件之间的产品信息传递、反馈功能;其次是编码功能。

BOM管理系统与CAD的信息传递

图1 是BOM系统三维CAD与BOM管理系统的接口研究座人

与CAD的产品信息传递流程。BOM接口的工作过程是:CAD设计人员从三维CAD装配图中抽取BOM信息保存到数据库中,使CAD中的设计信息能够被BOM管理系统识别和处理,并将处理后的信息反馈给设计者。BOM管理系统是从属于PDM 的一个子系统。

装配树的遍历算法

三维CAD是以树型结构组织装配中的组件和零件,而在数据库中则通过记录装配树各组成结点间的父子关系、兄弟关系来保存BOM树结构。因此,BOM管理功能模型中,诸如BOM的存储、读取、查询、配置、比较等都离不开树的遍历,可以说树的遍历是BOM管理最基本、最关键的算法,它的优劣直接关系到软件的运行效率。

对装配树的遍历通常有两种方法:广度遍历和深度遍历。

广度遍历

装配树的广度遍历是按照先兄后子的顺序进行的,即先对装配树中同一层次搜索完成后,再对同一层上的每个结点进行同一层的子项搜索。

深度遍历

图2 为深度遍历的逻辑流程图,装配树的深度遍历是按照先子后兄的顺序进行的,即先对装配树中每一结点判断是否有子项,直至子项为空,即到达终端结点;再对终端结点判断是否有兄弟项,若有兄弟项存在,对兄弟项结点继续套用搜索子项的方式,把兄弟项结点看作父结点;若无兄弟项存在,则返回父项层,判断父项的兄弟项是否存在,套用上述搜索兄弟的方式,直到最顶级的根结点。

以SolidWorks为例,遍历过程的部分代码如下:

(1) 得到装配图中装配树的根:

HRESULTres=S_OK;

LPCONFIGURATION pConfiguration= NULL;

LPMODELDOC pModelDoc= NULL;<

/p>

LPCOMPONENT pRootComponent= NULL;

long RecurseLevel= 0;

LPSLDWORKS

pTemp= TheApplication- > GetSWApp () ;

respTemp- > get_IActiveDoc (&pModelDoc) ;

if (S_OK! = res pModelDoc== NULL)

return;

if (pModelDoc-> IGetActiveConfiguration

(&pConfiguration) = = S_OK )

{pConfiguration- > IGetRootComponent

(&pRootComponent) ;}

(2) 从装配树根开始,对装配树进行遍历,部分代码如下:

int TraverseChildren ( long RecurseLevel,

LPCOMPONENT pComponent)

{

LPCOMPONENT3 pCh ildren = NULL;

int nChildren= 0;

HRESULT hres= S_ O K;

BSTR Name;

hres = pComponent- > get_Name (&Name) ;

g_JianHaoArray1Add (Name) ;

if (S_OK = = hres nChildren> 0)

{

pCh ildren =

new L PCOM PON EN T [nCh ildren ];

h res=

pComponent- > IGetCh ildren ( (L PCOM PON EN T3

3 ) &pCh ildren) ;

pComponent- > get_Name (&parent) ;

if (S_ O K = = h res) {

Recursively t raverse the ch ildren

fo r ( i= 0;i Release () ;

}}

delete[ ]pCh ildren;}

RecurseL evel- - ;

return nChildren;

}

BOM接口对数据库的操作

图3 为BOM接口主界面三维CAD与BOM管理系统的接口研究座人

,本文使用ADO(ActiveX Data Object) 实现对数据库的操作。下面介绍在VC++中使用ADO的方法:

(1) 初始化COM库,引入ADO库定义文件。

(2) 用Connection 对象连接数据库。

(3) 利用建立好的连接,通过Connection、Command 对象执行SQL 命令,或利用Recordset对象取得结果记录集进行查询、处理。

(4) 使用完毕后关闭连接释放对象。

在SolidWorks环境下对数据库操作的部分代码如下:

StsAfx1h

# impo rt“C: P rogramF iles CommonF iles System

ado m sado151dll”no_ namespace rename (“EO F”,

“adoEO F”) 引入ADO 库定义

BOM1cpp

long InitU serDLL 3 (L PSLDWORKS pSldWo rk s)

{

A fxO le Init () ; 初始化COM 库

}稳定性

ReadWriteClass1cpp

BOOL ReadW riteClass::L inkDatabase ( )

{

h r= m_ Connect ion1Create Instance

(“ADODB1Connect ion”) ; 创建Connect ion 对象

}

BOM接口中的编码功能

编码是把一定的意义、信息转换为代码的过程。所谓“码”就是按照一定规则排列起来的符号或信号序列。在企业信息管理中主要用到的编码是信息分类编码。所谓分类编码就是按照一定的规则选用一定数列的字码对企业信息进行描述和识别。通过分类编码可以使企业信息客观存在的各种特征的相似性明朗化、代码化,从而为计算机进行处理和识别提供可靠和有利的条件。制造业的信息编码主要有两类:产品和物料编码、文档编码。

信息编码是企业实施信息管理的基础。下面从编码体系的设计原则、编码构成的共性、编码器的开发三个方面来讨论BOM管理中编码的实现。

编码体系的设计原则

编码体系的设计一般遵循如下原则:

(1) 编码信息分类要体现科学化、标准化、规范化、合理化。

(2) 参照国家标准中有关分类标准体系。

(3) 保证编码的唯一性、可扩展性和方便性。

在实际应用中还必须重视编码的直观性、实用性和继承性。按这些原则进行编码的方法有两种:一分别表示螺栓材料的公称抗拉强 度值和屈强比值种是独立编码;一种是非独立编码。以前由于没有计算机管理,企业必须将产品的结构信息反映在编码上,只好采用非独立编码,非独立编码产生的借用件问题给企业的产品管理带来了很大的不便。随着计算机的普及,产品的结构信息可以由计算机记录而不需要编码来反映。所以,现在大多数制造企业都倾向于采用独立编码。

编码构成的共性

通过对制造企业各种编码分析,发现它们的编码结构均可以分为以下几个部分:系列码、识别码、固定码、尾号。

(1) 系列码:系列代码是在对具体的“实体”给定唯一的代码之前,依据其一种可见的属性或易于确认的、永久不变的特征给定码值。

(2) 识别码:识别码与系列码结合在一起就表示了唯一的一种实体,在编码设计时,可以在识别代码的固定码位上设置类别编码,以便计算机识别。

(3) 固定码:固定码是为了识别、检索、记忆而特别设置的特殊代号,在编码时占一个码位的位置。

(4) 尾号:尾号是物料(零件检测人员专用) 改进、升级的标识,仅尾号不同的物料一般具有替换性。

编码器的开发与实现

在编码器的开发中,先调用企业内部的编码方案,一旦编码方案定义好后,就可以进行编码了搭接钢精等,其具体的编码过程如下:

(1) 选择要编码的零部件。

(2) 选择编码方案。

(3) 根据编码方案从数据库中选择编码规则。

(4) 根据规则进行编码。

(5) 将新码作为该零部件子项加入装配。

图4 就是在SolidWorks中用来编码的编码器主界面。

3 接口的移植与重用

由于企业中有可能使用多种CAD软件,而这些CAD都必须与BOM管理系统集成,若每个CAD都从头开发BOM接口,其工作量之大可想而知,因此模块化的开发是必然的选择。模块化开发的基本要求是适当划分功能模块,重用功能模块以求得最佳开发效率。对于本文所述BOM接口应尽可能将与CAD无关的部分独立出来,成为各种异质CAD的共用模块。本文以SolidWorks为基础开发出BOM接口,然后将其移植到CATIA、UG、SolidEdge中。

公共模块的提取和封装

BOM接口中对于数据库的访问及编码是与CAD相对独立的部分,因此将这两部分独立出来封装成为自动化对象。自动化技术是微软开发的用于实现不同编程语言间的组件重用和支持应用程序间互操作的一项技术。通过这一技术使得用VC++编的程序被封装成可以被VB 使用的组件。这种组件向客户程序提供属性、方法作为访问的接口。客户程序创建自动化组件实例,调用它的方法,并返回计算结果。

CAD的二次开发

公共模块提取并封装好之后,剩下的工作是针对不同CAD支撑软件进行二次开发,使CAD能使用这些组件。由于自动化组件既可以被VC++使用也可被VBA及任何支持自动化技术的开发工具使用,因此该组件能适应大多数CAD软件。以CATIA 为例,它既有以C++为开发语言的CAA ,也有以VBA 为开发工具的宏开发方式,这两种方法都可以使用该组件。在对UG、SolidEdge 进行少量二次开发后即可使用该组件,这样就大大减少了不必要的重复开发,提高了开发效率。

4结束语

本文利用三维CAD提供的二次开发编程接口,以VC作为开发工具,对原有三维CAD的功能进行了很好的扩展。它不仅实现了设计信息的BOM管理,还为企业内部的资源共享和协同设计打下了良好的基础。(end)

乳结泰胶囊可以治疗乳腺增生吗
乳腺增生需要散结消肿吗
乳结泰胶囊对女性乳房肿块有效吗
乳结泰胶囊可以治疗乳腺增生吗