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