引言
由于工藝設(shè)計(jì)是個(gè)性化很強(qiáng)的工作,不同企業(yè)的工藝卡片格式千差萬別,即便是一個(gè)企業(yè)內(nèi)部,為響應(yīng)市場對產(chǎn)品的快速要求,實(shí)際工藝設(shè)計(jì)的卡片格式也經(jīng)常變動(dòng)。因此制定適合企業(yè)的工藝卡片格式,并能夠隨著企業(yè)的發(fā)展對這些文件的格式進(jìn)行方便靈活的修改,就成了CAPP系統(tǒng)的一個(gè)重要功能,也是計(jì)算機(jī)輔助設(shè)計(jì)的重要研究內(nèi)容。
1 工藝模板定制系統(tǒng)框架
整個(gè)模板定制系統(tǒng)的主體是工藝模板管理,包括對已有模板的修改以及新模板的定制。系統(tǒng)模型如圖 1所示。

從實(shí)現(xiàn)工藝模板定制模塊的角度分析,工藝模板定制主要包含工藝卡片繪制以及工藝卡片描述2個(gè)部分。工藝卡片繪制涉及到圖形繪制、圖形捕捉和圖形修改等過程。對應(yīng)于工藝卡片描述部分,系統(tǒng)采用了XML對工藝卡片進(jìn)行描述,并將相應(yīng)的XML文檔保存到工藝文件庫中。
2 工藝模板的信息模型
2.1 工藝模板組成對象分析
模板是對工藝文件格式的抽象,在確定模板組成對象之前,必須對工藝卡片進(jìn)行深人的分析,對工藝卡片的元素進(jìn)行分解。
a.靜態(tài)格。在表格設(shè)定時(shí)靜態(tài)格的內(nèi)容就已固定,它不需要與工藝設(shè)計(jì)數(shù)據(jù)庫關(guān)聯(lián),由定制模板時(shí)寫人數(shù)據(jù),工藝員在編制工藝時(shí)不能對其修改。
b.動(dòng)態(tài)格。動(dòng)態(tài)格只有一行記錄,該行記錄由"單元格屬性"唯一確定,其內(nèi)容在工藝設(shè)計(jì)時(shí)由工藝員填寫。動(dòng)態(tài)格中的數(shù)據(jù)需要和工藝設(shè)計(jì)數(shù)據(jù)庫中的表動(dòng)態(tài)關(guān)聯(lián),數(shù)據(jù)的變化直接反映到數(shù)據(jù)庫中。
c.循環(huán)格。循環(huán)格中包含的數(shù)據(jù)相對多變,需要與工藝設(shè)計(jì)數(shù)據(jù)庫關(guān)聯(lián),在數(shù)據(jù)庫中需要由 2個(gè)關(guān)鍵字來惟一確定單元格中的一行數(shù)據(jù)。比如在《工藝流轉(zhuǎn)卡》中的"工步內(nèi)容"單元格中的各行記錄需要由"單元格屬性"和"工序號"來確定。
d.對象格。對象格是動(dòng)態(tài)格中的一個(gè)特例,包含圖形或其它復(fù)雜數(shù)據(jù)。如《工藝簡圖》中的"工序圖"單元格為對象格。下面以《工藝簡圖》為例,給出分解后的工藝模板模型,如圖2所示。

在開發(fā)CAPP模板定制系統(tǒng)時(shí)將面向?qū)ο蟮乃枷胍四0宓奶幚碇?,模板的各種元素可以看作是一系列的對象,對模板的處理細(xì)化為對這幾種對象的處理。
2.2 工藝模板的數(shù)據(jù)描述
系統(tǒng)采用 XML對所有工藝卡片進(jìn)行描述。
XML使用文檔來表現(xiàn)實(shí)體,而文檔中的元素代表實(shí)體的實(shí)例。文檔中的每一個(gè)標(biāo)記都是一個(gè)新元素(element)的開頭。一個(gè) XML元素包含一個(gè)起始標(biāo)記、一個(gè)結(jié)束標(biāo)記和元素的內(nèi)容?;诠に嚹P蛯?shí)體,而模板的各種元素可看作是實(shí)體的一系列實(shí)例,因此可以利用XML技術(shù),設(shè)計(jì)一套描述工藝卡片表格的通用XML詞匯表,在此基礎(chǔ)上,用戶可以基于這套詞匯表和DTD靈活構(gòu)建所需工藝文件模板。構(gòu)建好的工藝模板(XML文檔)經(jīng)過表格生成引擎的解析處理之后,展現(xiàn)在客戶端瀏覽器上系統(tǒng)通過對 XML文檔解析生成元數(shù)據(jù)樹,之后再顯示為工藝卡片的形式,系統(tǒng)中并不存在一張真正意義上的表,所有工藝卡片對應(yīng)為XML文檔。
因此模板定制的關(guān)鍵是提供一種交互式卡片繪制功能,并將用戶繪制的工藝卡片轉(zhuǎn)換為相應(yīng)的XML文檔描述。
3 基于XML的模板定制技術(shù)
3.1 模板子元素的創(chuàng)建
通過對模板組成對象分析可知,模板定制實(shí)際上就是將一種類型的工藝卡片格式分解成靜態(tài)格、動(dòng)態(tài)格、對象格及循環(huán)格等模板子元素,并借助交互式手段分別生成的過程。在本系統(tǒng)中,模板被看作是一個(gè)XML文檔實(shí)體,因此生成模板的過程實(shí)際上就是新建一個(gè) XML文檔的過程,而新建模板子元素就對應(yīng)為創(chuàng)建XML文檔的一個(gè)節(jié)點(diǎn)。為了保證新建的XML文檔能夠被系統(tǒng)解析,創(chuàng)建的XML文檔必須符合 Schema的定義。
為創(chuàng)建一個(gè)新的文檔對象,必須建立一個(gè)新的Msxml2.DOMDocument范例,下面是相應(yīng)的 C++代碼:
IXMLDOMDocumentPtrm_pXMLDoc;
m_pXMLDoc.CreateInstance(_T("msxml2.domdocument"));
在創(chuàng)建 DOMDocument對象之后,可以為不同類型的語法分析行為和處理行為設(shè)置標(biāo)記,裝載XML文檔,在文檔內(nèi)部建立新節(jié)點(diǎn),以創(chuàng)建不同的模板子元素,從而生成一張完整的工藝卡片。
3.2 工藝卡片的繪制
新建模板以后,用戶可以在初始模板上進(jìn)行工藝卡片的繪制工作。繪圖時(shí)系統(tǒng)采用 Windows圖形設(shè)備接口(GDI)。通過對工藝卡片的元素分解可知,卡片是由一系列的單元格組成的,因此繪圖時(shí)的主要工作是矩形框的繪制。
在繪圖開始之前,需要獲取設(shè)備描述表句柄,此外還需要獲取設(shè)備描述表信息,設(shè)置 GDI的映射方式等。在畫圖時(shí),可以選擇畫筆的顏色及線寬,在界面的狀態(tài)欄中將根據(jù)畫筆的移動(dòng)動(dòng)態(tài)顯示其坐標(biāo)值。此外系統(tǒng)還提供了"橡皮條"的功能,即隨著鼠標(biāo)的移動(dòng)動(dòng)態(tài)顯示圖形,從而使得操作直觀。
3.3 模板子元素對象屬性的定義
畫圖結(jié)束以后,系統(tǒng)將屏幕上的圖形臨時(shí)保存到鏈表中,圖形的坐標(biāo)等信息都存儲(chǔ)在其中。此時(shí),圖形元素并沒有加到卡片模板中,必須對其屬性進(jìn)行定義后才能將圖形元素保存。在定義圖形元素屬性時(shí),系統(tǒng)提供了圖形元素的拾取功能。圖形元素被選中以后,可以對其賦予相應(yīng)的屬性。XML提供的屬性操作方法來自IXMLDOMElement,可以通過IXMLDOMElement的setAttribute方法設(shè)置其屬性。現(xiàn)將模板子元素的屬性進(jìn)行分析:
a.靜態(tài)格屬性。靜態(tài)格中的內(nèi)容在表格設(shè)計(jì)時(shí)已經(jīng)確定,它需要包含"字體"子元素,用來設(shè)置文字的屬性,字體子元素屬性包括字體名稱、大小等。
b.動(dòng)態(tài)格屬性。動(dòng)態(tài)格中的內(nèi)容是由用戶填寫的,需要設(shè)置表格的布局方式,它包含固定格子元素。為了實(shí)現(xiàn)與數(shù)據(jù)庫的關(guān)聯(lián),還需要設(shè)置字段名屬性及對應(yīng)的數(shù)據(jù)庫表名。通過這種對應(yīng)關(guān)系不僅在工藝編輯的時(shí)候可實(shí)現(xiàn)工藝數(shù)據(jù)在數(shù)據(jù)庫中的直接存取,而且為工藝數(shù)據(jù)的開放式管理奠定基礎(chǔ)。
c.循環(huán)格屬性。循環(huán)格的屬性與動(dòng)態(tài)格類似。由于其含有多行記錄,需要對行列屬性進(jìn)行設(shè)置。
d.對象格屬性。對象格是填寫工序圖或其它復(fù)雜數(shù)據(jù)的單元格,需要對圖形或其它復(fù)雜數(shù)據(jù)的來源進(jìn)行設(shè)置。
e.各對象的公共屬性。由于各子元素為一系列的單元格,因此都包含表格坐標(biāo)值、線形等公共屬性。還需要對各單元格的卡片區(qū)域?qū)傩赃M(jìn)行設(shè)置。在對模板子元素屬性進(jìn)行定義后,需要保存結(jié)果才能將圖形元素加到卡片模板中。此時(shí)需要采用XML的save方法:m_pXMLDoc.save(sXMLDocName)。保存成功以后,圖形界面隨即被更新,顯示出最新的卡片模板格式。
3.4 模板格式的交互式調(diào)整
當(dāng)模板各對象生成之后,有時(shí)其格式還不能滿足要求,需要對其做一系列的調(diào)整才能最終形成一個(gè)格式良好的工藝模板。
a.單元格位置的調(diào)整。選中所要調(diào)整的單元格以后,可以通過系統(tǒng)的位置調(diào)整功能進(jìn)行調(diào)整。單元格位置調(diào)整有 2種實(shí)現(xiàn)方式:初級調(diào)整和精確調(diào)整。初級調(diào)整是通過移動(dòng)選中的單元格進(jìn)行粗略的調(diào)整,移動(dòng)提供了"橡皮條"的處理方式,動(dòng)態(tài)地拖的坐標(biāo)值,包括水平方向和豎直方向的移動(dòng)值。
b.單元格大小的調(diào)整。由于在卡片定制時(shí)繪制出的單元格通常是任意畫出的,因此單元格的大小尺寸往往不夠精確。在系統(tǒng)中提供了任意改變單元格大小的功能,如等高、等寬和改變單元格高度、改變單元格寬度等功能。當(dāng)用戶選中了一種單元格后,會(huì)彈出對話框,用戶可以通過輸人具體的數(shù)值對單元格的高度或?qū)挾冗M(jìn)行調(diào)整。
c.字段名稱的調(diào)整。有時(shí)候用戶需要改變單元格的字段名稱,以改變其與數(shù)據(jù)庫的關(guān)聯(lián)。只要選中一個(gè)單元格,將彈出相應(yīng)的屬性設(shè)置對話框,用戶可以對該單元格的字段名稱進(jìn)行修改。
d.靜態(tài)格屬性的調(diào)整。靜態(tài)格內(nèi)容的調(diào)整和字段名稱的調(diào)整類似,只要選中需要調(diào)整的靜態(tài)格,就將彈出屬性更改對話框,可對單元格屬性進(jìn)行調(diào)整,包括靜態(tài)格的文本、字體及對齊方式等的調(diào)整。綜上所述,用戶以一種交互式的手段調(diào)整生成的模板子元素的大小、位置和屬性,經(jīng)調(diào)整后,模板定制工作就完成了。模板定制流程如圖3所示。

4 結(jié)束語
通過對工藝卡片的組成元素進(jìn)行分解,將工藝模板抽象為由靜態(tài)格、動(dòng)態(tài)格、對象格和循環(huán)格組成的實(shí)體,借助交互式手段進(jìn)行工藝模板的繪制與定義,并將構(gòu)建好的工藝模板保存為XML文檔,完成了模板子元素的加載,從而實(shí)現(xiàn)了工藝模板的定制過程。實(shí)踐證明,這種交互式模板定制技術(shù)對于實(shí)現(xiàn)CAPP系統(tǒng)的通用性和商品化具有重要的意義。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術(shù)人員計(jì)算機(jī)應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機(jī)械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實(shí)例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實(shí)拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計(jì)案例教程中文版AutoCAD 建筑設(shè)計(jì)案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機(jī)械A(chǔ)utoCAD 項(xiàng)目教程 第3版 [繆希偉 主編] 2012年P(guān)DF