CAPP的研究與開發(fā)為工藝設(shè)計(jì)提供了有效的輔助,是銜接設(shè)計(jì)過程和制造過程的關(guān)鍵。在工藝設(shè)計(jì)中,工藝卡片是指導(dǎo)工人完成現(xiàn)場(chǎng)加上的依據(jù):不同企業(yè)的工藝卡片不僅種類繁多,而且各不相同;同時(shí)隨著企業(yè)的發(fā)展、產(chǎn)品類型的豐富以及工藝水平的進(jìn)步,工藝卡片的格式還在不斷的變化。傳統(tǒng)的CAPP交互技術(shù)已不能滿足這種格式變換的要求,因此,制定適合企業(yè)的工藝卡片格式,并能夠隨著企業(yè)的發(fā)展對(duì)這些文件格式進(jìn)行方便靈活的修改,就成了CAPP系統(tǒng)應(yīng)具有的一個(gè)非常重要的功能,也是日前CAPP系統(tǒng)研究的重要內(nèi)容。 針對(duì)以上問題,本文提出一種基于XML的模板定制技術(shù),允許工藝人員根據(jù)自己需要的格式繪制出相應(yīng)的工藝卡片,并能夠?qū)ι傻墓に嚹0暹M(jìn)行調(diào)整和修改,從而為同一類型的工藝文件提供了一致的交互,也為實(shí)現(xiàn)CAPP系統(tǒng)的通用性和實(shí)用性打下重要基礎(chǔ)。 1 模板組成對(duì)象分析 由于工藝卡片是工藝人員工作的主要對(duì)象,因此CAPP系統(tǒng)必須能夠?qū)崿F(xiàn)工藝卡片的計(jì)算機(jī)描述,即所謂的"工藝文件模板"。 模板是對(duì)工藝文件格式的抽象,因此在確定模板的組成對(duì)象之前,必須對(duì)工藝文件進(jìn)行深人的分析。盡管CAPP工藝卡片類型繁多,但對(duì)工藝卡片進(jìn)行分析后可以看出,卡片是由一系列單元格組成的。單元格可以分為固定格、變量格、對(duì)象格和循環(huán)格四種。包含單位名稱等固定內(nèi)容的單元格定義為固定格;包含產(chǎn)品名稱、產(chǎn)品工號(hào)、零件名稱、零件圖號(hào)等內(nèi)容,隨產(chǎn)品、零件的不同而變化的單元格定義為變量格;包含工序圖或復(fù)雜數(shù)據(jù)的單元格定義為對(duì)象格;包含工序、工步等多行記錄內(nèi)容的單元格定義為循環(huán)格。固定格的內(nèi)容在卡片設(shè)計(jì)時(shí)確定,變量格、對(duì)象格和循環(huán)格的內(nèi)容在工藝設(shè)計(jì)時(shí)由用戶填寫。在設(shè)計(jì)卡片時(shí)用戶可以對(duì)每一個(gè)單元格進(jìn)行定義。 以鍛壓工藝卡為例,如圖1所示,說明工藝文件模板的元素分解。 圖1 工藝文件模板的元素分解 由于每張工藝卡片均可以看成是方框型單元格的集合,按照區(qū)域分治的原則對(duì)其進(jìn)行抽象,可以將一張卡片劃分成五個(gè)區(qū)域:表頭區(qū)、表中區(qū)、版本區(qū)、編校區(qū)和附件區(qū). (1)表中區(qū)是卡片中需要填人多行數(shù)據(jù)的,如工序部;(2)版本區(qū)包括版本、修訂號(hào)、編號(hào)和修改欄等;(3)編校區(qū)包括編制、校對(duì)、標(biāo)審、審核等; (4)附件區(qū)是需要插人圖片的單元格,如工藝簡(jiǎn)圖部分和熱處理規(guī)范部分;(5)不屬于以上四個(gè)區(qū)域的單元格就歸為表頭區(qū),通常包括產(chǎn)品名稱、產(chǎn)品工作號(hào)、部件名稱和部件圖號(hào)等。 經(jīng)過這樣的抽象以后,在CAPP系統(tǒng)中,并不存在任何一張真正意義上的工藝卡片,也不以文件的形式將任何已生成好的工藝卡片保存在磁盤上,所有的數(shù)據(jù)皆存儲(chǔ)于后臺(tái)數(shù)據(jù)庫(kù)中,包括工藝庫(kù)、資源庫(kù)、報(bào)表模板庫(kù)以及其它各種共享數(shù)據(jù)庫(kù)。結(jié)合一定的編碼規(guī)則,將一張張工藝卡片與其所需的產(chǎn)品數(shù)據(jù)及工藝數(shù)據(jù)一一關(guān)聯(lián)起來,從而形成"虛擬工藝卡片",并將其存儲(chǔ)于虛擬上藝卡片庫(kù)中。當(dāng)需要顯示或輸出工藝卡片時(shí),系統(tǒng)自動(dòng)激活所有的鏈接關(guān)系,并將數(shù)據(jù)填人報(bào)表模板的相應(yīng)欄位中,從而顯示或打印出真正的工藝文檔。 "虛擬工藝卡片"的概念充分體現(xiàn)了數(shù)據(jù)庫(kù)技術(shù)的優(yōu)越性,后臺(tái)數(shù)據(jù)庫(kù)中的各種數(shù)據(jù)既互相關(guān)聯(lián)又相互獨(dú)立。當(dāng)某一卡片的格式改變時(shí),系統(tǒng)會(huì)自動(dòng)更新與該模板有關(guān)的所有虛擬工藝文件,這種改變只會(huì)影響到數(shù)據(jù)庫(kù)中的某一張二維表,而不會(huì)影響其它任何數(shù)據(jù)。同時(shí)"虛擬工藝卡片"極大地節(jié)省了硬盤空間,而且不存在新舊工藝卡片之間的轉(zhuǎn)換問題,避免了大量的重復(fù)勞動(dòng). 2 模板的數(shù)據(jù)描述 XML使用文檔來表現(xiàn)實(shí)體,而文檔中的元素代表實(shí)體的實(shí)例。文檔中的每一個(gè)標(biāo)記都是一個(gè)新元素(element )的開頭。一個(gè)XML元素包含一個(gè)起始標(biāo)記,一個(gè)結(jié)束標(biāo)記和元素的內(nèi)容;诠に嚹0宓男畔⒎纸饪芍,工藝文件模板可以看成是一個(gè)實(shí)體,而模板的各種元素可看作是實(shí)體的一系列實(shí)例,因此可以利用XML技術(shù),設(shè)計(jì)一套描述工藝卡片表格的通用XML詞匯表,在此基礎(chǔ)上,用戶可以基于這套詞匯表和DTD靈活構(gòu)建所需工藝文件模板。構(gòu)建好的工藝模板(XML文檔)經(jīng)過表格生成引擎的解析處理之后,展現(xiàn)在客戶端瀏覽器。 針對(duì)工藝長(zhǎng)片元數(shù)據(jù)描述卡片內(nèi)容區(qū)的單元格,可以用< Table >元素表示循環(huán)格,row和col分別表示行數(shù)和列數(shù),x1,y1表示方格的左上角坐標(biāo),x2,y2表示方格的右下角坐標(biāo),type表示該變量格的布局方式。< Rcet>元素定義列標(biāo)題,屬性name表示字段名,其了元素定義固定格中的一行文字,font , size, mid分別表示文字的字體、大小及位居方式。如圖2所示的循環(huán)格有3行3列,左上角坐標(biāo)為(240,61),右下角坐標(biāo)為(282,82). 由于工藝卡片類型繁多,開發(fā)CAPP系統(tǒng)時(shí)要求建立工藝卡片之間的關(guān)系,以方便檢索及與其它系統(tǒng)集成,因此需要統(tǒng)一定義工藝模板的數(shù)據(jù)字典,在新建模板時(shí)以此為依據(jù)進(jìn)行數(shù)據(jù)關(guān)聯(lián)。 3基于XML的模板定制技術(shù) 由模板組成對(duì)象分析可知,模板定制實(shí)際上就是將一種類型的工藝卡片格式分解成固定格、變量格、對(duì)象格、循環(huán)格等模板子元素,并借助交互式手段分別生成的過程,因此有必要對(duì)各子元素的生成模式及屬性定義進(jìn)行分析。 3.1模板子元素生成模式分析 由于模板被看作是一個(gè)XML文檔實(shí)體,因此生成模板的過程實(shí)際上就是新建一個(gè)XML文檔的過程。而新建模板子元素就對(duì)應(yīng)為創(chuàng)建XML文檔的一個(gè)節(jié)點(diǎn)。 為創(chuàng)建一個(gè)新的文檔對(duì)象,必須建立一個(gè)新的Msxml2.DOMDocument范例,相應(yīng)得C++代碼如下: 在創(chuàng)建DOMDocument對(duì)象之后,可以為不同類型的語法分析行為和處理行為設(shè)置標(biāo)記,裝載XML文檔,在文檔內(nèi)部建立新節(jié)點(diǎn)以創(chuàng)建不同的模板子元素。 3.2對(duì)象屬性的定義 為了定制各子元素在工藝模板中的位置和其他一些必要的信息,需要對(duì)各子元素對(duì)象賦予相應(yīng)的屬性。XML提供的屬性操作方法來自IXMLDOMElement,可以通過IXMLDOMEIement的setAttribute方法設(shè)置其屬性。對(duì)象的屬性分析如下: (1)各對(duì)象的公共屬性。由于各子元素為一系列的單元格,因此都包含表格坐標(biāo)值、線形等公共屬性。此外還需要對(duì)各單元格的卡片區(qū)域?qū)傩赃M(jìn)行設(shè)置。 (2)固定格。固定格中的內(nèi)容在表格設(shè)計(jì)時(shí)已經(jīng)確定,為了實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的關(guān)聯(lián),需要設(shè)置字段名屬性,另外它需要包含"字體"子元素,用來設(shè)置文字的屬性。 (3)變量格。變量格中的內(nèi)容是由用戶填寫的,需要設(shè)置表格的布局方式,它包含固定格子元素。 (4)循環(huán)格。循環(huán)格也包含固定格子元素。另外由于其含有多行記錄,因此除了設(shè)置表格的布局方式外,還需要對(duì)行列屬性進(jìn)行設(shè)置。 (5)對(duì)象格。對(duì)象格是填寫工序圖或其它復(fù)雜數(shù)據(jù)的單元格,需要對(duì)圖形或其他復(fù)雜數(shù)據(jù)的來源屬性進(jìn)行設(shè)置。 模板各對(duì)象生成之后,模板定制的工作基本完成了。構(gòu)建好的工藝模板以XML文檔的形式存儲(chǔ)。再次打開該模板時(shí),只要對(duì)相應(yīng)的XML文檔進(jìn)行解析處理,就可以將原工藝卡片展現(xiàn)在客戶端瀏覽器上。 3.3模板格式的交互式修改 當(dāng)模板各對(duì)象生成之后,有時(shí)其格式還不能滿足要求,需要對(duì)其做一系列的調(diào)整才能最終形成一個(gè)格式良好的工藝模板。這種修改包括表格位置、表格線形、字段名稱、固定格文字內(nèi)容屬性等的修改。 在進(jìn)行表格修改時(shí),只要選中一個(gè)單元格,就將彈出相應(yīng)的表格屬性設(shè)置對(duì)話框,用戶可以對(duì)其屬性進(jìn)行修改(如圖3所示)。 用戶點(diǎn)擊"修改"后,所做的修改將被保存到相應(yīng)的XML文檔中,同時(shí)界面即刻被刷新,顯示為修改后的模板內(nèi)容。 4 結(jié)論 通過對(duì)工藝卡片的分析,將工藝模板抽象為由固定格、變量格、對(duì)象格和循環(huán)格組成的實(shí)體,借助交互式手段分別生成其子元素,并將構(gòu)建好的工藝模板保存為XML文檔,從而完成了模板定制過程。實(shí)踐證明,這種交互式模板定制技術(shù)對(duì)于實(shí)現(xiàn)CAPP系統(tǒng)的通用性和商品化具有重要的意義。 |