您的位置:网站首页 > CAD新闻

CAPP模板定制系统的研究与开发

时间:2011-02-26 19:30:56 来源:

引言

由于工艺设计是个性化很强的工作,不同企业的工艺卡片格式千差万别,即便是一个企业内部,为响应市场对产品的快速要求,实际工艺设计的卡片格式也经常变动。因此制定适合企业的工艺卡片格式,并能够随着企业的发展对这些文件的格式进行方便灵活的修改,就成了CAPP系统的一个重要功能,也是计算机辅助设计的重要研究内容。

1 工艺模板定制系统框架

整个模板定制系统的主体是工艺模板管理,包括对已有模板的修改以及新模板的定制。系统模型如图 1所示。

newmaker.com

从实现工艺模板定制模块的角度分析,工艺模板定制主要包含工艺卡片绘制以及工艺卡片描述2个部分。工艺卡片绘制涉及到图形绘制、图形捕捉和图形修改等过程。对应于工艺卡片描述部分,系统采用了XML对工艺卡片进行描述,并将相应的XML文档保存到工艺文件库中。

2 工艺模板的信息模型

2.1 工艺模板组成对象分析

模板是对工艺文件格式的抽象,在确定模板组成对象之前,必须对工艺卡片进行深人的分析,对工艺卡片的元素进行分解。

a.静态格。在表格设定时静态格的内容就已固定,它不需要与工艺设计数据库关联,由定制模板时写人数据,工艺员在编制工艺时不能对其修改。

b.动态格。动态格只有一行记录,该行记录由"单元格属性"唯一确定,其内容在工艺设计时由工艺员填写。动态格中的数据需要和工艺设计数据库中的表动态关联,数据的变化直接反映到数据库中。

c.循环格。循环格中包含的数据相对多变,需要与工艺设计数据库关联,在数据库中需要由 2个关键字来惟一确定单元格中的一行数据。比如在《工艺流转卡》中的"工步内容"单元格中的各行记录需要由"单元格属性"和"工序号"来确定。

d.对象格。对象格是动态格中的一个特例,包含图形或其它复杂数据。如《工艺简图》中的"工序图"单元格为对象格。下面以《工艺简图》为例,给出分解后的工艺模板模型,如图2所示。

在开发CAPP模板定制系统时将面向对象的思想引人模板的处理中,模板的各种元素可以看作是一系列的对象,对模板的处理细化为对这几种对象的处理。

2.2 工艺模板的数据描述

系统采用 XML对所有工艺卡片进行描述。

XML使用文档来表现实体,而文档中的元素代表实体的实例。文档中的每一个标记都是一个新元素(element)的开头。一个 XML元素包含一个起始标记、一个结束标记和元素的内容。基于工艺模型实体,而模板的各种元素可看作是实体的一系列实例,因此可以利用XML技术,设计一套描述工艺卡片表格的通用XML词汇表,在此基础上,用户可以基于这套词汇表和DTD灵活构建所需工艺文件模板。构建好的工艺模板(XML文档)经过表格生成引擎的解析处理之后,展现在客户端浏览器上系统通过对 XML文档解析生成元数据树,之后再显示为工艺卡片的形式,系统中并不存在一张真正意义上的表,所有工艺卡片对应为XML文档。

因此模板定制的关键是提供一种交互式卡片绘制功能,并将用户绘制的工艺卡片转换为相应的XML文档描述。

3 基于XML的模板定制技术

3.1 模板子元素的创建

通过对模板组成对象分析可知,模板定制实际上就是将一种类型的工艺卡片格式分解成静态格、动态格、对象格及循环格等模板子元素,并借助交互式手段分别生成的过程。在本系统中,模板被看作是一个XML文档实体,因此生成模板的过程实际上就是新建一个 XML文档的过程,而新建模板子元素就对应为创建XML文档的一个节点。为了保证新建的XML文档能够被系统解析,创建的XML文档必须符合 Schema的定义。

为创建一个新的文档对象,必须建立一个新的Msxml2.DOMDocument范例,下面是相应的 C++代码:

IXMLDOMDocumentPtrm_pXMLDoc;
m_pXMLDoc.CreateInstance(_T("msxml2.domdocument"));

在创建 DOMDocument对象之后,可以为不同类型的语法分析行为和处理行为设置标记,装载XML文档,在文档内部建立新节点,以创建不同的模板子元素,从而生成一张完整的工艺卡片。

3.2 工艺卡片的绘制

新建模板以后,用户可以在初始模板上进行工艺卡片的绘制工作。绘图时系统采用 Windows图形设备接口(GDI)。通过对工艺卡片的元素分解可知,卡片是由一系列的单元格组成的,因此绘图时的主要工作是矩形框的绘制。

在绘图开始之前,需要获取设备描述表句柄,此外还需要获取设备描述表信息,设置 GDI的映射方式等。在画图时,可以选择画笔的颜色及线宽,在界面的状态栏中将根据画笔的移动动态显示其坐标值。此外系统还提供了"橡皮条"的功能,即随着鼠标的移动动态显示图形,从而使得操作直观。

3.3 模板子元素对象属性的定义

画图结束以后,系统将屏幕上的图形临时保存到链表中,图形的坐标等信息都存储在其中。此时,图形元素并没有加到卡片模板中,必须对其属性进行定义后才能将图形元素保存。在定义图形元素属性时,系统提供了图形元素的拾取功能。图形元素被选中以后,可以对其赋予相应的属性。XML提供的属性操作方法来自IXMLDOMElement,可以通过IXMLDOMElement的setAttribute方法设置其属性。现将模板子元素的属性进行分析:

a.静态格属性。静态格中的内容在表格设计时已经确定,它需要包含"字体"子元素,用来设置文字的属性,字体子元素属性包括字体名称、大小等。

b.动态格属性。动态格中的内容是由用户填写的,需要设置表格的布局方式,它包含固定格子元素。为了实现与数据库的关联,还需要设置字段名属性及对应的数据库表名。通过这种对应关系不仅在工艺编辑的时候可实现工艺数据在数据库中的直接存取,而且为工艺数据的开放式管理奠定基础。

c.循环格属性。循环格的属性与动态格类似。由于其含有多行记录,需要对行列属性进行设置。

d.对象格属性。对象格是填写工序图或其它复杂数据的单元格,需要对图形或其它复杂数据的来源进行设置。

e.各对象的公共属性。由于各子元素为一系列的单元格,因此都包含表格坐标值、线形等公共属性。还需要对各单元格的卡片区域属性进行设置。在对模板子元素属性进行定义后,需要保存结果才能将图形元素加到卡片模板中。此时需要采用XML的save方法:m_pXMLDoc.save(sXMLDocName)。保存成功以后,图形界面随即被更新,显示出最新的卡片模板格式。

3.4 模板格式的交互式调整

当模板各对象生成之后,有时其格式还不能满足要求,需要对其做一系列的调整才能最终形成一个格式良好的工艺模板。

a.单元格位置的调整。选中所要调整的单元格以后,可以通过系统的位置调整功能进行调整。单元格位置调整有 2种实现方式:初级调整和精确调整。初级调整是通过移动选中的单元格进行粗略的调整,移动提供了"橡皮条"的处理方式,动态地拖的坐标值,包括水平方向和竖直方向的移动值。

b.单元格大小的调整。由于在卡片定制时绘制出的单元格通常是任意画出的,因此单元格的大小尺寸往往不够精确。在系统中提供了任意改变单元格大小的功能,如等高、等宽和改变单元格高度、改变单元格宽度等功能。当用户选中了一种单元格后,会弹出对话框,用户可以通过输人具体的数值对单元格的高度或宽度进行调整。

c.字段名称的调整。有时候用户需要改变单元格的字段名称,以改变其与数据库的关联。只要选中一个单元格,将弹出相应的属性设置对话框,用户可以对该单元格的字段名称进行修改。

d.静态格属性的调整。静态格内容的调整和字段名称的调整类似,只要选中需要调整的静态格,就将弹出属性更改对话框,可对单元格属性进行调整,包括静态格的文本、字体及对齐方式等的调整。综上所述,用户以一种交互式的手段调整生成的模板子元素的大小、位置和属性,经调整后,模板定制工作就完成了。模板定制流程如图3所示。

newmaker.com

4 结束语

通过对工艺卡片的组成元素进行分解,将工艺模板抽象为由静态格、动态格、对象格和循环格组成的实体,借助交互式手段进行工艺模板的绘制与定义,并将构建好的工艺模板保存为XML文档,完成了模板子元素的加载,从而实现了工艺模板的定制过程。实践证明,这种交互式模板定制技术对于实现CAPP系统的通用性和商品化具有重要的意义。